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