summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/math/sinh/shim.js
blob: 5b725bed656d959169308d035d68c999d4a795f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Parts of implementation taken from es6-shim project
// See: https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js

'use strict';

var expm1 = require('../expm1')

  , abs = Math.abs, exp = Math.exp, e = Math.E;

module.exports = function (x) {
	if (isNaN(x)) return NaN;
	x = Number(x);
	if (x === 0) return x;
	if (!isFinite(x)) return x;
	if (abs(x) < 1) return (expm1(x) - expm1(-x)) / 2;
	return (exp(x - 1) - exp(-x - 1)) * e / 2;
};