コード例 #1
0
    def testErrorFunction(self):
        x = 1.7e-09
        self.assertAlmostEqual(errorFunction(x), 1.918245e-9, 15)

        x = 7
        self.assertAlmostEqual(errorFunction(x), 1.0, 12)

        x = -7
        self.assertAlmostEqual(errorFunction(x), -1.0, 12)
コード例 #2
0
    def __call__(self, z):
        z = (z - self._average) / self._sigma
        result = 0.5 * (1.0 + errorFunction(z * _M_SQRT_2))
        if result <= 1.0e-8:
            sumRes = 1.0
            zsqr = z * z
            i = 1.0
            g = 1.0
            a = 2.20e308
            while True:
                lasta = a
                x = (4.0 * i - 3.0) / zsqr
                y = x * ((4.0 * i - 1.0) / zsqr)
                a = g * (x - y)
                sumRes -= a
                g *= y
                i += 1.0
                if a < 0.0:
                    a = -a

                if lasta <= a or a < math.fabs(sumRes * _QL_EPSILON):
                    break
            return -self._gaussian(z) / z * sumRes
        return result