mirror of
https://github.com/josdejong/mathjs.git
synced 2025-12-08 19:46:04 +00:00
49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
import assert from 'assert'
|
|
import { approxEqual } from '../../../../tools/approx.js'
|
|
import math from '../../../../src/defaultInstance.js'
|
|
const bernoulli = math.bernoulli
|
|
|
|
const EPSILON = 1e-14
|
|
const BEPSILON = 1e-50
|
|
|
|
describe('bernoulli', function () {
|
|
it('should calculate number values of the Bernoulli numbers', function () {
|
|
assert.strictEqual(bernoulli(0), 1)
|
|
assert.strictEqual(bernoulli(1), -1 / 2)
|
|
assert.strictEqual(bernoulli(2), 1 / 6)
|
|
assert.strictEqual(bernoulli(3), 0)
|
|
approxEqual(bernoulli(4), -1 / 30, EPSILON)
|
|
approxEqual(bernoulli(22), 854513 / 138, EPSILON)
|
|
})
|
|
|
|
it('should calculate BigNumber values of the Bernoulli numbers', function () {
|
|
const big = math.bignumber
|
|
assert.deepStrictEqual(bernoulli(big(1)), big(-1 / 2))
|
|
assert.deepStrictEqual(bernoulli(big(5)), big(0))
|
|
approxEqual(
|
|
bernoulli(big(30)),
|
|
math.divide(big('8615841276005'), big(14322)),
|
|
BEPSILON
|
|
)
|
|
})
|
|
|
|
it('should calculate Fraction values of the Bernoulli numbers', function () {
|
|
const frac = math.fraction
|
|
assert.deepStrictEqual(bernoulli(frac(1)), frac(-1, 2))
|
|
assert.deepStrictEqual(bernoulli(frac(7)), frac(0))
|
|
assert.deepStrictEqual(
|
|
bernoulli(frac(50)), frac(495057205241079648212477525n, 66n))
|
|
assert.deepStrictEqual(
|
|
bernoulli(68n),
|
|
frac(-78773130858718728141909149208474606244347001n, 30n))
|
|
})
|
|
|
|
it('should throw on illegal index values', function () {
|
|
assert.throws(() => bernoulli(-3), RangeError)
|
|
assert.throws(() => bernoulli(1.5), RangeError)
|
|
assert.throws(() => bernoulli(math.bignumber(6.28)), RangeError)
|
|
assert.throws(() => bernoulli(math.fraction(5, 3)), RangeError)
|
|
assert.throws(() => bernoulli(-2n), RangeError)
|
|
})
|
|
})
|