mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-25 14:52:28 +00:00
Bring back gc() function
Renaming gc() to _gc() was a mistake since the better thing to do is put it behind the _COSMO_SOURCE macro. We need this change because I haven't wanted to use my amazing garbage collector ever since we renamed it. You now need to define _COSMO_SOURCE yourself when using amalgamation header and cosmocc users need to pass the -mcosmo flag to get the gc() function Some other issues relating to cancelation have been fixed along the way. We're also now putting cosmocc in a folder named `.cosmocc` so it can be more safely excluded by grep --exclude-dir=.cosmocc --exclude-dir=o etc.
This commit is contained in:
parent
6cb0354e19
commit
a4b455185b
280 changed files with 1362 additions and 1407 deletions
|
@ -28,12 +28,12 @@ float _acosf(float) asm("acosf");
|
|||
long double _acosl(long double) asm("acosl");
|
||||
|
||||
TEST(acos, test) {
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _acos(0.))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _acos(-0.))));
|
||||
EXPECT_STREQ("1.0471975511966", _gc(xasprintf("%.15g", _acos(.5))));
|
||||
EXPECT_STREQ("2.0943951023932", _gc(xasprintf("%.15g", _acos(-.5))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _acos(1.))));
|
||||
EXPECT_STREQ("3.14159265358979", _gc(xasprintf("%.15g", _acos(-1.))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _acos(0.))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _acos(-0.))));
|
||||
EXPECT_STREQ("1.0471975511966", gc(xasprintf("%.15g", _acos(.5))));
|
||||
EXPECT_STREQ("2.0943951023932", gc(xasprintf("%.15g", _acos(-.5))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _acos(1.))));
|
||||
EXPECT_STREQ("3.14159265358979", gc(xasprintf("%.15g", _acos(-1.))));
|
||||
EXPECT_TRUE(isnan(_acos(1.5)));
|
||||
EXPECT_TRUE(isnan(_acos(-1.5)));
|
||||
EXPECT_TRUE(isnan(_acos(2.)));
|
||||
|
@ -41,7 +41,7 @@ TEST(acos, test) {
|
|||
EXPECT_TRUE(isnan(_acos(-NAN)));
|
||||
EXPECT_TRUE(isnan(_acos(INFINITY)));
|
||||
EXPECT_TRUE(isnan(_acos(-INFINITY)));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _acos(__DBL_MIN__))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _acos(__DBL_MIN__))));
|
||||
EXPECT_TRUE(isnan(_acos(__DBL_MAX__)));
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
|
|
|
@ -27,12 +27,12 @@ double asin_(double) asm("asin");
|
|||
#define asin asin_
|
||||
|
||||
TEST(asin, test) {
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", asin(0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", asin(-0.))));
|
||||
EXPECT_STREQ("0.523598775598299", _gc(xasprintf("%.15g", asin(.5))));
|
||||
EXPECT_STREQ("-0.523598775598299", _gc(xasprintf("%.15g", asin(-.5))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", asin(1.))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", asin(-1.))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", asin(0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", asin(-0.))));
|
||||
EXPECT_STREQ("0.523598775598299", gc(xasprintf("%.15g", asin(.5))));
|
||||
EXPECT_STREQ("-0.523598775598299", gc(xasprintf("%.15g", asin(-.5))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", asin(1.))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", asin(-1.))));
|
||||
EXPECT_TRUE(isnan(asin(1.5)));
|
||||
EXPECT_TRUE(isnan(asin(-1.5)));
|
||||
EXPECT_TRUE(isnan(asin(NAN)));
|
||||
|
@ -40,7 +40,7 @@ TEST(asin, test) {
|
|||
EXPECT_TRUE(isnan(asin(INFINITY)));
|
||||
EXPECT_TRUE(isnan(asin(-INFINITY)));
|
||||
EXPECT_STREQ("2.2250738585072e-308",
|
||||
_gc(xasprintf("%.15g", asin(__DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", asin(__DBL_MIN__))));
|
||||
EXPECT_TRUE(isnan(asin(__DBL_MAX__)));
|
||||
}
|
||||
|
||||
|
|
|
@ -28,29 +28,29 @@ float _asinhf(float) asm("asinhf");
|
|||
long double _asinhl(long double) asm("asinhl");
|
||||
|
||||
TEST(asinh, test) {
|
||||
EXPECT_STREQ(".481211825059603", _gc(xdtoa(_asinh(+.5))));
|
||||
EXPECT_STREQ("-.481211825059603", _gc(xdtoa(_asinh(-.5))));
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_asinh(0))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoa(_asinh(NAN))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_asinh(INFINITY))));
|
||||
EXPECT_STREQ(".481211825059603", gc(xdtoa(_asinh(+.5))));
|
||||
EXPECT_STREQ("-.481211825059603", gc(xdtoa(_asinh(-.5))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_asinh(0))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoa(_asinh(NAN))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_asinh(INFINITY))));
|
||||
EXPECT_STREQ("-2.1073424255447e-08",
|
||||
_gc(xasprintf("%.15g", _asinh(-2.1073424255447e-08))));
|
||||
gc(xasprintf("%.15g", _asinh(-2.1073424255447e-08))));
|
||||
}
|
||||
|
||||
TEST(asinhf, test) {
|
||||
EXPECT_STREQ(".481212", _gc(xdtoaf(_asinhf(+.5))));
|
||||
EXPECT_STREQ("-.481212", _gc(xdtoaf(_asinhf(-.5))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_asinhf(0))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoaf(_asinhf(NAN))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_asinhf(INFINITY))));
|
||||
EXPECT_STREQ(".481212", gc(xdtoaf(_asinhf(+.5))));
|
||||
EXPECT_STREQ("-.481212", gc(xdtoaf(_asinhf(-.5))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_asinhf(0))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoaf(_asinhf(NAN))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_asinhf(INFINITY))));
|
||||
}
|
||||
|
||||
TEST(asinhl, test) {
|
||||
EXPECT_STREQ(".4812118250596034", _gc(xdtoal(_asinhl(+.5))));
|
||||
EXPECT_STREQ("-.4812118250596034", _gc(xdtoal(_asinhl(-.5))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(_asinhl(0))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoal(_asinhl(NAN))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_asinhl(INFINITY))));
|
||||
EXPECT_STREQ(".4812118250596034", gc(xdtoal(_asinhl(+.5))));
|
||||
EXPECT_STREQ("-.4812118250596034", gc(xdtoal(_asinhl(-.5))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(_asinhl(0))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoal(_asinhl(NAN))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_asinhl(INFINITY))));
|
||||
}
|
||||
|
||||
BENCH(asinh, bench) {
|
||||
|
|
|
@ -27,145 +27,143 @@ float _atan2f(float, float) asm("atan2f");
|
|||
long double _atan2l(long double, long double) asm("atan2l");
|
||||
|
||||
TEST(atan2, yx) {
|
||||
EXPECT_STREQ("-0.321750554396642", _gc(xasprintf("%.15g", atan(-.5 / 1.5))));
|
||||
EXPECT_STREQ("-0.321750554396642", _gc(xasprintf("%.15g", _atan2(-.5, 1.5))));
|
||||
EXPECT_STREQ("-0.321750554396642", gc(xasprintf("%.15g", atan(-.5 / 1.5))));
|
||||
EXPECT_STREQ("-0.321750554396642", gc(xasprintf("%.15g", _atan2(-.5, 1.5))));
|
||||
}
|
||||
|
||||
TEST(atan2, test) {
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(0., 0.))));
|
||||
EXPECT_STREQ("3.14159265358979", _gc(xasprintf("%.15g", _atan2(0., -0.))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(0., .5))));
|
||||
EXPECT_STREQ("3.14159265358979", _gc(xasprintf("%.15g", _atan2(0., -.5))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(0., 1.))));
|
||||
EXPECT_STREQ("3.14159265358979", _gc(xasprintf("%.15g", _atan2(0., -1.))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(0., 1.5))));
|
||||
EXPECT_STREQ("3.14159265358979", _gc(xasprintf("%.15g", _atan2(0., -1.5))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(0., 0.))));
|
||||
EXPECT_STREQ("3.14159265358979", gc(xasprintf("%.15g", _atan2(0., -0.))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(0., .5))));
|
||||
EXPECT_STREQ("3.14159265358979", gc(xasprintf("%.15g", _atan2(0., -.5))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(0., 1.))));
|
||||
EXPECT_STREQ("3.14159265358979", gc(xasprintf("%.15g", _atan2(0., -1.))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(0., 1.5))));
|
||||
EXPECT_STREQ("3.14159265358979", gc(xasprintf("%.15g", _atan2(0., -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(0., NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(0., -NAN)));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(0., INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(0., INFINITY))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(0., -INFINITY))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(0., __DBL_MIN__))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(0., __DBL_MAX__))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-0., 0.))));
|
||||
EXPECT_STREQ("-3.14159265358979", _gc(xasprintf("%.15g", _atan2(-0., -0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-0., .5))));
|
||||
EXPECT_STREQ("-3.14159265358979", _gc(xasprintf("%.15g", _atan2(-0., -.5))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-0., 1.))));
|
||||
EXPECT_STREQ("-3.14159265358979", _gc(xasprintf("%.15g", _atan2(-0., -1.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-0., 1.5))));
|
||||
EXPECT_STREQ("-3.14159265358979", _gc(xasprintf("%.15g", _atan2(-0., -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(0., -INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(0., __DBL_MIN__))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(0., __DBL_MAX__))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-0., 0.))));
|
||||
EXPECT_STREQ("-3.14159265358979", gc(xasprintf("%.15g", _atan2(-0., -0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-0., .5))));
|
||||
EXPECT_STREQ("-3.14159265358979", gc(xasprintf("%.15g", _atan2(-0., -.5))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-0., 1.))));
|
||||
EXPECT_STREQ("-3.14159265358979", gc(xasprintf("%.15g", _atan2(-0., -1.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-0., 1.5))));
|
||||
EXPECT_STREQ("-3.14159265358979", gc(xasprintf("%.15g", _atan2(-0., -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(-0., NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(-0., -NAN)));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-0., INFINITY))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-0., INFINITY))));
|
||||
EXPECT_STREQ("-3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(-0., -INFINITY))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-0., __DBL_MIN__))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-0., __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _atan2(.5, 0.))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _atan2(.5, -0.))));
|
||||
EXPECT_STREQ("0.785398163397448", _gc(xasprintf("%.15g", _atan2(.5, .5))));
|
||||
EXPECT_STREQ("2.35619449019234", _gc(xasprintf("%.15g", _atan2(.5, -.5))));
|
||||
EXPECT_STREQ("0.463647609000806", _gc(xasprintf("%.15g", _atan2(.5, 1.))));
|
||||
EXPECT_STREQ("2.67794504458899", _gc(xasprintf("%.15g", _atan2(.5, -1.))));
|
||||
EXPECT_STREQ("0.321750554396642", _gc(xasprintf("%.15g", _atan2(.5, 1.5))));
|
||||
EXPECT_STREQ("2.81984209919315", _gc(xasprintf("%.15g", _atan2(.5, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(-0., -INFINITY))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-0., __DBL_MIN__))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-0., __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(.5, 0.))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(.5, -0.))));
|
||||
EXPECT_STREQ("0.785398163397448", gc(xasprintf("%.15g", _atan2(.5, .5))));
|
||||
EXPECT_STREQ("2.35619449019234", gc(xasprintf("%.15g", _atan2(.5, -.5))));
|
||||
EXPECT_STREQ("0.463647609000806", gc(xasprintf("%.15g", _atan2(.5, 1.))));
|
||||
EXPECT_STREQ("2.67794504458899", gc(xasprintf("%.15g", _atan2(.5, -1.))));
|
||||
EXPECT_STREQ("0.321750554396642", gc(xasprintf("%.15g", _atan2(.5, 1.5))));
|
||||
EXPECT_STREQ("2.81984209919315", gc(xasprintf("%.15g", _atan2(.5, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(.5, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(.5, -NAN)));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(.5, INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(.5, INFINITY))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(.5, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(.5, -INFINITY))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(.5, __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(.5, __DBL_MIN__))));
|
||||
EXPECT_STREQ("2.781342323134e-309",
|
||||
_gc(xasprintf("%.15g", _atan2(.5, __DBL_MAX__))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", _atan2(-.5, 0.))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", _atan2(-.5, -0.))));
|
||||
EXPECT_STREQ("-0.785398163397448", _gc(xasprintf("%.15g", _atan2(-.5, .5))));
|
||||
EXPECT_STREQ("-2.35619449019234", _gc(xasprintf("%.15g", _atan2(-.5, -.5))));
|
||||
EXPECT_STREQ("-0.463647609000806", _gc(xasprintf("%.15g", _atan2(-.5, 1.))));
|
||||
EXPECT_STREQ("-2.67794504458899", _gc(xasprintf("%.15g", _atan2(-.5, -1.))));
|
||||
EXPECT_STREQ("-0.321750554396642", _gc(xasprintf("%.15g", _atan2(-.5, 1.5))));
|
||||
EXPECT_STREQ("-2.81984209919315", _gc(xasprintf("%.15g", _atan2(-.5, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(.5, __DBL_MAX__))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", _atan2(-.5, 0.))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", _atan2(-.5, -0.))));
|
||||
EXPECT_STREQ("-0.785398163397448", gc(xasprintf("%.15g", _atan2(-.5, .5))));
|
||||
EXPECT_STREQ("-2.35619449019234", gc(xasprintf("%.15g", _atan2(-.5, -.5))));
|
||||
EXPECT_STREQ("-0.463647609000806", gc(xasprintf("%.15g", _atan2(-.5, 1.))));
|
||||
EXPECT_STREQ("-2.67794504458899", gc(xasprintf("%.15g", _atan2(-.5, -1.))));
|
||||
EXPECT_STREQ("-0.321750554396642", gc(xasprintf("%.15g", _atan2(-.5, 1.5))));
|
||||
EXPECT_STREQ("-2.81984209919315", gc(xasprintf("%.15g", _atan2(-.5, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(-.5, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(-.5, -NAN)));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-.5, INFINITY))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-.5, INFINITY))));
|
||||
EXPECT_STREQ("-3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(-.5, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(-.5, -INFINITY))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-.5, __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(-.5, __DBL_MIN__))));
|
||||
EXPECT_STREQ("-2.781342323134e-309",
|
||||
_gc(xasprintf("%.15g", _atan2(-.5, __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _atan2(1., 0.))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _atan2(1., -0.))));
|
||||
EXPECT_STREQ("1.10714871779409", _gc(xasprintf("%.15g", _atan2(1., .5))));
|
||||
EXPECT_STREQ("2.0344439357957", _gc(xasprintf("%.15g", _atan2(1., -.5))));
|
||||
EXPECT_STREQ("0.785398163397448", _gc(xasprintf("%.15g", _atan2(1., 1.))));
|
||||
EXPECT_STREQ("2.35619449019234", _gc(xasprintf("%.15g", _atan2(1., -1.))));
|
||||
EXPECT_STREQ("0.588002603547568", _gc(xasprintf("%.15g", _atan2(1., 1.5))));
|
||||
EXPECT_STREQ("2.55359005004223", _gc(xasprintf("%.15g", _atan2(1., -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(-.5, __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(1., 0.))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(1., -0.))));
|
||||
EXPECT_STREQ("1.10714871779409", gc(xasprintf("%.15g", _atan2(1., .5))));
|
||||
EXPECT_STREQ("2.0344439357957", gc(xasprintf("%.15g", _atan2(1., -.5))));
|
||||
EXPECT_STREQ("0.785398163397448", gc(xasprintf("%.15g", _atan2(1., 1.))));
|
||||
EXPECT_STREQ("2.35619449019234", gc(xasprintf("%.15g", _atan2(1., -1.))));
|
||||
EXPECT_STREQ("0.588002603547568", gc(xasprintf("%.15g", _atan2(1., 1.5))));
|
||||
EXPECT_STREQ("2.55359005004223", gc(xasprintf("%.15g", _atan2(1., -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(1., NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(1., -NAN)));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(1., INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(1., INFINITY))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(1., -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(1., -INFINITY))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(1., __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(1., __DBL_MIN__))));
|
||||
EXPECT_STREQ("5.562684646268e-309",
|
||||
_gc(xasprintf("%.15g", _atan2(1., __DBL_MAX__))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", _atan2(-1., 0.))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", _atan2(-1., -0.))));
|
||||
EXPECT_STREQ("-1.10714871779409", _gc(xasprintf("%.15g", _atan2(-1., .5))));
|
||||
EXPECT_STREQ("-2.0344439357957", _gc(xasprintf("%.15g", _atan2(-1., -.5))));
|
||||
EXPECT_STREQ("-0.785398163397448", _gc(xasprintf("%.15g", _atan2(-1., 1.))));
|
||||
EXPECT_STREQ("-2.35619449019234", _gc(xasprintf("%.15g", _atan2(-1., -1.))));
|
||||
EXPECT_STREQ("-0.588002603547568", _gc(xasprintf("%.15g", _atan2(-1., 1.5))));
|
||||
EXPECT_STREQ("-2.55359005004223", _gc(xasprintf("%.15g", _atan2(-1., -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(1., __DBL_MAX__))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", _atan2(-1., 0.))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", _atan2(-1., -0.))));
|
||||
EXPECT_STREQ("-1.10714871779409", gc(xasprintf("%.15g", _atan2(-1., .5))));
|
||||
EXPECT_STREQ("-2.0344439357957", gc(xasprintf("%.15g", _atan2(-1., -.5))));
|
||||
EXPECT_STREQ("-0.785398163397448", gc(xasprintf("%.15g", _atan2(-1., 1.))));
|
||||
EXPECT_STREQ("-2.35619449019234", gc(xasprintf("%.15g", _atan2(-1., -1.))));
|
||||
EXPECT_STREQ("-0.588002603547568", gc(xasprintf("%.15g", _atan2(-1., 1.5))));
|
||||
EXPECT_STREQ("-2.55359005004223", gc(xasprintf("%.15g", _atan2(-1., -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(-1., NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(-1., -NAN)));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-1., INFINITY))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-1., INFINITY))));
|
||||
EXPECT_STREQ("-3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(-1., -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(-1., -INFINITY))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-1., __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(-1., __DBL_MIN__))));
|
||||
EXPECT_STREQ("-5.562684646268e-309",
|
||||
_gc(xasprintf("%.15g", _atan2(-1., __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _atan2(1.5, 0.))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", _atan2(1.5, -0.))));
|
||||
EXPECT_STREQ("1.24904577239825", _gc(xasprintf("%.15g", _atan2(1.5, .5))));
|
||||
EXPECT_STREQ("1.89254688119154", _gc(xasprintf("%.15g", _atan2(1.5, -.5))));
|
||||
EXPECT_STREQ("0.982793723247329", _gc(xasprintf("%.15g", _atan2(1.5, 1.))));
|
||||
EXPECT_STREQ("2.15879893034246", _gc(xasprintf("%.15g", _atan2(1.5, -1.))));
|
||||
EXPECT_STREQ("0.785398163397448", _gc(xasprintf("%.15g", _atan2(1.5, 1.5))));
|
||||
EXPECT_STREQ("2.35619449019234", _gc(xasprintf("%.15g", _atan2(1.5, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(-1., __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(1.5, 0.))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(1.5, -0.))));
|
||||
EXPECT_STREQ("1.24904577239825", gc(xasprintf("%.15g", _atan2(1.5, .5))));
|
||||
EXPECT_STREQ("1.89254688119154", gc(xasprintf("%.15g", _atan2(1.5, -.5))));
|
||||
EXPECT_STREQ("0.982793723247329", gc(xasprintf("%.15g", _atan2(1.5, 1.))));
|
||||
EXPECT_STREQ("2.15879893034246", gc(xasprintf("%.15g", _atan2(1.5, -1.))));
|
||||
EXPECT_STREQ("0.785398163397448", gc(xasprintf("%.15g", _atan2(1.5, 1.5))));
|
||||
EXPECT_STREQ("2.35619449019234", gc(xasprintf("%.15g", _atan2(1.5, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(1.5, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(1.5, -NAN)));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(1.5, INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(1.5, INFINITY))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(1.5, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(1.5, -INFINITY))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(1.5, __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(1.5, __DBL_MIN__))));
|
||||
EXPECT_STREQ("8.34402696940201e-309",
|
||||
_gc(xasprintf("%.15g", _atan2(1.5, __DBL_MAX__))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", _atan2(-1.5, 0.))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", _atan2(-1.5, -0.))));
|
||||
EXPECT_STREQ("-1.24904577239825", _gc(xasprintf("%.15g", _atan2(-1.5, .5))));
|
||||
EXPECT_STREQ("-1.89254688119154", _gc(xasprintf("%.15g", _atan2(-1.5, -.5))));
|
||||
EXPECT_STREQ("-0.982793723247329", _gc(xasprintf("%.15g", _atan2(-1.5, 1.))));
|
||||
EXPECT_STREQ("-2.15879893034246", _gc(xasprintf("%.15g", _atan2(-1.5, -1.))));
|
||||
EXPECT_STREQ("-0.785398163397448",
|
||||
_gc(xasprintf("%.15g", _atan2(-1.5, 1.5))));
|
||||
EXPECT_STREQ("-2.35619449019234",
|
||||
_gc(xasprintf("%.15g", _atan2(-1.5, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(1.5, __DBL_MAX__))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", _atan2(-1.5, 0.))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", _atan2(-1.5, -0.))));
|
||||
EXPECT_STREQ("-1.24904577239825", gc(xasprintf("%.15g", _atan2(-1.5, .5))));
|
||||
EXPECT_STREQ("-1.89254688119154", gc(xasprintf("%.15g", _atan2(-1.5, -.5))));
|
||||
EXPECT_STREQ("-0.982793723247329", gc(xasprintf("%.15g", _atan2(-1.5, 1.))));
|
||||
EXPECT_STREQ("-2.15879893034246", gc(xasprintf("%.15g", _atan2(-1.5, -1.))));
|
||||
EXPECT_STREQ("-0.785398163397448", gc(xasprintf("%.15g", _atan2(-1.5, 1.5))));
|
||||
EXPECT_STREQ("-2.35619449019234", gc(xasprintf("%.15g", _atan2(-1.5, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(-1.5, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(-1.5, -NAN)));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-1.5, INFINITY))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-1.5, INFINITY))));
|
||||
EXPECT_STREQ("-3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(-1.5, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(-1.5, -INFINITY))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-1.5, __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(-1.5, __DBL_MIN__))));
|
||||
EXPECT_STREQ("-8.34402696940201e-309",
|
||||
_gc(xasprintf("%.15g", _atan2(-1.5, __DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _atan2(-1.5, __DBL_MAX__))));
|
||||
EXPECT_TRUE(isnan(_atan2(NAN, 0.)));
|
||||
EXPECT_TRUE(isnan(_atan2(NAN, -0.)));
|
||||
EXPECT_TRUE(isnan(_atan2(NAN, .5)));
|
||||
|
@ -194,114 +192,111 @@ TEST(atan2, test) {
|
|||
EXPECT_TRUE(isnan(_atan2(-NAN, -INFINITY)));
|
||||
EXPECT_TRUE(isnan(_atan2(-NAN, __DBL_MIN__)));
|
||||
EXPECT_TRUE(isnan(_atan2(-NAN, __DBL_MAX__)));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(INFINITY, 0.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, 0.))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, -0.))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(INFINITY, .5))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, -0.))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, -.5))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", _atan2(INFINITY, 1.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, .5))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, -1.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, -.5))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, 1.5))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, 1.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, -1.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, 1.5))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(INFINITY, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(INFINITY, -NAN)));
|
||||
EXPECT_STREQ("0.785398163397448",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, INFINITY))));
|
||||
EXPECT_STREQ("2.35619449019234",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, -INFINITY))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, __DBL_MIN__))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(INFINITY, __DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _atan2(INFINITY, __DBL_MAX__))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, 0.))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, 0.))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, -0.))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, -0.))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, .5))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, .5))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, -.5))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, -.5))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, 1.))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, 1.))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, -1.))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, -1.))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, 1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, 1.5))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(-INFINITY, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(-INFINITY, -NAN)));
|
||||
EXPECT_STREQ("-0.785398163397448",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, INFINITY))));
|
||||
EXPECT_STREQ("-2.35619449019234",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, -INFINITY))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, __DBL_MIN__))));
|
||||
EXPECT_STREQ("-1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(-INFINITY, __DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _atan2(-INFINITY, __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, 0.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, 0.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -0.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -0.))));
|
||||
EXPECT_STREQ("4.4501477170144e-308",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, .5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, .5))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -.5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -.5))));
|
||||
EXPECT_STREQ("2.2250738585072e-308",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, 1.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, 1.))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -1.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -1.))));
|
||||
EXPECT_STREQ("1.48338257233813e-308",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, 1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, 1.5))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(__DBL_MIN__, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(__DBL_MIN__, -NAN)));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(__DBL_MIN__, INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(__DBL_MIN__, INFINITY))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, -INFINITY))));
|
||||
EXPECT_STREQ("0.785398163397448",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MIN__, __DBL_MIN__))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(__DBL_MIN__, __DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MIN__, __DBL_MIN__))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(__DBL_MIN__, __DBL_MAX__))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, 0.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, 0.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -0.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -0.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, .5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, .5))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -.5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -.5))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, 1.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, 1.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -1.))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -1.))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, 1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, 1.5))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -1.5))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -1.5))));
|
||||
EXPECT_TRUE(isnan(_atan2(__DBL_MAX__, NAN)));
|
||||
EXPECT_TRUE(isnan(_atan2(__DBL_MAX__, -NAN)));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _atan2(__DBL_MAX__, INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _atan2(__DBL_MAX__, INFINITY))));
|
||||
EXPECT_STREQ("3.14159265358979",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, -INFINITY))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, __DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, __DBL_MIN__))));
|
||||
EXPECT_STREQ("0.785398163397448",
|
||||
_gc(xasprintf("%.15g", _atan2(__DBL_MAX__, __DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _atan2(__DBL_MAX__, __DBL_MAX__))));
|
||||
EXPECT_STREQ("-0",
|
||||
_gc(xasprintf("%.15g", _atan2(-0.000000000000001, INFINITY))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _atan2(-1, INFINITY))));
|
||||
gc(xasprintf("%.15g", _atan2(-0.000000000000001, INFINITY))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _atan2(-1, INFINITY))));
|
||||
EXPECT_STREQ(
|
||||
"-0", _gc(xasprintf("%.15g", _atan2(-1.7976931348623157e308, INFINITY))));
|
||||
"-0", gc(xasprintf("%.15g", _atan2(-1.7976931348623157e308, INFINITY))));
|
||||
EXPECT_STREQ("1.5707963267949",
|
||||
_gc(xasprintf("%.15g", _atan2(1.4142135623731, 0))));
|
||||
gc(xasprintf("%.15g", _atan2(1.4142135623731, 0))));
|
||||
}
|
||||
|
||||
BENCH(atan2, bench) {
|
||||
|
|
|
@ -25,35 +25,35 @@
|
|||
TEST(atan2l, test) {
|
||||
volatile double a = -.9816175436063843;
|
||||
volatile double b = -.1908585813741899;
|
||||
EXPECT_STREQ("-2.95", _gc(xasprintf("%.2f", atan2f(b, a))));
|
||||
EXPECT_STREQ("-2.95", _gc(xasprintf("%.2f", atan2(b, a))));
|
||||
EXPECT_STREQ("-2.95", gc(xasprintf("%.2f", atan2f(b, a))));
|
||||
EXPECT_STREQ("-2.95", gc(xasprintf("%.2f", atan2(b, a))));
|
||||
#ifndef __aarch64__
|
||||
// TODO: implement quad floating point into printf
|
||||
EXPECT_STREQ("-2.95", _gc(xasprintf("%.2Lf", atan2l(b, a))));
|
||||
EXPECT_STREQ("-2.95", gc(xasprintf("%.2Lf", atan2l(b, a))));
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(atan2, testSpecialCases) {
|
||||
ASSERT_STREQ("NAN", _gc(xdtoa(atan2(NAN, 0))));
|
||||
ASSERT_STREQ("NAN", _gc(xdtoa(atan2(0, NAN))));
|
||||
ASSERT_STREQ("0", _gc(xdtoa(atan2(+0., +0.))));
|
||||
ASSERT_STREQ("0", _gc(xdtoa(atan2(+0., +1.))));
|
||||
ASSERT_STREQ("0", _gc(xdtoa(atan2(+0., +2.))));
|
||||
ASSERT_STREQ("0", _gc(xdtoa(atan2(1, INFINITY))));
|
||||
ASSERT_STREQ("3.141592653589793", _gc(xdtoal(atan2(+0., -0.))));
|
||||
ASSERT_STREQ("3.141592653589793", _gc(xdtoal(atan2(+0., -1.))));
|
||||
ASSERT_STREQ("3.141592653589793", _gc(xdtoal(atan2(+0., -2.))));
|
||||
ASSERT_STREQ("-1.570796326794897", _gc(xdtoal(atan2(-1., -0.))));
|
||||
ASSERT_STREQ("-1.570796326794897", _gc(xdtoal(atan2(-1., +0.))));
|
||||
ASSERT_STREQ("-1.570796326794897", _gc(xdtoal(atan2(-2., -0.))));
|
||||
ASSERT_STREQ("-1.570796326794897", _gc(xdtoal(atan2(-2., +0.))));
|
||||
ASSERT_STREQ("1.570796326794897", _gc(xdtoal(atan2(+1., -0.))));
|
||||
ASSERT_STREQ("1.570796326794897", _gc(xdtoal(atan2(+1., +0.))));
|
||||
ASSERT_STREQ("1.570796326794897", _gc(xdtoal(atan2(+2., -0.))));
|
||||
ASSERT_STREQ("1.570796326794897", _gc(xdtoal(atan2(+2., +0.))));
|
||||
ASSERT_STREQ("1.570796326794897", _gc(xdtoal(atan2(INFINITY, 1))));
|
||||
ASSERT_STREQ("1.570796326794897", _gc(xdtoal(atan2(INFINITY, -1))));
|
||||
ASSERT_STREQ("3.141592653589793", _gc(xdtoal(atan2(1, -INFINITY))));
|
||||
ASSERT_STREQ("2.356194490192345", _gc(xdtoal(atan2(INFINITY, -INFINITY))));
|
||||
ASSERT_STREQ(".7853981633974483", _gc(xdtoal(atan2(INFINITY, INFINITY))));
|
||||
ASSERT_STREQ("NAN", gc(xdtoa(atan2(NAN, 0))));
|
||||
ASSERT_STREQ("NAN", gc(xdtoa(atan2(0, NAN))));
|
||||
ASSERT_STREQ("0", gc(xdtoa(atan2(+0., +0.))));
|
||||
ASSERT_STREQ("0", gc(xdtoa(atan2(+0., +1.))));
|
||||
ASSERT_STREQ("0", gc(xdtoa(atan2(+0., +2.))));
|
||||
ASSERT_STREQ("0", gc(xdtoa(atan2(1, INFINITY))));
|
||||
ASSERT_STREQ("3.141592653589793", gc(xdtoal(atan2(+0., -0.))));
|
||||
ASSERT_STREQ("3.141592653589793", gc(xdtoal(atan2(+0., -1.))));
|
||||
ASSERT_STREQ("3.141592653589793", gc(xdtoal(atan2(+0., -2.))));
|
||||
ASSERT_STREQ("-1.570796326794897", gc(xdtoal(atan2(-1., -0.))));
|
||||
ASSERT_STREQ("-1.570796326794897", gc(xdtoal(atan2(-1., +0.))));
|
||||
ASSERT_STREQ("-1.570796326794897", gc(xdtoal(atan2(-2., -0.))));
|
||||
ASSERT_STREQ("-1.570796326794897", gc(xdtoal(atan2(-2., +0.))));
|
||||
ASSERT_STREQ("1.570796326794897", gc(xdtoal(atan2(+1., -0.))));
|
||||
ASSERT_STREQ("1.570796326794897", gc(xdtoal(atan2(+1., +0.))));
|
||||
ASSERT_STREQ("1.570796326794897", gc(xdtoal(atan2(+2., -0.))));
|
||||
ASSERT_STREQ("1.570796326794897", gc(xdtoal(atan2(+2., +0.))));
|
||||
ASSERT_STREQ("1.570796326794897", gc(xdtoal(atan2(INFINITY, 1))));
|
||||
ASSERT_STREQ("1.570796326794897", gc(xdtoal(atan2(INFINITY, -1))));
|
||||
ASSERT_STREQ("3.141592653589793", gc(xdtoal(atan2(1, -INFINITY))));
|
||||
ASSERT_STREQ("2.356194490192345", gc(xdtoal(atan2(INFINITY, -INFINITY))));
|
||||
ASSERT_STREQ(".7853981633974483", gc(xdtoal(atan2(INFINITY, INFINITY))));
|
||||
}
|
||||
|
|
|
@ -23,21 +23,21 @@
|
|||
#include "libc/x/xasprintf.h"
|
||||
|
||||
TEST(atan, test) {
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", atan(0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", atan(-0.))));
|
||||
EXPECT_STREQ("0.463647609000806", _gc(xasprintf("%.15g", atan(.5))));
|
||||
EXPECT_STREQ("-0.463647609000806", _gc(xasprintf("%.15g", atan(-.5))));
|
||||
EXPECT_STREQ("0.785398163397448", _gc(xasprintf("%.15g", atan(1.))));
|
||||
EXPECT_STREQ("-0.785398163397448", _gc(xasprintf("%.15g", atan(-1.))));
|
||||
EXPECT_STREQ("0.982793723247329", _gc(xasprintf("%.15g", atan(1.5))));
|
||||
EXPECT_STREQ("-0.982793723247329", _gc(xasprintf("%.15g", atan(-1.5))));
|
||||
EXPECT_STREQ("nan", _gc(xasprintf("%.15g", atan(NAN))));
|
||||
EXPECT_STREQ("-nan", _gc(xasprintf("%.15g", atan(-NAN))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", atan(INFINITY))));
|
||||
EXPECT_STREQ("-1.5707963267949", _gc(xasprintf("%.15g", atan(-INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", atan(0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", atan(-0.))));
|
||||
EXPECT_STREQ("0.463647609000806", gc(xasprintf("%.15g", atan(.5))));
|
||||
EXPECT_STREQ("-0.463647609000806", gc(xasprintf("%.15g", atan(-.5))));
|
||||
EXPECT_STREQ("0.785398163397448", gc(xasprintf("%.15g", atan(1.))));
|
||||
EXPECT_STREQ("-0.785398163397448", gc(xasprintf("%.15g", atan(-1.))));
|
||||
EXPECT_STREQ("0.982793723247329", gc(xasprintf("%.15g", atan(1.5))));
|
||||
EXPECT_STREQ("-0.982793723247329", gc(xasprintf("%.15g", atan(-1.5))));
|
||||
EXPECT_STREQ("nan", gc(xasprintf("%.15g", atan(NAN))));
|
||||
EXPECT_STREQ("-nan", gc(xasprintf("%.15g", atan(-NAN))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", atan(INFINITY))));
|
||||
EXPECT_STREQ("-1.5707963267949", gc(xasprintf("%.15g", atan(-INFINITY))));
|
||||
EXPECT_STREQ("2.2250738585072e-308",
|
||||
_gc(xasprintf("%.15g", atan(__DBL_MIN__))));
|
||||
EXPECT_STREQ("1.5707963267949", _gc(xasprintf("%.15g", atan(__DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", atan(__DBL_MIN__))));
|
||||
EXPECT_STREQ("1.5707963267949", gc(xasprintf("%.15g", atan(__DBL_MAX__))));
|
||||
}
|
||||
|
||||
BENCH(atanl, bench) {
|
||||
|
|
|
@ -28,36 +28,36 @@ float _atanhf(float) asm("atanhf");
|
|||
long double _atanhl(long double) asm("atanhl");
|
||||
|
||||
TEST(atanh, test) {
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_atanh(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoa(_atanh(-0.))));
|
||||
EXPECT_STREQ(".549306144334055", _gc(xdtoa(_atanh(.5))));
|
||||
EXPECT_STREQ("-.549306144334055", _gc(xdtoa(_atanh(-.5))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_atanh(+1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoa(_atanh(-1))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_atanh(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoa(_atanh(-0.))));
|
||||
EXPECT_STREQ(".549306144334055", gc(xdtoa(_atanh(.5))));
|
||||
EXPECT_STREQ("-.549306144334055", gc(xdtoa(_atanh(-.5))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_atanh(+1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoa(_atanh(-1))));
|
||||
EXPECT_TRUE(isnan(_atanh(+1.1)));
|
||||
EXPECT_TRUE(isnan(_atanh(-1.1)));
|
||||
EXPECT_STREQ("-2.1073424255447e-08",
|
||||
_gc(xasprintf("%.15g", _atanh(-2.1073424255447e-08))));
|
||||
gc(xasprintf("%.15g", _atanh(-2.1073424255447e-08))));
|
||||
}
|
||||
|
||||
TEST(atanhl, test) {
|
||||
EXPECT_STREQ("0", _gc(xdtoal(_atanhl(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoal(_atanhl(-0.))));
|
||||
EXPECT_STREQ(".5493061443340548", _gc(xdtoal(_atanhl(.5))));
|
||||
EXPECT_STREQ("-.5493061443340548", _gc(xdtoal(_atanhl(-.5))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_atanhl(+1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoal(_atanhl(-1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(_atanhl(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoal(_atanhl(-0.))));
|
||||
EXPECT_STREQ(".5493061443340548", gc(xdtoal(_atanhl(.5))));
|
||||
EXPECT_STREQ("-.5493061443340548", gc(xdtoal(_atanhl(-.5))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_atanhl(+1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoal(_atanhl(-1))));
|
||||
EXPECT_TRUE(isnan(_atanhl(+1.1)));
|
||||
EXPECT_TRUE(isnan(_atanhl(-1.1)));
|
||||
}
|
||||
|
||||
TEST(atanhf, test) {
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_atanhf(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoaf(_atanhf(-0.))));
|
||||
EXPECT_STREQ(".549306", _gc(xdtoaf(_atanhf(.5))));
|
||||
EXPECT_STREQ("-.549306", _gc(xdtoaf(_atanhf(-.5))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_atanhf(+1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoaf(_atanhf(-1))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_atanhf(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoaf(_atanhf(-0.))));
|
||||
EXPECT_STREQ(".549306", gc(xdtoaf(_atanhf(.5))));
|
||||
EXPECT_STREQ("-.549306", gc(xdtoaf(_atanhf(-.5))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_atanhf(+1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoaf(_atanhf(-1))));
|
||||
EXPECT_TRUE(isnan(_atanhf(+1.1)));
|
||||
EXPECT_TRUE(isnan(_atanhf(-1.1)));
|
||||
}
|
||||
|
|
|
@ -29,22 +29,22 @@ float _cbrtf(float) asm("cbrtf");
|
|||
long double _cbrtl(long double) asm("cbrtl");
|
||||
|
||||
TEST(cbrt, test) {
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _cbrt(0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _cbrt(-0.))));
|
||||
EXPECT_STREQ("0.7937005259841", _gc(xasprintf("%.15g", _cbrt(.5))));
|
||||
EXPECT_STREQ("-0.7937005259841", _gc(xasprintf("%.15g", _cbrt(-.5))));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", _cbrt(1.))));
|
||||
EXPECT_STREQ("-1", _gc(xasprintf("%.15g", _cbrt(-1.))));
|
||||
EXPECT_STREQ("1.14471424255333", _gc(xasprintf("%.15g", _cbrt(1.5))));
|
||||
EXPECT_STREQ("-1.14471424255333", _gc(xasprintf("%.15g", _cbrt(-1.5))));
|
||||
EXPECT_STREQ("nan", _gc(xasprintf("%.15g", _cbrt(NAN))));
|
||||
EXPECT_STREQ("-nan", _gc(xasprintf("%.15g", _cbrt(-NAN))));
|
||||
EXPECT_STREQ("inf", _gc(xasprintf("%.15g", _cbrt(INFINITY))));
|
||||
EXPECT_STREQ("-inf", _gc(xasprintf("%.15g", _cbrt(-INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _cbrt(0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _cbrt(-0.))));
|
||||
EXPECT_STREQ("0.7937005259841", gc(xasprintf("%.15g", _cbrt(.5))));
|
||||
EXPECT_STREQ("-0.7937005259841", gc(xasprintf("%.15g", _cbrt(-.5))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", _cbrt(1.))));
|
||||
EXPECT_STREQ("-1", gc(xasprintf("%.15g", _cbrt(-1.))));
|
||||
EXPECT_STREQ("1.14471424255333", gc(xasprintf("%.15g", _cbrt(1.5))));
|
||||
EXPECT_STREQ("-1.14471424255333", gc(xasprintf("%.15g", _cbrt(-1.5))));
|
||||
EXPECT_STREQ("nan", gc(xasprintf("%.15g", _cbrt(NAN))));
|
||||
EXPECT_STREQ("-nan", gc(xasprintf("%.15g", _cbrt(-NAN))));
|
||||
EXPECT_STREQ("inf", gc(xasprintf("%.15g", _cbrt(INFINITY))));
|
||||
EXPECT_STREQ("-inf", gc(xasprintf("%.15g", _cbrt(-INFINITY))));
|
||||
EXPECT_STREQ("2.81264428523626e-103",
|
||||
_gc(xasprintf("%.15g", _cbrt(__DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _cbrt(__DBL_MIN__))));
|
||||
EXPECT_STREQ("5.64380309412236e+102",
|
||||
_gc(xasprintf("%.15g", _cbrt(__DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _cbrt(__DBL_MAX__))));
|
||||
}
|
||||
|
||||
BENCH(cbrt, bench) {
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
|
|
|
@ -27,26 +27,26 @@ float _cosf(float) asm("cosf");
|
|||
long double _cosl(long double) asm("cosl");
|
||||
|
||||
TEST(cos, test) {
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", _cos(0.))));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", _cos(-0.))));
|
||||
EXPECT_STREQ("0.995004165278026", _gc(xasprintf("%.15g", _cos(.1))));
|
||||
EXPECT_STREQ("0.995004165278026", _gc(xasprintf("%.15g", _cos(-.1))));
|
||||
EXPECT_STREQ("0.877582561890373", _gc(xasprintf("%.15g", _cos(.5))));
|
||||
EXPECT_STREQ("0.877582561890373", _gc(xasprintf("%.15g", _cos(-.5))));
|
||||
EXPECT_STREQ("0.54030230586814", _gc(xasprintf("%.15g", _cos(1.))));
|
||||
EXPECT_STREQ("0.54030230586814", _gc(xasprintf("%.15g", _cos(-1.))));
|
||||
EXPECT_STREQ("0.0707372016677029", _gc(xasprintf("%.15g", _cos(1.5))));
|
||||
EXPECT_STREQ("0.0707372016677029", _gc(xasprintf("%.15g", _cos(-1.5))));
|
||||
EXPECT_STREQ("-0.416146836547142", _gc(xasprintf("%.15g", _cos(2.))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", _cos(0.))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", _cos(-0.))));
|
||||
EXPECT_STREQ("0.995004165278026", gc(xasprintf("%.15g", _cos(.1))));
|
||||
EXPECT_STREQ("0.995004165278026", gc(xasprintf("%.15g", _cos(-.1))));
|
||||
EXPECT_STREQ("0.877582561890373", gc(xasprintf("%.15g", _cos(.5))));
|
||||
EXPECT_STREQ("0.877582561890373", gc(xasprintf("%.15g", _cos(-.5))));
|
||||
EXPECT_STREQ("0.54030230586814", gc(xasprintf("%.15g", _cos(1.))));
|
||||
EXPECT_STREQ("0.54030230586814", gc(xasprintf("%.15g", _cos(-1.))));
|
||||
EXPECT_STREQ("0.0707372016677029", gc(xasprintf("%.15g", _cos(1.5))));
|
||||
EXPECT_STREQ("0.0707372016677029", gc(xasprintf("%.15g", _cos(-1.5))));
|
||||
EXPECT_STREQ("-0.416146836547142", gc(xasprintf("%.15g", _cos(2.))));
|
||||
EXPECT_TRUE(isnan(_cos(NAN)));
|
||||
EXPECT_TRUE(isnan(_cos(-NAN)));
|
||||
EXPECT_TRUE(isnan(_cos(INFINITY)));
|
||||
EXPECT_TRUE(isnan(_cos(-INFINITY)));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", _cos(__DBL_MIN__))));
|
||||
EXPECT_STREQ("-0.99998768942656", _gc(xasprintf("%.15g", _cos(__DBL_MAX__))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", _cos(__DBL_MIN__))));
|
||||
EXPECT_STREQ("-0.99998768942656", gc(xasprintf("%.15g", _cos(__DBL_MAX__))));
|
||||
EXPECT_STREQ("0.54030230586814",
|
||||
_gc(xasprintf("%.15g", _cos(-1.0000000000000002))));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", _cos(-2.1073424255447e-08))));
|
||||
gc(xasprintf("%.15g", _cos(-1.0000000000000002))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", _cos(-2.1073424255447e-08))));
|
||||
}
|
||||
|
||||
BENCH(cos, bench) {
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -23,5 +23,5 @@
|
|||
|
||||
TEST(csqrt, test) {
|
||||
complex double x = csqrt(-1);
|
||||
EXPECT_STREQ("0 1", _gc(xasprintf("%g %g", creal(x), cimag(x))));
|
||||
EXPECT_STREQ("0 1", gc(xasprintf("%g %g", creal(x), cimag(x))));
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
|
|
|
@ -29,39 +29,39 @@ float _expf(float) asm("expf");
|
|||
long double _expl(long double) asm("expl");
|
||||
|
||||
TEST(expl, test) {
|
||||
EXPECT_STREQ("1", _gc(xdtoal(_expl(0))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(_expl(-0.))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_expl(INFINITY))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(_expl(-INFINITY))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoal(_expl(NAN))));
|
||||
// EXPECT_STREQ("0", _gc(xdtoal(_expl(-132098844872390))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_expl(132098844872390))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(_expl(0))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(_expl(-0.))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_expl(INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(_expl(-INFINITY))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoal(_expl(NAN))));
|
||||
// EXPECT_STREQ("0", gc(xdtoal(_expl(-132098844872390))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_expl(132098844872390))));
|
||||
}
|
||||
|
||||
TEST(exp, test) {
|
||||
EXPECT_STREQ("1", _gc(xdtoa(_exp(0))));
|
||||
EXPECT_STREQ("1", _gc(xdtoa(_exp(-0.))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_exp(INFINITY))));
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_exp(-INFINITY))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoa(_exp(NAN))));
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_exp(-132098844872390))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_exp(132098844872390))));
|
||||
EXPECT_STREQ("1", gc(xdtoa(_exp(0))));
|
||||
EXPECT_STREQ("1", gc(xdtoa(_exp(-0.))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_exp(INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_exp(-INFINITY))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoa(_exp(NAN))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_exp(-132098844872390))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_exp(132098844872390))));
|
||||
}
|
||||
|
||||
TEST(expf, test) {
|
||||
EXPECT_STREQ("1", _gc(xdtoaf(_expf(0))));
|
||||
EXPECT_STREQ("1", _gc(xdtoaf(_expf(-0.))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_expf(INFINITY))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_expf(-INFINITY))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoaf(_expf(NAN))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_expf(-132098844872390))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_expf(132098844872390))));
|
||||
EXPECT_STREQ("1", gc(xdtoaf(_expf(0))));
|
||||
EXPECT_STREQ("1", gc(xdtoaf(_expf(-0.))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_expf(INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_expf(-INFINITY))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoaf(_expf(NAN))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_expf(-132098844872390))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_expf(132098844872390))));
|
||||
}
|
||||
|
||||
TEST(exp, fun) {
|
||||
ASSERT_STREQ("7.389056", _gc(xasprintf("%f", _exp(2.0))));
|
||||
ASSERT_STREQ("6.389056", _gc(xasprintf("%f", expm1(2.0))));
|
||||
ASSERT_STREQ("6.389056", _gc(xasprintf("%f", _exp(2.0) - 1.0)));
|
||||
ASSERT_STREQ("7.389056", gc(xasprintf("%f", _exp(2.0))));
|
||||
ASSERT_STREQ("6.389056", gc(xasprintf("%f", expm1(2.0))));
|
||||
ASSERT_STREQ("6.389056", gc(xasprintf("%f", _exp(2.0) - 1.0)));
|
||||
}
|
||||
|
||||
BENCH(expl, bench) {
|
||||
|
|
|
@ -28,51 +28,51 @@ float _expm1f(float) asm("expm1f");
|
|||
long double _expm1l(long double) asm("expm1l");
|
||||
|
||||
TEST(expm1, test) {
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_expm1(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoa(_expm1(-0.))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoa(_expm1(NAN))));
|
||||
EXPECT_STREQ("-1", _gc(xdtoa(_expm1(-INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_expm1(INFINITY))));
|
||||
/* EXPECT_STREQ("-INFINITY", _gc(xdtoa(_expm1(-132098844872390)))); */
|
||||
/* EXPECT_STREQ("INFINITY", _gc(xdtoa(_expm1(132098844872390)))); */
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _expm1(0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _expm1(-0.))));
|
||||
EXPECT_STREQ("0.648721270700128", _gc(xasprintf("%.15g", _expm1(.5))));
|
||||
EXPECT_STREQ("-0.393469340287367", _gc(xasprintf("%.15g", _expm1(-.5))));
|
||||
EXPECT_STREQ("1.71828182845905", _gc(xasprintf("%.15g", _expm1(1.))));
|
||||
EXPECT_STREQ("-0.632120558828558", _gc(xasprintf("%.15g", _expm1(-1.))));
|
||||
EXPECT_STREQ("3.48168907033806", _gc(xasprintf("%.15g", _expm1(1.5))));
|
||||
EXPECT_STREQ("-0.77686983985157", _gc(xasprintf("%.15g", _expm1(-1.5))));
|
||||
EXPECT_STREQ("6.38905609893065", _gc(xasprintf("%.15g", _expm1(2.))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_expm1(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoa(_expm1(-0.))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoa(_expm1(NAN))));
|
||||
EXPECT_STREQ("-1", gc(xdtoa(_expm1(-INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_expm1(INFINITY))));
|
||||
/* EXPECT_STREQ("-INFINITY", gc(xdtoa(_expm1(-132098844872390)))); */
|
||||
/* EXPECT_STREQ("INFINITY", gc(xdtoa(_expm1(132098844872390)))); */
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _expm1(0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _expm1(-0.))));
|
||||
EXPECT_STREQ("0.648721270700128", gc(xasprintf("%.15g", _expm1(.5))));
|
||||
EXPECT_STREQ("-0.393469340287367", gc(xasprintf("%.15g", _expm1(-.5))));
|
||||
EXPECT_STREQ("1.71828182845905", gc(xasprintf("%.15g", _expm1(1.))));
|
||||
EXPECT_STREQ("-0.632120558828558", gc(xasprintf("%.15g", _expm1(-1.))));
|
||||
EXPECT_STREQ("3.48168907033806", gc(xasprintf("%.15g", _expm1(1.5))));
|
||||
EXPECT_STREQ("-0.77686983985157", gc(xasprintf("%.15g", _expm1(-1.5))));
|
||||
EXPECT_STREQ("6.38905609893065", gc(xasprintf("%.15g", _expm1(2.))));
|
||||
EXPECT_TRUE(isnan(_expm1(NAN)));
|
||||
EXPECT_TRUE(isnan(_expm1(-NAN)));
|
||||
EXPECT_STREQ("inf", _gc(xasprintf("%.15g", _expm1(INFINITY))));
|
||||
EXPECT_STREQ("-1", _gc(xasprintf("%.15g", _expm1(-INFINITY))));
|
||||
EXPECT_STREQ("inf", gc(xasprintf("%.15g", _expm1(INFINITY))));
|
||||
EXPECT_STREQ("-1", gc(xasprintf("%.15g", _expm1(-INFINITY))));
|
||||
EXPECT_STREQ("2.2250738585072e-308",
|
||||
_gc(xasprintf("%.15g", _expm1(__DBL_MIN__))));
|
||||
EXPECT_STREQ("inf", _gc(xasprintf("%.15g", _expm1(__DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _expm1(__DBL_MIN__))));
|
||||
EXPECT_STREQ("inf", gc(xasprintf("%.15g", _expm1(__DBL_MAX__))));
|
||||
}
|
||||
|
||||
TEST(expm1l, test) {
|
||||
EXPECT_STREQ("1.718281828459045", _gc(xdtoal(_expm1l(1))));
|
||||
EXPECT_STREQ("1.718281828459045", _gc(xdtoal(expl(1) - 1)));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(_expm1l(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoal(_expm1l(-0.))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoal(_expm1l(NAN))));
|
||||
EXPECT_STREQ("-1", _gc(xdtoal(_expm1l(-INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_expm1l(INFINITY))));
|
||||
/* EXPECT_STREQ("-INFINITY", _gc(xdtoal(_expm1l(-132098844872390)))); */
|
||||
/* EXPECT_STREQ("INFINITY", _gc(xdtoal(_expm1l(132098844872390)))); */
|
||||
EXPECT_STREQ("1.718281828459045", gc(xdtoal(_expm1l(1))));
|
||||
EXPECT_STREQ("1.718281828459045", gc(xdtoal(expl(1) - 1)));
|
||||
EXPECT_STREQ("0", gc(xdtoal(_expm1l(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoal(_expm1l(-0.))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoal(_expm1l(NAN))));
|
||||
EXPECT_STREQ("-1", gc(xdtoal(_expm1l(-INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_expm1l(INFINITY))));
|
||||
/* EXPECT_STREQ("-INFINITY", gc(xdtoal(_expm1l(-132098844872390)))); */
|
||||
/* EXPECT_STREQ("INFINITY", gc(xdtoal(_expm1l(132098844872390)))); */
|
||||
}
|
||||
|
||||
TEST(expm1f, test) {
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_expm1f(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoaf(_expm1f(-0.))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoaf(_expm1f(NAN))));
|
||||
EXPECT_STREQ("-1", _gc(xdtoaf(_expm1f(-INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_expm1f(INFINITY))));
|
||||
/* EXPECT_STREQ("-INFINITY", _gc(xdtoaf(_expm1f(-132098844872390)))); */
|
||||
/* EXPECT_STREQ("INFINITY", _gc(xdtoaf(_expm1f(132098844872390)))); */
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_expm1f(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoaf(_expm1f(-0.))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoaf(_expm1f(NAN))));
|
||||
EXPECT_STREQ("-1", gc(xdtoaf(_expm1f(-INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_expm1f(INFINITY))));
|
||||
/* EXPECT_STREQ("-INFINITY", gc(xdtoaf(_expm1f(-132098844872390)))); */
|
||||
/* EXPECT_STREQ("INFINITY", gc(xdtoaf(_expm1f(132098844872390)))); */
|
||||
}
|
||||
|
||||
BENCH(expm1, bench) {
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/stdio/rand.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
|
|
|
@ -41,11 +41,11 @@ void SetUp(void) {
|
|||
}
|
||||
|
||||
TEST(fsum, test) {
|
||||
EXPECT_STREQ("500000000.6", _gc(xasprintf("%.15g", fsum(D, N) / N)));
|
||||
EXPECT_STREQ("500000000.6", gc(xasprintf("%.15g", fsum(D, N) / N)));
|
||||
}
|
||||
|
||||
TEST(fsumf, test) {
|
||||
EXPECT_STREQ("500.6", _gc(xasprintf("%.7g", fsumf(F, N) / N)));
|
||||
EXPECT_STREQ("500.6", gc(xasprintf("%.7g", fsumf(F, N) / N)));
|
||||
}
|
||||
|
||||
BENCH(fsum, bench) {
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -37,84 +37,84 @@ void SetUp(void) {
|
|||
|
||||
TEST(ldexpl, test) {
|
||||
EXPECT_EQ(rando, _ldexpl(rando, 0));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoal(_ldexpl(NAN, 0))));
|
||||
EXPECT_STREQ("-NAN", _gc(xdtoal(_ldexpl(-NAN, 0))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_ldexpl(INFINITY, 0))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoal(_ldexpl(-INFINITY, 0))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoal(_ldexpl(NAN, 1))));
|
||||
EXPECT_STREQ("-NAN", _gc(xdtoal(_ldexpl(-NAN, 1))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_ldexpl(INFINITY, 1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoal(_ldexpl(-INFINITY, 1))));
|
||||
EXPECT_STREQ("16384", _gc(xdtoal(log2l(LDBL_MAX))));
|
||||
EXPECT_STREQ(".00390625", _gc(xdtoal(_ldexpl(1, -8))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(_ldexpl(0, -8))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(_ldexpl(0, 8))));
|
||||
EXPECT_STREQ("256", _gc(xdtoal(_ldexpl(1, 8))));
|
||||
EXPECT_STREQ("512", _gc(xdtoal(_ldexpl(2, 8))));
|
||||
EXPECT_STREQ("768", _gc(xdtoal(_ldexpl(3, 8))));
|
||||
EXPECT_STREQ("6.997616471358197e+3461", _gc(xdtoal(_ldexpl(1, 11500))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(_ldexpl(1, 999999))));
|
||||
// EXPECT_STREQ("0", _gc(xdtoal(_ldexpl(1, -999999))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoal(_ldexpl(NAN, 0))));
|
||||
EXPECT_STREQ("-NAN", gc(xdtoal(_ldexpl(-NAN, 0))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_ldexpl(INFINITY, 0))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoal(_ldexpl(-INFINITY, 0))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoal(_ldexpl(NAN, 1))));
|
||||
EXPECT_STREQ("-NAN", gc(xdtoal(_ldexpl(-NAN, 1))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_ldexpl(INFINITY, 1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoal(_ldexpl(-INFINITY, 1))));
|
||||
EXPECT_STREQ("16384", gc(xdtoal(log2l(LDBL_MAX))));
|
||||
EXPECT_STREQ(".00390625", gc(xdtoal(_ldexpl(1, -8))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(_ldexpl(0, -8))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(_ldexpl(0, 8))));
|
||||
EXPECT_STREQ("256", gc(xdtoal(_ldexpl(1, 8))));
|
||||
EXPECT_STREQ("512", gc(xdtoal(_ldexpl(2, 8))));
|
||||
EXPECT_STREQ("768", gc(xdtoal(_ldexpl(3, 8))));
|
||||
EXPECT_STREQ("6.997616471358197e+3461", gc(xdtoal(_ldexpl(1, 11500))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(_ldexpl(1, 999999))));
|
||||
// EXPECT_STREQ("0", gc(xdtoal(_ldexpl(1, -999999))));
|
||||
}
|
||||
|
||||
TEST(ldexp, test) {
|
||||
EXPECT_EQ(rando, _ldexp(rando, 0));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoa(_ldexp(NAN, 0))));
|
||||
EXPECT_STREQ("-NAN", _gc(xdtoa(_ldexp(-NAN, 0))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_ldexp(INFINITY, 0))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoa(_ldexp(-INFINITY, 0))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoa(_ldexp(NAN, 1))));
|
||||
EXPECT_STREQ("-NAN", _gc(xdtoa(_ldexp(-NAN, 1))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_ldexp(INFINITY, 1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoa(_ldexp(-INFINITY, 1))));
|
||||
EXPECT_STREQ("16384", _gc(xdtoa(log2l(LDBL_MAX))));
|
||||
EXPECT_STREQ(".00390625", _gc(xdtoa(_ldexp(1, -8))));
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_ldexp(0, -8))));
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_ldexp(0, 8))));
|
||||
EXPECT_STREQ("256", _gc(xdtoa(_ldexp(1, 8))));
|
||||
EXPECT_STREQ("512", _gc(xdtoa(_ldexp(2, 8))));
|
||||
EXPECT_STREQ("768", _gc(xdtoa(_ldexp(3, 8))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoa(_ldexp(1, 999999))));
|
||||
EXPECT_STREQ("0", _gc(xdtoa(_ldexp(1, -999999))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoa(_ldexp(NAN, 0))));
|
||||
EXPECT_STREQ("-NAN", gc(xdtoa(_ldexp(-NAN, 0))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_ldexp(INFINITY, 0))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoa(_ldexp(-INFINITY, 0))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoa(_ldexp(NAN, 1))));
|
||||
EXPECT_STREQ("-NAN", gc(xdtoa(_ldexp(-NAN, 1))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_ldexp(INFINITY, 1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoa(_ldexp(-INFINITY, 1))));
|
||||
EXPECT_STREQ("16384", gc(xdtoa(log2l(LDBL_MAX))));
|
||||
EXPECT_STREQ(".00390625", gc(xdtoa(_ldexp(1, -8))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_ldexp(0, -8))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_ldexp(0, 8))));
|
||||
EXPECT_STREQ("256", gc(xdtoa(_ldexp(1, 8))));
|
||||
EXPECT_STREQ("512", gc(xdtoa(_ldexp(2, 8))));
|
||||
EXPECT_STREQ("768", gc(xdtoa(_ldexp(3, 8))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoa(_ldexp(1, 999999))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(_ldexp(1, -999999))));
|
||||
}
|
||||
|
||||
TEST(ldexpf, test) {
|
||||
EXPECT_EQ(rando, _ldexpf(rando, 0));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoaf(_ldexpf(NAN, 0))));
|
||||
EXPECT_STREQ("-NAN", _gc(xdtoaf(_ldexpf(-NAN, 0))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_ldexpf(INFINITY, 0))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoaf(_ldexpf(-INFINITY, 0))));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoaf(_ldexpf(NAN, 1))));
|
||||
EXPECT_STREQ("-NAN", _gc(xdtoaf(_ldexpf(-NAN, 1))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_ldexpf(INFINITY, 1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoaf(_ldexpf(-INFINITY, 1))));
|
||||
EXPECT_STREQ("16384", _gc(xdtoaf(log2l(LDBL_MAX))));
|
||||
EXPECT_STREQ(".00390625", _gc(xdtoaf(_ldexpf(1, -8))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_ldexpf(0, -8))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_ldexpf(0, 8))));
|
||||
EXPECT_STREQ("256", _gc(xdtoaf(_ldexpf(1, 8))));
|
||||
EXPECT_STREQ("512", _gc(xdtoaf(_ldexpf(2, 8))));
|
||||
EXPECT_STREQ("768", _gc(xdtoaf(_ldexpf(3, 8))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoaf(_ldexpf(1, 999999))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_ldexpf(1, -999999))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoaf(_ldexpf(NAN, 0))));
|
||||
EXPECT_STREQ("-NAN", gc(xdtoaf(_ldexpf(-NAN, 0))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_ldexpf(INFINITY, 0))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoaf(_ldexpf(-INFINITY, 0))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoaf(_ldexpf(NAN, 1))));
|
||||
EXPECT_STREQ("-NAN", gc(xdtoaf(_ldexpf(-NAN, 1))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_ldexpf(INFINITY, 1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoaf(_ldexpf(-INFINITY, 1))));
|
||||
EXPECT_STREQ("16384", gc(xdtoaf(log2l(LDBL_MAX))));
|
||||
EXPECT_STREQ(".00390625", gc(xdtoaf(_ldexpf(1, -8))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_ldexpf(0, -8))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_ldexpf(0, 8))));
|
||||
EXPECT_STREQ("256", gc(xdtoaf(_ldexpf(1, 8))));
|
||||
EXPECT_STREQ("512", gc(xdtoaf(_ldexpf(2, 8))));
|
||||
EXPECT_STREQ("768", gc(xdtoaf(_ldexpf(3, 8))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoaf(_ldexpf(1, 999999))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_ldexpf(1, -999999))));
|
||||
}
|
||||
|
||||
TEST(ldexp, stuff) {
|
||||
volatile int twopow = 5;
|
||||
volatile double pi = 3.14;
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", _ldexp(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", _ldexpf(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", scalb(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", scalbf(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", scalbn(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", scalbnf(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", scalbln(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2f", scalblnf(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", _ldexp(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", _ldexpf(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", scalb(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", scalbf(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", scalbn(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", scalbnf(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", scalbln(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2f", scalblnf(pi, twopow))));
|
||||
#ifndef __aarch64__
|
||||
// TODO: implement quad floating point in printf
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2Lf", _ldexpl(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2Lf", scalbnl(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", _gc(xasprintf("%.2Lf", scalblnl(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2Lf", _ldexpl(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2Lf", scalbnl(pi, twopow))));
|
||||
ASSERT_STREQ("100.48", gc(xasprintf("%.2Lf", scalblnl(pi, twopow))));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/stdio/rand.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/hyperion.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
|
|
|
@ -55,57 +55,57 @@ static char *fmtf(float x) {
|
|||
}
|
||||
|
||||
TEST(powl, test) {
|
||||
EXPECT_STREQ("27", _gc(xdtoal(powl(3, 3))));
|
||||
EXPECT_STREQ("-27", _gc(xdtoal(powl(-3, 3))));
|
||||
EXPECT_STREQ("1e+4932", _gc(xdtoal(powl(10, 4932))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(10, 4933))));
|
||||
// EXPECT_STREQ("0", _gc(xdtoal(powl(10, -5000))));
|
||||
EXPECT_STREQ("1.063382396627933e+37", _gc(xdtoal(powl(2, 123))));
|
||||
EXPECT_STARTSWITH(".4248496805467504", _gc(xdtoal(powl(.7, 2.4))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(1, NAN))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(1, rando))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(NAN, 0))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(rando, 0))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(0, 1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(0, 2))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(0, 2.1))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(-1, INFINITY))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(-1, -INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(1. / MAX(2, rando), -INFINITY))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(1.1, -INFINITY))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(MAX(2, rando), -INFINITY))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(1. / MAX(2, rando), INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(MAX(2, rando), INFINITY))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoal(powl(-INFINITY, -1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(-INFINITY, -1.1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(-INFINITY, -2))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(-INFINITY, -2.1))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoal(powl(-INFINITY, -3))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(-INFINITY, -3.1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoal(powl(-INFINITY, 1))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(-INFINITY, 1.1))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(-INFINITY, 2))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(-INFINITY, 2.1))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoal(powl(-INFINITY, 3))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(-INFINITY, 3.1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(INFINITY, -1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(INFINITY, -.1))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(INFINITY, 1))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(INFINITY, .1))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(INFINITY, 0))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(INFINITY, -0.))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(0, 0))));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(powl(0, -0.))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(0, -(MAX(rando, 1) | 1)))));
|
||||
EXPECT_STREQ("-INFINITY", _gc(xdtoal(powl(-0., -(MAX(rando, 1) | 1)))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(0, -(rando & -2)))));
|
||||
EXPECT_STREQ("INFINITY", _gc(xdtoal(powl(-0., -(rando & -2)))));
|
||||
EXPECT_STREQ("27", gc(xdtoal(powl(3, 3))));
|
||||
EXPECT_STREQ("-27", gc(xdtoal(powl(-3, 3))));
|
||||
EXPECT_STREQ("1e+4932", gc(xdtoal(powl(10, 4932))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(10, 4933))));
|
||||
// EXPECT_STREQ("0", gc(xdtoal(powl(10, -5000))));
|
||||
EXPECT_STREQ("1.063382396627933e+37", gc(xdtoal(powl(2, 123))));
|
||||
EXPECT_STARTSWITH(".4248496805467504", gc(xdtoal(powl(.7, 2.4))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(1, NAN))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(1, rando))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(NAN, 0))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(rando, 0))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(0, 1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(0, 2))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(0, 2.1))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(-1, INFINITY))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(-1, -INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(1. / MAX(2, rando), -INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(1.1, -INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(MAX(2, rando), -INFINITY))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(1. / MAX(2, rando), INFINITY))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(MAX(2, rando), INFINITY))));
|
||||
EXPECT_STREQ("-0", gc(xdtoal(powl(-INFINITY, -1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(-INFINITY, -1.1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(-INFINITY, -2))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(-INFINITY, -2.1))));
|
||||
EXPECT_STREQ("-0", gc(xdtoal(powl(-INFINITY, -3))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(-INFINITY, -3.1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoal(powl(-INFINITY, 1))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(-INFINITY, 1.1))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(-INFINITY, 2))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(-INFINITY, 2.1))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoal(powl(-INFINITY, 3))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(-INFINITY, 3.1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(INFINITY, -1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(INFINITY, -.1))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(INFINITY, 1))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(INFINITY, .1))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(INFINITY, 0))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(INFINITY, -0.))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(0, 0))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(powl(0, -0.))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(0, -(MAX(rando, 1) | 1)))));
|
||||
EXPECT_STREQ("-INFINITY", gc(xdtoal(powl(-0., -(MAX(rando, 1) | 1)))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(0, -(rando & -2)))));
|
||||
EXPECT_STREQ("INFINITY", gc(xdtoal(powl(-0., -(rando & -2)))));
|
||||
EXPECT_TRUE(isnan(powl(-3, 1. / MAX(rando, 2))));
|
||||
EXPECT_TRUE(isnan(powl(-3, -(1. / MAX(rando, 2)))));
|
||||
EXPECT_STREQ("-.3333333333333333", _gc(xdtoal(powl(-3, -1))));
|
||||
EXPECT_STREQ(".1111111111111111", _gc(xdtoal(powl(-3, -2))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoal(powl(-0., MAX(1, rando) | 1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(powl(-0., MAX(1, rando) & ~1))));
|
||||
EXPECT_STREQ("-.3333333333333333", gc(xdtoal(powl(-3, -1))));
|
||||
EXPECT_STREQ(".1111111111111111", gc(xdtoal(powl(-3, -2))));
|
||||
EXPECT_STREQ("-0", gc(xdtoal(powl(-0., MAX(1, rando) | 1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(powl(-0., MAX(1, rando) & ~1))));
|
||||
}
|
||||
|
||||
TEST(pow, test) {
|
||||
|
@ -156,8 +156,8 @@ TEST(pow, test) {
|
|||
EXPECT_STREQ("inf", fmtd(pow(-0., -(rando & -2))));
|
||||
EXPECT_STREQ("-0.333333333333333", fmtd(pow(-3, -1)));
|
||||
EXPECT_STREQ("0.111111111111111", fmtd(pow(-3, -2)));
|
||||
EXPECT_STREQ("-0", _gc(xdtoa(pow(-0., MAX(1, rando) | 1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoa(pow(-0., MAX(1, rando) & ~1))));
|
||||
EXPECT_STREQ("-0", gc(xdtoa(pow(-0., MAX(1, rando) | 1))));
|
||||
EXPECT_STREQ("0", gc(xdtoa(pow(-0., MAX(1, rando) & ~1))));
|
||||
}
|
||||
|
||||
TEST(powf, test) {
|
||||
|
@ -208,8 +208,8 @@ TEST(powf, test) {
|
|||
EXPECT_STREQ("inf", fmtf(powf(-0., -(rando & -2))));
|
||||
EXPECT_STREQ("-0.333333", fmtf(powf(-3, -1)));
|
||||
EXPECT_STREQ("0.111111", fmtf(powf(-3, -2)));
|
||||
EXPECT_STREQ("-0", _gc(xdtoaf(powf(-0., MAX(1, rando) | 1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(powf(-0., MAX(1, rando) & ~1))));
|
||||
EXPECT_STREQ("-0", gc(xdtoaf(powf(-0., MAX(1, rando) | 1))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(powf(-0., MAX(1, rando) & ~1))));
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
@ -548,15 +548,15 @@ TEST(powl, errors) {
|
|||
errno = 0;
|
||||
EXPECT_STREQ("inf", fmtd(POW(__DBL_MAX__, __DBL_MAX__)));
|
||||
/* EXPECT_EQ(ERANGE, errno); */
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", POW(0., 0))));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", POW(-0., 0))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", POW(-0., 1))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", POW(-0., 11))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", POW(-0., 111))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", POW(-0., 2))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", POW(-0., 22))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", POW(-0., 222))));
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", POW(-0., 2.5))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", POW(0., 0))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", POW(-0., 0))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", POW(-0., 1))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", POW(-0., 11))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", POW(-0., 111))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", POW(-0., 2))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", POW(-0., 22))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", POW(-0., 222))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", POW(-0., 2.5))));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ TEST(remainder, test) {
|
|||
EXPECT_TRUE(isnan(_remainder(NAN, 7)));
|
||||
EXPECT_TRUE(isnan(_remainder(INFINITY, 7)));
|
||||
EXPECT_TRUE(isnan(_remainder(7, 0)));
|
||||
EXPECT_STREQ("-1", _gc(xdtoa(_remainder(7, 4))));
|
||||
EXPECT_STREQ("-1", gc(xdtoa(_remainder(7, 4))));
|
||||
}
|
||||
|
||||
TEST(remainderf, test) {
|
||||
|
@ -44,7 +44,7 @@ TEST(remainderf, test) {
|
|||
EXPECT_TRUE(isnan(_remainderf(NAN, 7)));
|
||||
EXPECT_TRUE(isnan(_remainderf(INFINITY, 7)));
|
||||
EXPECT_TRUE(isnan(_remainderf(7, 0)));
|
||||
EXPECT_STREQ("-1", _gc(xdtoaf(_remainderf(7, 4))));
|
||||
EXPECT_STREQ("-1", gc(xdtoaf(_remainderf(7, 4))));
|
||||
}
|
||||
|
||||
TEST(remainderl, test) {
|
||||
|
@ -52,7 +52,7 @@ TEST(remainderl, test) {
|
|||
EXPECT_TRUE(isnan(_remainderl(NAN, 7)));
|
||||
EXPECT_TRUE(isnan(_remainderl(INFINITY, 7)));
|
||||
EXPECT_TRUE(isnan(_remainderl(7, 0)));
|
||||
EXPECT_STREQ("-1", _gc(xdtoal(_remainderl(7, 4))));
|
||||
EXPECT_STREQ("-1", gc(xdtoal(_remainderl(7, 4))));
|
||||
}
|
||||
|
||||
static inline float i2f(uint32_t i) {
|
||||
|
@ -95,10 +95,10 @@ TEST(remainderf, brute) {
|
|||
x = f2i(a);
|
||||
y = f2i(b);
|
||||
if (abs(x - y) > 1) {
|
||||
kprintf("bah %#lx %s %#lx %d\n", i, _gc(xdtoaf(i2f(i))), j,
|
||||
_gc(xdtoaf(i2f(j))), abs(x - y));
|
||||
kprintf(" %-12s %#x\n", _gc(xdtoaf(i2f(x))), x);
|
||||
kprintf(" %-12s %#x\n", _gc(xdtoaf(i2f(y))), y);
|
||||
kprintf("bah %#lx %s %#lx %d\n", i, gc(xdtoaf(i2f(i))), j,
|
||||
gc(xdtoaf(i2f(j))), abs(x - y));
|
||||
kprintf(" %-12s %#x\n", gc(xdtoaf(i2f(x))), x);
|
||||
kprintf(" %-12s %#x\n", gc(xdtoaf(i2f(y))), y);
|
||||
if (!--lim) break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/nexgen32e/x86feature.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
|
|
|
@ -28,50 +28,50 @@ float _sinf(float) asm("sinf");
|
|||
long double _sinl(long double) asm("sinl");
|
||||
|
||||
TEST(sinl, test) {
|
||||
EXPECT_STREQ("NAN", _gc(xdtoal(_sinl(NAN))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoal(_sinl(NAN))));
|
||||
EXPECT_TRUE(isnan(_sinl(+INFINITY)));
|
||||
EXPECT_TRUE(isnan(_sinl(-INFINITY)));
|
||||
EXPECT_STREQ(".479425538604203", _gc(xdtoal(_sinl(.5))));
|
||||
EXPECT_STREQ("-.479425538604203", _gc(xdtoal(_sinl(-.5))));
|
||||
EXPECT_STREQ(".8414709794048734", _gc(xdtoal(_sinl(.99999999))));
|
||||
/* EXPECT_STREQ("-.998836772397", _gc(xdtoal(_sinl(555555555555)))); */
|
||||
/* EXPECT_STREQ("1", _gc(xdtoal(_sinl(5.319372648326541e+255L)))); */
|
||||
EXPECT_STREQ(".479425538604203", gc(xdtoal(_sinl(.5))));
|
||||
EXPECT_STREQ("-.479425538604203", gc(xdtoal(_sinl(-.5))));
|
||||
EXPECT_STREQ(".8414709794048734", gc(xdtoal(_sinl(.99999999))));
|
||||
/* EXPECT_STREQ("-.998836772397", gc(xdtoal(_sinl(555555555555)))); */
|
||||
/* EXPECT_STREQ("1", gc(xdtoal(_sinl(5.319372648326541e+255L)))); */
|
||||
}
|
||||
|
||||
TEST(sin, test) {
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _sin(0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _sin(-0.))));
|
||||
EXPECT_STREQ("0.0998334166468282", _gc(xasprintf("%.15g", _sin(.1))));
|
||||
EXPECT_STREQ("-0.0998334166468282", _gc(xasprintf("%.15g", _sin(-.1))));
|
||||
EXPECT_STREQ("0.479425538604203", _gc(xasprintf("%.15g", _sin(.5))));
|
||||
EXPECT_STREQ("-0.479425538604203", _gc(xasprintf("%.15g", _sin(-.5))));
|
||||
EXPECT_STREQ("0.841470984807897", _gc(xasprintf("%.15g", _sin(1.))));
|
||||
EXPECT_STREQ("-0.841470984807897", _gc(xasprintf("%.15g", _sin(-1.))));
|
||||
EXPECT_STREQ("0.997494986604054", _gc(xasprintf("%.15g", _sin(1.5))));
|
||||
EXPECT_STREQ("-0.997494986604054", _gc(xasprintf("%.15g", _sin(-1.5))));
|
||||
EXPECT_STREQ("0.909297426825682", _gc(xasprintf("%.15g", _sin(2.))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _sin(0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _sin(-0.))));
|
||||
EXPECT_STREQ("0.0998334166468282", gc(xasprintf("%.15g", _sin(.1))));
|
||||
EXPECT_STREQ("-0.0998334166468282", gc(xasprintf("%.15g", _sin(-.1))));
|
||||
EXPECT_STREQ("0.479425538604203", gc(xasprintf("%.15g", _sin(.5))));
|
||||
EXPECT_STREQ("-0.479425538604203", gc(xasprintf("%.15g", _sin(-.5))));
|
||||
EXPECT_STREQ("0.841470984807897", gc(xasprintf("%.15g", _sin(1.))));
|
||||
EXPECT_STREQ("-0.841470984807897", gc(xasprintf("%.15g", _sin(-1.))));
|
||||
EXPECT_STREQ("0.997494986604054", gc(xasprintf("%.15g", _sin(1.5))));
|
||||
EXPECT_STREQ("-0.997494986604054", gc(xasprintf("%.15g", _sin(-1.5))));
|
||||
EXPECT_STREQ("0.909297426825682", gc(xasprintf("%.15g", _sin(2.))));
|
||||
EXPECT_TRUE(isnan(_sin(NAN)));
|
||||
EXPECT_TRUE(isnan(_sin(-NAN)));
|
||||
EXPECT_TRUE(isnan(_sin(INFINITY)));
|
||||
EXPECT_TRUE(isnan(_sin(-INFINITY)));
|
||||
EXPECT_STREQ("2.2250738585072e-308",
|
||||
_gc(xasprintf("%.15g", _sin(__DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _sin(__DBL_MIN__))));
|
||||
EXPECT_STREQ("0.00496195478918406",
|
||||
_gc(xasprintf("%.15g", _sin(__DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _sin(__DBL_MAX__))));
|
||||
EXPECT_STREQ("-0.841470984807897",
|
||||
_gc(xasprintf("%.15g", _sin(-1.0000000000000002))));
|
||||
gc(xasprintf("%.15g", _sin(-1.0000000000000002))));
|
||||
EXPECT_STREQ("-2.1073424255447e-08",
|
||||
_gc(xasprintf("%.15g", _sin(-2.1073424255447e-08))));
|
||||
gc(xasprintf("%.15g", _sin(-2.1073424255447e-08))));
|
||||
}
|
||||
|
||||
TEST(sinf, test) {
|
||||
EXPECT_TRUE(isnan(_sinf(NAN)));
|
||||
EXPECT_TRUE(isnan(_sinf(+INFINITY)));
|
||||
EXPECT_TRUE(isnan(_sinf(-INFINITY)));
|
||||
EXPECT_STREQ("NAN", _gc(xdtoaf(_sinf(NAN))));
|
||||
EXPECT_STARTSWITH(".479426", _gc(xdtoaf(_sinf(.5f))));
|
||||
EXPECT_STARTSWITH("-.479426", _gc(xdtoaf(_sinf(-.5f))));
|
||||
EXPECT_STARTSWITH(".873283", _gc(xdtoaf(_sinf(555))));
|
||||
EXPECT_STREQ("NAN", gc(xdtoaf(_sinf(NAN))));
|
||||
EXPECT_STARTSWITH(".479426", gc(xdtoaf(_sinf(.5f))));
|
||||
EXPECT_STARTSWITH("-.479426", gc(xdtoaf(_sinf(-.5f))));
|
||||
EXPECT_STARTSWITH(".873283", gc(xdtoaf(_sinf(555))));
|
||||
}
|
||||
|
||||
BENCH(_sin, bench) {
|
||||
|
|
|
@ -25,15 +25,15 @@
|
|||
TEST(sincos, test) {
|
||||
double sine, cosine;
|
||||
sincos(.1, &sine, &cosine);
|
||||
EXPECT_STREQ("0.0998334166468282", _gc(xasprintf("%.15g", sine)));
|
||||
EXPECT_STREQ("0.995004165278026", _gc(xasprintf("%.15g", cosine)));
|
||||
EXPECT_STREQ("0.0998334166468282", gc(xasprintf("%.15g", sine)));
|
||||
EXPECT_STREQ("0.995004165278026", gc(xasprintf("%.15g", cosine)));
|
||||
}
|
||||
|
||||
TEST(sincosf, test) {
|
||||
float sine, cosine;
|
||||
sincosf(.1, &sine, &cosine);
|
||||
EXPECT_STREQ("0.0998334", _gc(xasprintf("%.6g", sine)));
|
||||
EXPECT_STREQ("0.995004", _gc(xasprintf("%.6g", cosine)));
|
||||
EXPECT_STREQ("0.0998334", gc(xasprintf("%.6g", sine)));
|
||||
EXPECT_STREQ("0.995004", gc(xasprintf("%.6g", cosine)));
|
||||
}
|
||||
|
||||
TEST(sincosl, test) {
|
||||
|
@ -41,8 +41,8 @@ TEST(sincosl, test) {
|
|||
sincosl(.1, &sine, &cosine);
|
||||
#ifndef __aarch64__
|
||||
// TODO(jart): get quad floats working with printf
|
||||
EXPECT_STREQ("0.0998334166468282", _gc(xasprintf("%.15Lg", sine)));
|
||||
EXPECT_STREQ("0.995004165278026", _gc(xasprintf("%.15Lg", cosine)));
|
||||
EXPECT_STREQ("0.0998334166468282", gc(xasprintf("%.15Lg", sine)));
|
||||
EXPECT_STREQ("0.995004165278026", gc(xasprintf("%.15Lg", cosine)));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
|
@ -394,19 +394,19 @@ TEST(strtod, test) {
|
|||
TEST(strtod, testNearest) {
|
||||
fesetround(FE_TONEAREST);
|
||||
EXPECT_STREQ("-1.79769313486231e+308",
|
||||
_gc(xasprintf("%.15g", strtod("-1.79769313486231e+308", NULL))));
|
||||
gc(xasprintf("%.15g", strtod("-1.79769313486231e+308", NULL))));
|
||||
}
|
||||
|
||||
TEST(strtod, testDownward) {
|
||||
fesetround(FE_DOWNWARD);
|
||||
EXPECT_STREQ("-1.79769313486232e+308",
|
||||
_gc(xasprintf("%.15g", strtod("-1.79769313486231e+308", NULL))));
|
||||
gc(xasprintf("%.15g", strtod("-1.79769313486231e+308", NULL))));
|
||||
}
|
||||
|
||||
TEST(strtod, testUpward) {
|
||||
fesetround(FE_UPWARD);
|
||||
EXPECT_STREQ("-1.7976931348623e+308",
|
||||
_gc(xasprintf("%.15g", strtod("-1.79769313486231e+308", NULL))));
|
||||
gc(xasprintf("%.15g", strtod("-1.79769313486231e+308", NULL))));
|
||||
}
|
||||
|
||||
TEST(strtod, testTowardzero) {
|
||||
|
|
|
@ -27,22 +27,22 @@ float _tanf(float) asm("tanf");
|
|||
long double _tanl(long double) asm("tanl");
|
||||
|
||||
TEST(tan, test) {
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _tan(0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _tan(-0.))));
|
||||
EXPECT_STREQ("0.54630248984379", _gc(xasprintf("%.15g", _tan(.5))));
|
||||
EXPECT_STREQ("-0.54630248984379", _gc(xasprintf("%.15g", _tan(-.5))));
|
||||
EXPECT_STREQ("1.5574077246549", _gc(xasprintf("%.15g", _tan(1.))));
|
||||
EXPECT_STREQ("-1.5574077246549", _gc(xasprintf("%.15g", _tan(-1.))));
|
||||
EXPECT_STREQ("14.1014199471717", _gc(xasprintf("%.15g", _tan(1.5))));
|
||||
EXPECT_STREQ("-14.1014199471717", _gc(xasprintf("%.15g", _tan(-1.5))));
|
||||
EXPECT_STREQ("nan", _gc(xasprintf("%.15g", _tan(NAN))));
|
||||
EXPECT_STREQ("-nan", _gc(xasprintf("%.15g", _tan(-NAN))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _tan(0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _tan(-0.))));
|
||||
EXPECT_STREQ("0.54630248984379", gc(xasprintf("%.15g", _tan(.5))));
|
||||
EXPECT_STREQ("-0.54630248984379", gc(xasprintf("%.15g", _tan(-.5))));
|
||||
EXPECT_STREQ("1.5574077246549", gc(xasprintf("%.15g", _tan(1.))));
|
||||
EXPECT_STREQ("-1.5574077246549", gc(xasprintf("%.15g", _tan(-1.))));
|
||||
EXPECT_STREQ("14.1014199471717", gc(xasprintf("%.15g", _tan(1.5))));
|
||||
EXPECT_STREQ("-14.1014199471717", gc(xasprintf("%.15g", _tan(-1.5))));
|
||||
EXPECT_STREQ("nan", gc(xasprintf("%.15g", _tan(NAN))));
|
||||
EXPECT_STREQ("-nan", gc(xasprintf("%.15g", _tan(-NAN))));
|
||||
EXPECT_TRUE(isnan(_tan(INFINITY)));
|
||||
EXPECT_TRUE(isnan(_tan(-INFINITY)));
|
||||
EXPECT_STREQ("2.2250738585072e-308",
|
||||
_gc(xasprintf("%.15g", _tan(__DBL_MIN__))));
|
||||
gc(xasprintf("%.15g", _tan(__DBL_MIN__))));
|
||||
EXPECT_STREQ("-0.0049620158744449",
|
||||
_gc(xasprintf("%.15g", _tan(__DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _tan(__DBL_MAX__))));
|
||||
}
|
||||
|
||||
BENCH(tan, bench) {
|
||||
|
|
|
@ -32,48 +32,48 @@ float _tanhf(float) asm("tanhf");
|
|||
long double _tanhl(long double) asm("tanhl");
|
||||
|
||||
TEST(tanh, test) {
|
||||
EXPECT_STREQ("0", _gc(xasprintf("%.15g", _tanh(0.))));
|
||||
EXPECT_STREQ("-0", _gc(xasprintf("%.15g", _tanh(-0.))));
|
||||
EXPECT_STREQ("0.0996679946249558", _gc(xasprintf("%.15g", _tanh(.1))));
|
||||
EXPECT_STREQ("-0.0996679946249558", _gc(xasprintf("%.15g", _tanh(-.1))));
|
||||
EXPECT_STREQ("0.46211715726001", _gc(xasprintf("%.15g", _tanh(.5))));
|
||||
EXPECT_STREQ("-0.46211715726001", _gc(xasprintf("%.15g", _tanh(-.5))));
|
||||
EXPECT_STREQ("0.761594155955765", _gc(xasprintf("%.15g", _tanh(1.))));
|
||||
EXPECT_STREQ("-0.761594155955765", _gc(xasprintf("%.15g", _tanh(-1.))));
|
||||
EXPECT_STREQ("0.905148253644866", _gc(xasprintf("%.15g", _tanh(1.5))));
|
||||
EXPECT_STREQ("-0.905148253644866", _gc(xasprintf("%.15g", _tanh(-1.5))));
|
||||
EXPECT_STREQ("0.964027580075817", _gc(xasprintf("%.15g", _tanh(2.))));
|
||||
EXPECT_STREQ("0", gc(xasprintf("%.15g", _tanh(0.))));
|
||||
EXPECT_STREQ("-0", gc(xasprintf("%.15g", _tanh(-0.))));
|
||||
EXPECT_STREQ("0.0996679946249558", gc(xasprintf("%.15g", _tanh(.1))));
|
||||
EXPECT_STREQ("-0.0996679946249558", gc(xasprintf("%.15g", _tanh(-.1))));
|
||||
EXPECT_STREQ("0.46211715726001", gc(xasprintf("%.15g", _tanh(.5))));
|
||||
EXPECT_STREQ("-0.46211715726001", gc(xasprintf("%.15g", _tanh(-.5))));
|
||||
EXPECT_STREQ("0.761594155955765", gc(xasprintf("%.15g", _tanh(1.))));
|
||||
EXPECT_STREQ("-0.761594155955765", gc(xasprintf("%.15g", _tanh(-1.))));
|
||||
EXPECT_STREQ("0.905148253644866", gc(xasprintf("%.15g", _tanh(1.5))));
|
||||
EXPECT_STREQ("-0.905148253644866", gc(xasprintf("%.15g", _tanh(-1.5))));
|
||||
EXPECT_STREQ("0.964027580075817", gc(xasprintf("%.15g", _tanh(2.))));
|
||||
EXPECT_TRUE(isnan(_tanh(NAN)));
|
||||
EXPECT_TRUE(isnan(_tanh(-NAN)));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", _tanh(INFINITY))));
|
||||
EXPECT_STREQ("-1", _gc(xasprintf("%.15g", _tanh(-INFINITY))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", _tanh(INFINITY))));
|
||||
EXPECT_STREQ("-1", gc(xasprintf("%.15g", _tanh(-INFINITY))));
|
||||
EXPECT_STREQ("2.2250738585072e-308",
|
||||
_gc(xasprintf("%.15g", _tanh(__DBL_MIN__))));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", _tanh(__DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", _tanh(__DBL_MIN__))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", _tanh(__DBL_MAX__))));
|
||||
EXPECT_STREQ("-0.761594155955765",
|
||||
_gc(xasprintf("%.15g", _tanh(-1.0000000000000002))));
|
||||
gc(xasprintf("%.15g", _tanh(-1.0000000000000002))));
|
||||
EXPECT_STREQ("-2.1073424255447e-08",
|
||||
_gc(xasprintf("%.15g", _tanh(-2.1073424255447e-08))));
|
||||
gc(xasprintf("%.15g", _tanh(-2.1073424255447e-08))));
|
||||
}
|
||||
|
||||
TEST(tanhf, test) {
|
||||
EXPECT_STREQ(".099668", _gc(xdtoaf(_tanhf(+.1))));
|
||||
EXPECT_STREQ("-.099668", _gc(xdtoaf(_tanhf(-.1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoaf(_tanhf(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoaf(_tanhf(-0.))));
|
||||
EXPECT_STREQ(".099668", gc(xdtoaf(_tanhf(+.1))));
|
||||
EXPECT_STREQ("-.099668", gc(xdtoaf(_tanhf(-.1))));
|
||||
EXPECT_STREQ("0", gc(xdtoaf(_tanhf(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoaf(_tanhf(-0.))));
|
||||
EXPECT_TRUE(isnan(_tanhf(NAN)));
|
||||
EXPECT_STREQ("1", _gc(xdtoaf(_tanhf(INFINITY))));
|
||||
EXPECT_STREQ("-1", _gc(xdtoaf(_tanhf(-INFINITY))));
|
||||
EXPECT_STREQ("1", gc(xdtoaf(_tanhf(INFINITY))));
|
||||
EXPECT_STREQ("-1", gc(xdtoaf(_tanhf(-INFINITY))));
|
||||
}
|
||||
|
||||
TEST(tanhl, test) {
|
||||
EXPECT_STREQ(".09966799462495582", _gc(xdtoal(_tanhl(+.1))));
|
||||
EXPECT_STREQ("-.09966799462495582", _gc(xdtoal(_tanhl(-.1))));
|
||||
EXPECT_STREQ("0", _gc(xdtoal(_tanhl(0))));
|
||||
EXPECT_STREQ("-0", _gc(xdtoal(_tanhl(-0.))));
|
||||
EXPECT_STREQ(".09966799462495582", gc(xdtoal(_tanhl(+.1))));
|
||||
EXPECT_STREQ("-.09966799462495582", gc(xdtoal(_tanhl(-.1))));
|
||||
EXPECT_STREQ("0", gc(xdtoal(_tanhl(0))));
|
||||
EXPECT_STREQ("-0", gc(xdtoal(_tanhl(-0.))));
|
||||
EXPECT_TRUE(isnan(_tanhl(NAN)));
|
||||
EXPECT_STREQ("1", _gc(xdtoal(_tanhl(INFINITY))));
|
||||
EXPECT_STREQ("-1", _gc(xdtoal(_tanhl(-INFINITY))));
|
||||
EXPECT_STREQ("1", gc(xdtoal(_tanhl(INFINITY))));
|
||||
EXPECT_STREQ("-1", gc(xdtoal(_tanhl(-INFINITY))));
|
||||
}
|
||||
|
||||
BENCH(tanhl, bench) {
|
||||
|
@ -107,9 +107,9 @@ TEST(tanhf, brute) {
|
|||
x = f2i(tanhf(i2f(i)));
|
||||
y = f2i(tanhf2(i2f(i)));
|
||||
if (abs(x - y) > 2) {
|
||||
kprintf("bah %#lx %s %d\n", i, _gc(xdtoaf(i2f(i))), abs(x - y));
|
||||
kprintf(" %-12s %#x\n", _gc(xdtoaf(i2f(x))), x);
|
||||
kprintf(" %-12s %#x\n", _gc(xdtoaf(i2f(y))), y);
|
||||
kprintf("bah %#lx %s %d\n", i, gc(xdtoaf(i2f(i))), abs(x - y));
|
||||
kprintf(" %-12s %#x\n", gc(xdtoaf(i2f(x))), x);
|
||||
kprintf(" %-12s %#x\n", gc(xdtoaf(i2f(y))), y);
|
||||
if (!--lim) break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,26 +22,26 @@
|
|||
#include "libc/x/xasprintf.h"
|
||||
|
||||
TEST(tgamma, test) {
|
||||
EXPECT_STREQ("inf", _gc(xasprintf("%.15g", tgamma(0.))));
|
||||
EXPECT_STREQ("-inf", _gc(xasprintf("%.15g", tgamma(-0.))));
|
||||
EXPECT_STREQ("9.51350769866873", _gc(xasprintf("%.15g", tgamma(.1))));
|
||||
EXPECT_STREQ("-10.6862870211932", _gc(xasprintf("%.15g", tgamma(-.1))));
|
||||
EXPECT_STREQ("1.77245385090552", _gc(xasprintf("%.15g", tgamma(.5))));
|
||||
EXPECT_STREQ("-3.54490770181103", _gc(xasprintf("%.15g", tgamma(-.5))));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", tgamma(1.))));
|
||||
EXPECT_STREQ("inf", gc(xasprintf("%.15g", tgamma(0.))));
|
||||
EXPECT_STREQ("-inf", gc(xasprintf("%.15g", tgamma(-0.))));
|
||||
EXPECT_STREQ("9.51350769866873", gc(xasprintf("%.15g", tgamma(.1))));
|
||||
EXPECT_STREQ("-10.6862870211932", gc(xasprintf("%.15g", tgamma(-.1))));
|
||||
EXPECT_STREQ("1.77245385090552", gc(xasprintf("%.15g", tgamma(.5))));
|
||||
EXPECT_STREQ("-3.54490770181103", gc(xasprintf("%.15g", tgamma(-.5))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", tgamma(1.))));
|
||||
EXPECT_TRUE(isnan(tgamma(-1.)));
|
||||
EXPECT_STREQ("0.886226925452758", _gc(xasprintf("%.15g", tgamma(1.5))));
|
||||
EXPECT_STREQ("2.36327180120735", _gc(xasprintf("%.15g", tgamma(-1.5))));
|
||||
EXPECT_STREQ("1", _gc(xasprintf("%.15g", tgamma(2.))));
|
||||
EXPECT_STREQ("0.886226925452758", gc(xasprintf("%.15g", tgamma(1.5))));
|
||||
EXPECT_STREQ("2.36327180120735", gc(xasprintf("%.15g", tgamma(-1.5))));
|
||||
EXPECT_STREQ("1", gc(xasprintf("%.15g", tgamma(2.))));
|
||||
EXPECT_TRUE(isnan(tgamma(NAN)));
|
||||
EXPECT_TRUE(isnan(tgamma(-NAN)));
|
||||
EXPECT_STREQ("inf", _gc(xasprintf("%.15g", tgamma(INFINITY))));
|
||||
EXPECT_STREQ("inf", gc(xasprintf("%.15g", tgamma(INFINITY))));
|
||||
EXPECT_TRUE(isnan(tgamma(-INFINITY)));
|
||||
EXPECT_STREQ("4.49423283715579e+307",
|
||||
_gc(xasprintf("%.15g", tgamma(__DBL_MIN__))));
|
||||
EXPECT_STREQ("inf", _gc(xasprintf("%.15g", tgamma(__DBL_MAX__))));
|
||||
gc(xasprintf("%.15g", tgamma(__DBL_MIN__))));
|
||||
EXPECT_STREQ("inf", gc(xasprintf("%.15g", tgamma(__DBL_MAX__))));
|
||||
EXPECT_STREQ("4.5035996273705e+15",
|
||||
_gc(xasprintf("%.14g", tgamma(-1.0000000000000002))));
|
||||
gc(xasprintf("%.14g", tgamma(-1.0000000000000002))));
|
||||
EXPECT_STREQ("-47453133.3893415",
|
||||
_gc(xasprintf("%.15g", tgamma(-2.1073424255447e-08))));
|
||||
gc(xasprintf("%.15g", tgamma(-2.1073424255447e-08))));
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/math.h"
|
||||
#include "libc/mem/gc.internal.h"
|
||||
#include "libc/mem/gc.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
#include "libc/x/x.h"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue