Symbolic Integration for hard expressions and generate function

Hello All,

I am trying to generate Julia functions by deriving the symbolic expressions in Julia. I started using Symbolics.jl and SymbolicNumericIntegration.jl, however it seems that SymbolicNumericIntegration.jl is not that accurate.Based on the documentation, if the second and third argument are non-zero it means that the algorithm wasn’t able to calculate the integral.

``integratereturns a tuple with three values. The first one is the solved integral, the second one is the sum of the unsolved terms, and the third value is the residual error. Ifintegrate is successful, the unsolved portion is reported as 0.

I will attach some part of my code here. I should mention that p1_1 is generated with Julia, I didn’t put the derivation and rest of the code since it is quite lengthy.

using Symbolics
using SymbolicNumericIntegration

@variables q[1:3] xi r L0
p1_1 = (-6L0*(q[1]^9)*(xi^10) + 27L0*(q[1]^8)*q[2]*(xi^10) + 27L0*(q[1]^8)*q[3]*(xi^10) - 72L0*(q[1]^7)*(q[2]^2)*(xi^10) - 72L0*(q[1]^7)*q[2]*q[3]*(xi^10) - 72L0*(q[1]^7)*(q[3]^2)*(xi^10) + 126L0*(q[1]^6)*(q[2]^3)*(xi^10) + 126L0*(q[1]^6)*(q[2]^2)*q[3]*(xi^10) + 126L0*(q[1]^6)*q[2]*(q[3]^2)*(xi^10) + 126L0*(q[1]^6)*(q[3]^3)*(xi^10) - 162L0*(q[1]^5)*(q[2]^4)*(xi^10) - 108L0*(q[1]^5)*(q[2]^3)*q[3]*(xi^10) - 216L0*(q[1]^5)*(q[2]^2)*(q[3]^2)*(xi^10) - 108L0*(q[1]^5)*q[2]*(q[3]^3)*(xi^10) - 162L0*(q[1]^5)*(q[3]^4)*(xi^10) + 153L0*(q[1]^4)*(q[2]^5)*(xi^10) + 45L0*(q[1]^4)*(q[2]^4)*q[3]*(xi^10) + 180L0*(q[1]^4)*(q[2]^3)*(q[3]^2)*(xi^10) + 180L0*(q[1]^4)*(q[2]^2)*(q[3]^3)*(xi^10) + 45L0*(q[1]^4)*q[2]*(q[3]^4)*(xi^10) + 153L0*(q[1]^4)*(q[3]^5)*(xi^10) - 108L0*(q[1]^3)*(q[2]^6)*(xi^10) + 36L0*(q[1]^3)*(q[2]^5)*q[3]*(xi^10) - 180L0*(q[1]^3)*(q[2]^4)*(q[3]^2)*(xi^10) - 180L0*(q[1]^3)*(q[2]^2)*(q[3]^4)*(xi^10) + 36L0*(q[1]^3)*q[2]*(q[3]^5)*(xi^10) - 108L0*(q[1]^3)*(q[3]^6)*(xi^10) + 54L0*(q[1]^2)*(q[2]^7)*(xi^10) - 54L0*(q[1]^2)*(q[2]^6)*q[3]*(xi^10) + 108L0*(q[1]^2)*(q[2]^5)*(q[3]^2)*(xi^10) + 108L0*(q[1]^2)*(q[2]^2)*(q[3]^5)*(xi^10) - 54L0*(q[1]^2)*q[2]*(q[3]^6)*(xi^10) + 54L0*(q[1]^2)*(q[3]^7)*(xi^10) - 18L0*q[1]*(q[2]^8)*(xi^10) + 36L0*q[1]*(q[2]^7)*q[3]*(xi^10) - 72L0*q[1]*(q[2]^6)*(q[3]^2)*(xi^10) + 72L0*q[1]*(q[2]^5)*(q[3]^3)*(xi^10) - 90L0*q[1]*(q[2]^4)*(q[3]^4)*(xi^10) + 72L0*q[1]*(q[2]^3)*(q[3]^5)*(xi^10) - 72L0*q[1]*(q[2]^2)*(q[3]^6)*(xi^10) + 36L0*q[1]*q[2]*(q[3]^7)*(xi^10) - 18L0*q[1]*(q[3]^8)*(xi^10) + 3L0*(q[2]^9)*(xi^10) - 9L0*(q[2]^8)*q[3]*(xi^10) + 18L0*(q[2]^7)*(q[3]^2)*(xi^10) - 18L0*(q[2]^6)*(q[3]^3)*(xi^10) + 9L0*(q[2]^5)*(q[3]^4)*(xi^10) + 9L0*(q[2]^4)*(q[3]^5)*(xi^10) - 18L0*(q[2]^3)*(q[3]^6)*(xi^10) + 18L0*(q[2]^2)*(q[3]^7)*(xi^10) - 9L0*q[2]*(q[3]^8)*(xi^10) + 3L0*(q[3]^9)*(xi^10) - 2(q[1]^10)*(xi^10) + 7(q[1]^9)*q[2]*(xi^10) + 7(q[1]^9)*q[3]*(xi^10) - 15(q[1]^8)*(q[2]^2)*(xi^10) - 6(q[1]^8)*q[2]*q[3]*(xi^10) - 15(q[1]^8)*(q[3]^2)*(xi^10) + 18(q[1]^7)*(q[2]^3)*(xi^10) - 6(q[1]^7)*(q[2]^2)*q[3]*(xi^10) - 6(q[1]^7)*q[2]*(q[3]^2)*(xi^10) + 18(q[1]^7)*(q[3]^3)*(xi^10) - 12(q[1]^6)*(q[2]^4)*(xi^10) + 48(q[1]^6)*(q[2]^3)*q[3]*(xi^10) + 12(q[1]^6)*(q[2]^2)*(q[3]^2)*(xi^10) + 48(q[1]^6)*q[2]*(q[3]^3)*(xi^10) - 12(q[1]^6)*(q[3]^4)*(xi^10) - 3(q[1]^5)*(q[2]^5)*(xi^10) - 75(q[1]^5)*(q[2]^4)*q[3]*(xi^10) - 48(q[1]^5)*(q[2]^3)*(q[3]^2)*(xi^10) - 48(q[1]^5)*(q[2]^2)*(q[3]^3)*(xi^10) - 75(q[1]^5)*q[2]*(q[3]^4)*(xi^10) - 3(q[1]^5)*(q[3]^5)*(xi^10) + 15(q[1]^4)*(q[2]^6)*(xi^10) + 78(q[1]^4)*(q[2]^5)*q[3]*(xi^10) + 15(q[1]^4)*(q[2]^4)*(q[3]^2)*(xi^10) + 120(q[1]^4)*(q[2]^3)*(q[3]^3)*(xi^10) + 15(q[1]^4)*(q[2]^2)*(q[3]^4)*(xi^10) + 78(q[1]^4)*q[2]*(q[3]^5)*(xi^10) + 15(q[1]^4)*(q[3]^6)*(xi^10) - 18(q[1]^3)*(q[2]^7)*(xi^10) - 42(q[1]^3)*(q[2]^6)*q[3]*(xi^10) - 12(q[1]^3)*(q[2]^5)*(q[3]^2)*(xi^10) - 60(q[1]^3)*(q[2]^4)*(q[3]^3)*(xi^10) - 60(q[1]^3)*(q[2]^3)*(q[3]^4)*(xi^10) - 12(q[1]^3)*(q[2]^2)*(q[3]^5)*(xi^10) - 42(q[1]^3)*q[2]*(q[3]^6)*(xi^10) - 18(q[1]^3)*(q[3]^7)*(xi^10) + 12(q[1]^2)*(q[2]^8)*(xi^10) + 12(q[1]^2)*(q[2]^7)*q[3]*(xi^10) - 6(q[1]^2)*(q[2]^6)*(q[3]^2)*(xi^10) + 60(q[1]^2)*(q[2]^5)*(q[3]^3)*(xi^10) - 30(q[1]^2)*(q[2]^4)*(q[3]^4)*(xi^10) + 60(q[1]^2)*(q[2]^3)*(q[3]^5)*(xi^10) - 6(q[1]^2)*(q[2]^2)*(q[3]^6)*(xi^10) + 12(q[1]^2)*q[2]*(q[3]^7)*(xi^10) + 12(q[1]^2)*(q[3]^8)*(xi^10) - 5q[1]*(q[2]^9)*(xi^10) + 3q[1]*(q[2]^8)*q[3]*(xi^10) - 6q[1]*(q[2]^7)*(q[3]^2)*(xi^10) - 6q[1]*(q[2]^6)*(q[3]^3)*(xi^10) - 3q[1]*(q[2]^5)*(q[3]^4)*(xi^10) - 3q[1]*(q[2]^4)*(q[3]^5)*(xi^10) - 6q[1]*(q[2]^3)*(q[3]^6)*(xi^10) - 6q[1]*(q[2]^2)*(q[3]^7)*(xi^10) + 3q[1]*q[2]*(q[3]^8)*(xi^10) - 5q[1]*(q[3]^9)*(xi^10) + (q[2]^10)*(xi^10) - 2(q[2]^9)*q[3]*(xi^10) + 3(q[2]^8)*(q[3]^2)*(xi^10) - 3(q[2]^6)*(q[3]^4)*(xi^10) + 6(q[2]^5)*(q[3]^5)*(xi^10) - 3(q[2]^4)*(q[3]^6)*(xi^10) + 3(q[2]^2)*(q[3]^8)*(xi^10) - 2q[2]*(q[3]^9)*(xi^10) + (q[3]^10)*(xi^10)) / (837019575(r^9)) + (-6L0*(q[1]^5)*(xi^6) + 15L0*(q[1]^4)*q[2]*(xi^6) + 15L0*(q[1]^4)*q[3]*(xi^6) - 24L0*(q[1]^3)*(q[2]^2)*(xi^6) - 12L0*(q[1]^3)*q[2]*q[3]*(xi^6) - 24L0*(q[1]^3)*(q[3]^2)*(xi^6) + 21L0*(q[1]^2)*(q[2]^3)*(xi^6) + 9L0*(q[1]^2)*(q[2]^2)*q[3]*(xi^6) + 9L0*(q[1]^2)*q[2]*(q[3]^2)*(xi^6) + 21L0*(q[1]^2)*(q[3]^3)*(xi^6) - 12L0*q[1]*(q[2]^4)*(xi^6) + 6L0*q[1]*(q[2]^3)*q[3]*(xi^6) - 18L0*q[1]*(q[2]^2)*(q[3]^2)*(xi^6) + 6L0*q[1]*q[2]*(q[3]^3)*(xi^6) - 12L0*q[1]*(q[3]^4)*(xi^6) + 3L0*(q[2]^5)*(xi^6) - 3L0*(q[2]^4)*q[3]*(xi^6) + 3L0*(q[2]^3)*(q[3]^2)*(xi^6) + 3L0*(q[2]^2)*(q[3]^3)*(xi^6) - 3L0*q[2]*(q[3]^4)*(xi^6) + 3L0*(q[3]^5)*(xi^6) - 2(q[1]^6)*(xi^6) + 3(q[1]^5)*q[2]*(xi^6) + 3(q[1]^5)*q[3]*(xi^6) - 3(q[1]^4)*(q[2]^2)*(xi^6) + 6(q[1]^4)*q[2]*q[3]*(xi^6) - 3(q[1]^4)*(q[3]^2)*(xi^6) - (q[1]^3)*(q[2]^3)*(xi^6) - 9(q[1]^3)*(q[2]^2)*q[3]*(xi^6) - 9(q[1]^3)*q[2]*(q[3]^2)*(xi^6) - (q[1]^3)*(q[3]^3)*(xi^6) + 3(q[1]^2)*(q[2]^4)*(xi^6) + 12(q[1]^2)*(q[2]^3)*q[3]*(xi^6) + 12(q[1]^2)*q[2]*(q[3]^3)*(xi^6) + 3(q[1]^2)*(q[3]^4)*(xi^6) - 3q[1]*(q[2]^5)*(xi^6) - 3q[1]*(q[2]^4)*q[3]*(xi^6) - 3q[1]*(q[2]^3)*(q[3]^2)*(xi^6) - 3q[1]*(q[2]^2)*(q[3]^3)*(xi^6) - 3q[1]*q[2]*(q[3]^4)*(xi^6) - 3q[1]*(q[3]^5)*(xi^6) + (q[2]^6)*(xi^6) + 2(q[2]^3)*(q[3]^3)*(xi^6) + (q[3]^6)*(xi^6)) / (32805(r^5)) + (-6L0*q[1]*(xi^2) + 3L0*q[2]*(xi^2) + 3L0*q[3]*(xi^2) - 2(q[1]^2)*(xi^2) - q[1]*q[2]*(xi^2) - q[1]*q[3]*(xi^2) + (q[2]^2)*(xi^2) + 2q[2]*q[3]*(xi^2) + (q[3]^2)*(xi^2)) / (18r) + (6L0*(q[1]^3)*(xi^4) - 9L0*(q[1]^2)*q[2]*(xi^4) - 9L0*(q[1]^2)*q[3]*(xi^4) + 9L0*q[1]*(q[2]^2)*(xi^4) + 9L0*q[1]*(q[3]^2)*(xi^4) - 3L0*(q[2]^3)*(xi^4) - 3L0*(q[3]^3)*(xi^4) + 2(q[1]^4)*(xi^4) - (q[1]^3)*q[2]*(xi^4) - (q[1]^3)*q[3]*(xi^4) - 6(q[1]^2)*q[2]*q[3]*(xi^4) + 2q[1]*(q[2]^3)*(xi^4) + 3q[1]*(q[2]^2)*q[3]*(xi^4) + 3q[1]*q[2]*(q[3]^2)*(xi^4) + 2q[1]*(q[3]^3)*(xi^4) - (q[2]^4)*(xi^4) - (q[2]^3)*q[3]*(xi^4) - q[2]*(q[3]^3)*(xi^4) - (q[3]^4)*(xi^4)) / (486(r^3)) + (6L0*(q[1]^7)*(xi^8) - 21L0*(q[1]^6)*q[2]*(xi^8) - 21L0*(q[1]^6)*q[3]*(xi^8) + 45L0*(q[1]^5)*(q[2]^2)*(xi^8) + 36L0*(q[1]^5)*q[2]*q[3]*(xi^8) + 45L0*(q[1]^5)*(q[3]^2)*(xi^8) - 60L0*(q[1]^4)*(q[2]^3)*(xi^8) - 45L0*(q[1]^4)*(q[2]^2)*q[3]*(xi^8) - 45L0*(q[1]^4)*q[2]*(q[3]^2)*(xi^8) - 60L0*(q[1]^4)*(q[3]^3)*(xi^8) + 57L0*(q[1]^3)*(q[2]^4)*(xi^8) + 12L0*(q[1]^3)*(q[2]^3)*q[3]*(xi^8) + 72L0*(q[1]^3)*(q[2]^2)*(q[3]^2)*(xi^8) + 12L0*(q[1]^3)*q[2]*(q[3]^3)*(xi^8) + 57L0*(q[1]^3)*(q[3]^4)*(xi^8) - 36L0*(q[1]^2)*(q[2]^5)*(xi^8) + 9L0*(q[1]^2)*(q[2]^4)*q[3]*(xi^8) - 36L0*(q[1]^2)*(q[2]^3)*(q[3]^2)*(xi^8) - 36L0*(q[1]^2)*(q[2]^2)*(q[3]^3)*(xi^8) + 9L0*(q[1]^2)*q[2]*(q[3]^4)*(xi^8) - 36L0*(q[1]^2)*(q[3]^5)*(xi^8) + 15L0*q[1]*(q[2]^6)*(xi^8) - 18L0*q[1]*(q[2]^5)*q[3]*(xi^8) + 36L0*q[1]*(q[2]^4)*(q[3]^2)*(xi^8) - 24L0*q[1]*(q[2]^3)*(q[3]^3)*(xi^8) + 36L0*q[1]*(q[2]^2)*(q[3]^4)*(xi^8) - 18L0*q[1]*q[2]*(q[3]^5)*(xi^8) + 15L0*q[1]*(q[3]^6)*(xi^8) - 3L0*(q[2]^7)*(xi^8) + 6L0*(q[2]^6)*q[3]*(xi^8) - 9L0*(q[2]^5)*(q[3]^2)*(xi^8) + 3L0*(q[2]^4)*(q[3]^3)*(xi^8) + 3L0*(q[2]^3)*(q[3]^4)*(xi^8) - 9L0*(q[2]^2)*(q[3]^5)*(xi^8) + 6L0*q[2]*(q[3]^6)*(xi^8) - 3L0*(q[3]^7)*(xi^8) + 2(q[1]^8)*(xi^8) - 5(q[1]^7)*q[2]*(xi^8) - 5(q[1]^7)*q[3]*(xi^8) + 8(q[1]^6)*(q[2]^2)*(xi^8) - 2(q[1]^6)*q[2]*q[3]*(xi^8) + 8(q[1]^6)*(q[3]^2)*(xi^8) - 5(q[1]^5)*(q[2]^3)*(xi^8) + 12(q[1]^5)*(q[2]^2)*q[3]*(xi^8) + 12(q[1]^5)*q[2]*(q[3]^2)*(xi^8) - 5(q[1]^5)*(q[3]^3)*(xi^8) - (q[1]^4)*(q[2]^4)*(xi^8) - 31(q[1]^4)*(q[2]^3)*q[3]*(xi^8) - 6(q[1]^4)*(q[2]^2)*(q[3]^2)*(xi^8) - 31(q[1]^4)*q[2]*(q[3]^3)*(xi^8) - (q[1]^4)*(q[3]^4)*(xi^8) + 7(q[1]^3)*(q[2]^5)*(xi^8) + 26(q[1]^3)*(q[2]^4)*q[3]*(xi^8) + 16(q[1]^3)*(q[2]^3)*(q[3]^2)*(xi^8) + 16(q[1]^3)*(q[2]^2)*(q[3]^3)*(xi^8) + 26(q[1]^3)*q[2]*(q[3]^4)*(xi^8) + 7(q[1]^3)*(q[3]^5)*(xi^8) - 7(q[1]^2)*(q[2]^6)*(xi^8) - 15(q[1]^2)*(q[2]^5)*q[3]*(xi^8) + 3(q[1]^2)*(q[2]^4)*(q[3]^2)*(xi^8) - 32(q[1]^2)*(q[2]^3)*(q[3]^3)*(xi^8) + 3(q[1]^2)*(q[2]^2)*(q[3]^4)*(xi^8) - 15(q[1]^2)*q[2]*(q[3]^5)*(xi^8) - 7(q[1]^2)*(q[3]^6)*(xi^8) + 4q[1]*(q[2]^7)*(xi^8) + q[1]*(q[2]^6)*q[3]*(xi^8) + 3q[1]*(q[2]^5)*(q[3]^2)*(xi^8) + 5q[1]*(q[2]^4)*(q[3]^3)*(xi^8) + 5q[1]*(q[2]^3)*(q[3]^4)*(xi^8) + 3q[1]*(q[2]^2)*(q[3]^5)*(xi^8) + q[1]*q[2]*(q[3]^6)*(xi^8) + 4q[1]*(q[3]^7)*(xi^8) - (q[2]^8)*(xi^8) + (q[2]^7)*q[3]*(xi^8) - (q[2]^6)*(q[3]^2)*(xi^8) - 2(q[2]^5)*(q[3]^3)*(xi^8) + 2(q[2]^4)*(q[3]^4)*(xi^8) - 2(q[2]^3)*(q[3]^5)*(xi^8) - (q[2]^2)*(q[3]^6)*(xi^8) + q[2]*(q[3]^7)*(xi^8) - (q[3]^8)*(xi^8)) / (4133430(r^7))

