(rontolisp) docs
← 関数

linalg:erf

(linalg:erf a)

要素ごとのガウス誤差関数 (scipy.special.erf) です。-1 から 1 へ増加する奇関数です。

erf(x) = 2 / sqrt(pi) * integral from 0 to x of e^(-t^2) dt

全域で double の下位数 ulp まで正確です。交代級数の Maclaurin 展開は |x| ~ 3 付近で桁落ちにより有効数字を失うため、代わりに全項が正の級数 (A&S 7.1.6) を 加算します。|x| = 6 を超えると差が double の分解能を下回るため、ちょうど +-1 を返します。

erfc は用意していません。(linalg:sub 1.0 (linalg:erf a)) がそれであり、専用の erfc の方が精度が高くなる裾野の領域は、erf 自体が既に 1 である領域でも あるためです。微分可能な対応物は torch:erf で、 x * (1 + erf(x / sqrt(2))) / 2torch:gelu です。