Trevor Gross dfa694a8e4 Add a utility crate for quick evaluation
Introduce a simple binary that can run arbitrary input against any of
the available implementations (musl, MPFR, our libm). This provides an
easy way to check results, or run specific cases against a debugger.

Examples:

    $ cargo run -p util -- eval libm pow 1.6 2.4
    3.089498284311124
    $ cargo run -p util -- eval mpfr pow 1.6 2.4
    3.089498284311124
    $ cargo run -p util -- eval musl tgamma 1.2344597839132
    0.9097442657960874
    $ cargo run -p util -- eval mpfr tgamma 1.2344597839132
    0.9097442657960874
    $ cargo run -p util -- eval libm tgamma 1.2344597839132
    0.9097442657960871
    $ cargo run -p util -- eval musl sincos 3.1415926535
    (8.979318433952318e-11, -1.0)
2025-01-13 04:43:48 -05:00

20 lines
735 B
TOML

[package]
name = "util"
version = "0.1.0"
edition = "2021"
publish = false
[features]
default = ["build-musl", "build-mpfr", "unstable-float"]
build-musl = ["libm-test/build-musl", "dep:musl-math-sys"]
build-mpfr = ["libm-test/build-mpfr", "dep:az", "dep:rug"]
unstable-float = ["libm/unstable-float", "libm-test/unstable-float", "rug?/nightly-float"]
[dependencies]
az = { version = "1.2.1", optional = true }
libm = { path = "../..", default-features = false }
libm-macros = { path = "../libm-macros" }
libm-test = { path = "../libm-test", default-features = false }
musl-math-sys = { path = "../musl-math-sys", optional = true }
rug = { version = "1.26.1", optional = true, default-features = false, features = ["float", "std"] }