15 May 2016 11:11:58 AM TOMS722_PRB: C version Test the TOMS722 library. TEST01: MACHAR_S determines constants for floating point arithmetic. ibeta = 2 it = 24 irnd = 5 ngrd = 0 machep = -23 negep = -24 iexp = 8 minexp = -126 maxexp = 128 eps 1.1920928955078125e-07 34000000 epsneg 5.9604644775390625e-08 33800000 xmin 1.1754943508222875e-38 800000 xmax 3.4028234663852886e+38 7F7FFFFF Tests with moderate numbers: yy = 1.1920928955078125e-07 34000000 zz = 5.9604644775390625e-08 33800000 nextafter_f(yy,zz) = 1.1920928244535389e-07 33FFFFFF nextafter_f(-yy,zz) = -1.1920928244535389e-07 B3FFFFFF n = (long int) logb_f(yy) = -23 scalb_f(yy,-n) = 1.0000000000000000e+00 3F800000 n = (long int) logb_f(-yy) = -23 scalb_f(-yy,-n) = -1.0000000000000000e+00 BF800000 yy = 1.9999998807907104e+00 3FFFFFFF zz = 4.0000000000000000e+00 40800000 nextafter_f(yy,zz) = 2.0000000000000000e+00 40000000 nextafter_f(-yy,-zz) = -2.0000000000000000e+00 C0000000 n = (long int) logb_f(yy) = 0 scalb_f(yy,-n) = 1.9999998807907104e+00 3FFFFFFF n = (long int) logb_f(-yy) = 0 scalb_f(-yy,-n) = -1.9999998807907104e+00 BFFFFFFF yy = 2.0000000000000000e+00 40000000 zz = 0.0000000000000000e+00 0 nextafter_f(yy,zz) = 1.9999998807907104e+00 3FFFFFFF nextafter_f(-yy,zz) = -1.9999998807907104e+00 BFFFFFFF n = (long int) logb_f(yy) = 1 scalb_f(yy,-n) = 1.0000000000000000e+00 3F800000 n = (long int) logb_f(-yy) = 1 scalb_f(-yy,-n) = -1.0000000000000000e+00 BF800000 Tests near smallest positive number yy = 0.0000000000000000e+00 0 zz = 1.0000000000000000e+00 3F800000 nextafter_f(yy,zz) = 1.4012984643248171e-45 1 nextafter_f(-yy,zz) = 1.4012984643248171e-45 1 nextafter_f(-yy,-zz) = -1.4012984643248171e-45 80000001 yy = 1.4012984643248171e-45 1 zz = -1.4012984643248171e-45 80000001 nextafter_f(yy,zz) = 0.0000000000000000e+00 0 nextafter_f(-yy,zz) = -1.4012984643248171e-45 80000001 nextafter_f(-yy,-zz) = -0.0000000000000000e+00 80000000 copysign_f(-0.0,1.0) = 0.0000000000000000e+00 0 copysign_f(0.0,-1.0) = -0.0000000000000000e+00 80000000 n = (long int) logb_f(yy) = 1097364144128 scalb_f(yy,-n) = 1.0000001192092896e+00 3F800001 n = (long int) logb_f(-yy) = 1097364144128 scalb_f(-yy,-n) = -1.0000001192092896e+00 BF800001 tt = 1.5414283107572988e-44 B scalb_f(tt,-1) = inf 7F800000 tt * 0.5 = 8.4077907859489024e-45 6 scalb_f(tt,-2) = inf 7F800000 tt * 0.25 = 4.2038953929744512e-45 3 scalb_f(tt,-3) = inf 7F800000 tt * 0.125 = 1.4012984643248171e-45 1 scalb_f(tt,3) = inf 7F800000 yy = 1.4012984643248171e-45 1 zz = 1.0000000000000000e+00 3F800000 nextafter_f(yy,zz) = 2.8025969286496341e-45 2 nextafter_f(-yy,zz) = -0.0000000000000000e+00 80000000 yy = 2.8025969286496341e-45 2 zz = 1.0000000000000000e+00 3F800000 nextafter_f(yy,zz) = 4.2038953929744512e-45 3 nextafter_f(-yy,zz) = -1.4012984643248171e-45 80000001 n = (long int) logb_f(yy) = 1097364144128 scalb_f(yy,-n) = 1.0000002384185791e+00 3F800002 n = (long int) logb_f(-yy) = 1097364144128 scalb_f(-yy,-n) = -1.0000002384185791e+00 BF800002 Test near largest positive number yy = 3.4028234663852886e+38 7F7FFFFF zz = 1.0000000000000000e+00 3F800000 nextafter_f(yy,zz) = 3.4028232635611926e+38 7F7FFFFE nextafter_f(-yy,zz) = -3.4028232635611926e+38 FF7FFFFE copysign_f(yy,-1.0) = -3.4028234663852886e+38 FF7FFFFF copysign_f(-yy,1.0) = 3.4028234663852886e+38 7F7FFFFF n = (long int) logb_f(yy) = 127 scalb_f(yy,-n) = 1.9999998807907104e+00 3FFFFFFF n = (long int) logb_f(-yy) = 127 scalb_f(-yy,-n) = -1.9999998807907104e+00 BFFFFFFF Tests with infinity yy = 3.4028234663852886e+38 7F7FFFFF zz = inf 7F800000 copysign_f(Inf,-1.0) = -inf FF800000 copysign_f(-Inf,Inf) = inf 7F800000 nextafter_f(yy,zz) = inf 7F800000 nextafter_f(zz,yy) = 3.4028234663852886e+38 7F7FFFFF nextafter_f(-zz,yy) = -3.4028234663852886e+38 FF7FFFFF logb_f(zz) = inf 7F800000 Tests with NaN yy = nan 7F800004 zz = 3.4028234663852886e+38 7F7FFFFF Using a NaN returns nan 7F800004 copysign_f(NaN,-1.0) = -nan FF800004 copysign_f(-NaN,1.0) = nan 7F800004 nextafter_f(yy,zz) = nan 7FC00004 nextafter_f(-yy,zz) = -nan FFC00004 nextafter_f(zz,yy) = nan 7FC00004 nextafter_f(-zz,yy) = nan 7FC00004 logb_f(yy) = nan 7F800004 scalb_f(yy,10) = nan 7F800004 Special test with 0.0: yy = 0.0000000000000000e+00 0 scalb_f(yy,10) = 0.0000000000000000e+00 0 logb_f(yy) = -inf FF800000 TEST02: MACHAR_D determines constants for floating point arithmetic. ibeta = 2 it = 53 irnd = 5 ngrd = 0 machep = -52 negep = -53 iexp = 11 minexp = -1022 maxexp = 1024 eps 2.2204460492503131e-16 3CB0000000000000 7FFD25C3E140 epsneg 1.1102230246251565e-16 3CA0000000000000 7FFD25C3E140 xmin 2.2250738585072014e-308 10000000000000 7FFD25C3E140 xmax 1.7976931348623157e+308 7FEFFFFFFFFFFFFF 7FFD25C3E140 Tests with moderate numbers yy = 2.2204460492503131e-16 3CB0000000000000 7FFD25C3E140 zz = 1.1102230246251565e-16 3CA0000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 n = (long int) logb_d(yy) = 4170413243393 scalb_d(yy,-n) = 2.2204465781289172e-16 3CB000003FF00000 7FFD25C3E140 SKIP 1! yy = 1.9999999999999998e+00 3FFFFFFFFFFFFFFF 7FFD25C3E140 zz = 4.0000000000000000e+00 4010000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 1.9999999999999998e+00 3FFFFFFFFFFFFFFF 7FFD25C3E140 nextafter_d(-yy,-zz) = -1.9999999999999998e+00 BFFFFFFFFFFFFFFF 7FFD25C3E140 n = (long int) logb_d(yy) = 4398046508032 scalb_d(yy,-n) = 1.9999997615814207e+00 3FFFFFFFBFFFFFFF 7FFD25C3E140 SKIP 2! yy = 1.9999999999999998e+00 3FFFFFFFFFFFFFFF 7FFD25C3E140 zz = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 n = (long int) logb_d(yy) = 4398046508032 scalb_d(yy,-n) = 1.9999997615814207e+00 3FFFFFFFBFFFFFFF 7FFD25C3E140 THIRD SKIP! Tests near smallest positive number yy = 0.0000000000000000e+00 0 7FFD25C3E140 zz = 1.0000000000000000e+00 3FF0000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,-zz) = 0.0000000000000000e+00 0 7FFD25C3E140 yy = 0.0000000000000000e+00 0 7FFD25C3E140 zz = -0.0000000000000000e+00 8000000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,zz) = -0.0000000000000000e+00 8000000000000000 7FFD25C3E140 nextafter_d(-yy,-zz) = -0.0000000000000000e+00 8000000000000000 7FFD25C3E140 copysign_d(-0.0,1.0) = -0.0000000000000000e+00 8000000000000000 7FFD25C3E140 copysign_d(0.0,-1.0) = -0.0000000000000000e+00 8000000000000000 7FFD25C3E140 n = (long int) logb_d(yy) = -9223372036854775808 scalb_d(yy,-n) = 0.0000000000000000e+00 0 7FFD25C3E140 n = (long int) logb_d(-yy) = -9223372036854775808 scalb_d(-yy,-n) = -0.0000000000000000e+00 8000000000000000 7FFD25C3E140 tt = 0.0000000000000000e+00 0 7FFD25C3E140 scalb_d(tt,-1) = 0.0000000000000000e+00 0 7FFD25C3E140 tt * 0.5 = 0.0000000000000000e+00 0 7FFD25C3E140 scalb_d(tt,-2) = 0.0000000000000000e+00 0 7FFD25C3E140 tt * 0.25 = 0.0000000000000000e+00 0 7FFD25C3E140 scalb_d(tt,-3) = 0.0000000000000000e+00 0 7FFD25C3E140 tt * 0.125 = 0.0000000000000000e+00 0 7FFD25C3E140 scalb_d(tt,3) = 0.0000000000000000e+00 0 7FFD25C3E140 yy = 0.0000000000000000e+00 0 7FFD25C3E140 zz = 1.0000000000000000e+00 3FF0000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 yy = 0.0000000000000000e+00 0 7FFD25C3E140 zz = 1.0000000000000000e+00 3FF0000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 n = (long int) logb_d(yy) = -9223372036854775808 scalb_d(yy,-n) = 0.0000000000000000e+00 0 7FFD25C3E140 n = (long int) logb_d(-yy) = -9223372036854775808 scalb_d(-yy,-n) = -0.0000000000000000e+00 8000000000000000 7FFD25C3E140 Test near largest positive number yy = 1.7976931348623157e+308 7FEFFFFFFFFFFFFF 7FFD25C3E140 zz = 1.0000000000000000e+00 3FF0000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 copysign_d(yy,-1.0) = 1.7976927062588728e+308 7FEFFFFF7FFFFFFF 7FFD25C3E140 copysign_d(-yy,1.0) = -1.7976927062588728e+308 FFEFFFFF7FFFFFFF 7FFD25C3E140 n = (long int) logb_d(yy) = 8791798051840 scalb_d(yy,-n) = 1.7976929205605943e+308 7FEFFFFFBFFFFFFF 7FFD25C3E140 Yet another skip! : Tests with infinity yy = 1.7976931348623157e+308 7FEFFFFFFFFFFFFF 7FFD25C3E140 zz = inf 7FF0000000000000 7FFD25C3E140 copysign_d(Inf,-1.0) = inf 7FF0000000000000 7FFD25C3E140 copysign_d(-Inf,Inf) = inf 7FF0000000000000 7FFD25C3E140 nextafter_d(yy,zz) = 1.7976931348623157e+308 7FEFFFFFFFFFFFFF 7FFD25C3E140 nextafter_d(zz,yy) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-zz,yy) = 0.0000000000000000e+00 0 7FFD25C3E140 logb_d(zz) = inf 7FF0000000000000 7FFD25C3E140 Tests with NaN yy = 1.0604798320802451e-314 7FF00004 7FFD25C3E140 zz = 1.7976931348623157e+308 7FEFFFFFFFFFFFFF 7FFD25C3E140 Using a NaN returns 1.0604798320802451e-314 7FF00004 7FFD25C3E140 copysign_d(NaN,-1.0) = 1.0604798320802451e-314 7FF00004 7FFD25C3E140 copysign_d(-NaN,NaN) = 1.0604798320802451e-314 7FF00004 7FFD25C3E140 nextafter_d(yy,zz) = 1.0604798320802451e-314 7FF00004 7FFD25C3E140 nextafter_d(-yy,zz) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(zz,yy) = 0.0000000000000000e+00 0 7FFD25C3E140 nextafter_d(-zz,yy) = 0.0000000000000000e+00 0 7FFD25C3E140 logb_d(yy) = 1.0240000000000000e+03 4090000000000000 7FFD25C3E140 scalb_d(yy,10) = 2.1199235334031830e-314 FFC00008 7FFD25C3E140 Special test with 0.0 yy = 0.0000000000000000e+00 0 7FFD25C3E140 scalb_d(yy,10) = 0.0000000000000000e+00 0 7FFD25C3E140 logb_d(yy) = inf 7FF0000000000000 7FFD25C3E140 TOMS722_PRB: Normal end of execution. 15 May 2016 11:14:30 AM