import { variance } from "./variance"; import { AccessorT, Observer, Accessor } from "./observer"; function _deviation(): Observer { const v = variance(); return { observe: (value: number, idx: number) => { v.observe(value, idx); }, peek: () => { const variance = v.peek(); return variance !== undefined ? Math.sqrt(variance) : variance; } }; } export type DeviationAccessor = AccessorT; export function deviation(): Observer; export function deviation(callbackFn: DeviationAccessor): Observer; export function deviation(callbackFn?: DeviationAccessor): Observer | Observer { return callbackFn ? Accessor(_deviation, callbackFn) : _deviation(); }