# 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 = "numrs-core"
version = "0.1.10"
authors = ["Rodrigo Aguiluz Mena"]
build = "build.rs"
exclude = [
    "ARCHITECTURE_DIAGRAM.md",
    "BENCHMARK*.md",
    "CHECKLIST*.md",
    "CLEANUP*.md",
    "GUIA*.md",
    "MKL_THREADING.md",
    "NUMPY_COMPARISON.md",
    "RESUMEN_EJECUTIVO.md",
    "STATIC_BLAS_LINKING.md",
    "KERNEL_SELECTION_FLOW.md",
    "DISPATCH_SYSTEM.md",
    "PROGRESS.md",
    "compare_results.csv",
    "ops_impl.md",
    "ops_three.md",
    "OPS_CHECK.md",
    ".github/",
    ".venv/",
    ".pytest_cache/",
    "js/",
    "python/",
    "scripts/",
    "diagrams/",
    "test_*.rs",
    "*.o",
    "*.pdb",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A high-performance numerical computing library with multi-backend dispatch (SIMD, BLAS/MKL, WebGPU) and zero-cost abstractions"
homepage = "https://numrs.dev"
documentation = "https://numrs.dev/doc"
readme = "README.md"
keywords = [
    "numerical",
    "array",
    "numpy",
    "blas",
    "simd",
]
categories = [
    "mathematics",
    "science",
    "algorithms",
]
license = "AGPL-3.0-only"
repository = "https://github.com/rjaguiluz/numrs"

[features]
blas-backend = [
    "blas",
    "cblas",
    "intel-mkl-src",
    "blis-src",
]
default = [
    "blas-backend",
    "webgpu",
    "webgl",
    "parallel",
]
disabled-blas = []
native-gpu = [
    "wgpu",
    "pollster",
]
parallel = ["rayon"]
wasm-simd = []
webgl = []
webgpu = []

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

[[bin]]
name = "elementwise_micro"
path = "src/bin/elementwise_micro.rs"

[[bin]]
name = "matmul_bench"
path = "src/bin/matmul_bench.rs"

[[bin]]
name = "numrs-bench"
path = "src/bin/numrs_bench/main.rs"
required-features = []

[[bin]]
name = "numrs-ops"
path = "src/bin/numrs_ops.rs"
required-features = []

[[bin]]
name = "sgemm_cpu_micro"
path = "src/bin/sgemm_cpu_micro.rs"

[[bin]]
name = "sgemm_generic_micro"
path = "src/bin/sgemm_generic_micro.rs"

[[bin]]
name = "sgemm_micro"
path = "src/bin/sgemm_micro.rs"

[[bin]]
name = "sgemm_webgpu_micro"
path = "src/bin/sgemm_webgpu_micro.rs"

[[bin]]
name = "sum_micro"
path = "src/bin/sum_micro.rs"

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

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

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

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

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

[[example]]
name = "dispatch_demo"
path = "examples/dispatch_demo.rs"
required-features = []

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[[test]]
name = "autograd"
path = "tests/autograd/main.rs"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[[bench]]
name = "matmul_bench"
path = "benches/matmul_bench.rs"

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

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

[dependencies.anyhow]
version = "1.0"

[dependencies.blas]
version = "0.20"
optional = true

[dependencies.bytemuck]
version = "1.17"
features = ["derive"]

[dependencies.chrono]
version = "0.4"

[dependencies.futures]
version = "0.3"

[dependencies.num_cpus]
version = "1.15"

[dependencies.once_cell]
version = "1.21"

[dependencies.pollster]
version = "0.3"
optional = true

[dependencies.rayon]
version = "1.7"
optional = true

[dependencies.serde]
version = "1.0"
features = ["derive"]

[dependencies.serde_json]
version = "1.0"

[dependencies.sysinfo]
version = "0.30"

[dependencies.thiserror]
version = "1.0"

[dependencies.wgpu]
version = "23"
optional = true

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

[dev-dependencies.rand]
version = "0.8"

[build-dependencies.vcpkg]
version = "0.2"

[target.'cfg(all(not(target_arch = "x86_64"), not(target_arch = "wasm32")))'.dependencies.blis-src]
version = "0.2"
optional = true

[target.'cfg(all(not(target_arch = "x86_64"), not(target_arch = "wasm32")))'.dependencies.cblas]
version = "0.5"
optional = true

[target.'cfg(all(not(target_arch = "x86_64"), not(target_arch = "wasm32")))'.dependencies.pollster]
version = "0.3"
optional = false

[target.'cfg(all(not(target_arch = "x86_64"), not(target_arch = "wasm32")))'.dependencies.wgpu]
version = "23"
optional = false

[target.'cfg(all(target_arch = "x86_64", not(target_arch = "wasm32")))'.dependencies.cblas]
version = "0.5"
optional = true

[target.'cfg(all(target_arch = "x86_64", not(target_arch = "wasm32")))'.dependencies.intel-mkl-src]
version = "0.8"
features = ["mkl-static-lp64-seq"]
optional = true
default-features = false

[target.'cfg(all(target_arch = "x86_64", not(target_arch = "wasm32")))'.dependencies.pollster]
version = "0.3"
optional = false

[target.'cfg(all(target_arch = "x86_64", not(target_arch = "wasm32")))'.dependencies.wgpu]
version = "23"
optional = false

[target.'cfg(target_arch = "wasm32")'.dependencies.console_error_panic_hook]
version = "0.1"

[target.'cfg(target_arch = "wasm32")'.dependencies.js-sys]
version = "0.3"

[target.'cfg(target_arch = "wasm32")'.dependencies.pollster]
version = "0.3"

[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen]
version = "0.2"

[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen-futures]
version = "0.4"

[target.'cfg(target_arch = "wasm32")'.dependencies.web-sys]
version = "0.3"
features = [
    "Window",
    "Document",
    "HtmlCanvasElement",
    "WebGl2RenderingContext",
    "GpuCanvasContext",
    "console",
]

[target.'cfg(target_arch = "wasm32")'.dependencies.wgpu]
version = "23"
features = [
    "webgl",
    "wgsl",
]

[target.'cfg(target_os = "macos")'.dependencies.accelerate-src]
version = "0.3"

[target.'cfg(target_os = "macos")'.dependencies.metal]
version = "0.27"

[target.'cfg(target_os = "macos")'.dependencies.objc]
version = "0.2"
