UNPKG

1.39 kBJavaScriptView Raw
1import { memoize } from '../function'
2
3/**
4 * Calculate BigNumber e
5 * @param {function} BigNumber BigNumber constructor
6 * @returns {BigNumber} Returns e
7 */
8export const createBigNumberE = memoize(function (BigNumber) {
9 return new BigNumber(1).exp()
10}, hasher)
11
12/**
13 * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2
14 * @param {function} BigNumber BigNumber constructor
15 * @returns {BigNumber} Returns phi
16 */
17export const createBigNumberPhi = memoize(function (BigNumber) {
18 return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2)
19}, hasher)
20
21/**
22 * Calculate BigNumber pi.
23 * @param {function} BigNumber BigNumber constructor
24 * @returns {BigNumber} Returns pi
25 */
26export const createBigNumberPi = memoize(function (BigNumber) {
27 return BigNumber.acos(-1)
28}, hasher)
29
30/**
31 * Calculate BigNumber tau, tau = 2 * pi
32 * @param {function} BigNumber BigNumber constructor
33 * @returns {BigNumber} Returns tau
34 */
35export const createBigNumberTau = memoize(function (BigNumber) {
36 return createBigNumberPi(BigNumber).times(2)
37}, hasher)
38
39/**
40 * Create a hash for a BigNumber constructor function. The created has is
41 * the configured precision
42 * @param {Array} args Supposed to contain a single entry with
43 * a BigNumber constructor
44 * @return {number} precision
45 * @private
46 */
47function hasher (args) {
48 return args[0].precision
49}