Increase the tolerance for jn and yn
These still fail random tests, e.g.:
called `Result::unwrap()` on an `Err` value: jn
Caused by:
0:
input: (1068, -16013.98381387313)
as hex: (, -0x1.f46fded9ced39p+13)
as bits: (0x0000042c, 0xc0cf46fded9ced39)
expected: 6.7603314308122506e-6 0x1.c5ad9c102d413p-18 0x3edc5ad9c102d413
actual: 6.7603314308006335e-6 0x1.c5ad9c1029e80p-18 0x3edc5ad9c1029e80
1: ulp 13715 > 4000
Caused by:
0:
input: (195, 42147.94)
as hex: (, 0x1.4947e2p+15)
as bits: (0x000000c3, 0x4724a3f1)
expected: -2.13669e-7 -0x1.cad9c6p-23 0xb4656ce3
actual: -2.1376937e-7 -0x1.cb10f4p-23 0xb465887a
1: ulp 7063 > 4000
Caused by:
0:
input: (194, 740.1916)
as hex: (, 0x1.721886p+9)
as bits: (0x000000c2, 0x44390c43)
expected: 1.212096e-6 0x1.455e9ap-20 0x35a2af4d
actual: 1.2172386e-6 0x1.46c000p-20 0x35a36000
1: ulp 45235 > 10000
Increase allowed precision to avoid spurious failures.
This commit is contained in:
parent
017f1035f1
commit
1efdc96974
1 changed files with 14 additions and 12 deletions
|
|
@ -523,18 +523,7 @@ fn int_float_common<F1: Float, F2: Float>(
|
|||
&& actual == F2::ZERO
|
||||
&& expected == F2::ZERO
|
||||
{
|
||||
return XFAIL("mpfr b");
|
||||
}
|
||||
|
||||
// Our bessel functions blow up with large N values
|
||||
if ctx.basis == Musl && (ctx.base_name == BaseName::Jn || ctx.base_name == BaseName::Yn) {
|
||||
if input.0 > 4000 {
|
||||
return XFAIL_NOCHECK;
|
||||
} else if input.0 > 2000 {
|
||||
return CheckAction::AssertWithUlp(20_000);
|
||||
} else if input.0 > 1000 {
|
||||
return CheckAction::AssertWithUlp(4_000);
|
||||
}
|
||||
return XFAIL("we disagree with MPFR on the sign of zero");
|
||||
}
|
||||
|
||||
// Values near infinity sometimes get cut off for us. `ynf(681, 509.90924) = -inf` but should
|
||||
|
|
@ -549,6 +538,19 @@ fn int_float_common<F1: Float, F2: Float>(
|
|||
return XFAIL_NOCHECK;
|
||||
}
|
||||
|
||||
// Our bessel functions blow up with large N values
|
||||
if ctx.basis == Musl && (ctx.base_name == BaseName::Jn || ctx.base_name == BaseName::Yn) {
|
||||
if cfg!(x86_no_sse) {
|
||||
// Precision is especially bad on i586, not worth checking.
|
||||
return XFAIL_NOCHECK;
|
||||
}
|
||||
|
||||
if input.0 > 4000 {
|
||||
return XFAIL_NOCHECK;
|
||||
} else if input.0 > 100 {
|
||||
return CheckAction::AssertWithUlp(1_000_000);
|
||||
}
|
||||
}
|
||||
DEFAULT
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue