@thi.ng/dual-algebra
Version:
Multivariate dual number algebra, automatic differentiation
89 lines • 2.63 kB
TypeScript
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