示例#1
0
 def test_gamma(self):
     expr = "(8.0-4.0*euler_gamma+3.0*((2*euler_gamma-2*x-3.0)/(-euler_gamma+x+1.0))-2.0*euler_gamma*((2*euler_gamma-2*x-3.0)/(-euler_gamma+x+1.0)))/(4.0*((2*euler_gamma-2*x-3.0)/(-euler_gamma+x+1.0))+8.0)"
     rules = []
     rules.append(RULES['Simplify'])
     equivalent_expr = generate_equivalent_expressions(expr, rules)
     equivalent_expr = list(equivalent_expr)
     equivalent_expr.sort(key=len)
     print('------------------------------------------------')
     for ee in equivalent_expr:
         print(ee)
示例#2
0
    def test_expq3(self):

        expr = 'eps*(exp((a+b)*eps)-1)/((exp(a*eps)-1)*(exp(b*eps)-1))'
        target = ''

        rules = list()

        equivalent_expr = generate_equivalent_expressions(expr, rules)

        self.assertTrue(target in equivalent_expr)
示例#3
0
    def test_sqrtexp(self):

        expr = 'sqrt((exp(2*eps)-1)/(exp(eps)-1))'
        target = 'sqrt(exp(eps)+1)'

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['ExpReduction'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)

        self.assertTrue(target in equivalent_expr)
