Merge pull request rust-lang/libm#477 from tgross35/upgrade-dependencies
Upgrade all dependencies to the latest version
This commit is contained in:
commit
9c6548e448
8 changed files with 19 additions and 88 deletions
|
|
@ -59,7 +59,7 @@ exclude = [
|
|||
]
|
||||
|
||||
[dev-dependencies]
|
||||
no-panic = "0.1.30"
|
||||
no-panic = "0.1.33"
|
||||
|
||||
[profile.release]
|
||||
# Options for no-panic to correctly detect the lack of panics
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ proc-macro = true
|
|||
|
||||
[dependencies]
|
||||
heck = "0.5.0"
|
||||
proc-macro2 = "1.0.88"
|
||||
quote = "1.0.37"
|
||||
syn = { version = "2.0.79", features = ["full", "extra-traits", "visit-mut"] }
|
||||
proc-macro2 = "1.0.93"
|
||||
quote = "1.0.38"
|
||||
syn = { version = "2.0.96", features = ["full", "extra-traits", "visit-mut"] }
|
||||
|
||||
[lints.rust]
|
||||
# Values used during testing
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ 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:az", "dep:rug", "dep:gmp-mpfr-sys"]
|
||||
build-mpfr = ["dep:rug", "dep:gmp-mpfr-sys"]
|
||||
|
||||
# Build our own musl for testing and benchmarks
|
||||
build-musl = ["dep:musl-math-sys"]
|
||||
|
|
@ -27,9 +27,9 @@ icount = ["dep:iai-callgrind"]
|
|||
short-benchmarks = []
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.90"
|
||||
az = { version = "1.2.1", optional = true }
|
||||
gmp-mpfr-sys = { version = "1.6.4", optional = true, default-features = false, features = ["mpfr"] }
|
||||
anyhow = "1.0.95"
|
||||
# This is not directly used but is required so we can enable `gmp-mpfr-sys/force-cross`.
|
||||
gmp-mpfr-sys = { version = "1.6.4", optional = true, default-features = false }
|
||||
iai-callgrind = { version = "0.14.0", optional = true }
|
||||
indicatif = { version = "0.17.9", default-features = false }
|
||||
libm = { path = "../..", features = ["unstable-public-internals"] }
|
||||
|
|
@ -39,7 +39,7 @@ paste = "1.0.15"
|
|||
rand = "0.8.5"
|
||||
rand_chacha = "0.3.1"
|
||||
rayon = "1.10.0"
|
||||
rug = { version = "1.26.1", optional = true, default-features = false, features = ["float", "integer", "std"] }
|
||||
rug = { version = "1.27.0", optional = true, default-features = false, features = ["float", "integer", "std"] }
|
||||
|
||||
[target.'cfg(target_family = "wasm")'.dependencies]
|
||||
# Enable randomness on WASM
|
||||
|
|
|
|||
|
|
@ -4,13 +4,10 @@
|
|||
//! a struct named `Operation` that implements [`MpOp`].
|
||||
|
||||
use std::cmp::Ordering;
|
||||
use std::ffi::{c_int, c_long};
|
||||
|
||||
use az::Az;
|
||||
use gmp_mpfr_sys::mpfr::rnd_t;
|
||||
use rug::Assign;
|
||||
pub use rug::Float as MpFloat;
|
||||
use rug::float::Round;
|
||||
use rug::az::{self, Az};
|
||||
use rug::float::Round::Nearest;
|
||||
use rug::ops::{PowAssignRound, RemAssignRound};
|
||||
|
||||
|
|
@ -310,13 +307,8 @@ macro_rules! impl_op_for_ty {
|
|||
}
|
||||
|
||||
fn run(this: &mut Self::MpTy, input: Self::RustArgs) -> Self::RustRet {
|
||||
// Implementation taken from `rug::Float::to_f32_exp`.
|
||||
this.assign(input.0);
|
||||
let exp = this.get_exp().unwrap_or(0);
|
||||
if exp != 0 {
|
||||
*this >>= exp;
|
||||
}
|
||||
|
||||
let exp = this.frexp_mut();
|
||||
(prep_retval::<Self::FTy>(this, Ordering::Equal), exp)
|
||||
}
|
||||
}
|
||||
|
|
@ -406,28 +398,20 @@ macro_rules! impl_op_for_ty {
|
|||
}
|
||||
|
||||
impl MpOp for crate::op::[<remquo $suffix>]::Routine {
|
||||
type MpTy = (MpFloat, MpFloat, MpFloat);
|
||||
type MpTy = (MpFloat, MpFloat);
|
||||
|
||||
fn new_mp() -> Self::MpTy {
|
||||
(
|
||||
new_mpfloat::<Self::FTy>(),
|
||||
new_mpfloat::<Self::FTy>(),
|
||||
new_mpfloat::<Self::FTy>()
|
||||
)
|
||||
}
|
||||
|
||||
fn run(this: &mut Self::MpTy, input: Self::RustArgs) -> Self::RustRet {
|
||||
this.0.assign(input.0);
|
||||
this.1.assign(input.1);
|
||||
let (ord, ql) = mpfr_remquo(&mut this.2, &this.0, &this.1, Nearest);
|
||||
|
||||
// `remquo` integer results are sign-magnitude representation. Transfer the
|
||||
// sign bit from the long result to the int result.
|
||||
let clear = !(1 << (c_int::BITS - 1));
|
||||
let sign = ((ql >> (c_long::BITS - 1)) as i32) << (c_int::BITS - 1);
|
||||
let q = (ql as i32) & clear | sign;
|
||||
|
||||
(prep_retval::<Self::FTy>(&mut this.2, ord), q)
|
||||
let (ord, q) = this.0.remainder_quo31_round(&this.1, Nearest);
|
||||
(prep_retval::<Self::FTy>(&mut this.0, ord), q)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -552,24 +536,3 @@ impl MpOp for crate::op::nextafterf::Routine {
|
|||
unimplemented!("nextafter does not yet have a MPFR operation");
|
||||
}
|
||||
}
|
||||
|
||||
/// `rug` does not provide `remquo` so this exposes `mpfr_remquo`. See rug#76.
|
||||
fn mpfr_remquo(r: &mut MpFloat, x: &MpFloat, y: &MpFloat, round: Round) -> (Ordering, c_long) {
|
||||
let r = r.as_raw_mut();
|
||||
let x = x.as_raw();
|
||||
let y = y.as_raw();
|
||||
let mut q: c_long = 0;
|
||||
|
||||
let round = match round {
|
||||
Round::Nearest => rnd_t::RNDN,
|
||||
Round::Zero => rnd_t::RNDZ,
|
||||
Round::Up => rnd_t::RNDU,
|
||||
Round::Down => rnd_t::RNDD,
|
||||
Round::AwayZero => rnd_t::RNDA,
|
||||
_ => unreachable!(),
|
||||
};
|
||||
|
||||
// SAFETY: mutable and const pointers are valid and do not alias, by Rust's rules.
|
||||
let ord = unsafe { gmp_mpfr_sys::mpfr::remquo(r, &mut q, x, y, round) };
|
||||
(ord.cmp(&0), q)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -405,15 +405,6 @@ impl MaybeOverride<(f32, f32)> for SpecialCase {
|
|||
) -> CheckAction {
|
||||
binop_common(input, actual, expected, ctx)
|
||||
}
|
||||
|
||||
fn check_int<I: Int>(
|
||||
_input: (f32, f32),
|
||||
actual: I,
|
||||
expected: I,
|
||||
ctx: &CheckCtx,
|
||||
) -> CheckAction {
|
||||
remquo_common(actual, expected, ctx)
|
||||
}
|
||||
}
|
||||
|
||||
impl MaybeOverride<(f64, f64)> for SpecialCase {
|
||||
|
|
@ -425,15 +416,6 @@ impl MaybeOverride<(f64, f64)> for SpecialCase {
|
|||
) -> CheckAction {
|
||||
binop_common(input, actual, expected, ctx)
|
||||
}
|
||||
|
||||
fn check_int<I: Int>(
|
||||
_input: (f64, f64),
|
||||
actual: I,
|
||||
expected: I,
|
||||
ctx: &CheckCtx,
|
||||
) -> CheckAction {
|
||||
remquo_common(actual, expected, ctx)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(f128_enabled)]
|
||||
|
|
@ -496,19 +478,6 @@ fn binop_common<F1: Float, F2: Float>(
|
|||
DEFAULT
|
||||
}
|
||||
|
||||
fn remquo_common<I: Int>(actual: I, expected: I, ctx: &CheckCtx) -> CheckAction {
|
||||
// FIXME: Our MPFR implementation disagrees with musl and may need to be updated.
|
||||
if ctx.basis == CheckBasis::Mpfr
|
||||
&& ctx.base_name == BaseName::Remquo
|
||||
&& expected == I::MIN
|
||||
&& actual == I::ZERO
|
||||
{
|
||||
return XFAIL("remquo integer mismatch");
|
||||
}
|
||||
|
||||
DEFAULT
|
||||
}
|
||||
|
||||
impl MaybeOverride<(i32, f32)> for SpecialCase {
|
||||
fn check_float<F: Float>(
|
||||
input: (i32, f32),
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ publish = false
|
|||
libm = { path = "../../" }
|
||||
|
||||
[build-dependencies]
|
||||
cc = "1.1.24"
|
||||
cc = "1.2.10"
|
||||
|
|
|
|||
|
|
@ -7,13 +7,12 @@ 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"]
|
||||
build-mpfr = ["libm-test/build-mpfr", "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"] }
|
||||
rug = { version = "1.27.0", optional = true, default-features = false, features = ["float", "std"] }
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@ use std::env;
|
|||
use std::num::ParseIntError;
|
||||
use std::str::FromStr;
|
||||
|
||||
#[cfg(feature = "build-mpfr")]
|
||||
use az::Az;
|
||||
use libm::support::{hf32, hf64};
|
||||
#[cfg(feature = "build-mpfr")]
|
||||
use libm_test::mpfloat::MpOp;
|
||||
use libm_test::{MathOp, TupleCall};
|
||||
#[cfg(feature = "build-mpfr")]
|
||||
use rug::az::{self, Az};
|
||||
|
||||
const USAGE: &str = "\
|
||||
usage:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue