Separate f128 % operation to deal with missing fmodl symbol

This commit is contained in:
Raoul Strackx 2024-11-06 13:41:55 +01:00
parent 546a1eaab9
commit 072088074e

View File

@ -2,7 +2,10 @@
#![cfg(reliable_f128)] #![cfg(reliable_f128)]
use crate::f128::consts; use crate::f128::consts;
use crate::num::{FpCategory as Fp, *}; use crate::num::FpCategory as Fp;
#[cfg(reliable_f128_math)]
use crate::ops::Rem;
use crate::ops::{Add, Div, Mul, Sub};
// Note these tolerances make sense around zero, but not for more extreme exponents. // Note these tolerances make sense around zero, but not for more extreme exponents.
@ -53,7 +56,22 @@ macro_rules! assert_f128_biteq {
#[test] #[test]
fn test_num_f128() { fn test_num_f128() {
test_num(10f128, 2f128); // FIXME(f16_f128): replace with a `test_num` call once the required `fmodl`/`fmodf128`
// function is available on all platforms.
let ten = 10f128;
let two = 2f128;
assert_eq!(ten.add(two), ten + two);
assert_eq!(ten.sub(two), ten - two);
assert_eq!(ten.mul(two), ten * two);
assert_eq!(ten.div(two), ten / two);
}
#[test]
#[cfg(reliable_f128_math)]
fn test_num_f128_rem() {
let ten = 10f128;
let two = 2f128;
assert_eq!(ten.rem(two), ten % two);
} }
#[test] #[test]