1 | import { memoize } from '../function'
|
2 |
|
3 | /**
|
4 | * Calculate BigNumber e
|
5 | * @param {function} BigNumber BigNumber constructor
|
6 | * @returns {BigNumber} Returns e
|
7 | */
|
8 | export 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 | */
|
17 | export 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 | */
|
26 | export 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 | */
|
35 | export 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 | */
|
47 | function hasher (args) {
|
48 | return args[0].precision
|
49 | }
|