UNPKG

@thi.ng/dual-algebra

Version:

Multivariate dual number algebra, automatic differentiation

89 lines 2.63 kB
import type { Dual, Op1, Op1N, Op2, Op3, Op4 } from "./api.js"; /** * Creates a multivariate dual number. * * @param real - real value * @param n - number of variables (default: 1) * @param i - variable index (0 < i <= n) */ export declare const dual: (real: number, n?: number, i?: number) => Dual; /** * Creates a 1-dual number of `r`. Syntax sugar for {@link dual}. * * @param r - * @param i - */ export declare const $: (r: number, i?: number) => number[]; /** * Creates a 2-dual number of `r`. Syntax sugar for {@link dual}. * * @param r - * @param i - */ export declare const $2: (r: number, i?: number) => Dual; /** * Creates a 3-dual number of `r`. Syntax sugar for {@link dual}. * * @param r - * @param i - */ export declare const $3: (r: number, i?: number) => Dual; /** * Creates a 4-dual number of `r`. Syntax sugar for {@link dual}. * * @param r - * @param i - */ export declare const $4: (r: number, i?: number) => Dual; export declare const defOp: <T extends Function>(single: T, multi: T, dispatch?: number) => T; export declare const add: Op2; export declare const sub: Op2; export declare const neg: Op1; export declare const mul: Op2; export declare const div: Op2; export declare const abs: Op1; export declare const sqrt: Op1; export declare const exp: Op1; export declare const log: Op1; export declare const pow: Op1N; export declare const sin: Op1; export declare const cos: Op1; export declare const tan: Op1; export declare const atan: Op1; /** * Linear interpolation for dual numbers: `a + (b - a) * t` * * @param a - * @param b - * @param t - */ export declare const mix: (a: Dual, b: Dual, t: Dual) => Dual; /** * Higher order function. Takes a 2-multivariate {@link Op2} and returns new * function which takes two real numbers `x` and `y` representing variables in * the given function. When called, converts `x` and `y` first into dual numbers * and then calls `fn` and returns result. * * @remarks * The result tuple can be interpreted the following: * * - index 0 - real value of `fn` * - index 1 - derivative of first var at `x` * - index 2 - derivative of second var at `y` * * @param fn - */ export declare const evalFn2: (fn: Op2) => (x: number, y: number) => Dual; /** * Same as {@link evalFn2}, but 3-multivariate functions. * * @param fn - */ export declare const evalFn3: (fn: Op3) => (x: number, y: number, z: number) => Dual; /** * Same as {@link evalFn4}, but 4-multivariate functions. * * @param fn - */ export declare const evalFn4: (fn: Op4) => (x: number, y: number, z: number, w: number) => Dual; //# sourceMappingURL=ops.d.ts.map