os-test > basic > math
Legend
| Outcomes | ||||||
|---|---|---|---|---|---|---|
| Good | Good | Missing optional | Outside libc | |||
| Partial | Extension | Previous posix | ||||
| Neutral | None | |||||
| Bad | Compile error | Incompatible | Missing header | Undeclared | Undefined reference | Unknown type |
Good. A cell is good if the declaration is present
in the header and can be linked with libc. This outcome means the test
succeeded with the appropriate -D_POSIX_C_SOURCE=202405 or
-D_XOPEN_SOURCE=800 feature macros and the standard
libraries libc, libpthread, libm, librt, and libxnet.
Missing optional. A cell is missing_optional if the test could not be compiled, but the declaration is optional in POSIX and need not be provided.
Outside libc. A cell is outside_libc if the test could be compiled, but had to be linked with another standard library than the ones prescribed by POSIX: libc, libpthread, libm, librt, and libxnet. This may not conform to POSIX depending on the linking options provided by getconf(1)/confstr(3).
Extension. A cell is extension if the test could
not be compiled with the _POSIX_C_SOURCE and
_XOPEN_SOURCE feature macros, but it could instead be
compiled with other system-specific feature macros that provide the
entire API. This outcome means the system header feature macro logic
does not support the latest POSIX.1-2024 standard and only receives
partial credit. This outcome typically indicates a declaration new to
POSIX.1-2024.
Previous posix. A cell is previous_posix if the
test could not be compiled with the
-D_POSIX_C_SOURCE=202405 or
-D_XOPEN_SOURCE=800 feature macros from the POSIX.1-2024
standard, but the test could instead be compiled with the older
-D_POSIX_C_SOURCE=200809L or
-D_XOPEN_SOURCE=700
feature macros from the older POSIX.1-2008 standard. This
outcome means the system header feature macro logic does not support
the latest POSIX.1-2024 standard and only receives partial credit. In
particular, the header did not check if the value was higher than the
supported value, but instead hard-coded the supported values, and
failed to be forward compatible with new standard versions.
None. A cell is none if there is no test data result for that operating system.
Compile error. A cell is compile_error if the test could not be compiled and the error message was not recognized as a more precise error test outcome.
Incompatible. A cell is incompatible if the declaration existed in the header, but had a signature that is incompatible with the standardized declaration. This outcome typically indicates a type error in the declaration. Addressing the issue may require an incompatible ABI change or special compatibility logic.
Missing header. A cell is missing_header if the header did not exist.
Undeclared. A cell is undeclared if the header did not contain the declaration.
Undefined reference. A cell is undefined if the test could be compiled, but could not be linked with the standard library.
Unknown type. A cell is unknown_type if the test could not be compiled and failed because a required type was not declared. In some cases, functions fail because the header omitted a required type for a function and instead declared the function in an alternate fashion with an incompatible alias for the type.
§. The § link on the left of each row links to that row.
math
| genode Genode |
|
|---|---|
| § acos | genode: good exit: 0 |
| § acosf | genode: good exit: 0 |
| § acosh | genode: good exit: 0 |
| § acoshf | genode: good exit: 0 |
| § acoshl | genode: good exit: 0 |
| § acosl | genode: good exit: 0 |
| § asin | genode: good exit: 0 |
| § asinf | genode: good exit: 0 |
| § asinh | genode: bad (1.) asinh(90.0100) = 0x1.4c5bbb1e54aae0p+2, not 0x1.4c5bbb1e54aad0p+2, diff 0x1.00000000000000p-50, ratio 1 |
| § asinhf | genode: good exit: 0 |
| § asinhl | genode: good exit: 0 |
| § asinl | genode: good exit: 0 |
| § atan | genode: good exit: 0 |
| § atan2 | genode: good exit: 0 |
| § atan2f | genode: bad (1.) atan2f(90.0100, 13.3700) = 0x1.6c5fb8p+0, not 0x1.6c5fb6p+0, diff 0x1.000000p-23, ratio 1.0000001 |
| § atan2l | genode: bad (7.) atan2l(90.0100, -12.3400) = 0x1.b500c286491e5e1c0p+0, not 0x1.b500c286491e5e1a0p+0, diff 0x1.00000000000000000p-63, ratio 1.0000000000000000001 |
| § atanf | genode: good exit: 0 |
| § atanh | genode: bad (2.) atanh(-0.1234) = -0x1.fc0921af779c60p-4, not -0x1.fc0921af779c70p-4, diff 0x1.00000000000000p-56, ratio 0.9999999999999999 |
| § atanhf | genode: good exit: 0 |
| § atanhl | genode: good exit: 0 |
| § atanl | genode: good exit: 0 |
| § cbrt | genode: good exit: 0 |
| § cbrtf | genode: good exit: 0 |
| § cbrtl | genode: bad (2.) cbrtl(-12.3400) = -0x1.27c9ed3172f310640p+1, not -0x1.27c9ed3172f310620p+1, diff -0x1.00000000000000000p-62, ratio 1.0000000000000000001 |
| § ceil | genode: good exit: 0 |
| § ceilf | genode: good exit: 0 |
| § ceill | genode: good exit: 0 |
| § copysign | genode: good exit: 0 |
| § copysignf | genode: good exit: 0 |
| § copysignl | genode: good exit: 0 |
| § cos | genode: bad (4.) cos(inf) did not FE_INVALID |
| § cosf | genode: bad (4.) cosf(inf) did not FE_INVALID |
| § cosh | genode: good exit: 0 |
| § coshf | genode: good exit: 0 |
| § coshl | genode: good exit: 0 |
| § cosl | genode: bad (4.) cosl(inf) did not FE_INVALID |
| § erf | genode: good exit: 0 |
| § erfc | genode: good exit: 0 |
| § erfcf | genode: good exit: 0 |
| § erfcl | genode: good exit: 0 |
| § erff | genode: good exit: 0 |
| § erfl | genode: good exit: 0 |
| § exp | genode: good exit: 0 |
| § exp2 | genode: good exit: 0 |
| § exp2f | genode: good exit: 0 |
| § exp2l | genode: bad exp2l: ENOENT |
| § expf | genode: good exit: 0 |
| § expl | genode: good exit: 0 |
| § expm1 | genode: good exit: 0 |
| § expm1f | genode: good exit: 0 |
| § expm1l | genode: good exit: 0 |
| § fabs | genode: good exit: 0 |
| § fabsf | genode: good exit: 0 |
| § fabsl | genode: good exit: 0 |
| § fdim | genode: good exit: 0 |
| § fdimf | genode: good exit: 0 |
| § fdiml | genode: good exit: 0 |
| § floor | genode: good exit: 0 |
| § floorf | genode: good exit: 0 |
| § floorl | genode: good exit: 0 |
| § fma | genode: bad (24.) fma(0.0000, inf, 10.1000) did not FE_INVALID |
| § fmaf | genode: bad (24.) fmaf(0.0000, inf, 10.1000) did not FE_INVALID |
| § fmal | genode: bad (24.) fmal(0.0000, inf, 10.1000) did not FE_INVALID |
| § fmax | genode: good exit: 0 |
| § fmaxf | genode: good exit: 0 |
| § fmaxl | genode: good exit: 0 |
| § fmin | genode: good exit: 0 |
| § fminf | genode: good exit: 0 |
| § fminl | genode: good exit: 0 |
| § fmod | genode: good exit: 0 |
| § fmodf | genode: good exit: 0 |
| § fmodl | genode: good exit: 0 |
| § frexp | genode: good exit: 0 |
| § frexpf | genode: good exit: 0 |
| § frexpl | genode: good exit: 0 |
| § hypot | genode: bad (1.) hypot(90.0100, 13.3700) = 0x1.6bfd81ea6a64b0p+6, not 0x1.6bfd81ea6a64c0p+6, diff -0x1.00000000000000p-46, ratio 0.9999999999999999 |
| § hypotf | genode: good exit: 0 |
| § hypotl | genode: good exit: 0 |
| § ilogb | genode: bad (3.) ilogb(nan) did not FE_INVALID |
| § ilogbf | genode: bad (3.) ilogbf(nan) did not FE_INVALID |
| § ilogbl | genode: bad (3.) ilogbl(nan) did not FE_INVALID |
| § ldexp | genode: good exit: 0 |
| § ldexpf | genode: good exit: 0 |
| § ldexpl | genode: good exit: 0 |
| § lgamma | genode: bad (1.) lgamma(90.0100) = 0x1.39b2a13f727440p+8, not 0x1.39b2a13f727430p+8, diff 0x1.00000000000000p-44, ratio 1 |
| § lgammaf | genode: bad (2.) lgammaf(-12.3400) = -0x1.392e8ap+4, not -0x1.392e8cp+4, diff 0x1.000000p-19, ratio 0.99999988 |
| § lgammal | genode: bad (1.) lgammal(90.0100) = 0x1.39b2a13f72742eec0p+8, not 0x1.39b2a13f72742eee0p+8, diff -0x1.00000000000000000p-55, ratio 0.99999999999999999989 |
| § llrint | genode: good exit: 0 |
| § llrintf | genode: good exit: 0 |
| § llrintl | genode: good exit: 0 |
| § llround | genode: good exit: 0 |
| § llroundf | genode: good exit: 0 |
| § llroundl | genode: good exit: 0 |
| § log | genode: good exit: 0 |
| § log10 | genode: good exit: 0 |
| § log10f | genode: good exit: 0 |
| § log10l | genode: good exit: 0 |
| § log1p | genode: good exit: 0 |
| § log1pf | genode: bad (1.) log1pf(90.0100) = 0x1.20b3b8p+2, not 0x1.20b3bap+2, diff -0x1.000000p-21, ratio 0.99999988 |
| § log1pl | genode: good exit: 0 |
| § log2 | genode: good exit: 0 |
| § log2f | genode: good exit: 0 |
| § log2l | genode: good exit: 0 |
| § logb | genode: good exit: 0 |
| § logbf | genode: good exit: 0 |
| § logbl | genode: good exit: 0 |
| § logf | genode: good exit: 0 |
| § logl | genode: good exit: 0 |
| § lrint | genode: good exit: 0 |
| § lrintf | genode: good exit: 0 |
| § lrintl | genode: good exit: 0 |
| § lround | genode: good exit: 0 |
| § lroundf | genode: good exit: 0 |
| § lroundl | genode: good exit: 0 |
| § modf | genode: good exit: 0 |
| § modff | genode: good exit: 0 |
| § modfl | genode: good exit: 0 |
| § nan | genode: good exit: 0 |
| § nanf | genode: good exit: 0 |
| § nanl | genode: good exit: 0 |
| § nearbyint | genode: good exit: 0 |
| § nearbyintf | genode: good exit: 0 |
| § nearbyintl | genode: good exit: 0 |
| § nextafter | genode: good exit: 0 |
| § nextafterf | genode: good exit: 0 |
| § nextafterl | genode: good exit: 0 |
| § nexttoward | genode: good exit: 0 |
| § nexttowardf | genode: good exit: 0 |
| § nexttowardl | genode: good exit: 0 |
| § pow | genode: good exit: 0 |
| § powf | genode: bad (1.) powf(90.0100, 13.3700) = 0x1.bd2c00p+86, not 0x1.bd2c02p+86, diff -0x1.000000p+63, ratio 0.99999994 |
| § powl | genode: bad (10.) powl(0.0000, -12.3400) did not FE_DIVBYZERO |
| § remainder | genode: good exit: 0 |
| § remainderf | genode: good exit: 0 |
| § remainderl | genode: good exit: 0 |
| § remquo | genode: good exit: 0 |
| § remquof | genode: good exit: 0 |
| § remquol | genode: good exit: 0 |
| § rint | genode: good exit: 0 |
| § rintf | genode: good exit: 0 |
| § rintl | genode: good exit: 0 |
| § round | genode: good exit: 0 |
| § roundf | genode: good exit: 0 |
| § roundl | genode: good exit: 0 |
| § scalbln | genode: good exit: 0 |
| § scalblnf | genode: good exit: 0 |
| § scalblnl | genode: good exit: 0 |
| § scalbn | genode: good exit: 0 |
| § scalbnf | genode: good exit: 0 |
| § scalbnl | genode: good exit: 0 |
| § sin | genode: bad (4.) sin(inf) did not FE_INVALID |
| § sinf | genode: bad (4.) sinf(inf) did not FE_INVALID |
| § sinh | genode: good exit: 0 |
| § sinhf | genode: good exit: 0 |
| § sinhl | genode: good exit: 0 |
| § sinl | genode: bad (4.) sinl(inf) did not FE_INVALID |
| § sqrt | genode: good exit: 0 |
| § sqrtf | genode: good exit: 0 |
| § sqrtl | genode: good exit: 0 |
| § tan | genode: bad (4.) tan(inf) did not FE_INVALID |
| § tanf | genode: bad (1.) tanf(90.0100) = -0x1.f2444ep+0, not -0x1.f2444cp+0, diff -0x1.000000p-23, ratio 1.0000001 (4.) tanf(inf) did not FE_INVALID |
| § tanh | genode: good exit: 0 |
| § tanhf | genode: good exit: 0 |
| § tanhl | genode: good exit: 0 |
| § tanl | genode: bad (4.) tanl(inf) did not FE_INVALID |
| § tgamma | genode: bad (3.) tgamma(nan) FE_INVALID |
| § tgammaf | genode: bad (3.) tgammaf(nan) FE_INVALID |
| § tgammal | genode: bad (1.) tgammal(90.0100) = 0x1.7c18aa84560f70000p+452, not 0x1.7c18aa84560f73040p+452, diff -0x1.82000000000000000p+397, ratio 0.99999999999999997181 (3.) tgammal(nan) FE_INVALID |
| § trunc | genode: good exit: 0 |
| § truncf | genode: good exit: 0 |
| § truncl | genode: good exit: 0 |
|
Optional: XSI X/Open System Interfaces |
|
| § j0 | genode: good exit: 0 |
| § j1 | genode: good exit: 0 |
| § jn | genode: good exit: 0 |
| § y0 | genode: good exit: 0 |
| § y1 | genode: good exit: 0 |
| § yn | genode: good exit: 0 |