Skip to content

Commit af32d77

Browse files
committed
expm1 can be expressed much simpler
1 parent f588ab5 commit af32d77

File tree

1 file changed

+2
-15
lines changed

1 file changed

+2
-15
lines changed

functions/math/expm1.js

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,10 @@
11
function expm1(x) {
22
// discuss at: http://phpjs.org/functions/expm1/
33
// original by: Brett Zamir (http://brett-zamir.me)
4+
// improved by: Robert Eisele (http://www.xarg.org/)
45
// note: Precision 'n' can be adjusted as desired
56
// example 1: expm1(1e-15);
67
// returns 1: 1.0000000000000007e-15
78

8-
var ret = 0,
9-
// degree of precision
10-
n = 50;
11-
var factorial = function factorial(n) {
12-
if ((n === 0) || (n === 1)) {
13-
return 1;
14-
} else {
15-
var result = (n * factorial(n - 1));
16-
return result;
17-
}
18-
};
19-
for (var i = 1; i < n; i++) {
20-
ret += Math.pow(x, i) / factorial(i);
21-
}
22-
return ret;
9+
return (x < 1e-5 && -1e-5 < x) ? x + 0.5 * x * x : Math.exp(x) - 1;
2310
}

0 commit comments

Comments
 (0)