aboutsummaryrefslogtreecommitdiff
path: root/src/library.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/library.js')
-rw-r--r--src/library.js34
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) {