I'm not sure if this is a genuine bug or whether I'm doing something daft (I'm still fairly new to Julia).
Anyway, I'm trying to use ModelingToolkit to generate sparse Jacobians and Hessians, and then use build_function() to obtain the resulting Julia expressions.
The originating mathematical functions I'd like to process will be fairly arbitrary, and depend both on spatial variables and parameters. In my use-case, I need to calculate sparse Jacobians and Hessians with respect to the spatial variables and, sometimes, then differentiate again with respect to the parametric variables.
Calculation of the sparse Jacobian and Hessian themselves seems to work fine. Also, subsequently taking gradients, elementwise, with respect to the parametric variables works fine.
However, build_function() fails when passed the Jacobian SparseMatrix (it only processes the first element) but not when passed the SparseMatrix containing the Hessian. For the Jacobian, build_function() also seems to leave the SparseMatrix in an inconsistent state.
build_function() succeeds elementwise on the Jacobian or if the SparseMatrix is converted to a dense matrix first. So, I suspect the issue may be in processing of the SparseMatrix.
I've attached two examples from the REPL. I've tried varying syntax a bit but cannot get the first example to work.
julia> @variables x[1:100] pr[1:2] y
(Num[x₁, x₂, x₃, x₄, x₅, x₆, x₇, x₈, x₉, x₁₀ … x₉₁, x₉₂, x₉₃, x₉₄, x₉₅, x₉₆, x₉₇, x₉₈, x₉₉, x₁₀₀], Num[pr₁, pr₂], y)
julia> function g(z::Vector, pr::Vector)
return (
z[1]^2 * z[2]^3 * sin(z[3]) +
5 * z[4] +
cos(z[10]) * exp(z[11]+z[12]) +
pr[1]^2 * z[50]^2 +
z[80] * z[95]^11
)
end
g (generic function with 1 method)
julia> y = g(x, pr)
5x₄ + x₈₀*(x₉₅^11) + cos(x₁₀)*exp(x₁₁ + x₁₂) + (pr₁^2)*(x₅₀^2) + sin(x₃)*(x₁^2)*(x₂^3)
julia> J_sparse = ModelingToolkit.sparsejacobian([y], x)
1×100 SparseMatrixCSC{Num,Int64} with 10 stored entries:
[1, 1] = 2x₁*sin(x₃)*(x₂^3)
[1, 2] = 3sin(x₃)*(x₁^2)*(x₂^2)
[1, 3] = cos(x₃)*(x₁^2)*(x₂^3)
[1, 4] = 5
[1, 10] = -1sin(x₁₀)*exp(x₁₁ + x₁₂)
[1, 11] = cos(x₁₀)*exp(x₁₁ + x₁₂)
[1, 12] = cos(x₁₀)*exp(x₁₁ + x₁₂)
[1, 50] = 2x₅₀*(pr₁^2)
[1, 80] = x₉₅^11
[1, 95] = 11x₈₀*(x₉₅^10)
julia> expr_J_sparse = build_function(J_sparse, x, pr)
(:((var"##MTKArg#253", var"##MTKArg#254")->begin
@inbounds begin
let (x₁, x₂, x₃, x₄, x₅, x₆, x₇, x₈, x₉, x₁₀, x₁₁, x₁₂, x₁₃, x₁₄, x₁₅, x₁₆, x₁₇, x₁₈, x₁₉, x₂₀, x₂₁, x₂₂, x₂₃, x₂₄, x₂₅, x₂₆, x₂₇, x₂₈, x₂₉, x₃₀, x₃₁, x₃₂, x₃₃, x₃₄, x₃₅,
x₃₆, x₃₇, x₃₈, x₃₉, x₄₀, x₄₁, x₄₂, x₄₃, x₄₄, x₄₅, x₄₆, x₄₇, x₄₈, x₄₉, x₅₀, x₅₁, x₅₂, x₅₃, x₅₄, x₅₅, x₅₆, x₅₇, x₅₈, x₅₉, x₆₀, x₆₁, x₆₂, x₆₃, x₆₄, x₆₅, x₆₆, x₆₇, x₆₈, x₆₉, x₇₀, x₇₁, x₇₂, x₇₃, x₇₄, x₇₅, x₇₆, x₇₇, x₇₈, x₇₉, x₈₀, x₈₁, x₈₂, x₈₃, x₈₄, x₈₅, x₈₆, x₈₇, x₈₈, x₈₉, x₉₀, x₉₁, x₉₂, x₉₃, x₉₄, x₉₅, x₉₆, x₉₇, x₉₈, x₉₉, x₁₀₀, pr₁, pr₂) = (var"##MTKArg#253"[1], var"##MTKArg#253"[2], var"##MTKArg#253"[3], var"##MTKArg#253"[4], var"##MTKArg#253"[5], var"##MTKArg#253"[6], var"##MTKArg#253"[7], var"##MTKArg#253"[8], var"##MTKArg#253"[9], var"##MTKArg#253"[10], var"##MTKArg#253"[11], var"##MTKArg#253"[12], var"##MTKArg#253"[13], var"##MTKArg#253"[14], var"##MTKArg#253"[15], var"##MTKArg#253"[16], var"##MTKArg#253"[17], var"##MTKArg#253"[18], var"##MTKArg#253"[19], var"##MTKArg#253"[20], var"##MTKArg#253"[21], var"##MTKArg#253"[22], var"##MTKArg#253"[23], var"##MTKArg#253"[24], var"##MTKArg#253"[25], var"##MTKArg#253"[26], var"##MTKArg#253"[27], var"##MTKArg#253"[28], var"##MTKArg#253"[29], var"##MTKArg#253"[30], var"##MTKArg#253"[31], var"##MTKArg#253"[32], var"##MTKArg#253"[33], var"##MTKArg#253"[34], var"##MTKArg#253"[35], var"##MTKArg#253"[36], var"##MTKArg#253"[37], var"##MTKArg#253"[38], var"##MTKArg#253"[39], var"##MTKArg#253"[40], var"##MTKArg#253"[41], var"##MTKArg#253"[42], var"##MTKArg#253"[43], var"##MTKArg#253"[44], var"##MTKArg#253"[45], var"##MTKArg#253"[46], var"##MTKArg#253"[47], var"##MTKArg#253"[48], var"##MTKArg#253"[49], var"##MTKArg#253"[50], var"##MTKArg#253"[51], var"##MTKArg#253"[52], var"##MTKArg#253"[53], var"##MTKArg#253"[54], var"##MTKArg#253"[55], var"##MTKArg#253"[56], var"##MTKArg#253"[57], var"##MTKArg#253"[58], var"##MTKArg#253"[59], var"##MTKArg#253"[60], var"##MTKArg#253"[61], var"##MTKArg#253"[62], var"##MTKArg#253"[63], var"##MTKArg#253"[64], var"##MTKArg#253"[65], var"##MTKArg#253"[66], var"##MTKArg#253"[67], var"##MTKArg#253"[68], var"##MTKArg#253"[69], var"##MTKArg#253"[70], var"##MTKArg#253"[71], var"##MTKArg#253"[72], var"##MTKArg#253"[73], var"##MTKArg#253"[74], var"##MTKArg#253"[75], var"##MTKArg#253"[76], var"##MTKArg#253"[77], var"##MTKArg#253"[78], var"##MTKArg#253"[79], var"##MTKArg#253"[80], var"##MTKArg#253"[81], var"##MTKArg#253"[82], var"##MTKArg#253"[83], var"##MTKArg#253"[84], var"##MTKArg#253"[85], var"##MTKArg#253"[86], var"##MTKArg#253"[87], var"##MTKArg#253"[88], var"##MTKArg#253"[89], var"##MTKArg#253"[90], var"##MTKArg#253"[91], var"##MTKArg#253"[92], var"##MTKArg#253"[93], var"##MTKArg#253"[94], var"##MTKArg#253"[95], var"##MTKArg#253"[96], var"##MTKArg#253"[97], var"##MTKArg#253"[98], var"##MTKArg#253"[99], var"##MTKArg#253"[100], var"##MTKArg#254"[1], var"##MTKArg#254"[2])
SparseMatrixCSC{eltype(var"##MTKArg#253"), Int}(1, 1, [1, 2, 3, 4, 5, 5, 5, 5, 5, 5 … 10, 10, 10, 10, 11, 11, 11, 11, 11, 11], [1], [(*)(2, x₁, (sin)(x₃), (^)(x₂, 3))])
end
end
end), :((var"##MTIIPVar#256", var"##MTKArg#253", var"##MTKArg#254")->begin
@inbounds begin
let (x₁, x₂, x₃, x₄, x₅, x₆, x₇, x₈, x₉, x₁₀, x₁₁, x₁₂, x₁₃, x₁₄, x₁₅, x₁₆, x₁₇, x₁₈, x₁₉, x₂₀, x₂₁, x₂₂, x₂₃, x₂₄, x₂₅, x₂₆, x₂₇, x₂₈, x₂₉, x₃₀, x₃₁, x₃₂, x₃₃, x₃₄, x₃₅,
x₃₆, x₃₇, x₃₈, x₃₉, x₄₀, x₄₁, x₄₂, x₄₃, x₄₄, x₄₅, x₄₆, x₄₇, x₄₈, x₄₉, x₅₀, x₅₁, x₅₂, x₅₃, x₅₄, x₅₅, x₅₆, x₅₇, x₅₈, x₅₉, x₆₀, x₆₁, x₆₂, x₆₃, x₆₄, x₆₅, x₆₆, x₆₇, x₆₈, x₆₉, x₇₀, x₇₁, x₇₂, x₇₃, x₇₄, x₇₅, x₇₆, x₇₇, x₇₈, x₇₉, x₈₀, x₈₁, x₈₂, x₈₃, x₈₄, x₈₅, x₈₆, x₈₇, x₈₈, x₈₉, x₉₀, x₉₁, x₉₂, x₉₃, x₉₄, x₉₅, x₉₆, x₉₇, x₉₈, x₉₉, x₁₀₀, pr₁, pr₂) = (var"##MTKArg#253"[1], var"##MTKArg#253"[2], var"##MTKArg#253"[3], var"##MTKArg#253"[4], var"##MTKArg#253"[5], var"##MTKArg#253"[6], var"##MTKArg#253"[7], var"##MTKArg#253"[8], var"##MTKArg#253"[9], var"##MTKArg#253"[10], var"##MTKArg#253"[11], var"##MTKArg#253"[12], var"##MTKArg#253"[13], var"##MTKArg#253"[14], var"##MTKArg#253"[15], var"##MTKArg#253"[16], var"##MTKArg#253"[17], var"##MTKArg#253"[18], var"##MTKArg#253"[19], var"##MTKArg#253"[20], var"##MTKArg#253"[21], var"##MTKArg#253"[22], var"##MTKArg#253"[23], var"##MTKArg#253"[24], var"##MTKArg#253"[25], var"##MTKArg#253"[26], var"##MTKArg#253"[27], var"##MTKArg#253"[28], var"##MTKArg#253"[29], var"##MTKArg#253"[30], var"##MTKArg#253"[31], var"##MTKArg#253"[32], var"##MTKArg#253"[33], var"##MTKArg#253"[34], var"##MTKArg#253"[35], var"##MTKArg#253"[36], var"##MTKArg#253"[37], var"##MTKArg#253"[38], var"##MTKArg#253"[39], var"##MTKArg#253"[40], var"##MTKArg#253"[41], var"##MTKArg#253"[42], var"##MTKArg#253"[43], var"##MTKArg#253"[44], var"##MTKArg#253"[45], var"##MTKArg#253"[46], var"##MTKArg#253"[47], var"##MTKArg#253"[48], var"##MTKArg#253"[49], var"##MTKArg#253"[50], var"##MTKArg#253"[51], var"##MTKArg#253"[52], var"##MTKArg#253"[53], var"##MTKArg#253"[54], var"##MTKArg#253"[55], var"##MTKArg#253"[56], var"##MTKArg#253"[57], var"##MTKArg#253"[58], var"##MTKArg#253"[59], var"##MTKArg#253"[60], var"##MTKArg#253"[61], var"##MTKArg#253"[62], var"##MTKArg#253"[63], var"##MTKArg#253"[64], var"##MTKArg#253"[65], var"##MTKArg#253"[66], var"##MTKArg#253"[67], var"##MTKArg#253"[68], var"##MTKArg#253"[69], var"##MTKArg#253"[70], var"##MTKArg#253"[71], var"##MTKArg#253"[72], var"##MTKArg#253"[73], var"##MTKArg#253"[74], var"##MTKArg#253"[75], var"##MTKArg#253"[76], var"##MTKArg#253"[77], var"##MTKArg#253"[78], var"##MTKArg#253"[79], var"##MTKArg#253"[80], var"##MTKArg#253"[81], var"##MTKArg#253"[82], var"##MTKArg#253"[83], var"##MTKArg#253"[84], var"##MTKArg#253"[85], var"##MTKArg#253"[86], var"##MTKArg#253"[87], var"##MTKArg#253"[88], var"##MTKArg#253"[89], var"##MTKArg#253"[90], var"##MTKArg#253"[91], var"##MTKArg#253"[92], var"##MTKArg#253"[93], var"##MTKArg#253"[94], var"##MTKArg#253"[95], var"##MTKArg#253"[96], var"##MTKArg#253"[97], var"##MTKArg#253"[98], var"##MTKArg#253"[99], var"##MTKArg#253"[100], var"##MTKArg#254"[1], var"##MTKArg#254"[2])
(var"##MTIIPVar#256").nzval[1] = (*)(2, x₁, (sin)(x₃), (^)(x₂, 3))
end
end
nothing
end))
julia> J_sparse
1×100 SparseMatrixCSC{Num,Int64} with 10 stored entries:Error showing value of type SparseMatrixCSC{Num,Int64}:
ERROR: BoundsError: attempt to access 1-element Array{Int64,1} at index [1:10]
Stacktrace:
[1] throw_boundserror(::Array{Int64,1}, ::Tuple{UnitRange{Int64}}) at .\abstractarray.jl:541
[2] checkbounds at .\abstractarray.jl:506 [inlined]
[3] getindex at .\array.jl:815 [inlined]
[4] show(::IOContext{REPL.Terminals.TTYTerminal}, ::SparseMatrixCSC{Num,Int64}) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\SparseArrays\src\sparsematrix.jl:230
[5] show(::IOContext{REPL.Terminals.TTYTerminal}, ::MIME{Symbol("text/plain")}, ::SparseMatrixCSC{Num,Int64}) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\SparseArrays\src\sparsematrix.jl:197
[6] display(::REPL.REPLDisplay, ::MIME{Symbol("text/plain")}, ::Any) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\REPL.jl:214
[7] display(::REPL.REPLDisplay, ::Any) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\REPL.jl:218
[8] display(::Any) at .\multimedia.jl:328
[9] #invokelatest#1 at .\essentials.jl:710 [inlined]
[10] invokelatest at .\essentials.jl:709 [inlined]
[11] print_response(::IO, ::Any, ::Bool, ::Bool, ::Any) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\REPL.jl:238
[12] print_response(::REPL.AbstractREPL, ::Any, ::Bool, ::Bool) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\REPL.jl:223
[13] (::REPL.var"#do_respond#54"{Bool,Bool,VSCodeServer.var"#40#41"{REPL.LineEditREPL,REPL.LineEdit.Prompt},REPL.LineEditREPL,REPL.LineEdit.Prompt})(::Any, ::Any, ::Any) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\REPL.jl:822
[14] #invokelatest#1 at .\essentials.jl:710 [inlined]
[15] invokelatest at .\essentials.jl:709 [inlined]
[16] run_interface(::REPL.Terminals.TextTerminal, ::REPL.LineEdit.ModalInterface, ::REPL.LineEdit.MIState) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\LineEdit.jl:2355
[17] run_frontend(::REPL.LineEditREPL, ::REPL.REPLBackendRef) at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\REPL\src\REPL.jl:1144
[18] (::REPL.var"#38#42"{REPL.LineEditREPL,REPL.REPLBackendRef})() at .\task.jl:356
julia> @variables x[1:100] pr[1:2] y
(Num[x₁, x₂, x₃, x₄, x₅, x₆, x₇, x₈, x₉, x₁₀ … x₉₁, x₉₂, x₉₃, x₉₄, x₉₅, x₉₆, x₉₇, x₉₈, x₉₉, x₁₀₀], Num[pr₁, pr₂], y)
julia> function g(z::Vector, pr::Vector)
return (
z[1]^2 * z[2]^3 * sin(z[3]) +
5 * z[4] +
cos(z[10]) * exp(z[11]+z[12]) +
pr[1]^2 * z[50]^2 +
z[80] * z[95]^11
)
end
g (generic function with 1 method)
julia> y = g(x, pr)
5x₄ + x₈₀*(x₉₅^11) + cos(x₁₀)*exp(x₁₁ + x₁₂) + (pr₁^2)*(x₅₀^2) + sin(x₃)*(x₁^2)*(x₂^3)
julia> H_sparse = ModelingToolkit.sparsehessian(y, x)
100×100 SparseMatrixCSC{Num,Int64} with 22 stored entries:
[1 , 1] = 2sin(x₃)*(x₂^3)
[2 , 1] = 6x₁*sin(x₃)*(x₂^2)
[3 , 1] = 2x₁*cos(x₃)*(x₂^3)
[1 , 2] = 6x₁*sin(x₃)*(x₂^2)
[2 , 2] = 6x₂*sin(x₃)*(x₁^2)
[3 , 2] = 3cos(x₃)*(x₁^2)*(x₂^2)
[1 , 3] = 2x₁*cos(x₃)*(x₂^3)
[2 , 3] = 3cos(x₃)*(x₁^2)*(x₂^2)
⋮
[11, 11] = cos(x₁₀)*exp(x₁₁ + x₁₂)
[12, 11] = cos(x₁₀)*exp(x₁₁ + x₁₂)
[10, 12] = -1sin(x₁₀)*exp(x₁₁ + x₁₂)
[11, 12] = cos(x₁₀)*exp(x₁₁ + x₁₂)
[12, 12] = cos(x₁₀)*exp(x₁₁ + x₁₂)
[50, 50] = 2(pr₁^2)
[95, 80] = 11(x₉₅^10)
[80, 95] = 11(x₉₅^10)
[95, 95] = 110x₈₀*(x₉₅^9)
julia> expr_hess = build_function(H_sparse, x, pr)
(:((var"##MTKArg#253", var"##MTKArg#254")->begin
@inbounds begin
let (x₁, x₂, x₃, x₄, x₅, x₆, x₇, x₈, x₉, x₁₀, x₁₁, x₁₂, x₁₃, x₁₄, x₁₅, x₁₆, x₁₇, x₁₈, x₁₉, x₂₀, x₂₁, x₂₂, x₂₃, x₂₄, x₂₅, x₂₆, x₂₇, x₂₈, x₂₉, x₃₀, x₃₁, x₃₂, x₃₃, x₃₄, x₃₅,
x₃₆, x₃₇, x₃₈, x₃₉, x₄₀, x₄₁, x₄₂, x₄₃, x₄₄, x₄₅, x₄₆, x₄₇, x₄₈, x₄₉, x₅₀, x₅₁, x₅₂, x₅₃, x₅₄, x₅₅, x₅₆, x₅₇, x₅₈, x₅₉, x₆₀, x₆₁, x₆₂, x₆₃, x₆₄, x₆₅, x₆₆, x₆₇, x₆₈, x₆₉, x₇₀, x₇₁, x₇₂, x₇₃, x₇₄, x₇₅, x₇₆, x₇₇, x₇₈, x₇₉, x₈₀, x₈₁, x₈₂, x₈₃, x₈₄, x₈₅, x₈₆, x₈₇, x₈₈, x₈₉, x₉₀, x₉₁, x₉₂, x₉₃, x₉₄, x₉₅, x₉₆, x₉₇, x₉₈, x₉₉, x₁₀₀, pr₁, pr₂) = (var"##MTKArg#253"[1], var"##MTKArg#253"[2], var"##MTKArg#253"[3], var"##MTKArg#253"[4], var"##MTKArg#253"[5], var"##MTKArg#253"[6], var"##MTKArg#253"[7], var"##MTKArg#253"[8], var"##MTKArg#253"[9], var"##MTKArg#253"[10], var"##MTKArg#253"[11], var"##MTKArg#253"[12], var"##MTKArg#253"[13], var"##MTKArg#253"[14], var"##MTKArg#253"[15], var"##MTKArg#253"[16], var"##MTKArg#253"[17], var"##MTKArg#253"[18], var"##MTKArg#253"[19], var"##MTKArg#253"[20], var"##MTKArg#253"[21], var"##MTKArg#253"[22], var"##MTKArg#253"[23], var"##MTKArg#253"[24], var"##MTKArg#253"[25], var"##MTKArg#253"[26], var"##MTKArg#253"[27], var"##MTKArg#253"[28], var"##MTKArg#253"[29], var"##MTKArg#253"[30], var"##MTKArg#253"[31], var"##MTKArg#253"[32], var"##MTKArg#253"[33], var"##MTKArg#253"[34], var"##MTKArg#253"[35], var"##MTKArg#253"[36], var"##MTKArg#253"[37], var"##MTKArg#253"[38], var"##MTKArg#253"[39], var"##MTKArg#253"[40], var"##MTKArg#253"[41], var"##MTKArg#253"[42], var"##MTKArg#253"[43], var"##MTKArg#253"[44], var"##MTKArg#253"[45], var"##MTKArg#253"[46], var"##MTKArg#253"[47], var"##MTKArg#253"[48], var"##MTKArg#253"[49], var"##MTKArg#253"[50], var"##MTKArg#253"[51], var"##MTKArg#253"[52], var"##MTKArg#253"[53], var"##MTKArg#253"[54], var"##MTKArg#253"[55], var"##MTKArg#253"[56], var"##MTKArg#253"[57], var"##MTKArg#253"[58], var"##MTKArg#253"[59], var"##MTKArg#253"[60], var"##MTKArg#253"[61], var"##MTKArg#253"[62], var"##MTKArg#253"[63], var"##MTKArg#253"[64], var"##MTKArg#253"[65], var"##MTKArg#253"[66], var"##MTKArg#253"[67], var"##MTKArg#253"[68], var"##MTKArg#253"[69], var"##MTKArg#253"[70], var"##MTKArg#253"[71], var"##MTKArg#253"[72], var"##MTKArg#253"[73], var"##MTKArg#253"[74], var"##MTKArg#253"[75], var"##MTKArg#253"[76], var"##MTKArg#253"[77], var"##MTKArg#253"[78], var"##MTKArg#253"[79], var"##MTKArg#253"[80], var"##MTKArg#253"[81], var"##MTKArg#253"[82], var"##MTKArg#253"[83], var"##MTKArg#253"[84], var"##MTKArg#253"[85], var"##MTKArg#253"[86], var"##MTKArg#253"[87], var"##MTKArg#253"[88], var"##MTKArg#253"[89], var"##MTKArg#253"[90], var"##MTKArg#253"[91], var"##MTKArg#253"[92], var"##MTKArg#253"[93], var"##MTKArg#253"[94], var"##MTKArg#253"[95], var"##MTKArg#253"[96], var"##MTKArg#253"[97], var"##MTKArg#253"[98], var"##MTKArg#253"[99], var"##MTKArg#253"[100], var"##MTKArg#254"[1], var"##MTKArg#254"[2])
SparseMatrixCSC{eltype(var"##MTKArg#253"), Int}(100, 100, [1, 4, 7, 10, 10, 10, 10, 10, 10, 10 … 21, 21, 21, 21, 23, 23, 23, 23, 23, 23], [1, 2, 3, 1, 2, 3, 1, 2, 3, 10 … 10, 11, 12, 10, 11, 12, 50, 95, 80, 95], [(*)(2, (sin)(x₃), (^)(x₂, 3)), (*)(6, x₁, (sin)(x₃), (^)(x₂, 2)), (*)(2, x₁, (cos)(x₃), (^)(x₂, 3)), (*)(6, x₁, (sin)(x₃), (^)(x₂, 2)), (*)(6, x₂, (sin)(x₃), (^)(x₁, 2)), (*)(3, (cos)(x₃), (^)(x₁, 2), (^)(x₂, 2)), (*)(2, x₁, (cos)(x₃), (^)(x₂, 3)), (*)(3, (cos)(x₃), (^)(x₁, 2), (^)(x₂, 2)), (*)(-1, (sin)(x₃), (^)(x₁, 2), (^)(x₂, 3)), (*)(-1, (cos)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂))), (*)(2, (^)(pr₁, 2)), (*)(11, (^)(x₉₅, 10)), (*)(11, (^)(x₉₅, 10)), (*)(110, x₈₀, (^)(x₉₅, 9))])
end
end
end), :((var"##MTIIPVar#256", var"##MTKArg#253", var"##MTKArg#254")->begin
@inbounds begin
let (x₁, x₂, x₃, x₄, x₅, x₆, x₇, x₈, x₉, x₁₀, x₁₁, x₁₂, x₁₃, x₁₄, x₁₅, x₁₆, x₁₇, x₁₈, x₁₉, x₂₀, x₂₁, x₂₂, x₂₃, x₂₄, x₂₅, x₂₆, x₂₇, x₂₈, x₂₉, x₃₀, x₃₁, x₃₂, x₃₃, x₃₄, x₃₅,
x₃₆, x₃₇, x₃₈, x₃₉, x₄₀, x₄₁, x₄₂, x₄₃, x₄₄, x₄₅, x₄₆, x₄₇, x₄₈, x₄₉, x₅₀, x₅₁, x₅₂, x₅₃, x₅₄, x₅₅, x₅₆, x₅₇, x₅₈, x₅₉, x₆₀, x₆₁, x₆₂, x₆₃, x₆₄, x₆₅, x₆₆, x₆₇, x₆₈, x₆₉, x₇₀, x₇₁, x₇₂, x₇₃, x₇₄, x₇₅, x₇₆, x₇₇, x₇₈, x₇₉, x₈₀, x₈₁, x₈₂, x₈₃, x₈₄, x₈₅, x₈₆, x₈₇, x₈₈, x₈₉, x₉₀, x₉₁, x₉₂, x₉₃, x₉₄, x₉₅, x₉₆, x₉₇, x₉₈, x₉₉, x₁₀₀, pr₁, pr₂) = (var"##MTKArg#253"[1], var"##MTKArg#253"[2], var"##MTKArg#253"[3], var"##MTKArg#253"[4], var"##MTKArg#253"[5], var"##MTKArg#253"[6], var"##MTKArg#253"[7], var"##MTKArg#253"[8], var"##MTKArg#253"[9], var"##MTKArg#253"[10], var"##MTKArg#253"[11], var"##MTKArg#253"[12], var"##MTKArg#253"[13], var"##MTKArg#253"[14], var"##MTKArg#253"[15], var"##MTKArg#253"[16], var"##MTKArg#253"[17], var"##MTKArg#253"[18], var"##MTKArg#253"[19], var"##MTKArg#253"[20], var"##MTKArg#253"[21], var"##MTKArg#253"[22], var"##MTKArg#253"[23], var"##MTKArg#253"[24], var"##MTKArg#253"[25], var"##MTKArg#253"[26], var"##MTKArg#253"[27], var"##MTKArg#253"[28], var"##MTKArg#253"[29], var"##MTKArg#253"[30], var"##MTKArg#253"[31], var"##MTKArg#253"[32], var"##MTKArg#253"[33], var"##MTKArg#253"[34], var"##MTKArg#253"[35], var"##MTKArg#253"[36], var"##MTKArg#253"[37], var"##MTKArg#253"[38], var"##MTKArg#253"[39], var"##MTKArg#253"[40], var"##MTKArg#253"[41], var"##MTKArg#253"[42], var"##MTKArg#253"[43], var"##MTKArg#253"[44], var"##MTKArg#253"[45], var"##MTKArg#253"[46], var"##MTKArg#253"[47], var"##MTKArg#253"[48], var"##MTKArg#253"[49], var"##MTKArg#253"[50], var"##MTKArg#253"[51], var"##MTKArg#253"[52], var"##MTKArg#253"[53], var"##MTKArg#253"[54], var"##MTKArg#253"[55], var"##MTKArg#253"[56], var"##MTKArg#253"[57], var"##MTKArg#253"[58], var"##MTKArg#253"[59], var"##MTKArg#253"[60], var"##MTKArg#253"[61], var"##MTKArg#253"[62], var"##MTKArg#253"[63], var"##MTKArg#253"[64], var"##MTKArg#253"[65], var"##MTKArg#253"[66], var"##MTKArg#253"[67], var"##MTKArg#253"[68], var"##MTKArg#253"[69], var"##MTKArg#253"[70], var"##MTKArg#253"[71], var"##MTKArg#253"[72], var"##MTKArg#253"[73], var"##MTKArg#253"[74], var"##MTKArg#253"[75], var"##MTKArg#253"[76], var"##MTKArg#253"[77], var"##MTKArg#253"[78], var"##MTKArg#253"[79], var"##MTKArg#253"[80], var"##MTKArg#253"[81], var"##MTKArg#253"[82], var"##MTKArg#253"[83], var"##MTKArg#253"[84], var"##MTKArg#253"[85], var"##MTKArg#253"[86], var"##MTKArg#253"[87], var"##MTKArg#253"[88], var"##MTKArg#253"[89], var"##MTKArg#253"[90], var"##MTKArg#253"[91], var"##MTKArg#253"[92], var"##MTKArg#253"[93], var"##MTKArg#253"[94], var"##MTKArg#253"[95], var"##MTKArg#253"[96], var"##MTKArg#253"[97], var"##MTKArg#253"[98], var"##MTKArg#253"[99], var"##MTKArg#253"[100], var"##MTKArg#254"[1], var"##MTKArg#254"[2])
(var"##MTIIPVar#256").nzval[1] = (*)(2, (sin)(x₃), (^)(x₂, 3))
(var"##MTIIPVar#256").nzval[2] = (*)(6, x₁, (sin)(x₃), (^)(x₂, 2))
(var"##MTIIPVar#256").nzval[3] = (*)(2, x₁, (cos)(x₃), (^)(x₂, 3))
(var"##MTIIPVar#256").nzval[4] = (*)(6, x₁, (sin)(x₃), (^)(x₂, 2))
(var"##MTIIPVar#256").nzval[5] = (*)(6, x₂, (sin)(x₃), (^)(x₁, 2))
(var"##MTIIPVar#256").nzval[6] = (*)(3, (cos)(x₃), (^)(x₁, 2), (^)(x₂, 2))
(var"##MTIIPVar#256").nzval[7] = (*)(2, x₁, (cos)(x₃), (^)(x₂, 3))
(var"##MTIIPVar#256").nzval[8] = (*)(3, (cos)(x₃), (^)(x₁, 2), (^)(x₂, 2))
(var"##MTIIPVar#256").nzval[9] = (*)(-1, (sin)(x₃), (^)(x₁, 2), (^)(x₂, 3))
(var"##MTIIPVar#256").nzval[10] = (*)(-1, (cos)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[11] = (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[12] = (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[13] = (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[14] = (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[15] = (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[16] = (*)(-1, (sin)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[17] = (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[18] = (*)((cos)(x₁₀), (exp)((+)(x₁₁, x₁₂)))
(var"##MTIIPVar#256").nzval[19] = (*)(2, (^)(pr₁, 2))
(var"##MTIIPVar#256").nzval[20] = (*)(11, (^)(x₉₅, 10))
(var"##MTIIPVar#256").nzval[21] = (*)(11, (^)(x₉₅, 10))
(var"##MTIIPVar#256").nzval[22] = (*)(110, x₈₀, (^)(x₉₅, 9))
end
end
nothing
end))`