diff options
Diffstat (limited to 'src/library.js')
-rw-r--r-- | src/library.js | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/library.js b/src/library.js index 3fb268dc..fb14580d 100644 --- a/src/library.js +++ b/src/library.js @@ -323,7 +323,8 @@ var Library = { var parts = argText.split('e'); if (isGeneral && !flagAlternative) { // Discard trailing zeros and periods. - while (parts[0].length > 1 && (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { + while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && + (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { parts[0] = parts[0].slice(0, -1); } } else { @@ -1456,11 +1457,11 @@ var Library = { }, __finite: function(x) { - return x !== Infinity && x !== -Infinity; + return isFinite(x); }, __isinf: function(x) { - return x === Infinity || x === -Infinity; + return !isFinite(x); }, __isnan: function(x) { @@ -1476,6 +1477,33 @@ var Library = { return Math.sqrt(a*a + b*b); }, + sinh: function(x) { + var p = Math.pow(Math.E, x); + return (p - (1 / p)) / 2; + }, + + cosh: function(x) { + var p = Math.pow(Math.E, x); + return (p + (1 / p)) / 2; + }, + + tanh__deps: ['sinh', 'cosh'], + tanh: function(x) { + return _sinh(x) / _cosh(x); + }, + + asinh: function(x) { + return Math.log(x + Math.sqrt(x * x + 1)); + }, + + acosh: function(x) { + return Math.log(x * 1 + Math.sqrt(x * x - 1)); + }, + + atanh: function(x) { + return Math.log((1 + x) / (1 - x)) / 2; + }, + // LLVM internal math exp2: function(x) { |