예제 #1
0
 def test_log(self):
     self.assertEqual(imath.log(1), interval[0])
     self.assertEqual(imath.log(0), interval[-fpu.infinity])
     self.assertEqual(imath.log(imath.exp(1)), interval[helpers.nudge(1, -1), helpers.nudge(1, +1)])
     self.assertEqual(imath.log(0), interval[-fpu.infinity])
     self.assertEqual(imath.log(interval[0, 1]), interval[-fpu.infinity, 0])
     self.assertEqual(imath.log(interval[-1, 1]), interval[-fpu.infinity, 0])
     self.assertEqual(imath.log(interval[-2, -1]), interval())
예제 #2
0
 def test_log(self):
     assert imath.log(1)                == interval[0]
     assert imath.log(0)                == interval[-fpu.infinity]
     assert imath.log(imath.exp(1))     == interval[helpers.nudge(1, -1), helpers.nudge(1, +1)]
     assert imath.log(0)                == interval[-fpu.infinity]
     assert imath.log(interval[0, 1])   == interval[-fpu.infinity, 0]
     assert imath.log(interval[-1, 1])  == interval[-fpu.infinity, 0]
     assert imath.log(interval[-2, -1]) == interval()
예제 #3
0
 def test_log(self):
     assert imath.log(1) == interval[0]
     assert imath.log(0) == interval[-fpu.infinity]
     assert imath.log(imath.exp(1)) == interval[helpers.nudge(1, -1),
                                                helpers.nudge(1, +1)]
     assert imath.log(0) == interval[-fpu.infinity]
     assert imath.log(interval[0, 1]) == interval[-fpu.infinity, 0]
     assert imath.log(interval[-1, 1]) == interval[-fpu.infinity, 0]
     assert imath.log(interval[-2, -1]) == interval()
예제 #4
0
 def test_log(self):
     self.assertEqual(imath.log(1), interval[0])
     self.assertEqual(imath.log(0), interval[-fpu.infinity])
     self.assertEqual(imath.log(imath.exp(1)),
                      interval[helpers.nudge(1, -1),
                               helpers.nudge(1, +1)])
     self.assertEqual(imath.log(0), interval[-fpu.infinity])
     self.assertEqual(imath.log(interval[0, 1]), interval[-fpu.infinity, 0])
     self.assertEqual(imath.log(interval[-1, 1]), interval[-fpu.infinity,
                                                           0])
     self.assertEqual(imath.log(interval[-2, -1]), interval())
예제 #5
0
 def test_log1p(self):
     self.assertEqual(imath.log1p(0), interval[0])
     self.assertEqual(imath.log1p(-1), interval[-fpu.infinity])
     self.assertEqual(imath.log1p(interval[-2, 0]), interval[-fpu.infinity, 0])
     self.assertEqual(imath.log1p(1), imath.log(2))
예제 #6
0
 def test_log1p(self):
     assert imath.log1p(0)               == interval[0]
     assert imath.log1p(-1)              == interval[-fpu.infinity]
     assert imath.log1p(interval[-2, 0]) == interval[-fpu.infinity, 0]
     assert imath.log1p(1)               == imath.log(2)
예제 #7
0
def pow(x, n):
    return imath.exp(n * imath.log(x))
예제 #8
0
 def test_log1p(self):
     self.assertEqual(imath.log1p(0), interval[0])
     self.assertEqual(imath.log1p(-1), interval[-fpu.infinity])
     self.assertEqual(imath.log1p(interval[-2, 0]), interval[-fpu.infinity,
                                                             0])
     self.assertEqual(imath.log1p(1), imath.log(2))
예제 #9
0
    def __eval(self, n_id, box):
        n = self.__dag[n_id]

        rec = self.__eval

        if n[0] == '+':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 + v2
        elif n[0] == '-':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 - v2
        elif n[0] == '*':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 * v2
        elif n[0] == '/':
            v1 = rec(n[1], box)
            v2 = rec(n[2], box)
            return v1 / v2

        elif n[0] == '^':
            v = rec(n[1], box)
            i = self.__dag[n[2]][1]
            return v**i

        elif n[0] == 'exp':
            v = rec(n[1], box)
            return imath.exp(v)

        elif n[0] == 'log':
            v = rec(n[1], box)
            return imath.log(v)

        elif n[0] == 'sqrt':
            v = rec(n[1], box)
            return imath.sqrt(v)

        elif n[0] == 'sin':
            v = rec(n[1], box)
            return imath.sin(v)

        elif n[0] == 'cos':
            v = rec(n[1], box)
            return imath.cos(v)

        elif n[0] == 'tan':
            v = rec(n[1], box)
            return imath.tan(v)

        elif n[0] == 'asin':
            v = rec(n[1], box)
            return imath.asin(v)

        elif n[0] == 'acos':
            v = rec(n[1], box)
            return imath.acos(v)

        elif n[0] == 'atan':
            v = rec(n[1], box)
            return imath.atan(v)

        elif n[0] == 'sinh':
            v = rec(n[1], box)
            return imath.sinh(v)

        elif n[0] == 'cosh':
            v = rec(n[1], box)
            return imath.cosh(v)

        elif n[0] == 'tanh':
            v = rec(n[1], box)
            return imath.tanh(v)

        elif n[0] == 'C':
            return interval[n[1]]
        elif n[0] == 'V':
            return box[n[1]]
        else:
            print('unsupported node: ' + str(n))
            assert (False)
예제 #10
0
 def test_log1p(self):
     assert imath.log1p(0) == interval[0]
     assert imath.log1p(-1) == interval[-fpu.infinity]
     assert imath.log1p(interval[-2, 0]) == interval[-fpu.infinity, 0]
     assert imath.log1p(1) == imath.log(2)