# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
name = "scirs2-integrate"
version = "0.2.0"
authors = ["COOLJAPAN OU (Team KitaSan)"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Numerical integration module for SciRS2 (scirs2-integrate)"
readme = "README.md"
keywords = [
    "integration",
    "quadrature",
    "scientific",
    "scipy",
    "numerical",
]
categories = [
    "science",
    "mathematics",
    "algorithms",
]
license = "Apache-2.0"
repository = "https://github.com/cool-japan/scirs"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
    "--cfg",
    "docsrs",
]

[features]
autodiff = ["scirs2-autograd"]
default = []
new_ode = []
parallel = ["scirs2-core/parallel"]
parallel_jacobian = ["scirs2-core/parallel"]
simd = ["scirs2-core/simd"]
symplectic = []

[lib]
name = "scirs2_integrate"
path = "src/lib.rs"

[[example]]
name = "adaptive_cubature"
path = "examples/adaptive_cubature.rs"

[[example]]
name = "advanced_features_integration"
path = "examples/advanced_features_integration.rs"

[[example]]
name = "advanced_mms_verification_example"
path = "examples/advanced_mms_verification_example.rs"

[[example]]
name = "advanced_mode_demo"
path = "examples/advanced_mode_demo.rs"

[[example]]
name = "advection_diffusion_2d_mol"
path = "examples/advection_diffusion_2d_mol.rs"

[[example]]
name = "advection_diffusion_mol"
path = "examples/advection_diffusion_mol.rs"

[[example]]
name = "autotuning_example"
path = "examples/autotuning_example.rs"

[[example]]
name = "basic_integration"
path = "examples/basic_integration.rs"

[[example]]
name = "bdf_dae_pendulum"
path = "examples/bdf_dae_pendulum.rs"

[[example]]
name = "bdf_higher_index_dae"
path = "examples/bdf_higher_index_dae.rs"

[[example]]
name = "bdf_implicit_dae_circuit"
path = "examples/bdf_implicit_dae_circuit.rs"

[[example]]
name = "block_preconditioner_dae"
path = "examples/block_preconditioner_dae.rs"

[[example]]
name = "bvp_example"
path = "examples/bvp_example.rs"

[[example]]
name = "chebyshev_spectral_poisson"
path = "examples/chebyshev_spectral_poisson.rs"

[[example]]
name = "chemical_equilibrium_demo"
path = "examples/chemical_equilibrium_demo.rs"

[[example]]
name = "chemical_kinetics_demo"
path = "examples/chemical_kinetics_demo.rs"

[[example]]
name = "chemical_reaction_with_events"
path = "examples/chemical_reaction_with_events.rs"

[[example]]
name = "chemical_reactions"
path = "examples/chemical_reactions.rs"

[[example]]
name = "combined_methods"
path = "examples/combined_methods.rs"

[[example]]
name = "continuous_output"
path = "examples/continuous_output.rs"

[[example]]
name = "cubature_example"
path = "examples/cubature_example.rs"

[[example]]
name = "cubature_test"
path = "examples/cubature_test.rs"

[[example]]
name = "dae_methods_comparison"
path = "examples/dae_methods_comparison.rs"

[[example]]
name = "dop853_example"
path = "examples/dop853_example.rs"

[[example]]
name = "electrical_circuits"
path = "examples/electrical_circuits.rs"

[[example]]
name = "event_detection_flowchart"
path = "examples/event_detection_flowchart.rs"

[[example]]
name = "fem_irregular_domain"
path = "examples/fem_irregular_domain.rs"

[[example]]
name = "fourier_spectral_poisson"
path = "examples/fourier_spectral_poisson.rs"

[[example]]
name = "gaussian_quadrature"
path = "examples/gaussian_quadrature.rs"

[[example]]
name = "heat_equation_2d_mol"
path = "examples/heat_equation_2d_mol.rs"

[[example]]
name = "heat_equation_mol"
path = "examples/heat_equation_mol.rs"

[[example]]
name = "implicit_adi_2d_heat"
path = "examples/implicit_adi_2d_heat.rs"

[[example]]
name = "implicit_advection_diffusion_reaction"
path = "examples/implicit_advection_diffusion_reaction.rs"

[[example]]
name = "implicit_comparison"
path = "examples/implicit_comparison.rs"

[[example]]
name = "implicit_dae_circuit"
path = "examples/implicit_dae_circuit.rs"

[[example]]
name = "implicit_heat_equation"
path = "examples/implicit_heat_equation.rs"

[[example]]
name = "implicit_nonlinear_reaction_diffusion"
path = "examples/implicit_nonlinear_reaction_diffusion.rs"

[[example]]
name = "index2_pendulum_dae"
path = "examples/index2_pendulum_dae.rs"

[[example]]
name = "jacobian_handling"
path = "examples/jacobian_handling.rs"

[[example]]
name = "large_dae_krylov"
path = "examples/large_dae_krylov.rs"

[[example]]
name = "linear_solver_performance"
path = "examples/linear_solver_performance.rs"

[[example]]
name = "local_extrapolation_example"
path = "examples/local_extrapolation_example.rs"

[[example]]
name = "lsoda_debug"
path = "examples/lsoda_debug.rs"

[[example]]
name = "lsoda_enhanced"
path = "examples/lsoda_enhanced.rs"

[[example]]
name = "lsoda_example"
path = "examples/lsoda_example.rs"

