From 102a7c42dc1a61e0bf0ba5247bb76bc93bf1340e Mon Sep 17 00:00:00 2001 From: Glen Whitney Date: Sun, 31 Jul 2022 11:08:07 -0700 Subject: [PATCH] feat(Complex): support division --- src/complex/invert.mjs | 9 +++++++++ src/complex/native.mjs | 1 + test/complex/_all.mjs | 9 +++++++++ 3 files changed, 19 insertions(+) create mode 100644 src/complex/invert.mjs diff --git a/src/complex/invert.mjs b/src/complex/invert.mjs new file mode 100644 index 0000000..dc7779a --- /dev/null +++ b/src/complex/invert.mjs @@ -0,0 +1,9 @@ +export * from './Types/Complex.mjs' + +export const invert = { + Complex: ({conjugate, absquare, complex, divide}) => z => { + const c = conjugate(z) + const d = absquare(z) + return complex(divide(c.re, d), divide(c.im, d)) + } +} diff --git a/src/complex/native.mjs b/src/complex/native.mjs index 7bac8c2..8938136 100644 --- a/src/complex/native.mjs +++ b/src/complex/native.mjs @@ -8,6 +8,7 @@ export {add} from './add.mjs' export {conjugate} from './conjugate.mjs' export {complex} from './complex.mjs' export {gcd} from './gcd.mjs' +export {invert} from './invert.mjs' export {isZero} from './isZero.mjs' export {multiply} from './multiply.mjs' export {negate} from './negate.mjs' diff --git a/test/complex/_all.mjs b/test/complex/_all.mjs index a5e8833..023ff1c 100644 --- a/test/complex/_all.mjs +++ b/test/complex/_all.mjs @@ -4,6 +4,15 @@ import PocomathInstance from '../../src/core/PocomathInstance.mjs' import * as complexSqrt from '../../src/complex/sqrt.mjs' describe('complex', () => { + it('supports division', () => { + assert.deepStrictEqual( + math.divide(math.complex(3,2), math.complex(0,1)), + math.complex(2,-3)) + const reciprocal = math.divide(1, math.complex(1,3)) + assert.strictEqual(reciprocal.re, 0.1) + assert.ok(Math.abs(reciprocal.im + 0.3) < 1e-13) + }) + it('supports sqrt', () => { assert.deepStrictEqual(math.sqrt(math.complex(1,0)), 1) assert.deepStrictEqual(