Example #1
0
    def test_close_type_one(self):
        central_from_raw_exprs = to_sympy_matrix(
                    [["x_0_0_2-y_2**2"],
                    ["x_0_1_1-y_1*y_2"],
                    ["x_0_2_0-y_1**2"],
                    ["x_1_0_1-y_0*y_2"],
                    ["x_1_1_0-y_0*y_1"],
                    ["x_2_0_0-y_0**2"],
                    ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
                    ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
                    ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
                    ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
                    ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
                    ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
                    ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
                    ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
                    ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
                    ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]
         ])


        max_order = 2

        expected = to_sympy_matrix([
            ["yx5*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0)) + yx7*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2) + c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0) + (-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2)*(2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2)) + (c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3)*(2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))"],
            ["c_3*y_0-c_4*y_1"],
            ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            ["-yx2*c_2*y_0/(c_6 + y_0) + yx5*(-c_1 + 2*c_2*y_0*y_2/(c_6 + y_0)**2 - 2*c_2*y_2/(c_6 + y_0) - c_5 - y_2*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))) + yx6*c_4 + yx7*(-c_2*y_0*y_2**2/(c_6 + y_0)**3 + c_2*y_2**2/(c_6 + y_0)**2 - y_2*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)) + c_0*y_2 - c_1*y_0*y_2 - c_2*y_0*y_2**2/(c_6 + y_0) + c_4*y_0*y_1 - c_5*y_0*y_2 - y_0*(c_4*y_1 - c_5*y_2) - y_2*(c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0)) + (c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))*(2*yx2*yx5/y_2 + yx2*y_0 + 2*yx5*y_2 + 3*y_0*y_2**2 - y_0*(yx2 + y_2**2) - 2*y_2*(yx5 + y_0*y_2)) + (-2*c_2*y_0*y_2/(c_6 + y_0)**3 + 2*c_2*y_2/(c_6 + y_0)**2 - y_2*(-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2))*(2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2)) + (c_2*y_0*y_2**2/(c_6 + y_0)**4 - c_2*y_2**2/(c_6 + y_0)**3 - y_2*(c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3))*(2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))"],
            ["-yx3*c_2*y_0/(c_6 + y_0) + yx5*(c_2*y_0*y_1/(c_6 + y_0)**2 - c_2*y_1/(c_6 + y_0) - y_1*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))) + yx6*(-c_1 + c_2*y_0*y_2/(c_6 + y_0)**2 - c_2*y_2/(c_6 + y_0) - c_4) + yx7*(-c_2*y_0*y_1*y_2/(c_6 + y_0)**3 + c_2*y_1*y_2/(c_6 + y_0)**2 + c_3 - y_1*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)) + c_0*y_1 - c_1*y_0*y_1 - c_2*y_0*y_1*y_2/(c_6 + y_0) + c_3*y_0**2 - c_4*y_0*y_1 - y_0*(c_3*y_0 - c_4*y_1) - y_1*(c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0)) + (c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))*(yx3*y_0 + yx5*y_1 + yx6*y_2 + 3*y_0*y_1*y_2 - y_0*(yx3 + y_1*y_2) - y_1*(yx5 + y_0*y_2) - y_2*(yx6 + y_0*y_1)) + (-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)*(2*yx6*yx7/y_0 + 2*yx6*y_0 + yx7*y_1 + 3*y_0**2*y_1 - 2*y_0*(yx6 + y_0*y_1) - y_1*(yx7 + y_0**2)) + (-c_2*y_0*y_1/(c_6 + y_0)**3 + c_2*y_1/(c_6 + y_0)**2 - y_1*(-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2))*(2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2)) + (c_2*y_0*y_1*y_2/(c_6 + y_0)**4 - c_2*y_1*y_2/(c_6 + y_0)**3 - y_1*(c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3))*(2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))"],
            ["yx5*(2*c_2*y_0**2/(c_6 + y_0)**2 - 4*c_2*y_0/(c_6 + y_0) - c_2*y_0/(c_6 + y_0)**2 + c_2/(c_6 + y_0) - 2*y_0*(c_2*y_0/(c_6 + y_0)**2 - c_2/(c_6 + y_0))) + yx7*(-2*c_1 - 2*c_2*y_0**2*y_2/(c_6 + y_0)**3 + 4*c_2*y_0*y_2/(c_6 + y_0)**2 + c_2*y_0*y_2/(c_6 + y_0)**3 - 2*c_2*y_2/(c_6 + y_0) - c_2*y_2/(c_6 + y_0)**2 - 2*y_0*(-c_2*y_0*y_2/(c_6 + y_0)**3 + c_2*y_2/(c_6 + y_0)**2)) + 2*c_0*y_0 + c_0 - 2*c_1*y_0**2 + c_1*y_0 - 2*c_2*y_0**2*y_2/(c_6 + y_0) + c_2*y_0*y_2/(c_6 + y_0) - 2*y_0*(c_0 - c_1*y_0 - c_2*y_0*y_2/(c_6 + y_0)) + (2*yx7**2/y_0 + 3*yx7*y_0 + 3*y_0**3 - 3*y_0*(yx7 + y_0**2))*(2*c_2*y_0**2*y_2/(c_6 + y_0)**4 - 4*c_2*y_0*y_2/(c_6 + y_0)**3 - c_2*y_0*y_2/(c_6 + y_0)**4 + 2*c_2*y_2/(c_6 + y_0)**2 + c_2*y_2/(c_6 + y_0)**3 - 2*y_0*(c_2*y_0*y_2/(c_6 + y_0)**4 - c_2*y_2/(c_6 + y_0)**3)) + (2*yx5*yx7/y_0 + 2*yx5*y_0 + yx7*y_2 + 3*y_0**2*y_2 - 2*y_0*(yx5 + y_0*y_2) - y_2*(yx7 + y_0**2))*(-2*c_2*y_0**2/(c_6 + y_0)**3 + 4*c_2*y_0/(c_6 + y_0)**2 + c_2*y_0/(c_6 + y_0)**3 - 2*c_2/(c_6 + y_0) - c_2/(c_6 + y_0)**2 - 2*y_0*(-c_2*y_0/(c_6 + y_0)**3 + c_2/(c_6 + y_0)**2))"]
        ])

        closer = GammaClosure(max_order, multivariate=True)
        answer = closer.close(self.__mfk, central_from_raw_exprs, self.__n_counter, self.__k_counter)
        self.assertTrue(sympy_expressions_equal(answer, expected))
