@thi.ng/math
Version:
Assorted common math functions & utilities
29 lines (28 loc) • 594 B
JavaScript
import { EPS } from "./api.js";
const minError = (fn, error, q, res = 16, iter = 8, start = 0, end = 1, eps = EPS) => {
if (iter <= 0) return (start + end) / 2;
const delta = (end - start) / res;
let minT = start;
let minE = Infinity;
for (let i = 0; i <= res; i++) {
const t = start + i * delta;
const e = error(q, fn(t));
if (e < minE) {
if (e <= eps) return t;
minE = e;
minT = t;
}
}
return minError(
fn,
error,
q,
res,
iter - 1,
Math.max(minT - delta, 0),
Math.min(minT + delta, 1)
);
};
export {
minError
};