13 lines
572 B
TypeScript
13 lines
572 B
TypeScript
import {Complex} from './type.js'
|
|
import {EqualOp} from '../interfaces/relational.js'
|
|
import {AddOp} from '../interfaces/arithmetic.js'
|
|
import type {Depends} from '../interfaces/type.js'
|
|
import type {IsRealOp, IsSquareOp} from '../interfaces/predicate.js'
|
|
|
|
export const isReal =
|
|
<T>(dep: Depends<AddOp<T>> & Depends<EqualOp<T>> & Depends<IsRealOp<T>>):
|
|
IsRealOp<Complex<T>> =>
|
|
z => dep.isReal(z.re) && dep.equal(z.re, dep.add(z.re, z.im))
|
|
|
|
export const isSquare: IsSquareOp<Complex<any>> = z => true // FIXME: not correct for Complex<bigint> once we get there
|