import * as Eq from 'fp-ts/Eq'; import * as Fld from 'fp-ts/Field'; import * as Fun from 'fp-ts/Functor'; import * as FunI from 'fp-ts/FunctorWithIndex'; import * as IO from 'fp-ts/IO'; import { Monoid } from 'fp-ts/Monoid'; import * as Ord from 'fp-ts/Ord'; import * as Rng from 'fp-ts/Ring'; import { Semigroup } from 'fp-ts/Semigroup'; import { Show } from 'fp-ts/Show'; import * as TC from './typeclasses'; import { Complex } from './complex'; declare const PolynomialSymbol: unique symbol; declare type PolynomialSymbol = typeof PolynomialSymbol; /** * @since 1.0.0 * @category Model */ export interface Polynomial extends ReadonlyArray { _URI: PolynomialSymbol; } /** * @since 1.0.0 * @category Constructors */ export declare const fromCoefficientArray: (Eq: Eq.Eq, R: Rng.Ring) => (rs: readonly R[]) => Polynomial; /** * @since 1.0.0 * @category Constructors */ export declare const one: (R: Rng.Ring) => Polynomial; /** * @since 1.0.0 * @category Constructors */ export declare const zero: () => Polynomial; /** * @since 1.0.0 * @category Constructors */ export declare const randPolynomial: (terms: number, make: IO.IO) => IO.IO>; /** * @since 1.0.0 * @category Instances */ export declare const URI = "Polynomial"; /** * @since 1.0.0 * @category Instances */ export declare type URI = typeof URI; declare module 'fp-ts/HKT' { interface URItoKind { readonly [URI]: Polynomial; } } /** * @since 1.0.0 * @category Instances */ export declare const getPolynomialEq: (Eq: Eq.Eq) => Eq.Eq>; /** * @since 1.0.0 * @category Instances */ export declare const getPolynomialOrd: (Eq: Ord.Ord) => Ord.Ord>; /** * @since 1.0.0 * @category Instance Operations */ export declare const add: (Eq: Eq.Eq, R: Rng.Ring) => (x: Polynomial, y: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Instance Operations */ export declare const sub: (Eq: Eq.Eq, R: Rng.Ring) => (x: Polynomial, y: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Instance Operations */ export declare const mul: (Eq: Eq.Eq, R: Rng.Ring) => (xs: Polynomial, ys: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Instances */ export declare const getAdditiveAbelianGroup: (Eq: Eq.Eq, R: Rng.Ring) => TC.AbelianGroup>; /** * @since 1.0.0 * @category Instances */ export declare const getCommutativeRing: (E: Eq.Eq, R: Rng.Ring) => TC.CommutativeRing>; /** * @since 1.0.0 * @category Instances */ export declare const getBimodule: (E: Eq.Eq, R: Rng.Ring) => TC.Bimodule, R>; /** * @since 1.0.0 * @category Instances */ export declare const getEuclidianRing: (E: Eq.Eq, F: Fld.Field) => TC.EuclidianRing>; /** * @since 1.0.0 * @category Instances */ export declare const getCompositionSemigroup: (Eq_: Eq.Eq, R: Rng.Ring) => Semigroup>; /** * @since 1.0.0 * @category Instances */ export declare const getCompositionMonoid: (Eq_: Eq.Eq, R: Rng.Ring) => Monoid>; /** * @since 1.0.0 * @category Instance Operations */ export declare const map: (f: (a: A) => B) => (fa: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Instances */ export declare const Functor: Fun.Functor1; /** * @since 1.0.0 * @category Instance Operations */ export declare const mapWithIndex: (f: (i: number, a: A) => B) => (fa: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Instances */ export declare const FunctorWithIndex: FunI.FunctorWithIndex1; /** * @since 1.0.0 * @category Instances */ export declare const getShow: (variable: string) => (S: Show, isZero: (a: A) => boolean, isOne: (a: A) => boolean) => Show>; /** * @since 1.0.0 * @category Destructors */ export declare const coefficients: (p: Polynomial) => ReadonlyArray; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const identity: (R: Rng.Ring) => Polynomial; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const constant: (Eq: Eq.Eq, R: Rng.Ring) => (a: R) => Polynomial; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const evaluate: (R: Rng.Ring) => (p: Polynomial) => (x: R) => R; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const polynomialCompose: (Eq: Eq.Eq, R: Rng.Ring) => (x: Polynomial) => (y: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const polynomialDegree: (p: Polynomial) => number; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const derivative: (scaleLeft: (n: number, r: R) => R) => (coeffs: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const integrate: (R: Rng.Ring, scaleLeft: (n: number, r: R) => R) => (lower: R, upper: R) => (p: Polynomial) => R; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const antiderivative: (constantTerm: R, scaleLeft: (n: number, r: R) => R) => (p: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const l2InnerProduct: (Eq_: Eq.Eq, R: Rng.Ring, scaleLeft: (n: number, r: R) => R, conj: (r: R) => R) => (p: Polynomial, q: Polynomial) => R; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const norm: (Eq_: Eq.Eq, R: Rng.Ring, scaleLeft: (n: number, r: R) => R, sqrt: (r: R) => R, conj: (r: R) => R) => (p: Polynomial) => R; /** * @since 1.0.0 * @category Polynomial Operations */ export declare const projection: (Eq_: Eq.Eq, F: Fld.Field, scaleLeft: (n: number, r: R) => R, conj: (r: R) => R) => (p: Polynomial, q: Polynomial) => Polynomial; /** * @since 1.0.0 * @category Utilities */ export declare const preservingZipWith: (f: (x: R, y: R) => S, def: R) => (xs: readonly R[], ys: readonly R[]) => readonly S[]; /** * @since 1.0.0 * @category Internal */ export declare const shiftBy: (n: number, r: R) => (p: ReadonlyArray) => ReadonlyArray; export {}; //# sourceMappingURL=Polynomial.d.ts.map