diff --git a/src/Complex/arithmetic.ts b/src/Complex/arithmetic.ts index cc3d49b..900e2a1 100644 --- a/src/Complex/arithmetic.ts +++ b/src/Complex/arithmetic.ts @@ -1,6 +1,6 @@ import {Complex} from './type.js' import type { - Dependencies, Signature, Returns, RealType, ZeroType + Dependencies, Signature, Returns, RealType, AliasOf } from '../interfaces/type.js' declare module "../interfaces/type" { @@ -9,8 +9,8 @@ declare module "../interfaces/type" { // after removing any `_...` suffixes; the following should be // additional dispatches for add and divide, not separate // operations, in the final mathjs bundle. - add_real: (a: T, b: RealType) => T - divide_real: (a: T, b: RealType) => T + addReal: AliasOf<'add', (a: T, b: RealType) => T> + divideReal: AliasOf<'divide', (a: T, b: RealType) => T> } } @@ -19,9 +19,9 @@ export const add = (w, z) => dep.complex(dep.add(w.re, z.re), dep.add(w.im, z.im)) export const add_real = - (dep: Dependencies<'add_real' | 'complex', T>): - Signature<'add_real', Complex> => - (z, r) => dep.complex(dep.add_real(z.re, r), z.im) + (dep: Dependencies<'addReal' | 'complex', T>): + Signature<'addReal', Complex> => + (z, r) => dep.complex(dep.addReal(z.re, r), z.im) export const unaryMinus = (dep: Dependencies<'unaryMinus' | 'complex', T>): @@ -58,14 +58,14 @@ export const absquare = z => dep.add(dep.absquare(z.re), dep.absquare(z.im)) export const divideByReal = - (dep: Dependencies<'divide_real' | 'complex', T>): - Signature<'divide_real', Complex> => - (z, r) => dep.complex(dep.divide_real(z.re, r), dep.divide_real(z.im, r)) + (dep: Dependencies<'divideReal' | 'complex', T>): + Signature<'divideReal', Complex> => + (z, r) => dep.complex(dep.divideReal(z.re, r), dep.divideReal(z.im, r)) export const reciprocal = - (dep: Dependencies<'conj' | 'absquare' | 'divide_real', Complex>): + (dep: Dependencies<'conj' | 'absquare' | 'divideReal', Complex>): Signature<'reciprocal', Complex> => - z => dep.divide_real(dep.conj(z), dep.absquare(z)) + z => dep.divideReal(dep.conj(z), dep.absquare(z)) export const divide = (dep: Dependencies<'multiply' | 'reciprocal', Complex>): @@ -80,9 +80,9 @@ export const divide = export const sqrt = (dep: Dependencies<'add' | 'equal' | 'conservativeSqrt' | 'unaryMinus', RealType> - & Dependencies<'zero' | 'add_real' | 'complex', T> - & Dependencies<'absquare' | 're' | 'divide_real', Complex> - & {add_complex_real: Signature<'add_real', Complex>}): + & Dependencies<'zero' | 'addReal' | 'complex', T> + & Dependencies<'absquare' | 're' | 'divideReal', Complex> + & {add_complex_real: Signature<'addReal', Complex>}): Signature<'sqrt', Complex> => z => { const myabs = dep.conservativeSqrt(dep.absquare(z)) @@ -91,12 +91,12 @@ export const sqrt = if (dep.equal(myabs, negr)) { // pure imaginary square root; z.im already zero return dep.complex( - dep.zero(z.re), dep.add_real(z.im, dep.conservativeSqrt(negr))) + dep.zero(z.re), dep.addReal(z.im, dep.conservativeSqrt(negr))) } const num = dep.add_complex_real(z, myabs) const denomsq = dep.add(dep.add(myabs, myabs), dep.add(r, r)) const denom = dep.conservativeSqrt(denomsq) - return dep.divide_real(num, denom) + return dep.divideReal(num, denom) } export const conservativeSqrt = sqrt diff --git a/src/interfaces/type.ts b/src/interfaces/type.ts index c68c98a..4c91d9b 100644 --- a/src/interfaces/type.ts +++ b/src/interfaces/type.ts @@ -71,3 +71,5 @@ type SignatureKey = keyof Signatures export type Signature = Signatures[Name] export type Returns = ReturnType[Name]> export type Dependencies = {[K in Name]: Signature} + +export type AliasOf = T & {aliasOf?: Name}