示例#4
0
    def test_expq2(self):

        expr = 'exp(x)/(exp(x)-1)'
        target = '1+1/(x+pow(x,2)/2+pow(x,3)/6+pow(x,4)/24)'

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['FracPartial'])
        rules.append(RULES['TaylorExp'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        self.assertTrue(target in equivalent_expr)
示例#5
0
    def test_2sqrt(self):

        expr = 'sqrt(x+1)-sqrt(x)'
        target = ['1/(sqrt(x)+sqrt(x+1))']

        rules = list()
        rules.append(RULES['Simplify'])
        #rules.append(RULES['Taylor'])
        rules.append(RULES['NumeratorFrom3'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#6
0
    def test_exp2(self):

        expr = 'exp(x)-2+exp(-x)'
        target = ['x**2*(x**2*(x**2/360+1/12)+1)']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['Taylor'])
        rules.append(RULES['Horner'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#7
0
    def test_quadp(self):

        expr = '((-b)-sqrt(b*b-4*a*c))/(2*a)'
        target = ['']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['NumeratorFrom2'])
        # rules.append(RULES['Taylor'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#8
0
    def test_gamma(self):

        expr = 'gamma((2-euler_gamma+x)/(euler_gamma-1-x)-1)'
        target = ['']

        rules = list()
        rules.append(RULES['Simplify'])
        # rules.append(RULES['Taylor'])
        rules.append(RULES['Gamma_1'])
        # rules.append(RULES['TaylorLog'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#9
0
    def test_2tan(self):

        expr = 'tan(x+e)-tan(x)'
        target = ['sin(e)/(cos(x)*(cos(e)*cos(x)-sin(e)*sin(x)))']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['TanPlus'])
        rules.append(RULES['CosPlus'])
        rules.append(RULES['CommDenominator2'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#10
0
    def test_atan2(self):

        expr = 'atan(n+1)-atan(n)'
        target = ['']

        rules = list()
        rules.append(RULES['Simplify'])
        # rules.append(RULES['Taylor'])
        rules.append(RULES['AtanMinus'])
        # rules.append(RULES['TaylorLog'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#11
0
    def test_invcot(self):

        expr = '1/x-1/tan(x)'
        target = ['x/3+x**3/45+2*x**5/945']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['Taylor'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)

        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#12
0
    def test_quadm(self):

        expr = '(-b+sqrt(b*b-4*a*c))/(2*a)'
        target = ['4*a*c/(-2*a*(b+sqrt(-4*a*c+b**2)))']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['NumeratorFrom1'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)

        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#13
0
    def test_cos2(self):

        expr = '(1-cos(x))/(x*x)'
        target = ['x**4/720-x**2/24+1/2']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['TaylorCos'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)

        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#14
0
    def test_2log(self):

        expr = 'log(n+1)-log(n))'
        target = ['']

        rules = list()
        rules.append(RULES['Simplify'])
        #rules.append(RULES['Taylor'])
        rules.append(RULES['Distribution3'])
        rules.append(RULES['TaylorLog'])
        rules.append(RULES['LogMinus'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#15
0
    def test_midarc(self):
        expr = '((z1real+z2real)/sqrt((((z1real+z2real)*(z1real+z2real))+((z1image+z2image)*(z1image+z2image)))))'
        target = ['cos(atan(z1image/z1real)/2+atan(z2image/z2real)/2)']
        rules = list()
        rules.append(RULES['Minus1'])
        rules.append(RULES['Minus2'])
        rules.append(RULES['Minus3'])
        rules.append(RULES['CommutationPlus'])
        rules.append(RULES['Midarc'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        print('------------------------------------------------')
        for ee in equivalent_expr:
            if ee.startswith('cos'):
                print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#16
0
    def test_sintan(self):

        expr = '(x-sin(x))/(x-tan(x))'
        target = ['(-x**4+42*x**2-840)/(16*(17*x**4+42*x**2+105))']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['TaylorSin'])
        rules.append(RULES['TaylorTan'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)

        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#17
0
    def test_tanhf(self):

        expr = '(1-cos(x))/sin(x)'
        expr = '(-cos(x)+1)/sin(x)'
        target = ['sin(x)/(cos(x)+1)']

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['NumeratorFrom1'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)

        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#18
0
    def test_2cos(self):

        expr = 'cos(x+e)-cos(x)'

        target = [
            'cos(e)*cos(x)-sin(e)*sin(x)-cos(x)', '-2*sin(e/2+x)*sin(e/2)'
        ]

        rules = list()
        rules.append(RULES['SinSinR'])
        rules.append(RULES['CosPlus'])
        rules.append(RULES['Simplify'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)

        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#19
0
    def test_logs(self):

        expr = '(n+1)*log(n+1)-n*log(n)-1'
        target = ['']

        rules = list()
        rules.append(RULES['Simplify'])
        # rules.append(RULES['Taylor'])
        rules.append(RULES['Distribution2'])
        rules.append(RULES['CommutationPlus'])
        # rules.append(RULES['TaylorLog'])
        rules.append(RULES['LogMinus'])
        rules.append(RULES['LogDivideReverse'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)
        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#20
0
    def test_logq(self):

        expr = 'log((1-eps)/(1+eps))'

        target = '-2*eps*(3*eps**4+5*eps**2+15)/15'

        rules = list()
        rules.append(RULES['Simplify'])
        #rules.append(RULES['TaylorLnPlusReverse'])
        #rules.append(RULES['TaylorLnMinusReverse'])
        #rules.append(RULES['LnDivide'])
        rules.append(RULES['Taylor'])
        rules.append(RULES['Horner'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)

        self.assertTrue(target in equivalent_expr)
示例#21
0
    def test_2sin(self):

        expr = 'sin(x+e)-sin(x)'
        target = [
            'sin(x)*cos(e)+cos(x)*sin(e)-sin(x)',
            '(-e^7/322560+e^5/1920-e^3/24+e)*cos(e/2+x)',
            '-e*(e^6-168*e^4+13440*e^2-322560)*cos(e/2+x)/322560'
        ]

        rules = list()
        rules.append(RULES['Simplify'])
        rules.append(RULES['SinPlus'])
        rules.append(RULES['CosSinR'])
        # rules.append(RULES['TaylorSin'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)
        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)

        for te in target:
            self.assertTrue(te in equivalent_expr)
示例#22
0
    def test_midarc(self):

        expr = '((A1+B1*I)/sqrt(A1**2+B1**2)+(A2+B2*I)/sqrt(A2**2+B2**2))/abs((A1+B1*I)/sqrt(A1**2+B1**2)+(A2+B2*I)/sqrt(A2**2+B2**2))'

        #expr = '(e**(I*atan(B1/A1))+e**(I*atan(B2/A2)))/abs(e**(I*atan(B1/A1))+e**(I*atan(B2/A2)))'

        target = ['e**(I*(atan(B1/A1)+atan(B2/A2))/2)']

        rules = list()
        rules.append(RULES['PolarRepresentation'])
        rules.append(RULES['CommutationMultiply'])
        rules.append(RULES['Midarc'])

        rules.append(RULES['Simplify'])

        equivalent_expr = generate_equivalent_expressions(expr, rules)

        equivalent_expr = list(equivalent_expr)
        equivalent_expr.sort(key=len)
        for ee in equivalent_expr:
            print(ee)

        for te in target:
            self.assertTrue(te in equivalent_expr)