feat: Implement subtypes

This should eventually be moved into typed-function itself, but for
  now it can be implemented on top of the existing typed-function.

  Uses subtypes to define (and error-check) gcd and lcm, which are only
  defined for integer arguments.

  Resolves #36.
This commit is contained in:
Glen Whitney 2022-07-30 04:59:04 -07:00
parent 4d38f4161c
commit c429c19dfe
35 changed files with 294 additions and 43 deletions

View file

@ -52,4 +52,16 @@ describe('bigint', () => {
assert.deepStrictEqual(bo.sqrt(-3249n), bo.complex(0n, 57n))
})
it('computes gcd', () => {
assert.strictEqual(math.gcd(105n, 70n), 35n)
})
it('computes lcm', () => {
assert.strictEqual(math.lcm(105n, 70n), 210n)
assert.strictEqual(math.lcm(15n, 60n), 60n)
assert.strictEqual(math.lcm(0n, 17n), 0n)
assert.strictEqual(math.lcm(20n, 0n), 0n)
assert.strictEqual(math.lcm(0n, 0n), 0n)
})
})