mirror of
https://github.com/josdejong/mathjs.git
synced 2025-12-08 19:46:04 +00:00
120 lines
3.1 KiB
JavaScript
120 lines
3.1 KiB
JavaScript
'use strict'
|
|
|
|
import { factory } from './utils/factory'
|
|
import { version } from './version'
|
|
import {
|
|
createBigNumberE,
|
|
createBigNumberPhi,
|
|
createBigNumberPi,
|
|
createBigNumberTau
|
|
} from './utils/bignumber/constants'
|
|
|
|
export const createTrue = factory('true', [], () => true)
|
|
export const createFalse = factory('false', [], () => false)
|
|
export const createNull = factory('null', [], () => null)
|
|
|
|
export const createInfinity = factory(
|
|
'Infinity',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber(Infinity)
|
|
: Infinity
|
|
)
|
|
|
|
export const createNaN = factory(
|
|
'NaN',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber(NaN)
|
|
: NaN
|
|
)
|
|
|
|
export const createPi = factory(
|
|
'pi',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? createBigNumberPi(BigNumber)
|
|
: Math.PI
|
|
)
|
|
|
|
export const createTau = factory(
|
|
'tau',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? createBigNumberTau(BigNumber)
|
|
: (2 * Math.PI)
|
|
)
|
|
|
|
export const createE = factory(
|
|
'e',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? createBigNumberE(BigNumber)
|
|
: Math.E
|
|
)
|
|
|
|
// golden ratio, (1+sqrt(5))/2
|
|
export const createPhi = factory(
|
|
'phi',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? createBigNumberPhi(BigNumber)
|
|
: 1.61803398874989484820458683436563811772030917980576286213545
|
|
)
|
|
|
|
export const createLN2 = factory(
|
|
'LN2',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber(2).ln()
|
|
: Math.LN2
|
|
)
|
|
|
|
export const createLN10 = factory(
|
|
'LN10',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber(10).ln()
|
|
: Math.LN10
|
|
)
|
|
|
|
export const createLOG2E = factory(
|
|
'LOG2E',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber(1).div(new BigNumber(2).ln())
|
|
: Math.LOG2E
|
|
)
|
|
|
|
export const createLOG10E = factory(
|
|
'LOG10E',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber(1).div(new BigNumber(10).ln())
|
|
: Math.LOG10E
|
|
)
|
|
|
|
export const createSQRTHalf = factory(
|
|
'SQRT1_2',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber('0.5').sqrt()
|
|
: Math.SQRT1_2
|
|
)
|
|
|
|
export const createSQRT2 = factory(
|
|
'SQRT2',
|
|
['config.number', 'type.BigNumber'],
|
|
({ config: { number }, type: { BigNumber } }) => (number === 'BigNumber')
|
|
? new BigNumber(2).sqrt()
|
|
: Math.SQRT2
|
|
)
|
|
|
|
export const createI = factory(
|
|
'i',
|
|
['type.Complex'],
|
|
({ type: { Complex } }) => Complex.I
|
|
)
|
|
|
|
export const createVersion = factory('version', [], () => version)
|