1*453b576eSBram Moolenaar" test float functions 2*453b576eSBram Moolenaar 3*453b576eSBram Moolenaarif !has('float') 4*453b576eSBram Moolenaar finish 5*453b576eSBram Moolenaarend 6*453b576eSBram Moolenaar 7*453b576eSBram Moolenaarfunc Test_abs() 8*453b576eSBram Moolenaar call assert_equal(string(abs(1.23)), '1.23') 9*453b576eSBram Moolenaar call assert_equal(string(abs(-1.23)), '1.23') 10*453b576eSBram Moolenaar call assert_equal(string(abs(0.0)), '0.0') 11*453b576eSBram Moolenaar call assert_equal(string(abs(1.0/(1.0/0.0))), '0.0') 12*453b576eSBram Moolenaar call assert_equal(string(abs(-1.0/(1.0/0.0))), '0.0') 13*453b576eSBram Moolenaar call assert_equal(string(abs(1.0/0.0)), 'inf') 14*453b576eSBram Moolenaar call assert_equal(string(abs(-1.0/0.0)), 'inf') 15*453b576eSBram Moolenaar call assert_equal(string(abs(0.0/0.0)), 'nan') 16*453b576eSBram Moolenaarendfunc 17*453b576eSBram Moolenaar 18*453b576eSBram Moolenaarfunc Test_sqrt() 19*453b576eSBram Moolenaar call assert_equal(string(sqrt(0.0)), '0.0') 20*453b576eSBram Moolenaar call assert_equal(string(sqrt(2.0)), '1.414214') 21*453b576eSBram Moolenaar call assert_equal(string(sqrt(1.0/0.0)), 'inf') 22*453b576eSBram Moolenaar call assert_equal(string(sqrt(-1.0)), 'nan') 23*453b576eSBram Moolenaar call assert_equal(string(sqrt(0.0/0.0)), 'nan') 24*453b576eSBram Moolenaarendfunc 25*453b576eSBram Moolenaar 26*453b576eSBram Moolenaarfunc Test_log() 27*453b576eSBram Moolenaar call assert_equal(string(log(1.0)), '0.0') 28*453b576eSBram Moolenaar call assert_equal(string(log(0.5)), '-0.693147') 29*453b576eSBram Moolenaar call assert_equal(string(log(0.0)), '-inf') 30*453b576eSBram Moolenaar call assert_equal(string(log(-1.0)), 'nan') 31*453b576eSBram Moolenaar call assert_equal(string(log(1.0/0.0)), 'inf') 32*453b576eSBram Moolenaar call assert_equal(string(log(0.0/0.0)), 'nan') 33*453b576eSBram Moolenaarendfunc 34*453b576eSBram Moolenaar 35*453b576eSBram Moolenaarfunc Test_log10() 36*453b576eSBram Moolenaar call assert_equal(string(log10(1.0)), '0.0') 37*453b576eSBram Moolenaar call assert_equal(string(log10(100.0)), '2.0') 38*453b576eSBram Moolenaar call assert_equal(string(log10(120.0)), '2.079181') 39*453b576eSBram Moolenaar call assert_equal(string(log10(0.0)), '-inf') 40*453b576eSBram Moolenaar call assert_equal(string(log10(-1.0)), 'nan') 41*453b576eSBram Moolenaar call assert_equal(string(log10(1.0/0.0)), 'inf') 42*453b576eSBram Moolenaar call assert_equal(string(log10(0.0/0.0)), 'nan') 43*453b576eSBram Moolenaarendfunc 44*453b576eSBram Moolenaar 45*453b576eSBram Moolenaarfunc Test_exp() 46*453b576eSBram Moolenaar call assert_equal(string(exp(0.0)), '1.0') 47*453b576eSBram Moolenaar call assert_equal(string(exp(2.0)), '7.389056') 48*453b576eSBram Moolenaar call assert_equal(string(exp(-1.0)),'0.367879') 49*453b576eSBram Moolenaar call assert_equal(string(exp(1.0/0.0)), 'inf') 50*453b576eSBram Moolenaar call assert_equal(string(exp(-1.0/0.0)), '0.0') 51*453b576eSBram Moolenaar call assert_equal(string(exp(0.0/0.0)), 'nan') 52*453b576eSBram Moolenaarendfunc 53*453b576eSBram Moolenaar 54*453b576eSBram Moolenaarfunc Test_sin() 55*453b576eSBram Moolenaar call assert_equal(string(sin(0.0)), '0.0') 56*453b576eSBram Moolenaar call assert_equal(string(sin(1.0)), '0.841471') 57*453b576eSBram Moolenaar call assert_equal(string(sin(-0.5)), '-0.479426') 58*453b576eSBram Moolenaar call assert_equal(string(sin(0.0/0.0)), 'nan') 59*453b576eSBram Moolenaar call assert_equal(string(sin(1.0/0.0)), 'nan') 60*453b576eSBram Moolenaar call assert_equal(string(sin(1.0/(1.0/0.0))), '0.0') 61*453b576eSBram Moolenaar call assert_equal(string(sin(-1.0/(1.0/0.0))), '-0.0') 62*453b576eSBram Moolenaarendfunc 63*453b576eSBram Moolenaar 64*453b576eSBram Moolenaarfunc Test_asin() 65*453b576eSBram Moolenaar call assert_equal(string(asin(0.0)), '0.0') 66*453b576eSBram Moolenaar call assert_equal(string(asin(1.0)), '1.570796') 67*453b576eSBram Moolenaar call assert_equal(string(asin(-0.5)), '-0.523599') 68*453b576eSBram Moolenaar call assert_equal(string(asin(1.1)), 'nan') 69*453b576eSBram Moolenaar call assert_equal(string(asin(1.0/0.0)), 'nan') 70*453b576eSBram Moolenaar call assert_equal(string(asin(0.0/0.0)), 'nan') 71*453b576eSBram Moolenaarendfunc 72*453b576eSBram Moolenaar 73*453b576eSBram Moolenaarfunc Test_sinh() 74*453b576eSBram Moolenaar call assert_equal(string(sinh(0.0)), '0.0') 75*453b576eSBram Moolenaar call assert_equal(string(sinh(0.5)), '0.521095') 76*453b576eSBram Moolenaar call assert_equal(string(sinh(-0.9)), '-1.026517') 77*453b576eSBram Moolenaar call assert_equal(string(sinh(1.0/0.0)), 'inf') 78*453b576eSBram Moolenaar call assert_equal(string(sinh(-1.0/0.0)), '-inf') 79*453b576eSBram Moolenaar call assert_equal(string(sinh(0.0/0.0)), 'nan') 80*453b576eSBram Moolenaarendfunc 81*453b576eSBram Moolenaar 82*453b576eSBram Moolenaarfunc Test_cos() 83*453b576eSBram Moolenaar call assert_equal(string(cos(0.0)), '1.0') 84*453b576eSBram Moolenaar call assert_equal(string(cos(1.0)), '0.540302') 85*453b576eSBram Moolenaar call assert_equal(string(cos(-0.5)), '0.877583') 86*453b576eSBram Moolenaar call assert_equal(string(cos(0.0/0.0)), 'nan') 87*453b576eSBram Moolenaar call assert_equal(string(cos(1.0/0.0)), 'nan') 88*453b576eSBram Moolenaarendfunc 89*453b576eSBram Moolenaar 90*453b576eSBram Moolenaarfunc Test_acos() 91*453b576eSBram Moolenaar call assert_equal(string(acos(0.0)), '1.570796') 92*453b576eSBram Moolenaar call assert_equal(string(acos(1.0)), '0.0') 93*453b576eSBram Moolenaar call assert_equal(string(acos(-1.0)), '3.141593') 94*453b576eSBram Moolenaar call assert_equal(string(acos(-0.5)), '2.094395') 95*453b576eSBram Moolenaar call assert_equal(string(acos(1.1)), 'nan') 96*453b576eSBram Moolenaar call assert_equal(string(acos(1.0/0.0)), 'nan') 97*453b576eSBram Moolenaar call assert_equal(string(acos(0.0/0.0)), 'nan') 98*453b576eSBram Moolenaarendfunc 99*453b576eSBram Moolenaar 100*453b576eSBram Moolenaarfunc Test_cosh() 101*453b576eSBram Moolenaar call assert_equal(string(cosh(0.0)), '1.0') 102*453b576eSBram Moolenaar call assert_equal(string(cosh(0.5)), '1.127626') 103*453b576eSBram Moolenaar call assert_equal(string(cosh(1.0/0.0)), 'inf') 104*453b576eSBram Moolenaar call assert_equal(string(cosh(-1.0/0.0)), 'inf') 105*453b576eSBram Moolenaar call assert_equal(string(cosh(0.0/0.0)), 'nan') 106*453b576eSBram Moolenaarendfunc 107*453b576eSBram Moolenaar 108*453b576eSBram Moolenaarfunc Test_tan() 109*453b576eSBram Moolenaar call assert_equal(string(tan(0.0)), '0.0') 110*453b576eSBram Moolenaar call assert_equal(string(tan(0.5)), '0.546302') 111*453b576eSBram Moolenaar call assert_equal(string(tan(-0.5)), '-0.546302') 112*453b576eSBram Moolenaar call assert_equal(string(tan(1.0/0.0)), 'nan') 113*453b576eSBram Moolenaar call assert_equal(string(cos(0.0/0.0)), 'nan') 114*453b576eSBram Moolenaar call assert_equal(string(tan(1.0/(1.0/0.0))), '0.0') 115*453b576eSBram Moolenaar call assert_equal(string(tan(-1.0/(1.0/0.0))), '-0.0') 116*453b576eSBram Moolenaarendfunc 117*453b576eSBram Moolenaar 118*453b576eSBram Moolenaarfunc Test_atan() 119*453b576eSBram Moolenaar call assert_equal(string(atan(0.0)), '0.0') 120*453b576eSBram Moolenaar call assert_equal(string(atan(0.5)), '0.463648') 121*453b576eSBram Moolenaar call assert_equal(string(atan(-1.0)), '-0.785398') 122*453b576eSBram Moolenaar call assert_equal(string(atan(1.0/0.0)), '1.570796') 123*453b576eSBram Moolenaar call assert_equal(string(atan(-1.0/0.0)), '-1.570796') 124*453b576eSBram Moolenaar call assert_equal(string(atan(0.0/0.0)), 'nan') 125*453b576eSBram Moolenaarendfunc 126*453b576eSBram Moolenaar 127*453b576eSBram Moolenaarfunc Test_atan2() 128*453b576eSBram Moolenaar call assert_equal(string(atan2(-1, -1)), '-2.356194') 129*453b576eSBram Moolenaar call assert_equal(string(atan2(1, -1)), '2.356194') 130*453b576eSBram Moolenaar call assert_equal(string(atan2(1.0, 1.0/0.0)), '0.0') 131*453b576eSBram Moolenaar call assert_equal(string(atan2(1.0/0.0, 1.0)), '1.570796') 132*453b576eSBram Moolenaar call assert_equal(string(atan2(0.0/0.0, 1.0)), 'nan') 133*453b576eSBram Moolenaarendfunc 134*453b576eSBram Moolenaar 135*453b576eSBram Moolenaarfunc Test_tanh() 136*453b576eSBram Moolenaar call assert_equal(string(tanh(0.0)), '0.0') 137*453b576eSBram Moolenaar call assert_equal(string(tanh(0.5)), '0.462117') 138*453b576eSBram Moolenaar call assert_equal(string(tanh(-1.0)), '-0.761594') 139*453b576eSBram Moolenaar call assert_equal(string(tanh(1.0/0.0)), '1.0') 140*453b576eSBram Moolenaar call assert_equal(string(tanh(-1.0/0.0)), '-1.0') 141*453b576eSBram Moolenaar call assert_equal(string(tanh(0.0/0.0)), 'nan') 142*453b576eSBram Moolenaarendfunc 143*453b576eSBram Moolenaar 144*453b576eSBram Moolenaarfunc Test_fmod() 145*453b576eSBram Moolenaar call assert_equal(string(fmod(12.33, 1.22)), '0.13') 146*453b576eSBram Moolenaar call assert_equal(string(fmod(-12.33, 1.22)), '-0.13') 147*453b576eSBram Moolenaar call assert_equal(string(fmod(1.0/0.0, 1.0)), 'nan') 148*453b576eSBram Moolenaar call assert_equal(string(fmod(1.0, 1.0/0.0)), '1.0') 149*453b576eSBram Moolenaar call assert_equal(string(fmod(1.0, 0.0)), 'nan') 150*453b576eSBram Moolenaarendfunc 151*453b576eSBram Moolenaar 152*453b576eSBram Moolenaarfunc Test_pow() 153*453b576eSBram Moolenaar call assert_equal(string(pow(0.0, 0.0)), '1.0') 154*453b576eSBram Moolenaar call assert_equal(string(pow(2.0, 3.0)), '8.0') 155*453b576eSBram Moolenaar call assert_equal(string(pow(2.0, 0.0/0.0)), 'nan') 156*453b576eSBram Moolenaar call assert_equal(string(pow(0.0/0.0, 3.0)), 'nan') 157*453b576eSBram Moolenaar call assert_equal(string(pow(0.0/0.0, 3.0)), 'nan') 158*453b576eSBram Moolenaar call assert_equal(string(pow(2.0, 1.0/0.0)), 'inf') 159*453b576eSBram Moolenaar call assert_equal(string(pow(1.0/0.0, 3.0)), 'inf') 160*453b576eSBram Moolenaarendfunc 161*453b576eSBram Moolenaar 162*453b576eSBram Moolenaarfunc Test_str2float() 163*453b576eSBram Moolenaar call assert_equal(string(str2float('1')), '1.0') 164*453b576eSBram Moolenaar call assert_equal(string(str2float('1.23')), '1.23') 165*453b576eSBram Moolenaar call assert_equal(string(str2float('1.23abc')), '1.23') 166*453b576eSBram Moolenaar call assert_equal(string(str2float('1e40')), '1.0e40') 167*453b576eSBram Moolenaar call assert_equal(string(str2float('1e1000')), 'inf') 168*453b576eSBram Moolenaar call assert_equal(string(str2float('inf')), 'inf') 169*453b576eSBram Moolenaar call assert_equal(string(str2float('-inf')), '-inf') 170*453b576eSBram Moolenaar call assert_equal(string(str2float('Inf')), 'inf') 171*453b576eSBram Moolenaar call assert_equal(string(str2float('nan')), 'nan') 172*453b576eSBram Moolenaar call assert_equal(string(str2float('NaN')), 'nan') 173*453b576eSBram Moolenaarendfunc 174*453b576eSBram Moolenaar 175*453b576eSBram Moolenaarfunc Test_floor() 176*453b576eSBram Moolenaar call assert_equal(string(floor(2.0)), '2.0') 177*453b576eSBram Moolenaar call assert_equal(string(floor(2.11)), '2.0') 178*453b576eSBram Moolenaar call assert_equal(string(floor(2.99)), '2.0') 179*453b576eSBram Moolenaar call assert_equal(string(floor(-2.11)), '-3.0') 180*453b576eSBram Moolenaar call assert_equal(string(floor(-2.99)), '-3.0') 181*453b576eSBram Moolenaar call assert_equal(string(floor(0.0/0.0)), 'nan') 182*453b576eSBram Moolenaar call assert_equal(string(floor(1.0/0.0)), 'inf') 183*453b576eSBram Moolenaar call assert_equal(string(floor(-1.0/0.0)), '-inf') 184*453b576eSBram Moolenaarendfunc 185*453b576eSBram Moolenaar 186*453b576eSBram Moolenaarfunc Test_ceil() 187*453b576eSBram Moolenaar call assert_equal(string(ceil(2.0)), '2.0') 188*453b576eSBram Moolenaar call assert_equal(string(ceil(2.11)), '3.0') 189*453b576eSBram Moolenaar call assert_equal(string(ceil(2.99)), '3.0') 190*453b576eSBram Moolenaar call assert_equal(string(ceil(-2.11)), '-2.0') 191*453b576eSBram Moolenaar call assert_equal(string(ceil(-2.99)), '-2.0') 192*453b576eSBram Moolenaar call assert_equal(string(ceil(0.0/0.0)), 'nan') 193*453b576eSBram Moolenaar call assert_equal(string(ceil(1.0/0.0)), 'inf') 194*453b576eSBram Moolenaar call assert_equal(string(ceil(-1.0/0.0)), '-inf') 195*453b576eSBram Moolenaarendfunc 196*453b576eSBram Moolenaar 197*453b576eSBram Moolenaarfunc Test_round() 198*453b576eSBram Moolenaar call assert_equal(string(round(2.1)), '2.0') 199*453b576eSBram Moolenaar call assert_equal(string(round(2.5)), '3.0') 200*453b576eSBram Moolenaar call assert_equal(string(round(2.9)), '3.0') 201*453b576eSBram Moolenaar call assert_equal(string(round(-2.1)), '-2.0') 202*453b576eSBram Moolenaar call assert_equal(string(round(-2.5)), '-3.0') 203*453b576eSBram Moolenaar call assert_equal(string(round(-2.9)), '-3.0') 204*453b576eSBram Moolenaar call assert_equal(string(round(0.0/0.0)), 'nan') 205*453b576eSBram Moolenaar call assert_equal(string(round(1.0/0.0)), 'inf') 206*453b576eSBram Moolenaar call assert_equal(string(round(-1.0/0.0)), '-inf') 207*453b576eSBram Moolenaarendfunc 208*453b576eSBram Moolenaar 209*453b576eSBram Moolenaarfunc Test_trunc() 210*453b576eSBram Moolenaar call assert_equal(string(trunc(2.1)), '2.0') 211*453b576eSBram Moolenaar call assert_equal(string(trunc(2.5)), '2.0') 212*453b576eSBram Moolenaar call assert_equal(string(trunc(2.9)), '2.0') 213*453b576eSBram Moolenaar call assert_equal(string(trunc(-2.1)), '-2.0') 214*453b576eSBram Moolenaar call assert_equal(string(trunc(-2.5)), '-2.0') 215*453b576eSBram Moolenaar call assert_equal(string(trunc(-2.9)), '-2.0') 216*453b576eSBram Moolenaar call assert_equal(string(trunc(0.0/0.0)), 'nan') 217*453b576eSBram Moolenaar call assert_equal(string(trunc(1.0/0.0)), 'inf') 218*453b576eSBram Moolenaar call assert_equal(string(trunc(-1.0/0.0)), '-inf') 219*453b576eSBram Moolenaarendfunc 220*453b576eSBram Moolenaar 221*453b576eSBram Moolenaarfunc Test_isnan() 222*453b576eSBram Moolenaar call assert_equal(isnan(1.0), 0) 223*453b576eSBram Moolenaar call assert_equal(isnan(0.0/0.0), 1) 224*453b576eSBram Moolenaar call assert_equal(isnan(1.0/0.0), 0) 225*453b576eSBram Moolenaar call assert_equal(isnan('a'), 0) 226*453b576eSBram Moolenaar call assert_equal(isnan([]), 0) 227*453b576eSBram Moolenaarendfunc 228