// shared interfaces import { Complex } from "../Complex/type" // Note: right now I've added an 'Fn*' prefix, // so it is clear that the type hold a function type definition // This is not necessary though, it is just a naming convention. export type FnAdd = (a: T, b: T) => T export type FnAddReal = (a: T, b: U) => T export type FnUnaryMinus = (a: T) => T export type FnConj = (a: T) => T export type FnSubtract = (a: T, b: T) => T export type FnMultiply = (a: T, b: T) => T export type FnAbsSquare = (a: T) => U export type FnReciprocal = (a: T) => T export type FnDivide = (a: T, b: T) => T export type FnDivideByReal = (a: T, b: U) => T export type FnConservativeSqrt = (a: T) => T export type FnSqrt = (a: T) => T | Complex export type FnSquare = (z: T) => T export type FnIsReal = (a: T) => boolean export type FnIsSquare = (a: T) => boolean export type FnZero = (a: T) => T export type FnOne = (a: T) => T export type FnNaN = (a: T) => T export type FnRe = (a: T) => U