/** * A complex data of the shape: `a + bi` which has a real component, and an imaginary * component. Both are represented with Javascript's 64-bit floating point numbers. * * @since 1.0.0 */ import * as Eq_ from 'fp-ts/Eq'; import * as IO from 'fp-ts/IO'; import * as Mg from 'fp-ts/Magma'; import * as Mn from 'fp-ts/Monoid'; import * as Sg from 'fp-ts/Semigroup'; import * as Fld from 'fp-ts/Field'; import * as Sh from 'fp-ts/Show'; import * as O from 'fp-ts/Option'; import * as Auto from './Automorphism'; import * as Iso from './Iso'; import * as M from './Matrix'; import * as Poly from './Polynomial'; import * as TC from './typeclasses'; import * as V from './Vector'; import * as Inf from './infix'; /** * @since 1.0.0 * @category Model */ export interface Complex { readonly Re: number; readonly Im: number; } /** * @since 1.0.0 * @category Constructors */ export declare const zero: Complex; /** * @since 1.0.0 * @category Constructors */ export declare const one: Complex; /** * @since 1.0.0 * @category Constructors */ export declare const scalar: (a: number) => Complex; /** * @since 1.0.0 * @category Constructors */ export declare const of: (Re: number, Im: number) => Complex; /** * Converts a polar-form complex tuple to `Complex` * * Note, psi here is in radians * * @since 1.0.0 * @category Constructors */ export declare const fromPolarRadians: (r: number, psi: number) => Complex; /** * Converts a polar-form complex tuple to `Complex` * * Note, theta here is in degrees * * @since 1.0.0 * @category Constructors */ export declare const fromPolarDegrees: (r: number, theta: number) => Complex; /** * @since 1.0.0 * @category Constructors */ export declare const fromVector: (v: V.Vec<2, number>) => Complex; /** * @since 1.0.0 * @category Constructors */ export declare const randComplex: (min: number, max: number) => IO.IO; /** * @since 1.0.0 * @category Instances */ export declare const Eq: Eq_.Eq; /** * @since 1.0.0 * @category Instances */ export declare const MagmaSub: Mg.Magma; /** * @since 1.0.0 * @category Instances */ export declare const SemigroupSum: Sg.Semigroup; /** * @since 1.0.0 * @category Instances */ export declare const SemigroupProduct: Sg.Semigroup; /** * @since 1.0.0 * @category Instances */ export declare const MonoidSum: Mn.Monoid; /** * @since 1.0.0 * @category Instances */ export declare const MonoidProduct: Mn.Monoid; /** * @since 1.0.0 * @category Instances */ export declare const Field: Fld.Field; /** * @since 1.0.0 * @category Instances */ export declare const Show: Sh.Show; /** * @since 1.0.0 * @category Instances */ export declare const ComplexAdditiveAbelianGroup: TC.AbelianGroup; /** * @since 1.0.0 * @category Instances */ export declare const ComplexBimodule: TC.Bimodule; /** * @since 1.0.0 * @category Complex Ops */ export declare const conj: (c: Complex) => Complex; /** * @since 1.0.0 * @category Complex Ops */ export declare const sqrt: (c: Complex) => Complex; /** * @since 1.0.0 * @category Complex Ops */ export declare const pow: (c: Complex, n: number) => Complex; /** * @since 1.0.0 * @category Infix */ export declare const _: (a: Complex, s: Inf.FieldSymbol, b: Complex) => Complex; /** * @since 1.0.0 * @category Infix */ export declare const $_: (s: Inf.FieldSymbol, x: Complex, y: Complex) => Complex; /** * @since 1.0.0 * @category Infix */ export declare const _$: (a: Complex, b: Complex, s: Inf.FieldSymbol) => Complex; /** * @since 1.0.0 * @category Destructors */ export declare const toVector: (c: Complex) => V.Vec<2, number>; /** * @since 1.0.0 * @category Destructors */ export declare const argumentRadians: (c: Complex) => O.Option; /** * @since 1.0.0 * @category Destructors */ export declare const argumentDegrees: (c: Complex) => O.Option; /** * @since 1.0.0 * @category Destructors */ export declare const modulus: (c: Complex) => number; /** * @since 1.0.0 * @category Isomorphisms */ export declare const IsoVector: Iso.Iso>; /** * @since 1.0.0 * @category Model */ export declare type Vec = V.Vec; /** * @since 1.1.0 * @category Constructors */ export declare const onesN: (n: N) => Vec; /** * @since 1.1.0 * @category Constructors */ export declare const zerosN: (n: N) => Vec; /** * @since 1.0.0 * @category Instances */ export declare const AdditiveAbGrpN: (n: N) => TC.AbelianGroup>; /** * @since 1.0.0 * @category Instances */ export declare const BiModN: (n: N) => TC.Bimodule, Complex, Complex>; /** * Add two vectors * * @since 1.1.0 * @category Matrix Operations */ export declare const addV: (x: V.Vec, y: V.Vec) => V.Vec; /** * Subtract two vectors * * @since 1.1.0 * @category Matrix Operations */ export declare const subV: (x: V.Vec, y: V.Vec) => V.Vec; /** * @since 1.0.0 * @category Vector Operations */ export declare const dot: (x: V.Vec, y: V.Vec) => Complex; /** * @since 1.0.0 * @category Vector Operations */ export declare const cross: (x: V.Vec<3, Complex>, y: V.Vec<3, Complex>) => V.Vec<3, Complex>; /** * @since 1.0.0 * @category Vector Operations */ export declare const outerProduct: (v1: V.Vec, v2: V.Vec) => M.Mat; /** * @since 1.0.0 * @category Vector Operations */ export declare const l1Norm: (x: V.Vec) => Complex; /** * @since 1.0.0 * @category Vector Operations */ export declare const l2Norm: (x: V.Vec) => Complex; /** * @since 1.0.0 * @category Vector Operations */ export declare const lpNorm: (p: number) => (v: V.Vec) => Complex; /** * @since 1.1.0 * @category Vector Operations */ export declare const lInfNorm: (v: V.Vec) => number; /** * @since 1.0.0 * @category Vector Operations */ export declare const projection: (u: V.Vec, v: V.Vec) => V.Vec; /** * @since 1.0.0 * @category Model */ export declare type Mat = M.Mat; /** * @since 1.1.0 * @category Instances */ export declare const MonoidProductMM: (m: M) => Mn.Monoid>; /** * @since 1.0.0 * @category Instances */ export declare const AdditiveAbGrpMN: (m: M, n: N) => TC.AbelianGroup>; /** * @since 1.0.0 * @category Instances */ export declare const BiModMN: (m: M, n: N) => TC.Bimodule, Complex, Complex>; /** * @since 1.0.0 * @category Matrix Operations */ export declare const idMat: (m: M) => M.Mat; /** * Multiply two matricies with matching inner dimensions * * ```math * (A ∈ R_mn) (B ∈ R_np) = C ∈ R_mp * ``` * * Efficiency: `(8mpn)` flops * * @since 1.0.0 * @category Matrix Operations */ export declare const mulM: (x: M.Mat, y: M.Mat) => M.Mat; /** * Add two matricies * * @since 1.1.0 * @category Matrix Operations */ export declare const addM: (x: M.Mat, y: M.Mat) => M.Mat; /** * Subtract two matricies * * @since 1.1.0 * @category Matrix Operations */ export declare const subM: (x: M.Mat, y: M.Mat) => M.Mat; /** * Transform a column vector `x` into vector `b` by matrix `A` * * ```math * Ax = b * ``` * * Efficiency: `8mn` flops * * @since 1.0.0 * @category Matrix Operations */ export declare const linMap: (A: M.Mat, x: V.Vec) => V.Vec; /** * Transform a row-vector `x` into vector `b` by matrix `A` * * ```math * xA = b * ``` * * Efficiency: `8mn` flops * * @since 1.1.0 * @category Matrix Operations */ export declare const linMapR: (x: V.Vec, A: M.Mat) => V.Vec; /** * @since 1.0.0 * @category Matrix Operations */ export declare const trace: (fa: M.Mat) => Complex; /** * @since 1.0.0 * @category Instances */ export declare const PolynomialAdditiveAbelianGroup: TC.AbelianGroup>; /** * @since 1.0.0 * @category Instances */ export declare const PolynomialBimodule: TC.Bimodule, Complex, Complex>; /** * @since 1.0.0 * @category Instances */ export declare const PolynomialRing: TC.CommutativeRing>; /** * @since 1.0.0 * @category Instances */ export declare const PolynomialEuclidianRing: TC.EuclidianRing>; /** * @since 1.0.0 * @category Instances */ export declare const getDifferentialAutomorphism: (constantTerm: Complex) => Auto.Automorphism>; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const evaluatePolynomial: (p: Poly.Polynomial) => (x: Complex) => Complex; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const derivative: (coeffs: Poly.Polynomial) => Poly.Polynomial; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const integrate: (lower: Complex, upper: Complex) => (p: Poly.Polynomial) => Complex; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const getAntiderivative: (constantTerm: Complex) => (p: Poly.Polynomial) => Poly.Polynomial; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const polynomialInnerProduct: (p: Poly.Polynomial, q: Poly.Polynomial) => Complex; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const polynomialNorm: (p: Poly.Polynomial) => Complex; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const polynomialProjection: (p: Poly.Polynomial, q: Poly.Polynomial) => Poly.Polynomial; /** * @since 1.0.0 * @category Aliases */ export declare const add: (x: Complex, y: Complex) => Complex; /** * @since 1.0.0 * @category Aliases */ export declare const sub: (x: Complex, y: Complex) => Complex; /** * @since 1.0.0 * @category Aliases */ export declare const mul: (x: Complex, y: Complex) => Complex; /** * @since 1.0.0 * @category Aliases */ export declare const div: (x: Complex, y: Complex) => Complex; //# sourceMappingURL=complex.d.ts.map