[package] name = "libm-test" version = "0.1.0" edition = "2024" publish = false license = "MIT OR Apache-2.0" [features] default = ["build-mpfr", "unstable-float"] # Propagated from libm because this affects which functions we test. unstable-float = ["libm/unstable-float", "rug?/nightly-float"] # Generate tests which are random inputs and the outputs are calculated with # musl libc. build-mpfr = ["dep:rug", "dep:gmp-mpfr-sys"] # Build our own musl for testing and benchmarks build-musl = ["dep:musl-math-sys"] # Enable report generation without bringing in more dependencies by default benchmarking-reports = ["criterion/plotters", "criterion/html_reports"] # Enable icount benchmarks (requires iai-callgrind and valgrind) icount = ["dep:iai-callgrind"] # Run with a reduced set of benchmarks, such as for CI short-benchmarks = [] [dependencies] anyhow = "1.0.98" # This is not directly used but is required so we can enable `gmp-mpfr-sys/force-cross`. gmp-mpfr-sys = { version = "1.6.5", optional = true, default-features = false } iai-callgrind = { version = "0.15.2", optional = true } indicatif = { version = "0.18.0", default-features = false } libm = { path = "../libm", features = ["unstable-public-internals"] } libm-macros = { path = "../crates/libm-macros" } musl-math-sys = { path = "../crates/musl-math-sys", optional = true } paste = "1.0.15" rand = "0.9.1" rand_chacha = "0.9.0" rayon = "1.10.0" rug = { version = "1.27.0", optional = true, default-features = false, features = ["float", "integer", "std"] } [target.'cfg(target_family = "wasm")'.dependencies] getrandom = { version = "0.3.3", features = ["wasm_js"] } [build-dependencies] rand = { version = "0.9.1", optional = true } [dev-dependencies] criterion = { version = "0.6.0", default-features = false, features = ["cargo_bench_support"] } libtest-mimic = "0.8.1" [[bench]] name = "icount" harness = false required-features = ["icount"] [[bench]] name = "random" harness = false [[test]] # No harness so that we can skip tests at runtime based on env. Prefixed with # `z` so these tests get run last. name = "z_extensive" harness = false [lints.rust] # Values from the chared config.rs used by `libm` but not the test crate unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(feature, values("arch", "force-soft-floats", "unstable-intrinsics"))', ] }