p1_1_int = SymbolicNumericIntegration.integrate(p1_1, xi; detailed=true)

println("p1_1_int[3]: ", p1_1_int[3])

The errors and output:

[ Info: The input expression has constant parameters: [L0, q[1], q[2], q[3], r], forcing `symbolic = true`
[ Info: The input expression has constant parameters: [L0, q[1], q[2], q[3], r], forcing `symbolic = true`
[ Info: Symbolic integration failed. Try changing constant parameters ([L0, q[1], q[2], q[3], r]) to numerical values.
[ Info: The input expression has constant parameters: [L0, q[1], q[2], q[3], r], forcing `symbolic = true`
[ Info: Symbolic integration failed. Try changing constant parameters ([L0, q[1], q[2], q[3], r]) to numerical values.
[ Info: The input expression has constant parameters: [L0, q[1], q[2], q[3], r], forcing `symbolic = true`
[ Info: Symbolic integration failed. Try changing constant parameters ([L0, q[1], q[2], q[3], r]) to numerical values.
p1_1_int[3]: Inf

I couldn’t make this pipeline work. So, my first question is: Can we better use SymbolicNumericaIntegration to solve this?

I did some some research and find out that SymPy is quite good in symbolic integration. It is important that I generate a function with Julia (build_function symbolic) since I want my code to be fast. I have this idea as an alternative approach. I will first integrate the expression using Sympy and then change it to Julia expression so that I can generate a fast function using build_function from Symbolics. I am able to generate string expression compatible with Julia, but I am lost afterwards how can I define variables using symbolic and pass this string to build_function with Symbolics package. Is there a better way to do this?

using PyCall        # for calling Python
using Symbolics     # for symbolic manipulations in Julia

sympy = pyimport("sympy")


q1 = sympy.Symbol("q1", real=true)
q2 = sympy.Symbol("q2", real=true)
q3= sympy.Symbol("q3", real=true)
xi = sympy.Symbol("xi", real=true)
r  = sympy.Symbol("r",  positive=true, real=true)
L0 = sympy.Symbol("L0", positive=true, real=true)


p1_1 = (-6L0*(q1^9)*(xi^10) + 27L0*(q1^8)*q2*(xi^10) + 27L0*(q1^8)*q3*(xi^10) - 72L0*(q1^7)*(q2^2)*(xi^10) - 72L0*(q1^7)*q2*q3*(xi^10) - 72L0*(q1^7)*(q3^2)*(xi^10) + 126L0*(q1^6)*(q2^3)*(xi^10) + 126L0*(q1^6)*(q2^2)*q3*(xi^10) + 126L0*(q1^6)*q2*(q3^2)*(xi^10) + 126L0*(q1^6)*(q3^3)*(xi^10) - 162L0*(q1^5)*(q2^4)*(xi^10) - 108L0*(q1^5)*(q2^3)*q3*(xi^10) - 216L0*(q1^5)*(q2^2)*(q3^2)*(xi^10) - 108L0*(q1^5)*q2*(q3^3)*(xi^10) - 162L0*(q1^5)*(q3^4)*(xi^10) + 153L0*(q1^4)*(q2^5)*(xi^10) + 45L0*(q1^4)*(q2^4)*q3*(xi^10) + 180L0*(q1^4)*(q2^3)*(q3^2)*(xi^10) + 180L0*(q1^4)*(q2^2)*(q3^3)*(xi^10) + 45L0*(q1^4)*q2*(q3^4)*(xi^10) + 153L0*(q1^4)*(q3^5)*(xi^10) - 108L0*(q1^3)*(q2^6)*(xi^10) + 36L0*(q1^3)*(q2^5)*q3*(xi^10) - 180L0*(q1^3)*(q2^4)*(q3^2)*(xi^10) - 180L0*(q1^3)*(q2^2)*(q3^4)*(xi^10) + 36L0*(q1^3)*q2*(q3^5)*(xi^10) - 108L0*(q1^3)*(q3^6)*(xi^10) + 54L0*(q1^2)*(q2^7)*(xi^10) - 54L0*(q1^2)*(q2^6)*q3*(xi^10) + 108L0*(q1^2)*(q2^5)*(q3^2)*(xi^10) + 108L0*(q1^2)*(q2^2)*(q3^5)*(xi^10) - 54L0*(q1^2)*q2*(q3^6)*(xi^10) + 54L0*(q1^2)*(q3^7)*(xi^10) - 18L0*q1*(q2^8)*(xi^10) + 36L0*q1*(q2^7)*q3*(xi^10) - 72L0*q1*(q2^6)*(q3^2)*(xi^10) + 72L0*q1*(q2^5)*(q3^3)*(xi^10) - 90L0*q1*(q2^4)*(q3^4)*(xi^10) + 72L0*q1*(q2^3)*(q3^5)*(xi^10) - 72L0*q1*(q2^2)*(q3^6)*(xi^10) + 36L0*q1*q2*(q3^7)*(xi^10) - 18L0*q1*(q3^8)*(xi^10) + 3L0*(q2^9)*(xi^10) - 9L0*(q2^8)*q3*(xi^10) + 18L0*(q2^7)*(q3^2)*(xi^10) - 18L0*(q2^6)*(q3^3)*(xi^10) + 9L0*(q2^5)*(q3^4)*(xi^10) + 9L0*(q2^4)*(q3^5)*(xi^10) - 18L0*(q2^3)*(q3^6)*(xi^10) + 18L0*(q2^2)*(q3^7)*(xi^10) - 9L0*q2*(q3^8)*(xi^10) + 3L0*(q3^9)*(xi^10) - 2(q1^10)*(xi^10) + 7(q1^9)*q2*(xi^10) + 7(q1^9)*q3*(xi^10) - 15(q1^8)*(q2^2)*(xi^10) - 6(q1^8)*q2*q3*(xi^10) - 15(q1^8)*(q3^2)*(xi^10) + 18(q1^7)*(q2^3)*(xi^10) - 6(q1^7)*(q2^2)*q3*(xi^10) - 6(q1^7)*q2*(q3^2)*(xi^10) + 18(q1^7)*(q3^3)*(xi^10) - 12(q1^6)*(q2^4)*(xi^10) + 48(q1^6)*(q2^3)*q3*(xi^10) + 12(q1^6)*(q2^2)*(q3^2)*(xi^10) + 48(q1^6)*q2*(q3^3)*(xi^10) - 12(q1^6)*(q3^4)*(xi^10) - 3(q1^5)*(q2^5)*(xi^10) - 75(q1^5)*(q2^4)*q3*(xi^10) - 48(q1^5)*(q2^3)*(q3^2)*(xi^10) - 48(q1^5)*(q2^2)*(q3^3)*(xi^10) - 75(q1^5)*q2*(q3^4)*(xi^10) - 3(q1^5)*(q3^5)*(xi^10) + 15(q1^4)*(q2^6)*(xi^10) + 78(q1^4)*(q2^5)*q3*(xi^10) + 15(q1^4)*(q2^4)*(q3^2)*(xi^10) + 120(q1^4)*(q2^3)*(q3^3)*(xi^10) + 15(q1^4)*(q2^2)*(q3^4)*(xi^10) + 78(q1^4)*q2*(q3^5)*(xi^10) + 15(q1^4)*(q3^6)*(xi^10) - 18(q1^3)*(q2^7)*(xi^10) - 42(q1^3)*(q2^6)*q3*(xi^10) - 12(q1^3)*(q2^5)*(q3^2)*(xi^10) - 60(q1^3)*(q2^4)*(q3^3)*(xi^10) - 60(q1^3)*(q2^3)*(q3^4)*(xi^10) - 12(q1^3)*(q2^2)*(q3^5)*(xi^10) - 42(q1^3)*q2*(q3^6)*(xi^10) - 18(q1^3)*(q3^7)*(xi^10) + 12(q1^2)*(q2^8)*(xi^10) + 12(q1^2)*(q2^7)*q3*(xi^10) - 6(q1^2)*(q2^6)*(q3^2)*(xi^10) + 60(q1^2)*(q2^5)*(q3^3)*(xi^10) - 30(q1^2)*(q2^4)*(q3^4)*(xi^10) + 60(q1^2)*(q2^3)*(q3^5)*(xi^10) - 6(q1^2)*(q2^2)*(q3^6)*(xi^10) + 12(q1^2)*q2*(q3^7)*(xi^10) + 12(q1^2)*(q3^8)*(xi^10) - 5q1*(q2^9)*(xi^10) + 3q1*(q2^8)*q3*(xi^10) - 6q1*(q2^7)*(q3^2)*(xi^10) - 6q1*(q2^6)*(q3^3)*(xi^10) - 3q1*(q2^5)*(q3^4)*(xi^10) - 3q1*(q2^4)*(q3^5)*(xi^10) - 6q1*(q2^3)*(q3^6)*(xi^10) - 6q1*(q2^2)*(q3^7)*(xi^10) + 3q1*q2*(q3^8)*(xi^10) - 5q1*(q3^9)*(xi^10) + (q2^10)*(xi^10) - 2(q2^9)*q3*(xi^10) + 3(q2^8)*(q3^2)*(xi^10) - 3(q2^6)*(q3^4)*(xi^10) + 6(q2^5)*(q3^5)*(xi^10) - 3(q2^4)*(q3^6)*(xi^10) + 3(q2^2)*(q3^8)*(xi^10) - 2q2*(q3^9)*(xi^10) + (q3^10)*(xi^10)) / (837019575(r^9)) + (-6L0*(q1^5)*(xi^6) + 15L0*(q1^4)*q2*(xi^6) + 15L0*(q1^4)*q3*(xi^6) - 24L0*(q1^3)*(q2^2)*(xi^6) - 12L0*(q1^3)*q2*q3*(xi^6) - 24L0*(q1^3)*(q3^2)*(xi^6) + 21L0*(q1^2)*(q2^3)*(xi^6) + 9L0*(q1^2)*(q2^2)*q3*(xi^6) + 9L0*(q1^2)*q2*(q3^2)*(xi^6) + 21L0*(q1^2)*(q3^3)*(xi^6) - 12L0*q1*(q2^4)*(xi^6) + 6L0*q1*(q2^3)*q3*(xi^6) - 18L0*q1*(q2^2)*(q3^2)*(xi^6) + 6L0*q1*q2*(q3^3)*(xi^6) - 12L0*q1*(q3^4)*(xi^6) + 3L0*(q2^5)*(xi^6) - 3L0*(q2^4)*q3*(xi^6) + 3L0*(q2^3)*(q3^2)*(xi^6) + 3L0*(q2^2)*(q3^3)*(xi^6) - 3L0*q2*(q3^4)*(xi^6) + 3L0*(q3^5)*(xi^6) - 2(q1^6)*(xi^6) + 3(q1^5)*q2*(xi^6) + 3(q1^5)*q3*(xi^6) - 3(q1^4)*(q2^2)*(xi^6) + 6(q1^4)*q2*q3*(xi^6) - 3(q1^4)*(q3^2)*(xi^6) - (q1^3)*(q2^3)*(xi^6) - 9(q1^3)*(q2^2)*q3*(xi^6) - 9(q1^3)*q2*(q3^2)*(xi^6) - (q1^3)*(q3^3)*(xi^6) + 3(q1^2)*(q2^4)*(xi^6) + 12(q1^2)*(q2^3)*q3*(xi^6) + 12(q1^2)*q2*(q3^3)*(xi^6) + 3(q1^2)*(q3^4)*(xi^6) - 3q1*(q2^5)*(xi^6) - 3q1*(q2^4)*q3*(xi^6) - 3q1*(q2^3)*(q3^2)*(xi^6) - 3q1*(q2^2)*(q3^3)*(xi^6) - 3q1*q2*(q3^4)*(xi^6) - 3q1*(q3^5)*(xi^6) + (q2^6)*(xi^6) + 2(q2^3)*(q3^3)*(xi^6) + (q3^6)*(xi^6)) / (32805(r^5)) + (-6L0*q1*(xi^2) + 3L0*q2*(xi^2) + 3L0*q3*(xi^2) - 2(q1^2)*(xi^2) - q1*q2*(xi^2) - q1*q3*(xi^2) + (q2^2)*(xi^2) + 2q2*q3*(xi^2) + (q3^2)*(xi^2)) / (18r) + (6L0*(q1^3)*(xi^4) - 9L0*(q1^2)*q2*(xi^4) - 9L0*(q1^2)*q3*(xi^4) + 9L0*q1*(q2^2)*(xi^4) + 9L0*q1*(q3^2)*(xi^4) - 3L0*(q2^3)*(xi^4) - 3L0*(q3^3)*(xi^4) + 2(q1^4)*(xi^4) - (q1^3)*q2*(xi^4) - (q1^3)*q3*(xi^4) - 6(q1^2)*q2*q3*(xi^4) + 2q1*(q2^3)*(xi^4) + 3q1*(q2^2)*q3*(xi^4) + 3q1*q2*(q3^2)*(xi^4) + 2q1*(q3^3)*(xi^4) - (q2^4)*(xi^4) - (q2^3)*q3*(xi^4) - q2*(q3^3)*(xi^4) - (q3^4)*(xi^4)) / (486(r^3)) + (6L0*(q1^7)*(xi^8) - 21L0*(q1^6)*q2*(xi^8) - 21L0*(q1^6)*q3*(xi^8) + 45L0*(q1^5)*(q2^2)*(xi^8) + 36L0*(q1^5)*q2*q3*(xi^8) + 45L0*(q1^5)*(q3^2)*(xi^8) - 60L0*(q1^4)*(q2^3)*(xi^8) - 45L0*(q1^4)*(q2^2)*q3*(xi^8) - 45L0*(q1^4)*q2*(q3^2)*(xi^8) - 60L0*(q1^4)*(q3^3)*(xi^8) + 57L0*(q1^3)*(q2^4)*(xi^8) + 12L0*(q1^3)*(q2^3)*q3*(xi^8) + 72L0*(q1^3)*(q2^2)*(q3^2)*(xi^8) + 12L0*(q1^3)*q2*(q3^3)*(xi^8) + 57L0*(q1^3)*(q3^4)*(xi^8) - 36L0*(q1^2)*(q2^5)*(xi^8) + 9L0*(q1^2)*(q2^4)*q3*(xi^8) - 36L0*(q1^2)*(q2^3)*(q3^2)*(xi^8) - 36L0*(q1^2)*(q2^2)*(q3^3)*(xi^8) + 9L0*(q1^2)*q2*(q3^4)*(xi^8) - 36L0*(q1^2)*(q3^5)*(xi^8) + 15L0*q1*(q2^6)*(xi^8) - 18L0*q1*(q2^5)*q3*(xi^8) + 36L0*q1*(q2^4)*(q3^2)*(xi^8) - 24L0*q1*(q2^3)*(q3^3)*(xi^8) + 36L0*q1*(q2^2)*(q3^4)*(xi^8) - 18L0*q1*q2*(q3^5)*(xi^8) + 15L0*q1*(q3^6)*(xi^8) - 3L0*(q2^7)*(xi^8) + 6L0*(q2^6)*q3*(xi^8) - 9L0*(q2^5)*(q3^2)*(xi^8) + 3L0*(q2^4)*(q3^3)*(xi^8) + 3L0*(q2^3)*(q3^4)*(xi^8) - 9L0*(q2^2)*(q3^5)*(xi^8) + 6L0*q2*(q3^6)*(xi^8) - 3L0*(q3^7)*(xi^8) + 2(q1^8)*(xi^8) - 5(q1^7)*q2*(xi^8) - 5(q1^7)*q3*(xi^8) + 8(q1^6)*(q2^2)*(xi^8) - 2(q1^6)*q2*q3*(xi^8) + 8(q1^6)*(q3^2)*(xi^8) - 5(q1^5)*(q2^3)*(xi^8) + 12(q1^5)*(q2^2)*q3*(xi^8) + 12(q1^5)*q2*(q3^2)*(xi^8) - 5(q1^5)*(q3^3)*(xi^8) - (q1^4)*(q2^4)*(xi^8) - 31(q1^4)*(q2^3)*q3*(xi^8) - 6(q1^4)*(q2^2)*(q3^2)*(xi^8) - 31(q1^4)*q2*(q3^3)*(xi^8) - (q1^4)*(q3^4)*(xi^8) + 7(q1^3)*(q2^5)*(xi^8) + 26(q1^3)*(q2^4)*q3*(xi^8) + 16(q1^3)*(q2^3)*(q3^2)*(xi^8) + 16(q1^3)*(q2^2)*(q3^3)*(xi^8) + 26(q1^3)*q2*(q3^4)*(xi^8) + 7(q1^3)*(q3^5)*(xi^8) - 7(q1^2)*(q2^6)*(xi^8) - 15(q1^2)*(q2^5)*q3*(xi^8) + 3(q1^2)*(q2^4)*(q3^2)*(xi^8) - 32(q1^2)*(q2^3)*(q3^3)*(xi^8) + 3(q1^2)*(q2^2)*(q3^4)*(xi^8) - 15(q1^2)*q2*(q3^5)*(xi^8) - 7(q1^2)*(q3^6)*(xi^8) + 4q1*(q2^7)*(xi^8) + q1*(q2^6)*q3*(xi^8) + 3q1*(q2^5)*(q3^2)*(xi^8) + 5q1*(q2^4)*(q3^3)*(xi^8) + 5q1*(q2^3)*(q3^4)*(xi^8) + 3q1*(q2^2)*(q3^5)*(xi^8) + q1*q2*(q3^6)*(xi^8) + 4q1*(q3^7)*(xi^8) - (q2^8)*(xi^8) + (q2^7)*q3*(xi^8) - (q2^6)*(q3^2)*(xi^8) - 2(q2^5)*(q3^3)*(xi^8) + 2(q2^4)*(q3^4)*(xi^8) - 2(q2^3)*(q3^5)*(xi^8) - (q2^2)*(q3^6)*(xi^8) + q2*(q3^7)*(xi^8) - (q3^8)*(xi^8)) / (4133430(r^7))


p1_1_int = sympy.integrate(p1_1, (xi, 0, 1))
p1_1_int = sympy.simplify(p1_1_int)

p1_1_int_julia = sympy.julia_code(p1_1_int)