Example #2
0
    def test_close_type_zero(self):

        central_from_raw_exprs = to_sympy_matrix(
                    [["x_0_0_2-y_2**2"],
                    ["x_0_1_1-y_1*y_2"],
                    ["x_0_2_0-y_1**2"],
                    ["x_1_0_1-y_0*y_2"],
                    ["x_1_1_0-y_0*y_1"],
                    ["x_2_0_0-y_0**2"],
                    ["-3*x_0_0_2*y_2+x_0_0_3+2*y_2**3"],
                    ["-x_0_0_2*y_1-2*x_0_1_1*y_2+x_0_1_2+2*y_1*y_2**2"],
                    ["-2*x_0_1_1*y_1-x_0_2_0*y_2+x_0_2_1+2*y_1**2*y_2"],
                    ["-3*x_0_2_0*y_1+x_0_3_0+2*y_1**3"],
                    ["-x_0_0_2*y_0-2*x_1_0_1*y_2+x_1_0_2+2*y_0*y_2**2"],
                    ["-x_0_1_1*y_0-x_1_0_1*y_1-x_1_1_0*y_2+x_1_1_1+2*y_0*y_1*y_2"],
                    ["-x_0_2_0*y_0-2*x_1_1_0*y_1+x_1_2_0+2*y_0*y_1**2"],
                    ["-2*x_1_0_1*y_0-x_2_0_0*y_2+x_2_0_1+2*y_0**2*y_2"],
                    ["-2*x_1_1_0*y_0-x_2_0_0*y_1+x_2_1_0+2*y_0**2*y_1"],
                    ["-3*x_2_0_0*y_0+x_3_0_0+2*y_0**3"]
         ])

        max_order = 2
        expected = to_sympy_matrix([
            ["c_0-c_1*y_0-(c_2*c_6*yx5)/(c_6+y_0) ** 2-(c_2*y_0*y_2)/(c_6+y_0)+(c_2*c_6*y_2*yx7)/(c_6+y_0) ** 3-(2*c_2*c_6*y_2*yx7 ** 2)/(y_0*(c_6+y_0) ** 4)"],
            ["c_3*y_0-c_4*y_1"],
            ["c_4*y_1-c_5*y_2"],
            ["c_4*y_1+c_5*y_2+2*c_4*yx3-2*c_5*yx2"],
            ["c_3*yx5-c_4*yx3-c_4*y_1+c_4*yx4-c_5*yx3"],
            ["c_3*y_0+c_4*y_1-2*c_4*yx4+2*c_3*yx6"],
            ["c_4*yx6-c_1*yx5-c_5*yx5-(c_2*y_0*yx2)/(c_6+y_0)-(c_2*y_2*yx5)/(c_6+y_0)+(c_2*y_0*y_2*yx5)/(c_6+y_0) ** 2"],
            ["c_3*yx7-c_1*yx6-c_4*yx6-(c_2*y_0*yx3)/(c_6+y_0)-(c_2*y_2*yx6)/(c_6+y_0)+(c_2*y_0*y_2*yx6)/(c_6+y_0) ** 2"],
            ["(c_0*y_0 ** 5+c_1*y_0 ** 6+c_2*y_0 ** 5*y_2-2*c_2*y_0 ** 5*yx5-2*c_1*y_0 ** 5*yx7+6*c_0*c_6 ** 2*y_0 ** 3+4*c_0*c_6 ** 3*y_0 ** 2+6*c_1*c_6 ** 2*y_0 ** 4+4*c_1*c_6 ** 3*y_0 ** 3+c_1*c_6 ** 4*y_0 ** 2+4*c_0*c_6*y_0 ** 4+c_0*c_6 ** 4*y_0+4*c_1*c_6*y_0 ** 5+3*c_2*c_6*y_0 ** 4*y_2+c_2*c_6*y_0 ** 3*yx5+c_2*c_6 ** 3*y_0*yx5-6*c_2*c_6*y_0 ** 4*yx5-8*c_1*c_6*y_0 ** 4*yx7-2*c_1*c_6 ** 4*y_0*yx7+2*c_2*c_6*y_2*yx7 ** 2+3*c_2*c_6 ** 2*y_0 ** 3*y_2+c_2*c_6 ** 3*y_0 ** 2*y_2+2*c_2*c_6 ** 2*y_0 ** 2*yx5-6*c_2*c_6 ** 2*y_0 ** 3*yx5-2*c_2*c_6 ** 3*y_0 ** 2*yx5-12*c_1*c_6 ** 2*y_0 ** 3*yx7-8*c_1*c_6 ** 3*y_0 ** 2*yx7+4*c_2*c_6 ** 2*y_2*yx7 ** 2-4*c_2*c_6 ** 2*y_0 ** 2*y_2*yx7+4*c_2*c_6*y_0*y_2*yx7 ** 2-c_2*c_6*y_0 ** 2*y_2*yx7-c_2*c_6 ** 2*y_0*y_2*yx7-2*c_2*c_6*y_0 ** 3*y_2*yx7-2*c_2*c_6 ** 3*y_0*y_2*yx7)/(y_0*(c_6+y_0) ** 4)"]
        ])
        closer = GammaClosure(max_order, multivariate=False)
        answer = closer.close(self.__mfk, central_from_raw_exprs, self.__n_counter, self.__k_counter)
        self.assertTrue(sympy_expressions_equal(answer, expected))