UNPKG

3.78 kBJavaScriptView Raw
1import { factory } from './utils/factory'
2import { version } from './version'
3import {
4 createBigNumberE,
5 createBigNumberPhi,
6 createBigNumberPi,
7 createBigNumberTau
8} from './utils/bignumber/constants'
9import { pi, tau, e, phi } from './plain/number'
10
11export const createTrue = /* #__PURE__ */ factory('true', [], () => true)
12export const createFalse = /* #__PURE__ */ factory('false', [], () => false)
13export const createNull = /* #__PURE__ */ factory('null', [], () => null)
14
15export const createInfinity = /* #__PURE__ */ recreateFactory(
16 'Infinity',
17 ['config', '?BigNumber'],
18 ({ config, BigNumber }) => (config.number === 'BigNumber')
19 ? new BigNumber(Infinity)
20 : Infinity
21)
22
23export const createNaN = /* #__PURE__ */ recreateFactory(
24 'NaN',
25 ['config', '?BigNumber'],
26 ({ config, BigNumber }) => (config.number === 'BigNumber')
27 ? new BigNumber(NaN)
28 : NaN
29)
30
31export const createPi = /* #__PURE__ */ recreateFactory(
32 'pi',
33 ['config', '?BigNumber'],
34 ({ config, BigNumber }) => (config.number === 'BigNumber')
35 ? createBigNumberPi(BigNumber)
36 : pi
37)
38
39export const createTau = /* #__PURE__ */ recreateFactory(
40 'tau',
41 ['config', '?BigNumber'],
42 ({ config, BigNumber }) => (config.number === 'BigNumber')
43 ? createBigNumberTau(BigNumber)
44 : tau
45)
46
47export const createE = /* #__PURE__ */ recreateFactory(
48 'e',
49 ['config', '?BigNumber'],
50 ({ config, BigNumber }) => (config.number === 'BigNumber')
51 ? createBigNumberE(BigNumber)
52 : e
53)
54
55// golden ratio, (1+sqrt(5))/2
56export const createPhi = /* #__PURE__ */ recreateFactory(
57 'phi',
58 ['config', '?BigNumber'],
59 ({ config, BigNumber }) => (config.number === 'BigNumber')
60 ? createBigNumberPhi(BigNumber)
61 : phi
62)
63
64export const createLN2 = /* #__PURE__ */ recreateFactory(
65 'LN2',
66 ['config', '?BigNumber'],
67 ({ config, BigNumber }) => (config.number === 'BigNumber')
68 ? new BigNumber(2).ln()
69 : Math.LN2
70)
71
72export const createLN10 = /* #__PURE__ */ recreateFactory(
73 'LN10',
74 ['config', '?BigNumber'],
75 ({ config, BigNumber }) => (config.number === 'BigNumber')
76 ? new BigNumber(10).ln()
77 : Math.LN10
78)
79
80export const createLOG2E = /* #__PURE__ */ recreateFactory(
81 'LOG2E',
82 ['config', '?BigNumber'],
83 ({ config, BigNumber }) => (config.number === 'BigNumber')
84 ? new BigNumber(1).div(new BigNumber(2).ln())
85 : Math.LOG2E
86)
87
88export const createLOG10E = /* #__PURE__ */ recreateFactory(
89 'LOG10E',
90 ['config', '?BigNumber'],
91 ({ config, BigNumber }) => (config.number === 'BigNumber')
92 ? new BigNumber(1).div(new BigNumber(10).ln())
93 : Math.LOG10E
94)
95
96export const createSQRT1_2 = /* #__PURE__ */ recreateFactory( // eslint-disable-line camelcase
97 'SQRT1_2',
98 ['config', '?BigNumber'],
99 ({ config, BigNumber }) => (config.number === 'BigNumber')
100 ? new BigNumber('0.5').sqrt()
101 : Math.SQRT1_2
102)
103
104export const createSQRT2 = /* #__PURE__ */ recreateFactory(
105 'SQRT2',
106 ['config', '?BigNumber'],
107 ({ config, BigNumber }) => (config.number === 'BigNumber')
108 ? new BigNumber(2).sqrt()
109 : Math.SQRT2
110)
111
112export const createI = /* #__PURE__ */ recreateFactory(
113 'i',
114 ['Complex'],
115 ({ Complex }) => Complex.I
116)
117
118// for backward compatibility with v5
119export const createUppercasePi = /* #__PURE__ */ factory('PI', ['pi'], ({ pi }) => pi)
120export const createUppercaseE = /* #__PURE__ */ factory('E', ['e'], ({ e }) => e)
121
122export const createVersion = /* #__PURE__ */ factory('version', [], () => version)
123
124// helper function to create a factory with a flag recreateOnConfigChange
125// idea: allow passing optional properties to be attached to the factory function as 4th argument?
126function recreateFactory (name, dependencies, create) {
127 return factory(name, dependencies, create, {
128 recreateOnConfigChange: true
129 })
130}