[[example]]
name = "lsoda_method_switching"
path = "examples/lsoda_method_switching.rs"

[[example]]
name = "lsoda_minimal"
path = "examples/lsoda_minimal.rs"

[[example]]
name = "lsoda_simple"
path = "examples/lsoda_simple.rs"

[[example]]
name = "lsoda_visualization"
path = "examples/lsoda_visualization.rs"

[[example]]
name = "mass_matrix_example"
path = "examples/mass_matrix_example.rs"

[[example]]
name = "mass_matrix_with_events"
path = "examples/mass_matrix_with_events.rs"

[[example]]
name = "mechanical_systems_demo"
path = "examples/mechanical_systems_demo.rs"

[[example]]
name = "mesh_generation_demo"
path = "examples/mesh_generation_demo.rs"

[[example]]
name = "mms_verification_example"
path = "examples/mms_verification_example.rs"

[[example]]
name = "monte_carlo_integration"
path = "examples/monte_carlo_integration.rs"

[[example]]
name = "multidimensional_integration"
path = "examples/multidimensional_integration.rs"

[[example]]
name = "parallel_jacobian_simple"
path = "examples/parallel_jacobian_simple.rs"

[[example]]
name = "pendulum_dae"
path = "examples/pendulum_dae.rs"

[[example]]
name = "pendulum_system"
path = "examples/pendulum_system.rs"

[[example]]
name = "pendulum_with_events"
path = "examples/pendulum_with_events.rs"

[[example]]
name = "performance_demo"
path = "examples/performance_demo.rs"

[[example]]
name = "poisson_fem_2d"
path = "examples/poisson_fem_2d.rs"

[[example]]
name = "population_dynamics"
path = "examples/population_dynamics.rs"

[[example]]
name = "qmc_example"
path = "examples/qmc_example.rs"

[[example]]
name = "quad_vec_example"
path = "examples/quad_vec_example.rs"

[[example]]
name = "rlc_circuit_dae"
path = "examples/rlc_circuit_dae.rs"

[[example]]
name = "robin_boundary_conditions_example"
path = "examples/robin_boundary_conditions_example.rs"

[[example]]
name = "romberg_integration"
path = "examples/romberg_integration.rs"

[[example]]
name = "simd_optimization_example"
path = "examples/simd_optimization_example.rs"

[[example]]
name = "simple_enzyme_test"
path = "examples/simple_enzyme_test.rs"

[[example]]
name = "simple_equilibrium_test"
path = "examples/simple_equilibrium_test.rs"

[[example]]
name = "spectral_element_poisson"
path = "examples/spectral_element_poisson.rs"

[[example]]
name = "state_dependent_mass_with_events"
path = "examples/state_dependent_mass_with_events.rs"

[[example]]
name = "symplectic_integrators"
path = "examples/symplectic_integrators.rs"

[[example]]
name = "tanhsinh_example"
path = "examples/tanhsinh_example.rs"

[[example]]
name = "wave_equation_1d_mol"
path = "examples/wave_equation_1d_mol.rs"

[[test]]
name = "bdf_dae_tests"
path = "tests/bdf_dae_tests.rs"

[[test]]
name = "block_precond_tests"
path = "tests/block_precond_tests.rs"

[[test]]
name = "dae_tests"
path = "tests/dae_tests.rs"

[[test]]
name = "event_detection_tests"
path = "tests/event_detection_tests.rs"

[[test]]
name = "lsoda_tests"
path = "tests/lsoda_tests.rs"

[[test]]
name = "mass_matrix_event_detection_tests"
path = "tests/mass_matrix_event_detection_tests.rs"

[[test]]
name = "mass_matrix_tests"
path = "tests/mass_matrix_tests.rs"

[[test]]
name = "radau_mass_matrix_tests"
path = "tests/radau_mass_matrix_tests.rs"

[[bench]]
name = "finance_pricing_bench"
path = "benches/finance_pricing_bench.rs"
harness = false

[[bench]]
name = "integrator_bench"
path = "benches/integrator_bench.rs"
harness = false

[[bench]]
name = "scipy_comparison"
path = "benches/scipy_comparison.rs"
harness = false

[dependencies.half]
version = "2.7.1"
features = [
    "num-traits",
    "serde",
    "alloc",
]

[dependencies.halton]
version = "0.2.1"

[dependencies.libc]
version = "0.2.182"

[dependencies.libm]
version = "0.2"

[dependencies.num_cpus]
version = "1.17.0"

[dependencies.scirs2-autograd]
version = "0.2.0"
optional = true

[dependencies.scirs2-core]
version = "0.2.0"
features = [
    "random",
    "array",
]
default-features = false

[dependencies.scirs2-fft]
version = "0.2.0"
default-features = false

[dependencies.sobol]
version = "1.0.2"

[dependencies.thiserror]
version = "2.0.18"

[dev-dependencies.approx]
version = "0.5.1"

[dev-dependencies.criterion]
version = "0.8.2"

[dev-dependencies.plotters]
version = "0.3.7"

[lints.clippy]
expect_used = "allow"
unwrap_used = "warn"

[lints.rust]
dead_code = "allow"
mismatched_lifetime_syntaxes = "allow"
unknown_lints = "allow"
unpredictable_function_pointer_comparisons = "allow"
unused_imports = "allow"
unused_mut = "allow"
unused_variables = "allow"
