OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 "use strict"; | 5 "use strict"; |
6 | 6 |
7 // This file relies on the fact that the following declarations have been made | 7 // This file relies on the fact that the following declarations have been made |
8 // in runtime.js: | 8 // in runtime.js: |
9 // var $Object = global.Object; | 9 // var $Object = global.Object; |
10 | 10 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 // ES6 draft 09-27-13, section 20.2.2.7. | 220 // ES6 draft 09-27-13, section 20.2.2.7. |
221 function MathAtanh(x) { | 221 function MathAtanh(x) { |
222 if (!IS_NUMBER(x)) x = NonNumberToNumber(x); | 222 if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
223 // Idempotent for +/-0. | 223 // Idempotent for +/-0. |
224 if (x === 0) return x; | 224 if (x === 0) return x; |
225 // Returns NaN for NaN and +/- Infinity. | 225 // Returns NaN for NaN and +/- Infinity. |
226 if (!NUMBER_IS_FINITE(x)) return NAN; | 226 if (!NUMBER_IS_FINITE(x)) return NAN; |
227 return 0.5 * MathLog((1 + x) / (1 - x)); | 227 return 0.5 * MathLog((1 + x) / (1 - x)); |
228 } | 228 } |
229 | 229 |
230 // ES6 draft 09-27-13, section 20.2.2.21. | |
231 function MathLog10(x) { | |
232 return MathLog(x) * 0.434294481903251828; // log10(x) = log(x)/log(10). | |
233 } | |
234 | |
235 | |
236 // ES6 draft 09-27-13, section 20.2.2.22. | 230 // ES6 draft 09-27-13, section 20.2.2.22. |
237 function MathLog2(x) { | 231 function MathLog2(x) { |
238 return MathLog(x) * 1.442695040888963407; // log2(x) = log(x)/log(2). | 232 return MathLog(x) * 1.442695040888963407; // log2(x) = log(x)/log(2). |
239 } | 233 } |
240 | 234 |
241 // ES6 draft 09-27-13, section 20.2.2.17. | 235 // ES6 draft 09-27-13, section 20.2.2.17. |
242 function MathHypot(x, y) { // Function length is 2. | 236 function MathHypot(x, y) { // Function length is 2. |
243 // We may want to introduce fast paths for two arguments and when | 237 // We may want to introduce fast paths for two arguments and when |
244 // normalization to avoid overflow is not necessary. For now, we | 238 // normalization to avoid overflow is not necessary. For now, we |
245 // simply assume the general case. | 239 // simply assume the general case. |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 "min", MathMin, | 356 "min", MathMin, |
363 "imul", MathImul, | 357 "imul", MathImul, |
364 "sign", MathSign, | 358 "sign", MathSign, |
365 "trunc", MathTrunc, | 359 "trunc", MathTrunc, |
366 "sinh", MathSinh, // implemented by third_party/fdlibm | 360 "sinh", MathSinh, // implemented by third_party/fdlibm |
367 "cosh", MathCosh, // implemented by third_party/fdlibm | 361 "cosh", MathCosh, // implemented by third_party/fdlibm |
368 "tanh", MathTanh, | 362 "tanh", MathTanh, |
369 "asinh", MathAsinh, | 363 "asinh", MathAsinh, |
370 "acosh", MathAcosh, | 364 "acosh", MathAcosh, |
371 "atanh", MathAtanh, | 365 "atanh", MathAtanh, |
372 "log10", MathLog10, | 366 "log10", MathLog10, // implemented by third_party/fdlibm |
373 "log2", MathLog2, | 367 "log2", MathLog2, |
374 "hypot", MathHypot, | 368 "hypot", MathHypot, |
375 "fround", MathFroundJS, | 369 "fround", MathFroundJS, |
376 "clz32", MathClz32, | 370 "clz32", MathClz32, |
377 "cbrt", MathCbrt, | 371 "cbrt", MathCbrt, |
378 "log1p", MathLog1p, // implemented by third_party/fdlibm | 372 "log1p", MathLog1p, // implemented by third_party/fdlibm |
379 "expm1", MathExpm1 // implemented by third_party/fdlibm | 373 "expm1", MathExpm1 // implemented by third_party/fdlibm |
380 )); | 374 )); |
381 | 375 |
382 %SetInlineBuiltinFlag(MathCeil); | 376 %SetInlineBuiltinFlag(MathCeil); |
383 %SetInlineBuiltinFlag(MathRandom); | 377 %SetInlineBuiltinFlag(MathRandom); |
384 %SetInlineBuiltinFlag(MathSin); | 378 %SetInlineBuiltinFlag(MathSin); |
385 %SetInlineBuiltinFlag(MathCos); | 379 %SetInlineBuiltinFlag(MathCos); |
386 } | 380 } |
387 | 381 |
388 SetUpMath(); | 382 SetUpMath(); |
OLD | NEW |