shim.js
330 Bytes
'use strict';
var exp = Math.exp;
module.exports = function (x) {
var a, b;
if (isNaN(x)) return NaN;
x = Number(x);
if (x === 0) return x;
if (x === Infinity) return 1;
if (x === -Infinity) return -1;
a = exp(x);
if (a === Infinity) return 1;
b = exp(-x);
if (b === Infinity) return -1;
return (a - b) / (a + b);
};