# 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-fft"
version = "0.1.0"
authors = ["SciRS2 Team"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Fast Fourier Transform module for SciRS2 (scirs2-fft)"
readme = "README.md"
keywords = [
    "fft",
    "fourier",
    "scientific",
    "scipy",
    "numerical",
]
categories = [
    "science",
    "mathematics",
    "algorithms",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/cool-japan/scirs"

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

[features]
cuda = []
default = [
    "helper",
    "window",
    "parallel",
]
fftw = [
    "dep:fftw",
    "dep:fftw-sys",
]
helper = []
hip = []
minimal = []
never = []
parallel = []
python = ["scirs2-core/python"]
serde = []
simd = []
sycl = []
window = []

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[dependencies.fftw]
version = "0.8"
optional = true

[dependencies.fftw-sys]
version = "0.8"
optional = true

[dependencies.num_cpus]
version = "1.17.0"

[dependencies.rustfft]
version = "6.4.1"
default-features = false

[dependencies.scirs2-core]
version = "0.1.0"
features = [
    "simd",
    "parallel",
    "gpu",
    "validation",
    "random",
    "array",
]

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

[dependencies.serde_json]
version = "1.0"

[dependencies.tempfile]
version = "3.24.0"

[dependencies.thiserror]
version = "2.0.17"

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

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

[dev-dependencies.plotly]
version = "0.13.5"

[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"
