def erf_(a0): if not a0.IsFloat: raise Exception("erf(): requires floating point operands!") ar, sr = _check1(a0) if not a0.IsSpecial: for i in range(sr): ar[i] = _ek.erf(a0[i]) else: raise Exception("erf(): unsupported array type!") return ar
def test13_cont_func(variant_packet_rgb): # Test continuous 1D distribution integral against analytic result from mitsuba.core import ContinuousDistribution, Float x = ek.linspace(Float, -2, 2, 513) y = ek.exp(-ek.sqr(x)) d = ContinuousDistribution([-2, 2], y) assert ek.allclose(d.integral(), ek.sqrt(ek.pi) * ek.erf(2.0)) assert ek.allclose(d.eval_pdf([1]), [ek.exp(-1)]) assert ek.allclose(d.sample([0, 0.5, 1]), [-2, 0, 2])
def stdnormal_cdf(x): shape = x.shape cdf = (1.0 - ek.erf(-x.flatten() / ek.sqrt(2.0))) * 0.5 return np.array(cdf).reshape(shape)