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