57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
import { memoize } from '../function.js';
|
|
/**
|
|
* Calculate BigNumber e
|
|
* @param {function} BigNumber BigNumber constructor
|
|
* @returns {BigNumber} Returns e
|
|
*/
|
|
|
|
export var createBigNumberE = memoize(function (BigNumber) {
|
|
return new BigNumber(1).exp();
|
|
}, {
|
|
hasher
|
|
});
|
|
/**
|
|
* Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2
|
|
* @param {function} BigNumber BigNumber constructor
|
|
* @returns {BigNumber} Returns phi
|
|
*/
|
|
|
|
export var createBigNumberPhi = memoize(function (BigNumber) {
|
|
return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2);
|
|
}, {
|
|
hasher
|
|
});
|
|
/**
|
|
* Calculate BigNumber pi.
|
|
* @param {function} BigNumber BigNumber constructor
|
|
* @returns {BigNumber} Returns pi
|
|
*/
|
|
|
|
export var createBigNumberPi = memoize(function (BigNumber) {
|
|
return BigNumber.acos(-1);
|
|
}, {
|
|
hasher
|
|
});
|
|
/**
|
|
* Calculate BigNumber tau, tau = 2 * pi
|
|
* @param {function} BigNumber BigNumber constructor
|
|
* @returns {BigNumber} Returns tau
|
|
*/
|
|
|
|
export var createBigNumberTau = memoize(function (BigNumber) {
|
|
return createBigNumberPi(BigNumber).times(2);
|
|
}, {
|
|
hasher
|
|
});
|
|
/**
|
|
* Create a hash for a BigNumber constructor function. The created has is
|
|
* the configured precision
|
|
* @param {Array} args Supposed to contain a single entry with
|
|
* a BigNumber constructor
|
|
* @return {number} precision
|
|
* @private
|
|
*/
|
|
|
|
function hasher(args) {
|
|
return args[0].precision;
|
|
} |