def test_TR3(): assert TR3(cos(y - x * (y - x))) == cos(x * (x - y) + y) assert cos(pi / 2 + x) == -sin(x) assert cos(30 * pi / 2 + x) == -cos(x) for f in (cos, sin, tan, cot, csc, sec): i = f(pi * Rational(3, 7)) j = TR3(i) assert verify_numerically(i, j) and i.func != j.func
def test_TRmorrie(): assert TRmorrie(7*Mul(*[cos(i) for i in range(10)])) == \ 7*sin(12)*sin(16)*cos(5)*cos(7)*cos(9)/(64*sin(1)*sin(3)) assert TRmorrie(x) == x assert TRmorrie(2*x) == 2*x e = cos(pi/7)*cos(2*pi/7)*cos(4*pi/7) assert TR8(TRmorrie(e)) == -S(1)/8 e = Mul(*[cos(2**i*pi/17) for i in range(1, 17)]) assert TR8(TR3(TRmorrie(e))) == S(1)/65536
def test_TRmorrie(): assert TRmorrie(7*Mul(*[cos(i) for i in range(10)])) == \ 7*sin(12)*sin(16)*cos(5)*cos(7)*cos(9)/(64*sin(1)*sin(3)) assert TRmorrie(x) == x assert TRmorrie(2 * x) == 2 * x e = cos(pi / 7) * cos(pi * Rational(2, 7)) * cos(pi * Rational(4, 7)) assert TR8(TRmorrie(e)) == Rational(-1, 8) e = Mul(*[cos(2**i * pi / 17) for i in range(1, 17)]) assert TR8(TR3(TRmorrie(e))) == Rational(1, 65536) # issue 17063 eq = cos(x) / cos(x / 2) assert TRmorrie(eq) == eq