diff options
author | kripken <alonzakai@gmail.com> | 2011-07-13 17:19:19 -0700 |
---|---|---|
committer | kripken <alonzakai@gmail.com> | 2011-07-13 17:19:19 -0700 |
commit | efbf009d0d40443c74cdef9c47e1e54206629e8d (patch) | |
tree | c485f2bee422bc5a274f94f4652c54360966cbc4 /src | |
parent | dc24fffc94606ccb566a3e6bb8dae5543f1ab790 (diff) | |
parent | 3c07ebaefda5c70d5014ceaa5d7cf2a3e65e9316 (diff) |
Merge pull request #52 from max99x/master
Minor improvements: Pyhon 2.6- compatibility; hyperbolic math functions
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/src/library.js b/src/library.js index 07d177c2..e1366822 100644 --- a/src/library.js +++ b/src/library.js @@ -342,7 +342,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 { @@ -1485,17 +1486,20 @@ var Library = { return sig; }, - __finite: function(x) { - return x !== Infinity && x !== -Infinity; + finite: function(x) { + return isFinite(x); }, + __finite: 'finite', - __isinf: function(x) { - return x === Infinity || x === -Infinity; + isinf: function(x) { + return !isNaN(x) && !isFinite(x); }, + __isinf: 'isinf', - __isnan: function(x) { + isnan: function(x) { return isNaN(x); }, + __isnan: 'isnan', copysign: function(a, b) { if (a<0 === b<0) return a; @@ -1506,6 +1510,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) { |