Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADNLPModels test suite fails #120

Closed
adrhill opened this issue Jun 6, 2024 · 8 comments
Closed

ADNLPModels test suite fails #120

adrhill opened this issue Jun 6, 2024 · 8 comments

Comments

@adrhill
Copy link
Owner

adrhill commented Jun 6, 2024

In #119, the ADNLPModels test suite fails on the britgas problem.
This can be reproduced locally as:

using SparseConnectivityTracer
using ADTypes

using Pkg
Pkg.add([
    "ADNLPModels", "OptimizationProblems"
])

using ADNLPModels
using OptimizationProblems

function jac_sparsity_sct(name::Symbol)
    @info "Evaluating problem"
    nlp = OptimizationProblems.ADNLPProblems.eval(name)()
    f = Base.Fix1(mycons, nlp)
    x = nlp.meta.x0
    @info "Computing Jacobian sparsity of $name problem."
    return ADTypes.jacobian_sparsity(f, x, TracerSparsityDetector())
end

jac_sparsity_sct(:britgas)

and gets stuck on "Evaluating problem".

Could you take a look @gdalle?

@gdalle
Copy link
Collaborator

gdalle commented Jun 6, 2024

The thing that changed since the last CI on main is the release of ADNLPModels.jl v0.8.0 by @amontoison. Can you take a look Alexis?
In the meantime let's freeze the version of ADNLPModels to v0.7.something when we install it in the SCT test suite.

@adrhill
Copy link
Owner Author

adrhill commented Jun 7, 2024

Very strange: by freezing ADNLPModels to v0.7, Jacobian sparsity on britgas works again, but the test suite now gets stuck on [ Info: Testing Hessian sparsity for britgas.

@gdalle
Copy link
Collaborator

gdalle commented Jun 7, 2024

Maybe your changes slowed it down to a crawl?

@adrhill
Copy link
Owner Author

adrhill commented Jun 12, 2024

Can you take a look? The tests fails in the call to cons!:

using SparseConnectivityTracer
using ADTypes

using Pkg
# Pkg.add(; name="ADNLPModels", version="0.7")
# Pkg.add(; name="OptimizationProblems", version="0.7")

using ADNLPModels
using OptimizationProblems
using NLPModels
using NLPModelsJuMP

function mycons(nlp, x)
    c = similar(x, nlp.meta.ncon)
    @info "SCT setting cons!"
    cons!(nlp, x, c)
    @info "SCT cons! set"
    return c
end

function mylag(nlp, x)
    o = obj(nlp, x)
    c = mycons(nlp, x)
    λ = randn(length(c))
    return o + dot(λ, c)
end

function hess_sparsity_sct(name::Symbol)
    @info "SCT: Evaluating problem"
    nlp = OptimizationProblems.ADNLPProblems.eval(name)()
    f = Base.Fix1(mylag, nlp)
    x = nlp.meta.x0
    @info "SCT: Computing Hessian sparsity of $name problem."
    return ADTypes.hessian_sparsity(f, x, TracerSparsityDetector())
end

hess_sparsity_sct(:britgas)

@gdalle
Copy link
Collaborator

gdalle commented Jun 13, 2024

Here's a minimal example without the whole OptimizationProblems.jl stack. It boils down to the britgas constraint function, entirely self-contained and type-stable. You can tune the difficulty by moving the return cx[1:k] statement up or down.

It's a problem of compilation time: the first run is infinitely slower than the second one. Here I test "mini-britgas" with only the first 50 constraints:

PR #119:

first jacobian: 3.154601 seconds (1.17 M allocations: 75.645 MiB, 0.44% gc time, 99.99% compilation time)
second jacobian: 0.000150 seconds (2.05 k allocations: 169.531 KiB)
first hessian: 102.892269 seconds (2.11 M allocations: 119.645 MiB, 0.04% gc time, 100.00% compilation time)
second hessian: 0.009593 seconds (8.22 k allocations: 1014.078 KiB, 90.17% compilation time)

Question: why does the second run still include compilation time?

Main branch:

first jacobian: 2.456229 seconds (864.68 k allocations: 56.002 MiB, 1.15% gc time, 99.99% compilation time)
second jacobian: 0.000116 seconds (2.05 k allocations: 162.828 KiB)
first hessian: 3.583488 seconds (867.53 k allocations: 55.024 MiB, 1.50% gc time, 99.98% compilation time)
second hessian: 0.014497 seconds (6.93 k allocations: 917.188 KiB, 94.08% gc time)
using ADTypes: jacobian_sparsity, hessian_sparsity
using SparseConnectivityTracer
using JET

function britgas_cons(x)
    cx = similar(x, 360)
    p1_0, p2_0, p3_0, p4_0, p5_0, p6_0, p7_0, p8_0, p9_0, p10_0, p11_0, p12_0, p13_0, p14_0, p15_0, p16_0, p17_0, p18_0, p19_0, p20_0, p21_0, p22_0, p23_0, p1_1, p2_1, p3_1, p4_1, p5_1, p6_1, p7_1, p8_1, p9_1, p10_1, p11_1, p12_1, p13_1, p14_1, p15_1, p16_1, p17_1, p18_1, p19_1, p20_1, p21_1, p22_1, p23_1, p1_2, p2_2, p3_2, p4_2, p5_2, p6_2, p7_2, p8_2, p9_2, p10_2, p11_2, p12_2, p13_2, p14_2, p15_2, p16_2, p17_2, p18_2, p19_2, p20_2, p21_2, p22_2, p23_2, p1_3, p2_3, p3_3, p4_3, p5_3, p6_3, p7_3, p8_3, p9_3, p10_3, p11_3, p12_3, p13_3, p14_3, p15_3, p16_3, p17_3, p18_3, p19_3, p20_3, p21_3, p22_3, p23_3, p1_4, p2_4, p3_4, p4_4, p5_4, p6_4, p7_4, p8_4, p9_4, p10_4, p11_4, p12_4, p13_4, p14_4, p15_4, p16_4, p17_4, p18_4, p19_4, p20_4, p21_4, p22_4, p23_4, p1_5, p2_5, p3_5, p4_5, p5_5, p6_5, p7_5, p8_5, p9_5, p10_5, p11_5, p12_5, p13_5, p14_5, p15_5, p16_5, p17_5, p18_5, p19_5, p20_5, p21_5, p22_5, p23_5, p1_6, p2_6, p3_6, p4_6, p5_6, p6_6, p7_6, p8_6, p9_6, p10_6, p11_6, p12_6, p13_6, p14_6, p15_6, p16_6, p17_6, p18_6, p19_6, p20_6, p21_6, p22_6, p23_6, p1_7, p2_7, p3_7, p4_7, p5_7, p6_7, p7_7, p8_7, p9_7, p10_7, p11_7, p12_7, p13_7, p14_7, p15_7, p16_7, p17_7, p18_7, p19_7, p20_7, p21_7, p22_7, p23_7, p1_8, p2_8, p3_8, p4_8, p5_8, p6_8, p7_8, p8_8, p9_8, p10_8, p11_8, p12_8, p13_8, p14_8, p15_8, p16_8, p17_8, p18_8, p19_8, p20_8, p21_8, p22_8, p23_8, q1_2_0, q1_17_0, q2_3_0, q4_5_0, q5_6_0, q7_8_0, q8_9_0, q8_10_0, q8_11_0, q11_12_0, q12_13_0, q13_14_0, q13_15_0, q15_16_0, q17_18_0, q18_19_0, q20_21_0, q21_22_0, q22_23_0, q1_2_1, q1_17_1, q2_3_1, q4_5_1, q5_6_1, q7_8_1, q8_9_1, q8_10_1, q8_11_1, q11_12_1, q12_13_1, q13_14_1, q13_15_1, q15_16_1, q17_18_1, q18_19_1, q20_21_1, q21_22_1, q22_23_1, q1_2_2, q1_17_2, q2_3_2, q4_5_2, q5_6_2, q7_8_2, q8_9_2, q8_10_2, q8_11_2, q11_12_2, q12_13_2, q13_14_2, q13_15_2, q15_16_2, q17_18_2, q18_19_2, q20_21_2, q21_22_2, q22_23_2, q1_2_3, q1_17_3, q2_3_3, q4_5_3, q5_6_3, q7_8_3, q8_9_3, q8_10_3, q8_11_3, q11_12_3, q12_13_3, q13_14_3, q13_15_3, q15_16_3, q17_18_3, q18_19_3, q20_21_3, q21_22_3, q22_23_3, q1_2_4, q1_17_4, q2_3_4, q4_5_4, q5_6_4, q7_8_4, q8_9_4, q8_10_4, q8_11_4, q11_12_4, q12_13_4, q13_14_4, q13_15_4, q15_16_4, q17_18_4, q18_19_4, q20_21_4, q21_22_4, q22_23_4, q1_2_5, q1_17_5, q2_3_5, q4_5_5, q5_6_5, q7_8_5, q8_9_5, q8_10_5, q8_11_5, q11_12_5, q12_13_5, q13_14_5, q13_15_5, q15_16_5, q17_18_5, q18_19_5, q20_21_5, q21_22_5, q22_23_5, q1_2_6, q1_17_6, q2_3_6, q4_5_6, q5_6_6, q7_8_6, q8_9_6, q8_10_6, q8_11_6, q11_12_6, q12_13_6, q13_14_6, q13_15_6, q15_16_6, q17_18_6, q18_19_6, q20_21_6, q21_22_6, q22_23_6, q1_2_7, q1_17_7, q2_3_7, q4_5_7, q5_6_7, q7_8_7, q8_9_7, q8_10_7, q8_11_7, q11_12_7, q12_13_7, q13_14_7, q13_15_7, q15_16_7, q17_18_7, q18_19_7, q20_21_7, q21_22_7, q22_23_7, q1_2_8, q1_17_8, q2_3_8, q4_5_8, q5_6_8, q7_8_8, q8_9_8, q8_10_8, q8_11_8, q11_12_8, q12_13_8, q13_14_8, q13_15_8, q15_16_8, q17_18_8, q18_19_8, q20_21_8, q21_22_8, q22_23_8, f3_4_1, f5_7_1, f19_20_1, r3_4_1, r5_7_1, r19_20_1, f3_4_2, f5_7_2, f19_20_2, r3_4_2, r5_7_2, r19_20_2, f3_4_3, f5_7_3, f19_20_3, r3_4_3, r5_7_3, r19_20_3, f3_4_4, f5_7_4, f19_20_4, r3_4_4, r5_7_4, r19_20_4, f3_4_5, f5_7_5, f19_20_5, r3_4_5, r5_7_5, r19_20_5, f3_4_6, f5_7_6, f19_20_6, r3_4_6, r5_7_6, r19_20_6, f3_4_7, f5_7_7, f19_20_7, r3_4_7, r5_7_7, r19_20_7, f3_4_8, f5_7_8, f19_20_8, r3_4_8, r5_7_8, r19_20_8, in1_1, out16_1, out23_1, in1_2, out16_2, out23_2, in1_3, out16_3, out23_3, in1_4, out16_4, out23_4, in1_5, out16_5, out23_5, in1_6, out16_6, out23_6, in1_7, out16_7, out23_7, in1_8, out16_8, out23_8 = x[1],
    x[2],
    x[3],
    x[4],
    x[5],
    x[6],
    x[7],
    x[8],
    x[9],
    x[10],
    x[11],
    x[12],
    x[13],
    x[14],
    x[15],
    x[16],
    x[17],
    x[18],
    x[19],
    x[20],
    x[21],
    x[22],
    x[23],
    x[24],
    x[25],
    x[26],
    x[27],
    x[28],
    x[29],
    x[30],
    x[31],
    x[32],
    x[33],
    x[34],
    x[35],
    x[36],
    x[37],
    x[38],
    x[39],
    x[40],
    x[41],
    x[42],
    x[43],
    x[44],
    x[45],
    x[46],
    x[47],
    x[48],
    x[49],
    x[50],
    x[51],
    x[52],
    x[53],
    x[54],
    x[55],
    x[56],
    x[57],
    x[58],
    x[59],
    x[60],
    x[61],
    x[62],
    x[63],
    x[64],
    x[65],
    x[66],
    x[67],
    x[68],
    x[69],
    x[70],
    x[71],
    x[72],
    x[73],
    x[74],
    x[75],
    x[76],
    x[77],
    x[78],
    x[79],
    x[80],
    x[81],
    x[82],
    x[83],
    x[84],
    x[85],
    x[86],
    x[87],
    x[88],
    x[89],
    x[90],
    x[91],
    x[92],
    x[93],
    x[94],
    x[95],
    x[96],
    x[97],
    x[98],
    x[99],
    x[100],
    x[101],
    x[102],
    x[103],
    x[104],
    x[105],
    x[106],
    x[107],
    x[108],
    x[109],
    x[110],
    x[111],
    x[112],
    x[113],
    x[114],
    x[115],
    x[116],
    x[117],
    x[118],
    x[119],
    x[120],
    x[121],
    x[122],
    x[123],
    x[124],
    x[125],
    x[126],
    x[127],
    x[128],
    x[129],
    x[130],
    x[131],
    x[132],
    x[133],
    x[134],
    x[135],
    x[136],
    x[137],
    x[138],
    x[139],
    x[140],
    x[141],
    x[142],
    x[143],
    x[144],
    x[145],
    x[146],
    x[147],
    x[148],
    x[149],
    x[150],
    x[151],
    x[152],
    x[153],
    x[154],
    x[155],
    x[156],
    x[157],
    x[158],
    x[159],
    x[160],
    x[161],
    x[162],
    x[163],
    x[164],
    x[165],
    x[166],
    x[167],
    x[168],
    x[169],
    x[170],
    x[171],
    x[172],
    x[173],
    x[174],
    x[175],
    x[176],
    x[177],
    x[178],
    x[179],
    x[180],
    x[181],
    x[182],
    x[183],
    x[184],
    x[185],
    x[186],
    x[187],
    x[188],
    x[189],
    x[190],
    x[191],
    x[192],
    x[193],
    x[194],
    x[195],
    x[196],
    x[197],
    x[198],
    x[199],
    x[200],
    x[201],
    x[202],
    x[203],
    x[204],
    x[205],
    x[206],
    x[207],
    x[208],
    x[209],
    x[210],
    x[211],
    x[212],
    x[213],
    x[214],
    x[215],
    x[216],
    x[217],
    x[218],
    x[219],
    x[220],
    x[221],
    x[222],
    x[223],
    x[224],
    x[225],
    x[226],
    x[227],
    x[228],
    x[229],
    x[230],
    x[231],
    x[232],
    x[233],
    x[234],
    x[235],
    x[236],
    x[237],
    x[238],
    x[239],
    x[240],
    x[241],
    x[242],
    x[243],
    x[244],
    x[245],
    x[246],
    x[247],
    x[248],
    x[249],
    x[250],
    x[251],
    x[252],
    x[253],
    x[254],
    x[255],
    x[256],
    x[257],
    x[258],
    x[259],
    x[260],
    x[261],
    x[262],
    x[263],
    x[264],
    x[265],
    x[266],
    x[267],
    x[268],
    x[269],
    x[270],
    x[271],
    x[272],
    x[273],
    x[274],
    x[275],
    x[276],
    x[277],
    x[278],
    x[279],
    x[280],
    x[281],
    x[282],
    x[283],
    x[284],
    x[285],
    x[286],
    x[287],
    x[288],
    x[289],
    x[290],
    x[291],
    x[292],
    x[293],
    x[294],
    x[295],
    x[296],
    x[297],
    x[298],
    x[299],
    x[300],
    x[301],
    x[302],
    x[303],
    x[304],
    x[305],
    x[306],
    x[307],
    x[308],
    x[309],
    x[310],
    x[311],
    x[312],
    x[313],
    x[314],
    x[315],
    x[316],
    x[317],
    x[318],
    x[319],
    x[320],
    x[321],
    x[322],
    x[323],
    x[324],
    x[325],
    x[326],
    x[327],
    x[328],
    x[329],
    x[330],
    x[331],
    x[332],
    x[333],
    x[334],
    x[335],
    x[336],
    x[337],
    x[338],
    x[339],
    x[340],
    x[341],
    x[342],
    x[343],
    x[344],
    x[345],
    x[346],
    x[347],
    x[348],
    x[349],
    x[350],
    x[351],
    x[352],
    x[353],
    x[354],
    x[355],
    x[356],
    x[357],
    x[358],
    x[359],
    x[360],
    x[361],
    x[362],
    x[363],
    x[364],
    x[365],
    x[366],
    x[367],
    x[368],
    x[369],
    x[370],
    x[371],
    x[372],
    x[373],
    x[374],
    x[375],
    x[376],
    x[377],
    x[378],
    x[379],
    x[380],
    x[381],
    x[382],
    x[383],
    x[384],
    x[385],
    x[386],
    x[387],
    x[388],
    x[389],
    x[390],
    x[391],
    x[392],
    x[393],
    x[394],
    x[395],
    x[396],
    x[397],
    x[398],
    x[399],
    x[400],
    x[401],
    x[402],
    x[403],
    x[404],
    x[405],
    x[406],
    x[407],
    x[408],
    x[409],
    x[410],
    x[411],
    x[412],
    x[413],
    x[414],
    x[415],
    x[416],
    x[417],
    x[418],
    x[419],
    x[420],
    x[421],
    x[422],
    x[423],
    x[424],
    x[425],
    x[426],
    x[427],
    x[428],
    x[429],
    x[430],
    x[431],
    x[432],
    x[433],
    x[434],
    x[435],
    x[436],
    x[437],
    x[438],
    x[439],
    x[440],
    x[441],
    x[442],
    x[443],
    x[444],
    x[445],
    x[446],
    x[447],
    x[448],
    x[449],
    x[450]

    cx[1] =
        p1_1 / ((1) + (1) * p1_1) - p1_0 / ((1) + (1) * p1_0) - (0.75) * q1_17_1 -
        (0.75) * q1_2_1 + in1_1 - (0.25) * q1_17_0 - (0.25) * q1_2_0
    cx[2] =
        p2_1 / ((1) + (1) * p2_1) - p2_0 / ((1) + (1) * p2_0) - (0.75) * q2_3_1 +
        (0.75) * q1_2_1 - (0.25) * q2_3_0 + (0.25) * q1_2_0 - 1
    cx[3] =
        p3_1 / ((1) + (1) * p3_1) - p3_0 / ((1) + (1) * p3_0) - f3_4_1 +
        (0.75) * q2_3_1 +
        (0.25) * q2_3_0
    cx[4] =
        p4_1 / ((1) + (1) * p4_1) - p4_0 / ((1) + (1) * p4_0) - (0.75) * q4_5_1 + f3_4_1 -
        (0.25) * q4_5_0
    cx[5] =
        p5_1 / ((1) + (1) * p5_1) - p5_0 / ((1) + (1) * p5_0) - (0.75) * q5_6_1 - f5_7_1 +
        (0.75) * q4_5_1 - (0.25) * q5_6_0 + (0.25) * q4_5_0
    cx[6] =
        p6_1 / ((1) + (1) * p6_1) - p6_0 / ((1) + (1) * p6_0) +
        (0.75) * q5_6_1 +
        (0.25) * q5_6_0 - 1
    cx[7] =
        p7_1 / ((1) + (1) * p7_1) - p7_0 / ((1) + (1) * p7_0) - (0.75) * q7_8_1 + f5_7_1 -
        (0.25) * q7_8_0
    cx[8] =
        p8_1 / ((1) + (1) * p8_1) - p8_0 / ((1) + (1) * p8_0) - (0.75) * q8_9_1 -
        (0.75) * q8_10_1 - (0.75) * q8_11_1 + (0.75) * q7_8_1 - (0.25) * q8_9_0 -
        (0.25) * q8_10_0 - (0.25) * q8_11_0 + (0.25) * q7_8_0
    cx[9] =
        p9_1 / ((1) + (1) * p9_1) - p9_0 / ((1) + (1) * p9_0) +
        (0.75) * q8_9_1 +
        (0.25) * q8_9_0
    cx[10] =
        p10_1 / ((1) + (1) * p10_1) - p10_0 / ((1) + (1) * p10_0) +
        (0.75) * q8_10_1 +
        (0.25) * q8_10_0 - 1
    cx[11] =
        p11_1 / ((1) + (1) * p11_1) - p11_0 / ((1) + (1) * p11_0) - (0.75) * q11_12_1 +
        (0.75) * q8_11_1 - (0.25) * q11_12_0 + (0.25) * q8_11_0
    cx[12] =
        p12_1 / ((1) + (1) * p12_1) - p12_0 / ((1) + (1) * p12_0) - (0.75) * q12_13_1 +
        (0.75) * q11_12_1 - (0.25) * q12_13_0 + (0.25) * q11_12_0
    cx[13] =
        p13_1 / ((1) + (1) * p13_1) - p13_0 / ((1) + (1) * p13_0) - (0.75) * q13_14_1 -
        (0.75) * q13_15_1 + (0.75) * q12_13_1 - (0.25) * q13_14_0 - (0.25) * q13_15_0 +
        (0.25) * q12_13_0 - 1
    cx[14] =
        p14_1 / ((1) + (1) * p14_1) - p14_0 / ((1) + (1) * p14_0) +
        (0.75) * q13_14_1 +
        (0.25) * q13_14_0
    cx[15] =
        p15_1 / ((1) + (1) * p15_1) - p15_0 / ((1) + (1) * p15_0) - (0.75) * q15_16_1 +
        (0.75) * q13_15_1 - (0.25) * q15_16_0 + (0.25) * q13_15_0 - 1
    cx[16] =
        p16_1 / ((1) + (1) * p16_1) - p16_0 / ((1) + (1) * p16_0) +
        (0.75) * q15_16_1 +
        (0.25) * q15_16_0 - out16_1
    cx[17] =
        p17_1 / ((1) + (1) * p17_1) - p17_0 / ((1) + (1) * p17_0) - (0.75) * q17_18_1 +
        (0.75) * q1_17_1 - (0.25) * q17_18_0 + (0.25) * q1_17_0 - 1
    cx[18] =
        p18_1 / ((1) + (1) * p18_1) - p18_0 / ((1) + (1) * p18_0) - (0.75) * q18_19_1 +
        (0.75) * q17_18_1 - (0.25) * q18_19_0 + (0.25) * q17_18_0 - 1
    cx[19] =
        p19_1 / ((1) + (1) * p19_1) - p19_0 / ((1) + (1) * p19_0) - f19_20_1 +
        (0.75) * q18_19_1 +
        (0.25) * q18_19_0
    cx[20] =
        p20_1 / ((1) + (1) * p20_1) - p20_0 / ((1) + (1) * p20_0) - (0.75) * q20_21_1 +
        f19_20_1 - (0.25) * q20_21_0
    cx[21] =
        p21_1 / ((1) + (1) * p21_1) - p21_0 / ((1) + (1) * p21_0) - (0.75) * q21_22_1 +
        (0.75) * q20_21_1 - (0.25) * q21_22_0 + (0.25) * q20_21_0 - 1
    cx[22] =
        p22_1 / ((1) + (1) * p22_1) - p22_0 / ((1) + (1) * p22_0) - (0.75) * q22_23_1 +
        (0.75) * q21_22_1 - (0.25) * q22_23_0 + (0.25) * q21_22_0 - 1
    cx[23] =
        p23_1 / ((1) + (1) * p23_1) - p23_0 / ((1) + (1) * p23_0) +
        (0.75) * q22_23_1 +
        (0.25) * q22_23_0 - out23_1
    cx[24] = p3_1 * r3_4_1 - p4_1
    cx[25] = p5_1 * r5_7_1 - p7_1
    cx[26] = p19_1 * r19_20_1 - p20_1
    cx[27] =
        p1_1 * p1_1 - p2_1 * p2_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_1 + p2_1)) * ((abs(q1_2_1))^(1.8539))
    cx[28] =
        p1_1 * p1_1 - p17_1 * p17_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_1 + p17_1)) * ((abs(q1_17_1))^(1.8539))
    cx[29] =
        p2_1 * p2_1 - p3_1 * p3_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_1 + p3_1)) * ((abs(q2_3_1))^(1.8539))
    cx[30] =
        p4_1 * p4_1 - p5_1 * p5_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_1 + p5_1)) * ((abs(q4_5_1))^(1.8539))
    cx[31] =
        p5_1 * p5_1 - p6_1 * p6_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_1 + p6_1)) * ((abs(q5_6_1))^(1.8539))
    cx[32] =
        p7_1 * p7_1 - p8_1 * p8_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_1 + p8_1)) * ((abs(q7_8_1))^(1.8539))
    cx[33] =
        p8_1 * p8_1 - p9_1 * p9_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_1 + p9_1)) * ((abs(q8_9_1))^(1.8539))
    cx[34] =
        p8_1 * p8_1 - p10_1 * p10_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_1 + p10_1)) * ((abs(q8_10_1))^(1.8539))
    cx[35] =
        p8_1 * p8_1 - p11_1 * p11_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_1 + p11_1)) * ((abs(q8_11_1))^(1.8539))
    cx[36] =
        p11_1 * p11_1 - p12_1 * p12_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_1 + p12_1)) * ((abs(q11_12_1))^(1.8539))
    cx[37] =
        p12_1 * p12_1 - p13_1 * p13_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_1 + p13_1)) * ((abs(q12_13_1))^(1.8539))
    cx[38] =
        p13_1 * p13_1 - p14_1 * p14_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_1 + p14_1)) * ((abs(q13_14_1))^(1.8539))
    cx[39] =
        p13_1 * p13_1 - p15_1 * p15_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_1 + p15_1)) * ((abs(q13_15_1))^(1.8539))
    cx[40] =
        p15_1 * p15_1 - p16_1 * p16_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_1 + p16_1)) * ((abs(q15_16_1))^(1.8539))
    cx[41] =
        p17_1 * p17_1 - p18_1 * p18_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_1 + p18_1)) * ((abs(q17_18_1))^(1.8539))
    cx[42] =
        p18_1 * p18_1 - p19_1 * p19_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_1 + p19_1)) * ((abs(q18_19_1))^(1.8539))
    cx[43] =
        p20_1 * p20_1 - p21_1 * p21_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_1 + p21_1)) * ((abs(q20_21_1))^(1.8539))
    cx[44] =
        p21_1 * p21_1 - p22_1 * p22_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_1 + p22_1)) * ((abs(q21_22_1))^(1.8539))
    cx[45] =
        p22_1 * p22_1 - p23_1 * p23_1 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_1 + p23_1)) * ((abs(q22_23_1))^(1.8539))
    cx[46] =
        p1_2 / ((1) + (1) * p1_2) - p1_1 / ((1) + (1) * p1_1) - (0.75) * q1_17_2 -
        (0.75) * q1_2_2 + in1_2 - (0.25) * q1_17_1 - (0.25) * q1_2_1
    cx[47] =
        p2_2 / ((1) + (1) * p2_2) - p2_1 / ((1) + (1) * p2_1) - (0.75) * q2_3_2 +
        (0.75) * q1_2_2 - (0.25) * q2_3_1 + (0.25) * q1_2_1 - 1
    cx[48] =
        p3_2 / ((1) + (1) * p3_2) - p3_1 / ((1) + (1) * p3_1) - f3_4_2 +
        (0.75) * q2_3_2 +
        (0.25) * q2_3_1
    cx[49] =
        p4_2 / ((1) + (1) * p4_2) - p4_1 / ((1) + (1) * p4_1) - (0.75) * q4_5_2 + f3_4_2 -
        (0.25) * q4_5_1
    cx[50] =
        p5_2 / ((1) + (1) * p5_2) - p5_1 / ((1) + (1) * p5_1) - (0.75) * q5_6_2 - f5_7_2 +
        (0.75) * q4_5_2 - (0.25) * q5_6_1 + (0.25) * q4_5_1
    cx[51] =
        p6_2 / ((1) + (1) * p6_2) - p6_1 / ((1) + (1) * p6_1) +
        (0.75) * q5_6_2 +
        (0.25) * q5_6_1 - 1
    return cx[1:50]  # TODO: remove
    cx[52] =
        p7_2 / ((1) + (1) * p7_2) - p7_1 / ((1) + (1) * p7_1) - (0.75) * q7_8_2 + f5_7_2 -
        (0.25) * q7_8_1
    cx[53] =
        p8_2 / ((1) + (1) * p8_2) - p8_1 / ((1) + (1) * p8_1) - (0.75) * q8_9_2 -
        (0.75) * q8_10_2 - (0.75) * q8_11_2 + (0.75) * q7_8_2 - (0.25) * q8_9_1 -
        (0.25) * q8_10_1 - (0.25) * q8_11_1 + (0.25) * q7_8_1
    cx[54] =
        p9_2 / ((1) + (1) * p9_2) - p9_1 / ((1) + (1) * p9_1) +
        (0.75) * q8_9_2 +
        (0.25) * q8_9_1
    cx[55] =
        p10_2 / ((1) + (1) * p10_2) - p10_1 / ((1) + (1) * p10_1) +
        (0.75) * q8_10_2 +
        (0.25) * q8_10_1 - 1
    cx[56] =
        p11_2 / ((1) + (1) * p11_2) - p11_1 / ((1) + (1) * p11_1) - (0.75) * q11_12_2 +
        (0.75) * q8_11_2 - (0.25) * q11_12_1 + (0.25) * q8_11_1
    cx[57] =
        p12_2 / ((1) + (1) * p12_2) - p12_1 / ((1) + (1) * p12_1) - (0.75) * q12_13_2 +
        (0.75) * q11_12_2 - (0.25) * q12_13_1 + (0.25) * q11_12_1
    cx[58] =
        p13_2 / ((1) + (1) * p13_2) - p13_1 / ((1) + (1) * p13_1) - (0.75) * q13_14_2 -
        (0.75) * q13_15_2 + (0.75) * q12_13_2 - (0.25) * q13_14_1 - (0.25) * q13_15_1 +
        (0.25) * q12_13_1 - 1
    cx[59] =
        p14_2 / ((1) + (1) * p14_2) - p14_1 / ((1) + (1) * p14_1) +
        (0.75) * q13_14_2 +
        (0.25) * q13_14_1
    cx[60] =
        p15_2 / ((1) + (1) * p15_2) - p15_1 / ((1) + (1) * p15_1) - (0.75) * q15_16_2 +
        (0.75) * q13_15_2 - (0.25) * q15_16_1 + (0.25) * q13_15_1 - 1
    cx[61] =
        p16_2 / ((1) + (1) * p16_2) - p16_1 / ((1) + (1) * p16_1) +
        (0.75) * q15_16_2 +
        (0.25) * q15_16_1 - out16_2
    cx[62] =
        p17_2 / ((1) + (1) * p17_2) - p17_1 / ((1) + (1) * p17_1) - (0.75) * q17_18_2 +
        (0.75) * q1_17_2 - (0.25) * q17_18_1 + (0.25) * q1_17_1 - 1
    cx[63] =
        p18_2 / ((1) + (1) * p18_2) - p18_1 / ((1) + (1) * p18_1) - (0.75) * q18_19_2 +
        (0.75) * q17_18_2 - (0.25) * q18_19_1 + (0.25) * q17_18_1 - 1
    cx[64] =
        p19_2 / ((1) + (1) * p19_2) - p19_1 / ((1) + (1) * p19_1) - f19_20_2 +
        (0.75) * q18_19_2 +
        (0.25) * q18_19_1
    cx[65] =
        p20_2 / ((1) + (1) * p20_2) - p20_1 / ((1) + (1) * p20_1) - (0.75) * q20_21_2 +
        f19_20_2 - (0.25) * q20_21_1
    cx[66] =
        p21_2 / ((1) + (1) * p21_2) - p21_1 / ((1) + (1) * p21_1) - (0.75) * q21_22_2 +
        (0.75) * q20_21_2 - (0.25) * q21_22_1 + (0.25) * q20_21_1 - 1
    cx[67] =
        p22_2 / ((1) + (1) * p22_2) - p22_1 / ((1) + (1) * p22_1) - (0.75) * q22_23_2 +
        (0.75) * q21_22_2 - (0.25) * q22_23_1 + (0.25) * q21_22_1 - 1
    cx[68] =
        p23_2 / ((1) + (1) * p23_2) - p23_1 / ((1) + (1) * p23_1) +
        (0.75) * q22_23_2 +
        (0.25) * q22_23_1 - out23_2
    cx[69] = p3_2 * r3_4_2 - p4_2
    cx[70] = p5_2 * r5_7_2 - p7_2
    cx[71] = p19_2 * r19_20_2 - p20_2
    cx[72] =
        p1_2 * p1_2 - p2_2 * p2_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_2 + p2_2)) * ((abs(q1_2_2))^(1.8539))
    cx[73] =
        p1_2 * p1_2 - p17_2 * p17_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_2 + p17_2)) * ((abs(q1_17_2))^(1.8539))
    cx[74] =
        p2_2 * p2_2 - p3_2 * p3_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_2 + p3_2)) * ((abs(q2_3_2))^(1.8539))
    cx[75] =
        p4_2 * p4_2 - p5_2 * p5_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_2 + p5_2)) * ((abs(q4_5_2))^(1.8539))
    cx[76] =
        p5_2 * p5_2 - p6_2 * p6_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_2 + p6_2)) * ((abs(q5_6_2))^(1.8539))
    cx[77] =
        p7_2 * p7_2 - p8_2 * p8_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_2 + p8_2)) * ((abs(q7_8_2))^(1.8539))
    cx[78] =
        p8_2 * p8_2 - p9_2 * p9_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_2 + p9_2)) * ((abs(q8_9_2))^(1.8539))
    cx[79] =
        p8_2 * p8_2 - p10_2 * p10_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_2 + p10_2)) * ((abs(q8_10_2))^(1.8539))
    cx[80] =
        p8_2 * p8_2 - p11_2 * p11_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_2 + p11_2)) * ((abs(q8_11_2))^(1.8539))
    cx[81] =
        p11_2 * p11_2 - p12_2 * p12_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_2 + p12_2)) * ((abs(q11_12_2))^(1.8539))
    cx[82] =
        p12_2 * p12_2 - p13_2 * p13_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_2 + p13_2)) * ((abs(q12_13_2))^(1.8539))
    cx[83] =
        p13_2 * p13_2 - p14_2 * p14_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_2 + p14_2)) * ((abs(q13_14_2))^(1.8539))
    cx[84] =
        p13_2 * p13_2 - p15_2 * p15_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_2 + p15_2)) * ((abs(q13_15_2))^(1.8539))
    cx[85] =
        p15_2 * p15_2 - p16_2 * p16_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_2 + p16_2)) * ((abs(q15_16_2))^(1.8539))
    cx[86] =
        p17_2 * p17_2 - p18_2 * p18_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_2 + p18_2)) * ((abs(q17_18_2))^(1.8539))
    cx[87] =
        p18_2 * p18_2 - p19_2 * p19_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_2 + p19_2)) * ((abs(q18_19_2))^(1.8539))
    cx[88] =
        p20_2 * p20_2 - p21_2 * p21_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_2 + p21_2)) * ((abs(q20_21_2))^(1.8539))
    cx[89] =
        p21_2 * p21_2 - p22_2 * p22_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_2 + p22_2)) * ((abs(q21_22_2))^(1.8539))
    cx[90] =
        p22_2 * p22_2 - p23_2 * p23_2 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_2 + p23_2)) * ((abs(q22_23_2))^(1.8539))
    cx[91] =
        p1_3 / ((1) + (1) * p1_3) - p1_2 / ((1) + (1) * p1_2) - (0.75) * q1_17_3 -
        (0.75) * q1_2_3 + in1_3 - (0.25) * q1_17_2 - (0.25) * q1_2_2
    cx[92] =
        p2_3 / ((1) + (1) * p2_3) - p2_2 / ((1) + (1) * p2_2) - (0.75) * q2_3_3 +
        (0.75) * q1_2_3 - (0.25) * q2_3_2 + (0.25) * q1_2_2 - 1
    cx[93] =
        p3_3 / ((1) + (1) * p3_3) - p3_2 / ((1) + (1) * p3_2) - f3_4_3 +
        (0.75) * q2_3_3 +
        (0.25) * q2_3_2
    cx[94] =
        p4_3 / ((1) + (1) * p4_3) - p4_2 / ((1) + (1) * p4_2) - (0.75) * q4_5_3 + f3_4_3 -
        (0.25) * q4_5_2
    cx[95] =
        p5_3 / ((1) + (1) * p5_3) - p5_2 / ((1) + (1) * p5_2) - (0.75) * q5_6_3 - f5_7_3 +
        (0.75) * q4_5_3 - (0.25) * q5_6_2 + (0.25) * q4_5_2
    cx[96] =
        p6_3 / ((1) + (1) * p6_3) - p6_2 / ((1) + (1) * p6_2) +
        (0.75) * q5_6_3 +
        (0.25) * q5_6_2 - 1
    cx[97] =
        p7_3 / ((1) + (1) * p7_3) - p7_2 / ((1) + (1) * p7_2) - (0.75) * q7_8_3 + f5_7_3 -
        (0.25) * q7_8_2
    cx[98] =
        p8_3 / ((1) + (1) * p8_3) - p8_2 / ((1) + (1) * p8_2) - (0.75) * q8_9_3 -
        (0.75) * q8_10_3 - (0.75) * q8_11_3 + (0.75) * q7_8_3 - (0.25) * q8_9_2 -
        (0.25) * q8_10_2 - (0.25) * q8_11_2 + (0.25) * q7_8_2
    cx[99] =
        p9_3 / ((1) + (1) * p9_3) - p9_2 / ((1) + (1) * p9_2) +
        (0.75) * q8_9_3 +
        (0.25) * q8_9_2
    cx[100] =
        p10_3 / ((1) + (1) * p10_3) - p10_2 / ((1) + (1) * p10_2) +
        (0.75) * q8_10_3 +
        (0.25) * q8_10_2 - 1
    cx[101] =
        p11_3 / ((1) + (1) * p11_3) - p11_2 / ((1) + (1) * p11_2) - (0.75) * q11_12_3 +
        (0.75) * q8_11_3 - (0.25) * q11_12_2 + (0.25) * q8_11_2
    cx[102] =
        p12_3 / ((1) + (1) * p12_3) - p12_2 / ((1) + (1) * p12_2) - (0.75) * q12_13_3 +
        (0.75) * q11_12_3 - (0.25) * q12_13_2 + (0.25) * q11_12_2
    cx[103] =
        p13_3 / ((1) + (1) * p13_3) - p13_2 / ((1) + (1) * p13_2) - (0.75) * q13_14_3 -
        (0.75) * q13_15_3 + (0.75) * q12_13_3 - (0.25) * q13_14_2 - (0.25) * q13_15_2 +
        (0.25) * q12_13_2 - 1
    cx[104] =
        p14_3 / ((1) + (1) * p14_3) - p14_2 / ((1) + (1) * p14_2) +
        (0.75) * q13_14_3 +
        (0.25) * q13_14_2
    cx[105] =
        p15_3 / ((1) + (1) * p15_3) - p15_2 / ((1) + (1) * p15_2) - (0.75) * q15_16_3 +
        (0.75) * q13_15_3 - (0.25) * q15_16_2 + (0.25) * q13_15_2 - 1
    cx[106] =
        p16_3 / ((1) + (1) * p16_3) - p16_2 / ((1) + (1) * p16_2) +
        (0.75) * q15_16_3 +
        (0.25) * q15_16_2 - out16_3
    cx[107] =
        p17_3 / ((1) + (1) * p17_3) - p17_2 / ((1) + (1) * p17_2) - (0.75) * q17_18_3 +
        (0.75) * q1_17_3 - (0.25) * q17_18_2 + (0.25) * q1_17_2 - 1
    cx[108] =
        p18_3 / ((1) + (1) * p18_3) - p18_2 / ((1) + (1) * p18_2) - (0.75) * q18_19_3 +
        (0.75) * q17_18_3 - (0.25) * q18_19_2 + (0.25) * q17_18_2 - 1
    cx[109] =
        p19_3 / ((1) + (1) * p19_3) - p19_2 / ((1) + (1) * p19_2) - f19_20_3 +
        (0.75) * q18_19_3 +
        (0.25) * q18_19_2
    cx[110] =
        p20_3 / ((1) + (1) * p20_3) - p20_2 / ((1) + (1) * p20_2) - (0.75) * q20_21_3 +
        f19_20_3 - (0.25) * q20_21_2
    cx[111] =
        p21_3 / ((1) + (1) * p21_3) - p21_2 / ((1) + (1) * p21_2) - (0.75) * q21_22_3 +
        (0.75) * q20_21_3 - (0.25) * q21_22_2 + (0.25) * q20_21_2 - 1
    cx[112] =
        p22_3 / ((1) + (1) * p22_3) - p22_2 / ((1) + (1) * p22_2) - (0.75) * q22_23_3 +
        (0.75) * q21_22_3 - (0.25) * q22_23_2 + (0.25) * q21_22_2 - 1
    cx[113] =
        p23_3 / ((1) + (1) * p23_3) - p23_2 / ((1) + (1) * p23_2) +
        (0.75) * q22_23_3 +
        (0.25) * q22_23_2 - out23_3
    cx[114] = p3_3 * r3_4_3 - p4_3
    cx[115] = p5_3 * r5_7_3 - p7_3
    cx[116] = p19_3 * r19_20_3 - p20_3
    cx[117] =
        p1_3 * p1_3 - p2_3 * p2_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_3 + p2_3)) * ((abs(q1_2_3))^(1.8539))
    cx[118] =
        p1_3 * p1_3 - p17_3 * p17_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_3 + p17_3)) * ((abs(q1_17_3))^(1.8539))
    cx[119] =
        p2_3 * p2_3 - p3_3 * p3_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_3 + p3_3)) * ((abs(q2_3_3))^(1.8539))
    cx[120] =
        p4_3 * p4_3 - p5_3 * p5_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_3 + p5_3)) * ((abs(q4_5_3))^(1.8539))
    cx[121] =
        p5_3 * p5_3 - p6_3 * p6_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_3 + p6_3)) * ((abs(q5_6_3))^(1.8539))
    cx[122] =
        p7_3 * p7_3 - p8_3 * p8_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_3 + p8_3)) * ((abs(q7_8_3))^(1.8539))
    cx[123] =
        p8_3 * p8_3 - p9_3 * p9_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_3 + p9_3)) * ((abs(q8_9_3))^(1.8539))
    cx[124] =
        p8_3 * p8_3 - p10_3 * p10_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_3 + p10_3)) * ((abs(q8_10_3))^(1.8539))
    cx[125] =
        p8_3 * p8_3 - p11_3 * p11_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_3 + p11_3)) * ((abs(q8_11_3))^(1.8539))
    cx[126] =
        p11_3 * p11_3 - p12_3 * p12_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_3 + p12_3)) * ((abs(q11_12_3))^(1.8539))
    cx[127] =
        p12_3 * p12_3 - p13_3 * p13_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_3 + p13_3)) * ((abs(q12_13_3))^(1.8539))
    cx[128] =
        p13_3 * p13_3 - p14_3 * p14_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_3 + p14_3)) * ((abs(q13_14_3))^(1.8539))
    cx[129] =
        p13_3 * p13_3 - p15_3 * p15_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_3 + p15_3)) * ((abs(q13_15_3))^(1.8539))
    cx[130] =
        p15_3 * p15_3 - p16_3 * p16_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_3 + p16_3)) * ((abs(q15_16_3))^(1.8539))
    cx[131] =
        p17_3 * p17_3 - p18_3 * p18_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_3 + p18_3)) * ((abs(q17_18_3))^(1.8539))
    cx[132] =
        p18_3 * p18_3 - p19_3 * p19_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_3 + p19_3)) * ((abs(q18_19_3))^(1.8539))
    cx[133] =
        p20_3 * p20_3 - p21_3 * p21_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_3 + p21_3)) * ((abs(q20_21_3))^(1.8539))
    cx[134] =
        p21_3 * p21_3 - p22_3 * p22_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_3 + p22_3)) * ((abs(q21_22_3))^(1.8539))
    cx[135] =
        p22_3 * p22_3 - p23_3 * p23_3 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_3 + p23_3)) * ((abs(q22_23_3))^(1.8539))
    cx[136] =
        p1_4 / ((1) + (1) * p1_4) - p1_3 / ((1) + (1) * p1_3) - (0.75) * q1_17_4 -
        (0.75) * q1_2_4 + in1_4 - (0.25) * q1_17_3 - (0.25) * q1_2_3
    cx[137] =
        p2_4 / ((1) + (1) * p2_4) - p2_3 / ((1) + (1) * p2_3) - (0.75) * q2_3_4 +
        (0.75) * q1_2_4 - (0.25) * q2_3_3 + (0.25) * q1_2_3 - 1
    cx[138] =
        p3_4 / ((1) + (1) * p3_4) - p3_3 / ((1) + (1) * p3_3) - f3_4_4 +
        (0.75) * q2_3_4 +
        (0.25) * q2_3_3
    cx[139] =
        p4_4 / ((1) + (1) * p4_4) - p4_3 / ((1) + (1) * p4_3) - (0.75) * q4_5_4 + f3_4_4 -
        (0.25) * q4_5_3
    cx[140] =
        p5_4 / ((1) + (1) * p5_4) - p5_3 / ((1) + (1) * p5_3) - (0.75) * q5_6_4 - f5_7_4 +
        (0.75) * q4_5_4 - (0.25) * q5_6_3 + (0.25) * q4_5_3
    cx[141] =
        p6_4 / ((1) + (1) * p6_4) - p6_3 / ((1) + (1) * p6_3) +
        (0.75) * q5_6_4 +
        (0.25) * q5_6_3 - 1
    cx[142] =
        p7_4 / ((1) + (1) * p7_4) - p7_3 / ((1) + (1) * p7_3) - (0.75) * q7_8_4 + f5_7_4 -
        (0.25) * q7_8_3
    cx[143] =
        p8_4 / ((1) + (1) * p8_4) - p8_3 / ((1) + (1) * p8_3) - (0.75) * q8_9_4 -
        (0.75) * q8_10_4 - (0.75) * q8_11_4 + (0.75) * q7_8_4 - (0.25) * q8_9_3 -
        (0.25) * q8_10_3 - (0.25) * q8_11_3 + (0.25) * q7_8_3
    cx[144] =
        p9_4 / ((1) + (1) * p9_4) - p9_3 / ((1) + (1) * p9_3) +
        (0.75) * q8_9_4 +
        (0.25) * q8_9_3
    cx[145] =
        p10_4 / ((1) + (1) * p10_4) - p10_3 / ((1) + (1) * p10_3) +
        (0.75) * q8_10_4 +
        (0.25) * q8_10_3 - 1
    cx[146] =
        p11_4 / ((1) + (1) * p11_4) - p11_3 / ((1) + (1) * p11_3) - (0.75) * q11_12_4 +
        (0.75) * q8_11_4 - (0.25) * q11_12_3 + (0.25) * q8_11_3
    cx[147] =
        p12_4 / ((1) + (1) * p12_4) - p12_3 / ((1) + (1) * p12_3) - (0.75) * q12_13_4 +
        (0.75) * q11_12_4 - (0.25) * q12_13_3 + (0.25) * q11_12_3
    cx[148] =
        p13_4 / ((1) + (1) * p13_4) - p13_3 / ((1) + (1) * p13_3) - (0.75) * q13_14_4 -
        (0.75) * q13_15_4 + (0.75) * q12_13_4 - (0.25) * q13_14_3 - (0.25) * q13_15_3 +
        (0.25) * q12_13_3 - 1
    cx[149] =
        p14_4 / ((1) + (1) * p14_4) - p14_3 / ((1) + (1) * p14_3) +
        (0.75) * q13_14_4 +
        (0.25) * q13_14_3
    cx[150] =
        p15_4 / ((1) + (1) * p15_4) - p15_3 / ((1) + (1) * p15_3) - (0.75) * q15_16_4 +
        (0.75) * q13_15_4 - (0.25) * q15_16_3 + (0.25) * q13_15_3 - 1
    cx[151] =
        p16_4 / ((1) + (1) * p16_4) - p16_3 / ((1) + (1) * p16_3) +
        (0.75) * q15_16_4 +
        (0.25) * q15_16_3 - out16_4
    cx[152] =
        p17_4 / ((1) + (1) * p17_4) - p17_3 / ((1) + (1) * p17_3) - (0.75) * q17_18_4 +
        (0.75) * q1_17_4 - (0.25) * q17_18_3 + (0.25) * q1_17_3 - 1
    cx[153] =
        p18_4 / ((1) + (1) * p18_4) - p18_3 / ((1) + (1) * p18_3) - (0.75) * q18_19_4 +
        (0.75) * q17_18_4 - (0.25) * q18_19_3 + (0.25) * q17_18_3 - 1
    cx[154] =
        p19_4 / ((1) + (1) * p19_4) - p19_3 / ((1) + (1) * p19_3) - f19_20_4 +
        (0.75) * q18_19_4 +
        (0.25) * q18_19_3
    cx[155] =
        p20_4 / ((1) + (1) * p20_4) - p20_3 / ((1) + (1) * p20_3) - (0.75) * q20_21_4 +
        f19_20_4 - (0.25) * q20_21_3
    cx[156] =
        p21_4 / ((1) + (1) * p21_4) - p21_3 / ((1) + (1) * p21_3) - (0.75) * q21_22_4 +
        (0.75) * q20_21_4 - (0.25) * q21_22_3 + (0.25) * q20_21_3 - 1
    cx[157] =
        p22_4 / ((1) + (1) * p22_4) - p22_3 / ((1) + (1) * p22_3) - (0.75) * q22_23_4 +
        (0.75) * q21_22_4 - (0.25) * q22_23_3 + (0.25) * q21_22_3 - 1
    cx[158] =
        p23_4 / ((1) + (1) * p23_4) - p23_3 / ((1) + (1) * p23_3) +
        (0.75) * q22_23_4 +
        (0.25) * q22_23_3 - out23_4
    cx[159] = p3_4 * r3_4_4 - p4_4
    cx[160] = p5_4 * r5_7_4 - p7_4
    cx[161] = p19_4 * r19_20_4 - p20_4
    cx[162] =
        p1_4 * p1_4 - p2_4 * p2_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_4 + p2_4)) * ((abs(q1_2_4))^(1.8539))
    cx[163] =
        p1_4 * p1_4 - p17_4 * p17_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_4 + p17_4)) * ((abs(q1_17_4))^(1.8539))
    cx[164] =
        p2_4 * p2_4 - p3_4 * p3_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_4 + p3_4)) * ((abs(q2_3_4))^(1.8539))
    cx[165] =
        p4_4 * p4_4 - p5_4 * p5_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_4 + p5_4)) * ((abs(q4_5_4))^(1.8539))
    cx[166] =
        p5_4 * p5_4 - p6_4 * p6_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_4 + p6_4)) * ((abs(q5_6_4))^(1.8539))
    cx[167] =
        p7_4 * p7_4 - p8_4 * p8_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_4 + p8_4)) * ((abs(q7_8_4))^(1.8539))
    cx[168] =
        p8_4 * p8_4 - p9_4 * p9_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_4 + p9_4)) * ((abs(q8_9_4))^(1.8539))
    cx[169] =
        p8_4 * p8_4 - p10_4 * p10_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_4 + p10_4)) * ((abs(q8_10_4))^(1.8539))
    cx[170] =
        p8_4 * p8_4 - p11_4 * p11_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_4 + p11_4)) * ((abs(q8_11_4))^(1.8539))
    cx[171] =
        p11_4 * p11_4 - p12_4 * p12_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_4 + p12_4)) * ((abs(q11_12_4))^(1.8539))
    cx[172] =
        p12_4 * p12_4 - p13_4 * p13_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_4 + p13_4)) * ((abs(q12_13_4))^(1.8539))
    cx[173] =
        p13_4 * p13_4 - p14_4 * p14_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_4 + p14_4)) * ((abs(q13_14_4))^(1.8539))
    cx[174] =
        p13_4 * p13_4 - p15_4 * p15_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_4 + p15_4)) * ((abs(q13_15_4))^(1.8539))
    cx[175] =
        p15_4 * p15_4 - p16_4 * p16_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_4 + p16_4)) * ((abs(q15_16_4))^(1.8539))
    cx[176] =
        p17_4 * p17_4 - p18_4 * p18_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_4 + p18_4)) * ((abs(q17_18_4))^(1.8539))
    cx[177] =
        p18_4 * p18_4 - p19_4 * p19_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_4 + p19_4)) * ((abs(q18_19_4))^(1.8539))
    cx[178] =
        p20_4 * p20_4 - p21_4 * p21_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_4 + p21_4)) * ((abs(q20_21_4))^(1.8539))
    cx[179] =
        p21_4 * p21_4 - p22_4 * p22_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_4 + p22_4)) * ((abs(q21_22_4))^(1.8539))
    cx[180] =
        p22_4 * p22_4 - p23_4 * p23_4 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_4 + p23_4)) * ((abs(q22_23_4))^(1.8539))
    cx[181] =
        p1_5 / ((1) + (1) * p1_5) - p1_4 / ((1) + (1) * p1_4) - (0.75) * q1_17_5 -
        (0.75) * q1_2_5 + in1_5 - (0.25) * q1_17_4 - (0.25) * q1_2_4
    cx[182] =
        p2_5 / ((1) + (1) * p2_5) - p2_4 / ((1) + (1) * p2_4) - (0.75) * q2_3_5 +
        (0.75) * q1_2_5 - (0.25) * q2_3_4 + (0.25) * q1_2_4 - 1
    cx[183] =
        p3_5 / ((1) + (1) * p3_5) - p3_4 / ((1) + (1) * p3_4) - f3_4_5 +
        (0.75) * q2_3_5 +
        (0.25) * q2_3_4
    cx[184] =
        p4_5 / ((1) + (1) * p4_5) - p4_4 / ((1) + (1) * p4_4) - (0.75) * q4_5_5 + f3_4_5 -
        (0.25) * q4_5_4
    cx[185] =
        p5_5 / ((1) + (1) * p5_5) - p5_4 / ((1) + (1) * p5_4) - (0.75) * q5_6_5 - f5_7_5 +
        (0.75) * q4_5_5 - (0.25) * q5_6_4 + (0.25) * q4_5_4
    cx[186] =
        p6_5 / ((1) + (1) * p6_5) - p6_4 / ((1) + (1) * p6_4) +
        (0.75) * q5_6_5 +
        (0.25) * q5_6_4 - 1
    cx[187] =
        p7_5 / ((1) + (1) * p7_5) - p7_4 / ((1) + (1) * p7_4) - (0.75) * q7_8_5 + f5_7_5 -
        (0.25) * q7_8_4
    cx[188] =
        p8_5 / ((1) + (1) * p8_5) - p8_4 / ((1) + (1) * p8_4) - (0.75) * q8_9_5 -
        (0.75) * q8_10_5 - (0.75) * q8_11_5 + (0.75) * q7_8_5 - (0.25) * q8_9_4 -
        (0.25) * q8_10_4 - (0.25) * q8_11_4 + (0.25) * q7_8_4
    cx[189] =
        p9_5 / ((1) + (1) * p9_5) - p9_4 / ((1) + (1) * p9_4) +
        (0.75) * q8_9_5 +
        (0.25) * q8_9_4
    cx[190] =
        p10_5 / ((1) + (1) * p10_5) - p10_4 / ((1) + (1) * p10_4) +
        (0.75) * q8_10_5 +
        (0.25) * q8_10_4 - 1
    cx[191] =
        p11_5 / ((1) + (1) * p11_5) - p11_4 / ((1) + (1) * p11_4) - (0.75) * q11_12_5 +
        (0.75) * q8_11_5 - (0.25) * q11_12_4 + (0.25) * q8_11_4
    cx[192] =
        p12_5 / ((1) + (1) * p12_5) - p12_4 / ((1) + (1) * p12_4) - (0.75) * q12_13_5 +
        (0.75) * q11_12_5 - (0.25) * q12_13_4 + (0.25) * q11_12_4
    cx[193] =
        p13_5 / ((1) + (1) * p13_5) - p13_4 / ((1) + (1) * p13_4) - (0.75) * q13_14_5 -
        (0.75) * q13_15_5 + (0.75) * q12_13_5 - (0.25) * q13_14_4 - (0.25) * q13_15_4 +
        (0.25) * q12_13_4 - 1
    cx[194] =
        p14_5 / ((1) + (1) * p14_5) - p14_4 / ((1) + (1) * p14_4) +
        (0.75) * q13_14_5 +
        (0.25) * q13_14_4
    cx[195] =
        p15_5 / ((1) + (1) * p15_5) - p15_4 / ((1) + (1) * p15_4) - (0.75) * q15_16_5 +
        (0.75) * q13_15_5 - (0.25) * q15_16_4 + (0.25) * q13_15_4 - 1
    cx[196] =
        p16_5 / ((1) + (1) * p16_5) - p16_4 / ((1) + (1) * p16_4) +
        (0.75) * q15_16_5 +
        (0.25) * q15_16_4 - out16_5
    cx[197] =
        p17_5 / ((1) + (1) * p17_5) - p17_4 / ((1) + (1) * p17_4) - (0.75) * q17_18_5 +
        (0.75) * q1_17_5 - (0.25) * q17_18_4 + (0.25) * q1_17_4 - 1
    cx[198] =
        p18_5 / ((1) + (1) * p18_5) - p18_4 / ((1) + (1) * p18_4) - (0.75) * q18_19_5 +
        (0.75) * q17_18_5 - (0.25) * q18_19_4 + (0.25) * q17_18_4 - 1
    cx[199] =
        p19_5 / ((1) + (1) * p19_5) - p19_4 / ((1) + (1) * p19_4) - f19_20_5 +
        (0.75) * q18_19_5 +
        (0.25) * q18_19_4
    cx[200] =
        p20_5 / ((1) + (1) * p20_5) - p20_4 / ((1) + (1) * p20_4) - (0.75) * q20_21_5 +
        f19_20_5 - (0.25) * q20_21_4
    cx[201] =
        p21_5 / ((1) + (1) * p21_5) - p21_4 / ((1) + (1) * p21_4) - (0.75) * q21_22_5 +
        (0.75) * q20_21_5 - (0.25) * q21_22_4 + (0.25) * q20_21_4 - 1
    cx[202] =
        p22_5 / ((1) + (1) * p22_5) - p22_4 / ((1) + (1) * p22_4) - (0.75) * q22_23_5 +
        (0.75) * q21_22_5 - (0.25) * q22_23_4 + (0.25) * q21_22_4 - 1
    cx[203] =
        p23_5 / ((1) + (1) * p23_5) - p23_4 / ((1) + (1) * p23_4) +
        (0.75) * q22_23_5 +
        (0.25) * q22_23_4 - out23_5
    cx[204] = p3_5 * r3_4_5 - p4_5
    cx[205] = p5_5 * r5_7_5 - p7_5
    cx[206] = p19_5 * r19_20_5 - p20_5
    cx[207] =
        p1_5 * p1_5 - p2_5 * p2_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_5 + p2_5)) * ((abs(q1_2_5))^(1.8539))
    cx[208] =
        p1_5 * p1_5 - p17_5 * p17_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_5 + p17_5)) * ((abs(q1_17_5))^(1.8539))
    cx[209] =
        p2_5 * p2_5 - p3_5 * p3_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_5 + p3_5)) * ((abs(q2_3_5))^(1.8539))
    cx[210] =
        p4_5 * p4_5 - p5_5 * p5_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_5 + p5_5)) * ((abs(q4_5_5))^(1.8539))
    cx[211] =
        p5_5 * p5_5 - p6_5 * p6_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_5 + p6_5)) * ((abs(q5_6_5))^(1.8539))
    cx[212] =
        p7_5 * p7_5 - p8_5 * p8_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_5 + p8_5)) * ((abs(q7_8_5))^(1.8539))
    cx[213] =
        p8_5 * p8_5 - p9_5 * p9_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_5 + p9_5)) * ((abs(q8_9_5))^(1.8539))
    cx[214] =
        p8_5 * p8_5 - p10_5 * p10_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_5 + p10_5)) * ((abs(q8_10_5))^(1.8539))
    cx[215] =
        p8_5 * p8_5 - p11_5 * p11_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_5 + p11_5)) * ((abs(q8_11_5))^(1.8539))
    cx[216] =
        p11_5 * p11_5 - p12_5 * p12_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_5 + p12_5)) * ((abs(q11_12_5))^(1.8539))
    cx[217] =
        p12_5 * p12_5 - p13_5 * p13_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_5 + p13_5)) * ((abs(q12_13_5))^(1.8539))
    cx[218] =
        p13_5 * p13_5 - p14_5 * p14_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_5 + p14_5)) * ((abs(q13_14_5))^(1.8539))
    cx[219] =
        p13_5 * p13_5 - p15_5 * p15_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_5 + p15_5)) * ((abs(q13_15_5))^(1.8539))
    cx[220] =
        p15_5 * p15_5 - p16_5 * p16_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_5 + p16_5)) * ((abs(q15_16_5))^(1.8539))
    cx[221] =
        p17_5 * p17_5 - p18_5 * p18_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_5 + p18_5)) * ((abs(q17_18_5))^(1.8539))
    cx[222] =
        p18_5 * p18_5 - p19_5 * p19_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_5 + p19_5)) * ((abs(q18_19_5))^(1.8539))
    cx[223] =
        p20_5 * p20_5 - p21_5 * p21_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_5 + p21_5)) * ((abs(q20_21_5))^(1.8539))
    cx[224] =
        p21_5 * p21_5 - p22_5 * p22_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_5 + p22_5)) * ((abs(q21_22_5))^(1.8539))
    cx[225] =
        p22_5 * p22_5 - p23_5 * p23_5 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_5 + p23_5)) * ((abs(q22_23_5))^(1.8539))
    cx[226] =
        p1_6 / ((1) + (1) * p1_6) - p1_5 / ((1) + (1) * p1_5) - (0.75) * q1_17_6 -
        (0.75) * q1_2_6 + in1_6 - (0.25) * q1_17_5 - (0.25) * q1_2_5
    cx[227] =
        p2_6 / ((1) + (1) * p2_6) - p2_5 / ((1) + (1) * p2_5) - (0.75) * q2_3_6 +
        (0.75) * q1_2_6 - (0.25) * q2_3_5 + (0.25) * q1_2_5 - 1
    cx[228] =
        p3_6 / ((1) + (1) * p3_6) - p3_5 / ((1) + (1) * p3_5) - f3_4_6 +
        (0.75) * q2_3_6 +
        (0.25) * q2_3_5
    cx[229] =
        p4_6 / ((1) + (1) * p4_6) - p4_5 / ((1) + (1) * p4_5) - (0.75) * q4_5_6 + f3_4_6 -
        (0.25) * q4_5_5
    cx[230] =
        p5_6 / ((1) + (1) * p5_6) - p5_5 / ((1) + (1) * p5_5) - (0.75) * q5_6_6 - f5_7_6 +
        (0.75) * q4_5_6 - (0.25) * q5_6_5 + (0.25) * q4_5_5
    cx[231] =
        p6_6 / ((1) + (1) * p6_6) - p6_5 / ((1) + (1) * p6_5) +
        (0.75) * q5_6_6 +
        (0.25) * q5_6_5 - 1
    cx[232] =
        p7_6 / ((1) + (1) * p7_6) - p7_5 / ((1) + (1) * p7_5) - (0.75) * q7_8_6 + f5_7_6 -
        (0.25) * q7_8_5
    cx[233] =
        p8_6 / ((1) + (1) * p8_6) - p8_5 / ((1) + (1) * p8_5) - (0.75) * q8_9_6 -
        (0.75) * q8_10_6 - (0.75) * q8_11_6 + (0.75) * q7_8_6 - (0.25) * q8_9_5 -
        (0.25) * q8_10_5 - (0.25) * q8_11_5 + (0.25) * q7_8_5
    cx[234] =
        p9_6 / ((1) + (1) * p9_6) - p9_5 / ((1) + (1) * p9_5) +
        (0.75) * q8_9_6 +
        (0.25) * q8_9_5
    cx[235] =
        p10_6 / ((1) + (1) * p10_6) - p10_5 / ((1) + (1) * p10_5) +
        (0.75) * q8_10_6 +
        (0.25) * q8_10_5 - 1
    cx[236] =
        p11_6 / ((1) + (1) * p11_6) - p11_5 / ((1) + (1) * p11_5) - (0.75) * q11_12_6 +
        (0.75) * q8_11_6 - (0.25) * q11_12_5 + (0.25) * q8_11_5
    cx[237] =
        p12_6 / ((1) + (1) * p12_6) - p12_5 / ((1) + (1) * p12_5) - (0.75) * q12_13_6 +
        (0.75) * q11_12_6 - (0.25) * q12_13_5 + (0.25) * q11_12_5
    cx[238] =
        p13_6 / ((1) + (1) * p13_6) - p13_5 / ((1) + (1) * p13_5) - (0.75) * q13_14_6 -
        (0.75) * q13_15_6 + (0.75) * q12_13_6 - (0.25) * q13_14_5 - (0.25) * q13_15_5 +
        (0.25) * q12_13_5 - 1
    cx[239] =
        p14_6 / ((1) + (1) * p14_6) - p14_5 / ((1) + (1) * p14_5) +
        (0.75) * q13_14_6 +
        (0.25) * q13_14_5
    cx[240] =
        p15_6 / ((1) + (1) * p15_6) - p15_5 / ((1) + (1) * p15_5) - (0.75) * q15_16_6 +
        (0.75) * q13_15_6 - (0.25) * q15_16_5 + (0.25) * q13_15_5 - 1
    cx[241] =
        p16_6 / ((1) + (1) * p16_6) - p16_5 / ((1) + (1) * p16_5) +
        (0.75) * q15_16_6 +
        (0.25) * q15_16_5 - out16_6
    cx[242] =
        p17_6 / ((1) + (1) * p17_6) - p17_5 / ((1) + (1) * p17_5) - (0.75) * q17_18_6 +
        (0.75) * q1_17_6 - (0.25) * q17_18_5 + (0.25) * q1_17_5 - 1
    cx[243] =
        p18_6 / ((1) + (1) * p18_6) - p18_5 / ((1) + (1) * p18_5) - (0.75) * q18_19_6 +
        (0.75) * q17_18_6 - (0.25) * q18_19_5 + (0.25) * q17_18_5 - 1
    cx[244] =
        p19_6 / ((1) + (1) * p19_6) - p19_5 / ((1) + (1) * p19_5) - f19_20_6 +
        (0.75) * q18_19_6 +
        (0.25) * q18_19_5
    cx[245] =
        p20_6 / ((1) + (1) * p20_6) - p20_5 / ((1) + (1) * p20_5) - (0.75) * q20_21_6 +
        f19_20_6 - (0.25) * q20_21_5
    cx[246] =
        p21_6 / ((1) + (1) * p21_6) - p21_5 / ((1) + (1) * p21_5) - (0.75) * q21_22_6 +
        (0.75) * q20_21_6 - (0.25) * q21_22_5 + (0.25) * q20_21_5 - 1
    cx[247] =
        p22_6 / ((1) + (1) * p22_6) - p22_5 / ((1) + (1) * p22_5) - (0.75) * q22_23_6 +
        (0.75) * q21_22_6 - (0.25) * q22_23_5 + (0.25) * q21_22_5 - 1
    cx[248] =
        p23_6 / ((1) + (1) * p23_6) - p23_5 / ((1) + (1) * p23_5) +
        (0.75) * q22_23_6 +
        (0.25) * q22_23_5 - out23_6
    cx[249] = p3_6 * r3_4_6 - p4_6
    cx[250] = p5_6 * r5_7_6 - p7_6
    cx[251] = p19_6 * r19_20_6 - p20_6
    cx[252] =
        p1_6 * p1_6 - p2_6 * p2_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_6 + p2_6)) * ((abs(q1_2_6))^(1.8539))
    cx[253] =
        p1_6 * p1_6 - p17_6 * p17_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_6 + p17_6)) * ((abs(q1_17_6))^(1.8539))
    cx[254] =
        p2_6 * p2_6 - p3_6 * p3_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_6 + p3_6)) * ((abs(q2_3_6))^(1.8539))
    cx[255] =
        p4_6 * p4_6 - p5_6 * p5_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_6 + p5_6)) * ((abs(q4_5_6))^(1.8539))
    cx[256] =
        p5_6 * p5_6 - p6_6 * p6_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_6 + p6_6)) * ((abs(q5_6_6))^(1.8539))
    cx[257] =
        p7_6 * p7_6 - p8_6 * p8_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_6 + p8_6)) * ((abs(q7_8_6))^(1.8539))
    cx[258] =
        p8_6 * p8_6 - p9_6 * p9_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_6 + p9_6)) * ((abs(q8_9_6))^(1.8539))
    cx[259] =
        p8_6 * p8_6 - p10_6 * p10_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_6 + p10_6)) * ((abs(q8_10_6))^(1.8539))
    cx[260] =
        p8_6 * p8_6 - p11_6 * p11_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_6 + p11_6)) * ((abs(q8_11_6))^(1.8539))
    cx[261] =
        p11_6 * p11_6 - p12_6 * p12_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_6 + p12_6)) * ((abs(q11_12_6))^(1.8539))
    cx[262] =
        p12_6 * p12_6 - p13_6 * p13_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_6 + p13_6)) * ((abs(q12_13_6))^(1.8539))
    cx[263] =
        p13_6 * p13_6 - p14_6 * p14_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_6 + p14_6)) * ((abs(q13_14_6))^(1.8539))
    cx[264] =
        p13_6 * p13_6 - p15_6 * p15_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_6 + p15_6)) * ((abs(q13_15_6))^(1.8539))
    cx[265] =
        p15_6 * p15_6 - p16_6 * p16_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_6 + p16_6)) * ((abs(q15_16_6))^(1.8539))
    cx[266] =
        p17_6 * p17_6 - p18_6 * p18_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_6 + p18_6)) * ((abs(q17_18_6))^(1.8539))
    cx[267] =
        p18_6 * p18_6 - p19_6 * p19_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_6 + p19_6)) * ((abs(q18_19_6))^(1.8539))
    cx[268] =
        p20_6 * p20_6 - p21_6 * p21_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_6 + p21_6)) * ((abs(q20_21_6))^(1.8539))
    cx[269] =
        p21_6 * p21_6 - p22_6 * p22_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_6 + p22_6)) * ((abs(q21_22_6))^(1.8539))
    cx[270] =
        p22_6 * p22_6 - p23_6 * p23_6 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_6 + p23_6)) * ((abs(q22_23_6))^(1.8539))
    cx[271] =
        p1_7 / ((1) + (1) * p1_7) - p1_6 / ((1) + (1) * p1_6) - (0.75) * q1_17_7 -
        (0.75) * q1_2_7 + in1_7 - (0.25) * q1_17_6 - (0.25) * q1_2_6
    cx[272] =
        p2_7 / ((1) + (1) * p2_7) - p2_6 / ((1) + (1) * p2_6) - (0.75) * q2_3_7 +
        (0.75) * q1_2_7 - (0.25) * q2_3_6 + (0.25) * q1_2_6 - 1
    cx[273] =
        p3_7 / ((1) + (1) * p3_7) - p3_6 / ((1) + (1) * p3_6) - f3_4_7 +
        (0.75) * q2_3_7 +
        (0.25) * q2_3_6
    cx[274] =
        p4_7 / ((1) + (1) * p4_7) - p4_6 / ((1) + (1) * p4_6) - (0.75) * q4_5_7 + f3_4_7 -
        (0.25) * q4_5_6
    cx[275] =
        p5_7 / ((1) + (1) * p5_7) - p5_6 / ((1) + (1) * p5_6) - (0.75) * q5_6_7 - f5_7_7 +
        (0.75) * q4_5_7 - (0.25) * q5_6_6 + (0.25) * q4_5_6
    cx[276] =
        p6_7 / ((1) + (1) * p6_7) - p6_6 / ((1) + (1) * p6_6) +
        (0.75) * q5_6_7 +
        (0.25) * q5_6_6 - 1
    cx[277] =
        p7_7 / ((1) + (1) * p7_7) - p7_6 / ((1) + (1) * p7_6) - (0.75) * q7_8_7 + f5_7_7 -
        (0.25) * q7_8_6
    cx[278] =
        p8_7 / ((1) + (1) * p8_7) - p8_6 / ((1) + (1) * p8_6) - (0.75) * q8_9_7 -
        (0.75) * q8_10_7 - (0.75) * q8_11_7 + (0.75) * q7_8_7 - (0.25) * q8_9_6 -
        (0.25) * q8_10_6 - (0.25) * q8_11_6 + (0.25) * q7_8_6
    cx[279] =
        p9_7 / ((1) + (1) * p9_7) - p9_6 / ((1) + (1) * p9_6) +
        (0.75) * q8_9_7 +
        (0.25) * q8_9_6
    cx[280] =
        p10_7 / ((1) + (1) * p10_7) - p10_6 / ((1) + (1) * p10_6) +
        (0.75) * q8_10_7 +
        (0.25) * q8_10_6 - 1
    cx[281] =
        p11_7 / ((1) + (1) * p11_7) - p11_6 / ((1) + (1) * p11_6) - (0.75) * q11_12_7 +
        (0.75) * q8_11_7 - (0.25) * q11_12_6 + (0.25) * q8_11_6
    cx[282] =
        p12_7 / ((1) + (1) * p12_7) - p12_6 / ((1) + (1) * p12_6) - (0.75) * q12_13_7 +
        (0.75) * q11_12_7 - (0.25) * q12_13_6 + (0.25) * q11_12_6
    cx[283] =
        p13_7 / ((1) + (1) * p13_7) - p13_6 / ((1) + (1) * p13_6) - (0.75) * q13_14_7 -
        (0.75) * q13_15_7 + (0.75) * q12_13_7 - (0.25) * q13_14_6 - (0.25) * q13_15_6 +
        (0.25) * q12_13_6 - 1
    cx[284] =
        p14_7 / ((1) + (1) * p14_7) - p14_6 / ((1) + (1) * p14_6) +
        (0.75) * q13_14_7 +
        (0.25) * q13_14_6
    cx[285] =
        p15_7 / ((1) + (1) * p15_7) - p15_6 / ((1) + (1) * p15_6) - (0.75) * q15_16_7 +
        (0.75) * q13_15_7 - (0.25) * q15_16_6 + (0.25) * q13_15_6 - 1
    cx[286] =
        p16_7 / ((1) + (1) * p16_7) - p16_6 / ((1) + (1) * p16_6) +
        (0.75) * q15_16_7 +
        (0.25) * q15_16_6 - out16_7
    cx[287] =
        p17_7 / ((1) + (1) * p17_7) - p17_6 / ((1) + (1) * p17_6) - (0.75) * q17_18_7 +
        (0.75) * q1_17_7 - (0.25) * q17_18_6 + (0.25) * q1_17_6 - 1
    cx[288] =
        p18_7 / ((1) + (1) * p18_7) - p18_6 / ((1) + (1) * p18_6) - (0.75) * q18_19_7 +
        (0.75) * q17_18_7 - (0.25) * q18_19_6 + (0.25) * q17_18_6 - 1
    cx[289] =
        p19_7 / ((1) + (1) * p19_7) - p19_6 / ((1) + (1) * p19_6) - f19_20_7 +
        (0.75) * q18_19_7 +
        (0.25) * q18_19_6
    cx[290] =
        p20_7 / ((1) + (1) * p20_7) - p20_6 / ((1) + (1) * p20_6) - (0.75) * q20_21_7 +
        f19_20_7 - (0.25) * q20_21_6
    cx[291] =
        p21_7 / ((1) + (1) * p21_7) - p21_6 / ((1) + (1) * p21_6) - (0.75) * q21_22_7 +
        (0.75) * q20_21_7 - (0.25) * q21_22_6 + (0.25) * q20_21_6 - 1
    cx[292] =
        p22_7 / ((1) + (1) * p22_7) - p22_6 / ((1) + (1) * p22_6) - (0.75) * q22_23_7 +
        (0.75) * q21_22_7 - (0.25) * q22_23_6 + (0.25) * q21_22_6 - 1
    cx[293] =
        p23_7 / ((1) + (1) * p23_7) - p23_6 / ((1) + (1) * p23_6) +
        (0.75) * q22_23_7 +
        (0.25) * q22_23_6 - out23_7
    cx[294] = p3_7 * r3_4_7 - p4_7
    cx[295] = p5_7 * r5_7_7 - p7_7
    cx[296] = p19_7 * r19_20_7 - p20_7
    cx[297] =
        p1_7 * p1_7 - p2_7 * p2_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_7 + p2_7)) * ((abs(q1_2_7))^(1.8539))
    cx[298] =
        p1_7 * p1_7 - p17_7 * p17_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_7 + p17_7)) * ((abs(q1_17_7))^(1.8539))
    cx[299] =
        p2_7 * p2_7 - p3_7 * p3_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_7 + p3_7)) * ((abs(q2_3_7))^(1.8539))
    cx[300] =
        p4_7 * p4_7 - p5_7 * p5_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_7 + p5_7)) * ((abs(q4_5_7))^(1.8539))
    cx[301] =
        p5_7 * p5_7 - p6_7 * p6_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_7 + p6_7)) * ((abs(q5_6_7))^(1.8539))
    cx[302] =
        p7_7 * p7_7 - p8_7 * p8_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_7 + p8_7)) * ((abs(q7_8_7))^(1.8539))
    cx[303] =
        p8_7 * p8_7 - p9_7 * p9_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_7 + p9_7)) * ((abs(q8_9_7))^(1.8539))
    cx[304] =
        p8_7 * p8_7 - p10_7 * p10_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_7 + p10_7)) * ((abs(q8_10_7))^(1.8539))
    cx[305] =
        p8_7 * p8_7 - p11_7 * p11_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_7 + p11_7)) * ((abs(q8_11_7))^(1.8539))
    cx[306] =
        p11_7 * p11_7 - p12_7 * p12_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_7 + p12_7)) * ((abs(q11_12_7))^(1.8539))
    cx[307] =
        p12_7 * p12_7 - p13_7 * p13_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_7 + p13_7)) * ((abs(q12_13_7))^(1.8539))
    cx[308] =
        p13_7 * p13_7 - p14_7 * p14_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_7 + p14_7)) * ((abs(q13_14_7))^(1.8539))
    cx[309] =
        p13_7 * p13_7 - p15_7 * p15_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_7 + p15_7)) * ((abs(q13_15_7))^(1.8539))
    cx[310] =
        p15_7 * p15_7 - p16_7 * p16_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_7 + p16_7)) * ((abs(q15_16_7))^(1.8539))
    cx[311] =
        p17_7 * p17_7 - p18_7 * p18_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_7 + p18_7)) * ((abs(q17_18_7))^(1.8539))
    cx[312] =
        p18_7 * p18_7 - p19_7 * p19_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_7 + p19_7)) * ((abs(q18_19_7))^(1.8539))
    cx[313] =
        p20_7 * p20_7 - p21_7 * p21_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_7 + p21_7)) * ((abs(q20_21_7))^(1.8539))
    cx[314] =
        p21_7 * p21_7 - p22_7 * p22_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_7 + p22_7)) * ((abs(q21_22_7))^(1.8539))
    cx[315] =
        p22_7 * p22_7 - p23_7 * p23_7 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_7 + p23_7)) * ((abs(q22_23_7))^(1.8539))
    cx[316] =
        p1_8 / ((1) + (1) * p1_8) - p1_7 / ((1) + (1) * p1_7) - (0.75) * q1_17_8 -
        (0.75) * q1_2_8 + in1_8 - (0.25) * q1_17_7 - (0.25) * q1_2_7
    cx[317] =
        p2_8 / ((1) + (1) * p2_8) - p2_7 / ((1) + (1) * p2_7) - (0.75) * q2_3_8 +
        (0.75) * q1_2_8 - (0.25) * q2_3_7 + (0.25) * q1_2_7 - 1
    cx[318] =
        p3_8 / ((1) + (1) * p3_8) - p3_7 / ((1) + (1) * p3_7) - f3_4_8 +
        (0.75) * q2_3_8 +
        (0.25) * q2_3_7
    cx[319] =
        p4_8 / ((1) + (1) * p4_8) - p4_7 / ((1) + (1) * p4_7) - (0.75) * q4_5_8 + f3_4_8 -
        (0.25) * q4_5_7
    cx[320] =
        p5_8 / ((1) + (1) * p5_8) - p5_7 / ((1) + (1) * p5_7) - (0.75) * q5_6_8 - f5_7_8 +
        (0.75) * q4_5_8 - (0.25) * q5_6_7 + (0.25) * q4_5_7
    cx[321] =
        p6_8 / ((1) + (1) * p6_8) - p6_7 / ((1) + (1) * p6_7) +
        (0.75) * q5_6_8 +
        (0.25) * q5_6_7 - 1
    cx[322] =
        p7_8 / ((1) + (1) * p7_8) - p7_7 / ((1) + (1) * p7_7) - (0.75) * q7_8_8 + f5_7_8 -
        (0.25) * q7_8_7
    cx[323] =
        p8_8 / ((1) + (1) * p8_8) - p8_7 / ((1) + (1) * p8_7) - (0.75) * q8_9_8 -
        (0.75) * q8_10_8 - (0.75) * q8_11_8 + (0.75) * q7_8_8 - (0.25) * q8_9_7 -
        (0.25) * q8_10_7 - (0.25) * q8_11_7 + (0.25) * q7_8_7
    cx[324] =
        p9_8 / ((1) + (1) * p9_8) - p9_7 / ((1) + (1) * p9_7) +
        (0.75) * q8_9_8 +
        (0.25) * q8_9_7
    cx[325] =
        p10_8 / ((1) + (1) * p10_8) - p10_7 / ((1) + (1) * p10_7) +
        (0.75) * q8_10_8 +
        (0.25) * q8_10_7 - 1
    cx[326] =
        p11_8 / ((1) + (1) * p11_8) - p11_7 / ((1) + (1) * p11_7) - (0.75) * q11_12_8 +
        (0.75) * q8_11_8 - (0.25) * q11_12_7 + (0.25) * q8_11_7
    cx[327] =
        p12_8 / ((1) + (1) * p12_8) - p12_7 / ((1) + (1) * p12_7) - (0.75) * q12_13_8 +
        (0.75) * q11_12_8 - (0.25) * q12_13_7 + (0.25) * q11_12_7
    cx[328] =
        p13_8 / ((1) + (1) * p13_8) - p13_7 / ((1) + (1) * p13_7) - (0.75) * q13_14_8 -
        (0.75) * q13_15_8 + (0.75) * q12_13_8 - (0.25) * q13_14_7 - (0.25) * q13_15_7 +
        (0.25) * q12_13_7 - 1
    cx[329] =
        p14_8 / ((1) + (1) * p14_8) - p14_7 / ((1) + (1) * p14_7) +
        (0.75) * q13_14_8 +
        (0.25) * q13_14_7
    cx[330] =
        p15_8 / ((1) + (1) * p15_8) - p15_7 / ((1) + (1) * p15_7) - (0.75) * q15_16_8 +
        (0.75) * q13_15_8 - (0.25) * q15_16_7 + (0.25) * q13_15_7 - 1
    cx[331] =
        p16_8 / ((1) + (1) * p16_8) - p16_7 / ((1) + (1) * p16_7) +
        (0.75) * q15_16_8 +
        (0.25) * q15_16_7 - out16_8
    cx[332] =
        p17_8 / ((1) + (1) * p17_8) - p17_7 / ((1) + (1) * p17_7) - (0.75) * q17_18_8 +
        (0.75) * q1_17_8 - (0.25) * q17_18_7 + (0.25) * q1_17_7 - 1
    cx[333] =
        p18_8 / ((1) + (1) * p18_8) - p18_7 / ((1) + (1) * p18_7) - (0.75) * q18_19_8 +
        (0.75) * q17_18_8 - (0.25) * q18_19_7 + (0.25) * q17_18_7 - 1
    cx[334] =
        p19_8 / ((1) + (1) * p19_8) - p19_7 / ((1) + (1) * p19_7) - f19_20_8 +
        (0.75) * q18_19_8 +
        (0.25) * q18_19_7
    cx[335] =
        p20_8 / ((1) + (1) * p20_8) - p20_7 / ((1) + (1) * p20_7) - (0.75) * q20_21_8 +
        f19_20_8 - (0.25) * q20_21_7
    cx[336] =
        p21_8 / ((1) + (1) * p21_8) - p21_7 / ((1) + (1) * p21_7) - (0.75) * q21_22_8 +
        (0.75) * q20_21_8 - (0.25) * q21_22_7 + (0.25) * q20_21_7 - 1
    cx[337] =
        p22_8 / ((1) + (1) * p22_8) - p22_7 / ((1) + (1) * p22_7) - (0.75) * q22_23_8 +
        (0.75) * q21_22_8 - (0.25) * q22_23_7 + (0.25) * q21_22_7 - 1
    cx[338] =
        p23_8 / ((1) + (1) * p23_8) - p23_7 / ((1) + (1) * p23_7) +
        (0.75) * q22_23_8 +
        (0.25) * q22_23_7 - out23_8
    cx[339] = p3_8 * r3_4_8 - p4_8
    cx[340] = p5_8 * r5_7_8 - p7_8
    cx[341] = p19_8 * r19_20_8 - p20_8
    cx[342] =
        p1_8 * p1_8 - p2_8 * p2_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_8 + p2_8)) * ((abs(q1_2_8))^(1.8539))
    cx[343] =
        p1_8 * p1_8 - p17_8 * p17_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p1_8 + p17_8)) * ((abs(q1_17_8))^(1.8539))
    cx[344] =
        p2_8 * p2_8 - p3_8 * p3_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p2_8 + p3_8)) * ((abs(q2_3_8))^(1.8539))
    cx[345] =
        p4_8 * p4_8 - p5_8 * p5_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p4_8 + p5_8)) * ((abs(q4_5_8))^(1.8539))
    cx[346] =
        p5_8 * p5_8 - p6_8 * p6_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p5_8 + p6_8)) * ((abs(q5_6_8))^(1.8539))
    cx[347] =
        p7_8 * p7_8 - p8_8 * p8_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p7_8 + p8_8)) * ((abs(q7_8_8))^(1.8539))
    cx[348] =
        p8_8 * p8_8 - p9_8 * p9_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_8 + p9_8)) * ((abs(q8_9_8))^(1.8539))
    cx[349] =
        p8_8 * p8_8 - p10_8 * p10_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_8 + p10_8)) * ((abs(q8_10_8))^(1.8539))
    cx[350] =
        p8_8 * p8_8 - p11_8 * p11_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p8_8 + p11_8)) * ((abs(q8_11_8))^(1.8539))
    cx[351] =
        p11_8 * p11_8 - p12_8 * p12_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p11_8 + p12_8)) * ((abs(q11_12_8))^(1.8539))
    cx[352] =
        p12_8 * p12_8 - p13_8 * p13_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p12_8 + p13_8)) * ((abs(q12_13_8))^(1.8539))
    cx[353] =
        p13_8 * p13_8 - p14_8 * p14_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_8 + p14_8)) * ((abs(q13_14_8))^(1.8539))
    cx[354] =
        p13_8 * p13_8 - p15_8 * p15_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p13_8 + p15_8)) * ((abs(q13_15_8))^(1.8539))
    cx[355] =
        p15_8 * p15_8 - p16_8 * p16_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p15_8 + p16_8)) * ((abs(q15_16_8))^(1.8539))
    cx[356] =
        p17_8 * p17_8 - p18_8 * p18_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p17_8 + p18_8)) * ((abs(q17_18_8))^(1.8539))
    cx[357] =
        p18_8 * p18_8 - p19_8 * p19_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p18_8 + p19_8)) * ((abs(q18_19_8))^(1.8539))
    cx[358] =
        p20_8 * p20_8 - p21_8 * p21_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p20_8 + p21_8)) * ((abs(q20_21_8))^(1.8539))
    cx[359] =
        p21_8 * p21_8 - p22_8 * p22_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p21_8 + p22_8)) * ((abs(q21_22_8))^(1.8539))
    cx[360] =
        p22_8 * p22_8 - p23_8 * p23_8 -
        (0.01) * ((1) + ((0.5) * 1) * (p22_8 + p23_8)) * ((abs(q22_23_8))^(1.8539))
    return cx
end

sum_britgas_cons(x) = sum(britgas_cons(x))

x0 = rand(450);
britgas_cons(x0);
@test_opt britgas_cons(x0)

@time "first jacobian" jacobian_sparsity(britgas_cons, x0, TracerSparsityDetector());  # slow
@time "second jacobian" jacobian_sparsity(britgas_cons, x0, TracerSparsityDetector());  # fast

@time "first hessian" hessian_sparsity(sum_britgas_cons, x0, TracerSparsityDetector());  # slow
@time "second hessian" hessian_sparsity(sum_britgas_cons, x0, TracerSparsityDetector());  # fast

@adrhill
Copy link
Owner Author

adrhill commented Jun 13, 2024

The "full" britgas problem runs faster on my machine than this mini-problem:

14.769234 seconds (8.41 M allocations: 484.589 MiB, 0.50% gc time, 99.95% compilation time)
15.219974 seconds (8.41 M allocations: 484.589 MiB, 0.48% gc time, 99.96% compilation time) 
16.562849 seconds (8.41 M allocations: 484.589 MiB, 0.50% gc time, 99.95% compilation time)

Your mini-britgas:

23.252536 seconds (2.10 M allocations: 118.969 MiB, 0.06% gc time, 100.00% compilation time)
22.034344 seconds (2.10 M allocations: 118.971 MiB, 0.06% gc time, 100.00% compilation time)
using SparseConnectivityTracer
using ADTypes
using Infiltrator

using Pkg
# Pkg.add(; name="ADNLPModels", version="0.7")
# Pkg.add(; name="OptimizationProblems", version="0.7")

using ADNLPModels
using OptimizationProblems
using NLPModels
using NLPModelsJuMP
using LinearAlgebra

cons!
T = Float64

function c!(cx, x)
    p1_0, p2_0, p3_0, p4_0, p5_0, p6_0, p7_0, p8_0, p9_0, p10_0, p11_0, p12_0, p13_0, p14_0, p15_0, p16_0, p17_0, p18_0, p19_0, p20_0, p21_0, p22_0, p23_0, p1_1, p2_1, p3_1, p4_1, p5_1, p6_1, p7_1, p8_1, p9_1, p10_1, p11_1, p12_1, p13_1, p14_1, p15_1, p16_1, p17_1, p18_1, p19_1, p20_1, p21_1, p22_1, p23_1, p1_2, p2_2, p3_2, p4_2, p5_2, p6_2, p7_2, p8_2, p9_2, p10_2, p11_2, p12_2, p13_2, p14_2, p15_2, p16_2, p17_2, p18_2, p19_2, p20_2, p21_2, p22_2, p23_2, p1_3, p2_3, p3_3, p4_3, p5_3, p6_3, p7_3, p8_3, p9_3, p10_3, p11_3, p12_3, p13_3, p14_3, p15_3, p16_3, p17_3, p18_3, p19_3, p20_3, p21_3, p22_3, p23_3, p1_4, p2_4, p3_4, p4_4, p5_4, p6_4, p7_4, p8_4, p9_4, p10_4, p11_4, p12_4, p13_4, p14_4, p15_4, p16_4, p17_4, p18_4, p19_4, p20_4, p21_4, p22_4, p23_4, p1_5, p2_5, p3_5, p4_5, p5_5, p6_5, p7_5, p8_5, p9_5, p10_5, p11_5, p12_5, p13_5, p14_5, p15_5, p16_5, p17_5, p18_5, p19_5, p20_5, p21_5, p22_5, p23_5, p1_6, p2_6, p3_6, p4_6, p5_6, p6_6, p7_6, p8_6, p9_6, p10_6, p11_6, p12_6, p13_6, p14_6, p15_6, p16_6, p17_6, p18_6, p19_6, p20_6, p21_6, p22_6, p23_6, p1_7, p2_7, p3_7, p4_7, p5_7, p6_7, p7_7, p8_7, p9_7, p10_7, p11_7, p12_7, p13_7, p14_7, p15_7, p16_7, p17_7, p18_7, p19_7, p20_7, p21_7, p22_7, p23_7, p1_8, p2_8, p3_8, p4_8, p5_8, p6_8, p7_8, p8_8, p9_8, p10_8, p11_8, p12_8, p13_8, p14_8, p15_8, p16_8, p17_8, p18_8, p19_8, p20_8, p21_8, p22_8, p23_8, q1_2_0, q1_17_0, q2_3_0, q4_5_0, q5_6_0, q7_8_0, q8_9_0, q8_10_0, q8_11_0, q11_12_0, q12_13_0, q13_14_0, q13_15_0, q15_16_0, q17_18_0, q18_19_0, q20_21_0, q21_22_0, q22_23_0, q1_2_1, q1_17_1, q2_3_1, q4_5_1, q5_6_1, q7_8_1, q8_9_1, q8_10_1, q8_11_1, q11_12_1, q12_13_1, q13_14_1, q13_15_1, q15_16_1, q17_18_1, q18_19_1, q20_21_1, q21_22_1, q22_23_1, q1_2_2, q1_17_2, q2_3_2, q4_5_2, q5_6_2, q7_8_2, q8_9_2, q8_10_2, q8_11_2, q11_12_2, q12_13_2, q13_14_2, q13_15_2, q15_16_2, q17_18_2, q18_19_2, q20_21_2, q21_22_2, q22_23_2, q1_2_3, q1_17_3, q2_3_3, q4_5_3, q5_6_3, q7_8_3, q8_9_3, q8_10_3, q8_11_3, q11_12_3, q12_13_3, q13_14_3, q13_15_3, q15_16_3, q17_18_3, q18_19_3, q20_21_3, q21_22_3, q22_23_3, q1_2_4, q1_17_4, q2_3_4, q4_5_4, q5_6_4, q7_8_4, q8_9_4, q8_10_4, q8_11_4, q11_12_4, q12_13_4, q13_14_4, q13_15_4, q15_16_4, q17_18_4, q18_19_4, q20_21_4, q21_22_4, q22_23_4, q1_2_5, q1_17_5, q2_3_5, q4_5_5, q5_6_5, q7_8_5, q8_9_5, q8_10_5, q8_11_5, q11_12_5, q12_13_5, q13_14_5, q13_15_5, q15_16_5, q17_18_5, q18_19_5, q20_21_5, q21_22_5, q22_23_5, q1_2_6, q1_17_6, q2_3_6, q4_5_6, q5_6_6, q7_8_6, q8_9_6, q8_10_6, q8_11_6, q11_12_6, q12_13_6, q13_14_6, q13_15_6, q15_16_6, q17_18_6, q18_19_6, q20_21_6, q21_22_6, q22_23_6, q1_2_7, q1_17_7, q2_3_7, q4_5_7, q5_6_7, q7_8_7, q8_9_7, q8_10_7, q8_11_7, q11_12_7, q12_13_7, q13_14_7, q13_15_7, q15_16_7, q17_18_7, q18_19_7, q20_21_7, q21_22_7, q22_23_7, q1_2_8, q1_17_8, q2_3_8, q4_5_8, q5_6_8, q7_8_8, q8_9_8, q8_10_8, q8_11_8, q11_12_8, q12_13_8, q13_14_8, q13_15_8, q15_16_8, q17_18_8, q18_19_8, q20_21_8, q21_22_8, q22_23_8, f3_4_1, f5_7_1, f19_20_1, r3_4_1, r5_7_1, r19_20_1, f3_4_2, f5_7_2, f19_20_2, r3_4_2, r5_7_2, r19_20_2, f3_4_3, f5_7_3, f19_20_3, r3_4_3, r5_7_3, r19_20_3, f3_4_4, f5_7_4, f19_20_4, r3_4_4, r5_7_4, r19_20_4, f3_4_5, f5_7_5, f19_20_5, r3_4_5, r5_7_5, r19_20_5, f3_4_6, f5_7_6, f19_20_6, r3_4_6, r5_7_6, r19_20_6, f3_4_7, f5_7_7, f19_20_7, r3_4_7, r5_7_7, r19_20_7, f3_4_8, f5_7_8, f19_20_8, r3_4_8, r5_7_8, r19_20_8, in1_1, out16_1, out23_1, in1_2, out16_2, out23_2, in1_3, out16_3, out23_3, in1_4, out16_4, out23_4, in1_5, out16_5, out23_5, in1_6, out16_6, out23_6, in1_7, out16_7, out23_7, in1_8, out16_8, out23_8 = x[1],
    x[2],
    x[3],
    x[4],
    x[5],
    x[6],
    x[7],
    x[8],
    x[9],
    x[10],
    x[11],
    x[12],
    x[13],
    x[14],
    x[15],
    x[16],
    x[17],
    x[18],
    x[19],
    x[20],
    x[21],
    x[22],
    x[23],
    x[24],
    x[25],
    x[26],
    x[27],
    x[28],
    x[29],
    x[30],
    x[31],
    x[32],
    x[33],
    x[34],
    x[35],
    x[36],
    x[37],
    x[38],
    x[39],
    x[40],
    x[41],
    x[42],
    x[43],
    x[44],
    x[45],
    x[46],
    x[47],
    x[48],
    x[49],
    x[50],
    x[51],
    x[52],
    x[53],
    x[54],
    x[55],
    x[56],
    x[57],
    x[58],
    x[59],
    x[60],
    x[61],
    x[62],
    x[63],
    x[64],
    x[65],
    x[66],
    x[67],
    x[68],
    x[69],
    x[70],
    x[71],
    x[72],
    x[73],
    x[74],
    x[75],
    x[76],
    x[77],
    x[78],
    x[79],
    x[80],
    x[81],
    x[82],
    x[83],
    x[84],
    x[85],
    x[86],
    x[87],
    x[88],
    x[89],
    x[90],
    x[91],
    x[92],
    x[93],
    x[94],
    x[95],
    x[96],
    x[97],
    x[98],
    x[99],
    x[100],
    x[101],
    x[102],
    x[103],
    x[104],
    x[105],
    x[106],
    x[107],
    x[108],
    x[109],
    x[110],
    x[111],
    x[112],
    x[113],
    x[114],
    x[115],
    x[116],
    x[117],
    x[118],
    x[119],
    x[120],
    x[121],
    x[122],
    x[123],
    x[124],
    x[125],
    x[126],
    x[127],
    x[128],
    x[129],
    x[130],
    x[131],
    x[132],
    x[133],
    x[134],
    x[135],
    x[136],
    x[137],
    x[138],
    x[139],
    x[140],
    x[141],
    x[142],
    x[143],
    x[144],
    x[145],
    x[146],
    x[147],
    x[148],
    x[149],
    x[150],
    x[151],
    x[152],
    x[153],
    x[154],
    x[155],
    x[156],
    x[157],
    x[158],
    x[159],
    x[160],
    x[161],
    x[162],
    x[163],
    x[164],
    x[165],
    x[166],
    x[167],
    x[168],
    x[169],
    x[170],
    x[171],
    x[172],
    x[173],
    x[174],
    x[175],
    x[176],
    x[177],
    x[178],
    x[179],
    x[180],
    x[181],
    x[182],
    x[183],
    x[184],
    x[185],
    x[186],
    x[187],
    x[188],
    x[189],
    x[190],
    x[191],
    x[192],
    x[193],
    x[194],
    x[195],
    x[196],
    x[197],
    x[198],
    x[199],
    x[200],
    x[201],
    x[202],
    x[203],
    x[204],
    x[205],
    x[206],
    x[207],
    x[208],
    x[209],
    x[210],
    x[211],
    x[212],
    x[213],
    x[214],
    x[215],
    x[216],
    x[217],
    x[218],
    x[219],
    x[220],
    x[221],
    x[222],
    x[223],
    x[224],
    x[225],
    x[226],
    x[227],
    x[228],
    x[229],
    x[230],
    x[231],
    x[232],
    x[233],
    x[234],
    x[235],
    x[236],
    x[237],
    x[238],
    x[239],
    x[240],
    x[241],
    x[242],
    x[243],
    x[244],
    x[245],
    x[246],
    x[247],
    x[248],
    x[249],
    x[250],
    x[251],
    x[252],
    x[253],
    x[254],
    x[255],
    x[256],
    x[257],
    x[258],
    x[259],
    x[260],
    x[261],
    x[262],
    x[263],
    x[264],
    x[265],
    x[266],
    x[267],
    x[268],
    x[269],
    x[270],
    x[271],
    x[272],
    x[273],
    x[274],
    x[275],
    x[276],
    x[277],
    x[278],
    x[279],
    x[280],
    x[281],
    x[282],
    x[283],
    x[284],
    x[285],
    x[286],
    x[287],
    x[288],
    x[289],
    x[290],
    x[291],
    x[292],
    x[293],
    x[294],
    x[295],
    x[296],
    x[297],
    x[298],
    x[299],
    x[300],
    x[301],
    x[302],
    x[303],
    x[304],
    x[305],
    x[306],
    x[307],
    x[308],
    x[309],
    x[310],
    x[311],
    x[312],
    x[313],
    x[314],
    x[315],
    x[316],
    x[317],
    x[318],
    x[319],
    x[320],
    x[321],
    x[322],
    x[323],
    x[324],
    x[325],
    x[326],
    x[327],
    x[328],
    x[329],
    x[330],
    x[331],
    x[332],
    x[333],
    x[334],
    x[335],
    x[336],
    x[337],
    x[338],
    x[339],
    x[340],
    x[341],
    x[342],
    x[343],
    x[344],
    x[345],
    x[346],
    x[347],
    x[348],
    x[349],
    x[350],
    x[351],
    x[352],
    x[353],
    x[354],
    x[355],
    x[356],
    x[357],
    x[358],
    x[359],
    x[360],
    x[361],
    x[362],
    x[363],
    x[364],
    x[365],
    x[366],
    x[367],
    x[368],
    x[369],
    x[370],
    x[371],
    x[372],
    x[373],
    x[374],
    x[375],
    x[376],
    x[377],
    x[378],
    x[379],
    x[380],
    x[381],
    x[382],
    x[383],
    x[384],
    x[385],
    x[386],
    x[387],
    x[388],
    x[389],
    x[390],
    x[391],
    x[392],
    x[393],
    x[394],
    x[395],
    x[396],
    x[397],
    x[398],
    x[399],
    x[400],
    x[401],
    x[402],
    x[403],
    x[404],
    x[405],
    x[406],
    x[407],
    x[408],
    x[409],
    x[410],
    x[411],
    x[412],
    x[413],
    x[414],
    x[415],
    x[416],
    x[417],
    x[418],
    x[419],
    x[420],
    x[421],
    x[422],
    x[423],
    x[424],
    x[425],
    x[426],
    x[427],
    x[428],
    x[429],
    x[430],
    x[431],
    x[432],
    x[433],
    x[434],
    x[435],
    x[436],
    x[437],
    x[438],
    x[439],
    x[440],
    x[441],
    x[442],
    x[443],
    x[444],
    x[445],
    x[446],
    x[447],
    x[448],
    x[449],
    x[450]
    @info "asdf"
    cx[1] =
        p1_1 / ((1) + (1) * p1_1) - p1_0 / ((1) + (1) * p1_0) - T(0.75) * q1_17_1 -
        T(0.75) * q1_2_1 + in1_1 - T(0.25) * q1_17_0 - T(0.25) * q1_2_0
    @info "Computed cx1"
    cx[2] =
        p2_1 / ((1) + (1) * p2_1) - p2_0 / ((1) + (1) * p2_0) - T(0.75) * q2_3_1 +
        T(0.75) * q1_2_1 - T(0.25) * q2_3_0 + T(0.25) * q1_2_0 - 1
    cx[3] =
        p3_1 / ((1) + (1) * p3_1) - p3_0 / ((1) + (1) * p3_0) - f3_4_1 +
        T(0.75) * q2_3_1 +
        T(0.25) * q2_3_0
    cx[4] =
        p4_1 / ((1) + (1) * p4_1) - p4_0 / ((1) + (1) * p4_0) - T(0.75) * q4_5_1 + f3_4_1 -
        T(0.25) * q4_5_0
    cx[5] =
        p5_1 / ((1) + (1) * p5_1) - p5_0 / ((1) + (1) * p5_0) - T(0.75) * q5_6_1 - f5_7_1 +
        T(0.75) * q4_5_1 - T(0.25) * q5_6_0 + T(0.25) * q4_5_0
    cx[6] =
        p6_1 / ((1) + (1) * p6_1) - p6_0 / ((1) + (1) * p6_0) +
        T(0.75) * q5_6_1 +
        T(0.25) * q5_6_0 - 1
    cx[7] =
        p7_1 / ((1) + (1) * p7_1) - p7_0 / ((1) + (1) * p7_0) - T(0.75) * q7_8_1 + f5_7_1 -
        T(0.25) * q7_8_0
    cx[8] =
        p8_1 / ((1) + (1) * p8_1) - p8_0 / ((1) + (1) * p8_0) - T(0.75) * q8_9_1 -
        T(0.75) * q8_10_1 - T(0.75) * q8_11_1 + T(0.75) * q7_8_1 - T(0.25) * q8_9_0 -
        T(0.25) * q8_10_0 - T(0.25) * q8_11_0 + T(0.25) * q7_8_0
    cx[9] =
        p9_1 / ((1) + (1) * p9_1) - p9_0 / ((1) + (1) * p9_0) +
        T(0.75) * q8_9_1 +
        T(0.25) * q8_9_0
    cx[10] =
        p10_1 / ((1) + (1) * p10_1) - p10_0 / ((1) + (1) * p10_0) +
        T(0.75) * q8_10_1 +
        T(0.25) * q8_10_0 - 1
    cx[11] =
        p11_1 / ((1) + (1) * p11_1) - p11_0 / ((1) + (1) * p11_0) - T(0.75) * q11_12_1 +
        T(0.75) * q8_11_1 - T(0.25) * q11_12_0 + T(0.25) * q8_11_0
    cx[12] =
        p12_1 / ((1) + (1) * p12_1) - p12_0 / ((1) + (1) * p12_0) - T(0.75) * q12_13_1 +
        T(0.75) * q11_12_1 - T(0.25) * q12_13_0 + T(0.25) * q11_12_0
    cx[13] =
        p13_1 / ((1) + (1) * p13_1) - p13_0 / ((1) + (1) * p13_0) - T(0.75) * q13_14_1 -
        T(0.75) * q13_15_1 + T(0.75) * q12_13_1 - T(0.25) * q13_14_0 - T(0.25) * q13_15_0 +
        T(0.25) * q12_13_0 - 1
    cx[14] =
        p14_1 / ((1) + (1) * p14_1) - p14_0 / ((1) + (1) * p14_0) +
        T(0.75) * q13_14_1 +
        T(0.25) * q13_14_0
    cx[15] =
        p15_1 / ((1) + (1) * p15_1) - p15_0 / ((1) + (1) * p15_0) - T(0.75) * q15_16_1 +
        T(0.75) * q13_15_1 - T(0.25) * q15_16_0 + T(0.25) * q13_15_0 - 1
    cx[16] =
        p16_1 / ((1) + (1) * p16_1) - p16_0 / ((1) + (1) * p16_0) +
        T(0.75) * q15_16_1 +
        T(0.25) * q15_16_0 - out16_1
    cx[17] =
        p17_1 / ((1) + (1) * p17_1) - p17_0 / ((1) + (1) * p17_0) - T(0.75) * q17_18_1 +
        T(0.75) * q1_17_1 - T(0.25) * q17_18_0 + T(0.25) * q1_17_0 - 1
    cx[18] =
        p18_1 / ((1) + (1) * p18_1) - p18_0 / ((1) + (1) * p18_0) - T(0.75) * q18_19_1 +
        T(0.75) * q17_18_1 - T(0.25) * q18_19_0 + T(0.25) * q17_18_0 - 1
    cx[19] =
        p19_1 / ((1) + (1) * p19_1) - p19_0 / ((1) + (1) * p19_0) - f19_20_1 +
        T(0.75) * q18_19_1 +
        T(0.25) * q18_19_0
    cx[20] =
        p20_1 / ((1) + (1) * p20_1) - p20_0 / ((1) + (1) * p20_0) - T(0.75) * q20_21_1 +
        f19_20_1 - T(0.25) * q20_21_0
    cx[21] =
        p21_1 / ((1) + (1) * p21_1) - p21_0 / ((1) + (1) * p21_0) - T(0.75) * q21_22_1 +
        T(0.75) * q20_21_1 - T(0.25) * q21_22_0 + T(0.25) * q20_21_0 - 1
    cx[22] =
        p22_1 / ((1) + (1) * p22_1) - p22_0 / ((1) + (1) * p22_0) - T(0.75) * q22_23_1 +
        T(0.75) * q21_22_1 - T(0.25) * q22_23_0 + T(0.25) * q21_22_0 - 1
    cx[23] =
        p23_1 / ((1) + (1) * p23_1) - p23_0 / ((1) + (1) * p23_0) +
        T(0.75) * q22_23_1 +
        T(0.25) * q22_23_0 - out23_1
    cx[24] = p3_1 * r3_4_1 - p4_1
    cx[25] = p5_1 * r5_7_1 - p7_1
    cx[26] = p19_1 * r19_20_1 - p20_1
    cx[27] =
        p1_1 * p1_1 - p2_1 * p2_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_1 + p2_1)) * ((abs(q1_2_1))^T(1.8539))
    cx[28] =
        p1_1 * p1_1 - p17_1 * p17_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_1 + p17_1)) * ((abs(q1_17_1))^T(1.8539))
    cx[29] =
        p2_1 * p2_1 - p3_1 * p3_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_1 + p3_1)) * ((abs(q2_3_1))^T(1.8539))
    cx[30] =
        p4_1 * p4_1 - p5_1 * p5_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_1 + p5_1)) * ((abs(q4_5_1))^T(1.8539))
    cx[31] =
        p5_1 * p5_1 - p6_1 * p6_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_1 + p6_1)) * ((abs(q5_6_1))^T(1.8539))
    cx[32] =
        p7_1 * p7_1 - p8_1 * p8_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_1 + p8_1)) * ((abs(q7_8_1))^T(1.8539))
    cx[33] =
        p8_1 * p8_1 - p9_1 * p9_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_1 + p9_1)) * ((abs(q8_9_1))^T(1.8539))
    cx[34] =
        p8_1 * p8_1 - p10_1 * p10_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_1 + p10_1)) * ((abs(q8_10_1))^T(1.8539))
    cx[35] =
        p8_1 * p8_1 - p11_1 * p11_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_1 + p11_1)) * ((abs(q8_11_1))^T(1.8539))
    cx[36] =
        p11_1 * p11_1 - p12_1 * p12_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_1 + p12_1)) * ((abs(q11_12_1))^T(1.8539))
    cx[37] =
        p12_1 * p12_1 - p13_1 * p13_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_1 + p13_1)) * ((abs(q12_13_1))^T(1.8539))
    cx[38] =
        p13_1 * p13_1 - p14_1 * p14_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_1 + p14_1)) * ((abs(q13_14_1))^T(1.8539))
    cx[39] =
        p13_1 * p13_1 - p15_1 * p15_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_1 + p15_1)) * ((abs(q13_15_1))^T(1.8539))
    cx[40] =
        p15_1 * p15_1 - p16_1 * p16_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_1 + p16_1)) * ((abs(q15_16_1))^T(1.8539))
    cx[41] =
        p17_1 * p17_1 - p18_1 * p18_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_1 + p18_1)) * ((abs(q17_18_1))^T(1.8539))
    cx[42] =
        p18_1 * p18_1 - p19_1 * p19_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_1 + p19_1)) * ((abs(q18_19_1))^T(1.8539))
    cx[43] =
        p20_1 * p20_1 - p21_1 * p21_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_1 + p21_1)) * ((abs(q20_21_1))^T(1.8539))
    cx[44] =
        p21_1 * p21_1 - p22_1 * p22_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_1 + p22_1)) * ((abs(q21_22_1))^T(1.8539))
    cx[45] =
        p22_1 * p22_1 - p23_1 * p23_1 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_1 + p23_1)) * ((abs(q22_23_1))^T(1.8539))
    cx[46] =
        p1_2 / ((1) + (1) * p1_2) - p1_1 / ((1) + (1) * p1_1) - T(0.75) * q1_17_2 -
        T(0.75) * q1_2_2 + in1_2 - T(0.25) * q1_17_1 - T(0.25) * q1_2_1
    cx[47] =
        p2_2 / ((1) + (1) * p2_2) - p2_1 / ((1) + (1) * p2_1) - T(0.75) * q2_3_2 +
        T(0.75) * q1_2_2 - T(0.25) * q2_3_1 + T(0.25) * q1_2_1 - 1
    cx[48] =
        p3_2 / ((1) + (1) * p3_2) - p3_1 / ((1) + (1) * p3_1) - f3_4_2 +
        T(0.75) * q2_3_2 +
        T(0.25) * q2_3_1
    cx[49] =
        p4_2 / ((1) + (1) * p4_2) - p4_1 / ((1) + (1) * p4_1) - T(0.75) * q4_5_2 + f3_4_2 -
        T(0.25) * q4_5_1
    cx[50] =
        p5_2 / ((1) + (1) * p5_2) - p5_1 / ((1) + (1) * p5_1) - T(0.75) * q5_6_2 - f5_7_2 +
        T(0.75) * q4_5_2 - T(0.25) * q5_6_1 + T(0.25) * q4_5_1
    cx[51] =
        p6_2 / ((1) + (1) * p6_2) - p6_1 / ((1) + (1) * p6_1) +
        T(0.75) * q5_6_2 +
        T(0.25) * q5_6_1 - 1
    cx[52] =
        p7_2 / ((1) + (1) * p7_2) - p7_1 / ((1) + (1) * p7_1) - T(0.75) * q7_8_2 + f5_7_2 -
        T(0.25) * q7_8_1
    cx[53] =
        p8_2 / ((1) + (1) * p8_2) - p8_1 / ((1) + (1) * p8_1) - T(0.75) * q8_9_2 -
        T(0.75) * q8_10_2 - T(0.75) * q8_11_2 + T(0.75) * q7_8_2 - T(0.25) * q8_9_1 -
        T(0.25) * q8_10_1 - T(0.25) * q8_11_1 + T(0.25) * q7_8_1
    cx[54] =
        p9_2 / ((1) + (1) * p9_2) - p9_1 / ((1) + (1) * p9_1) +
        T(0.75) * q8_9_2 +
        T(0.25) * q8_9_1
    cx[55] =
        p10_2 / ((1) + (1) * p10_2) - p10_1 / ((1) + (1) * p10_1) +
        T(0.75) * q8_10_2 +
        T(0.25) * q8_10_1 - 1
    cx[56] =
        p11_2 / ((1) + (1) * p11_2) - p11_1 / ((1) + (1) * p11_1) - T(0.75) * q11_12_2 +
        T(0.75) * q8_11_2 - T(0.25) * q11_12_1 + T(0.25) * q8_11_1
    cx[57] =
        p12_2 / ((1) + (1) * p12_2) - p12_1 / ((1) + (1) * p12_1) - T(0.75) * q12_13_2 +
        T(0.75) * q11_12_2 - T(0.25) * q12_13_1 + T(0.25) * q11_12_1
    cx[58] =
        p13_2 / ((1) + (1) * p13_2) - p13_1 / ((1) + (1) * p13_1) - T(0.75) * q13_14_2 -
        T(0.75) * q13_15_2 + T(0.75) * q12_13_2 - T(0.25) * q13_14_1 - T(0.25) * q13_15_1 +
        T(0.25) * q12_13_1 - 1
    cx[59] =
        p14_2 / ((1) + (1) * p14_2) - p14_1 / ((1) + (1) * p14_1) +
        T(0.75) * q13_14_2 +
        T(0.25) * q13_14_1
    cx[60] =
        p15_2 / ((1) + (1) * p15_2) - p15_1 / ((1) + (1) * p15_1) - T(0.75) * q15_16_2 +
        T(0.75) * q13_15_2 - T(0.25) * q15_16_1 + T(0.25) * q13_15_1 - 1
    cx[61] =
        p16_2 / ((1) + (1) * p16_2) - p16_1 / ((1) + (1) * p16_1) +
        T(0.75) * q15_16_2 +
        T(0.25) * q15_16_1 - out16_2
    cx[62] =
        p17_2 / ((1) + (1) * p17_2) - p17_1 / ((1) + (1) * p17_1) - T(0.75) * q17_18_2 +
        T(0.75) * q1_17_2 - T(0.25) * q17_18_1 + T(0.25) * q1_17_1 - 1
    cx[63] =
        p18_2 / ((1) + (1) * p18_2) - p18_1 / ((1) + (1) * p18_1) - T(0.75) * q18_19_2 +
        T(0.75) * q17_18_2 - T(0.25) * q18_19_1 + T(0.25) * q17_18_1 - 1
    cx[64] =
        p19_2 / ((1) + (1) * p19_2) - p19_1 / ((1) + (1) * p19_1) - f19_20_2 +
        T(0.75) * q18_19_2 +
        T(0.25) * q18_19_1
    cx[65] =
        p20_2 / ((1) + (1) * p20_2) - p20_1 / ((1) + (1) * p20_1) - T(0.75) * q20_21_2 +
        f19_20_2 - T(0.25) * q20_21_1
    cx[66] =
        p21_2 / ((1) + (1) * p21_2) - p21_1 / ((1) + (1) * p21_1) - T(0.75) * q21_22_2 +
        T(0.75) * q20_21_2 - T(0.25) * q21_22_1 + T(0.25) * q20_21_1 - 1
    cx[67] =
        p22_2 / ((1) + (1) * p22_2) - p22_1 / ((1) + (1) * p22_1) - T(0.75) * q22_23_2 +
        T(0.75) * q21_22_2 - T(0.25) * q22_23_1 + T(0.25) * q21_22_1 - 1
    cx[68] =
        p23_2 / ((1) + (1) * p23_2) - p23_1 / ((1) + (1) * p23_1) +
        T(0.75) * q22_23_2 +
        T(0.25) * q22_23_1 - out23_2
    cx[69] = p3_2 * r3_4_2 - p4_2
    cx[70] = p5_2 * r5_7_2 - p7_2
    cx[71] = p19_2 * r19_20_2 - p20_2
    cx[72] =
        p1_2 * p1_2 - p2_2 * p2_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_2 + p2_2)) * ((abs(q1_2_2))^T(1.8539))
    cx[73] =
        p1_2 * p1_2 - p17_2 * p17_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_2 + p17_2)) * ((abs(q1_17_2))^T(1.8539))
    cx[74] =
        p2_2 * p2_2 - p3_2 * p3_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_2 + p3_2)) * ((abs(q2_3_2))^T(1.8539))
    cx[75] =
        p4_2 * p4_2 - p5_2 * p5_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_2 + p5_2)) * ((abs(q4_5_2))^T(1.8539))
    cx[76] =
        p5_2 * p5_2 - p6_2 * p6_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_2 + p6_2)) * ((abs(q5_6_2))^T(1.8539))
    cx[77] =
        p7_2 * p7_2 - p8_2 * p8_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_2 + p8_2)) * ((abs(q7_8_2))^T(1.8539))
    cx[78] =
        p8_2 * p8_2 - p9_2 * p9_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_2 + p9_2)) * ((abs(q8_9_2))^T(1.8539))
    cx[79] =
        p8_2 * p8_2 - p10_2 * p10_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_2 + p10_2)) * ((abs(q8_10_2))^T(1.8539))
    cx[80] =
        p8_2 * p8_2 - p11_2 * p11_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_2 + p11_2)) * ((abs(q8_11_2))^T(1.8539))
    cx[81] =
        p11_2 * p11_2 - p12_2 * p12_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_2 + p12_2)) * ((abs(q11_12_2))^T(1.8539))
    cx[82] =
        p12_2 * p12_2 - p13_2 * p13_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_2 + p13_2)) * ((abs(q12_13_2))^T(1.8539))
    cx[83] =
        p13_2 * p13_2 - p14_2 * p14_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_2 + p14_2)) * ((abs(q13_14_2))^T(1.8539))
    cx[84] =
        p13_2 * p13_2 - p15_2 * p15_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_2 + p15_2)) * ((abs(q13_15_2))^T(1.8539))
    cx[85] =
        p15_2 * p15_2 - p16_2 * p16_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_2 + p16_2)) * ((abs(q15_16_2))^T(1.8539))
    cx[86] =
        p17_2 * p17_2 - p18_2 * p18_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_2 + p18_2)) * ((abs(q17_18_2))^T(1.8539))
    cx[87] =
        p18_2 * p18_2 - p19_2 * p19_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_2 + p19_2)) * ((abs(q18_19_2))^T(1.8539))
    cx[88] =
        p20_2 * p20_2 - p21_2 * p21_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_2 + p21_2)) * ((abs(q20_21_2))^T(1.8539))
    cx[89] =
        p21_2 * p21_2 - p22_2 * p22_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_2 + p22_2)) * ((abs(q21_22_2))^T(1.8539))
    cx[90] =
        p22_2 * p22_2 - p23_2 * p23_2 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_2 + p23_2)) * ((abs(q22_23_2))^T(1.8539))
    cx[91] =
        p1_3 / ((1) + (1) * p1_3) - p1_2 / ((1) + (1) * p1_2) - T(0.75) * q1_17_3 -
        T(0.75) * q1_2_3 + in1_3 - T(0.25) * q1_17_2 - T(0.25) * q1_2_2
    cx[92] =
        p2_3 / ((1) + (1) * p2_3) - p2_2 / ((1) + (1) * p2_2) - T(0.75) * q2_3_3 +
        T(0.75) * q1_2_3 - T(0.25) * q2_3_2 + T(0.25) * q1_2_2 - 1
    cx[93] =
        p3_3 / ((1) + (1) * p3_3) - p3_2 / ((1) + (1) * p3_2) - f3_4_3 +
        T(0.75) * q2_3_3 +
        T(0.25) * q2_3_2
    cx[94] =
        p4_3 / ((1) + (1) * p4_3) - p4_2 / ((1) + (1) * p4_2) - T(0.75) * q4_5_3 + f3_4_3 -
        T(0.25) * q4_5_2
    cx[95] =
        p5_3 / ((1) + (1) * p5_3) - p5_2 / ((1) + (1) * p5_2) - T(0.75) * q5_6_3 - f5_7_3 +
        T(0.75) * q4_5_3 - T(0.25) * q5_6_2 + T(0.25) * q4_5_2
    cx[96] =
        p6_3 / ((1) + (1) * p6_3) - p6_2 / ((1) + (1) * p6_2) +
        T(0.75) * q5_6_3 +
        T(0.25) * q5_6_2 - 1
    cx[97] =
        p7_3 / ((1) + (1) * p7_3) - p7_2 / ((1) + (1) * p7_2) - T(0.75) * q7_8_3 + f5_7_3 -
        T(0.25) * q7_8_2
    cx[98] =
        p8_3 / ((1) + (1) * p8_3) - p8_2 / ((1) + (1) * p8_2) - T(0.75) * q8_9_3 -
        T(0.75) * q8_10_3 - T(0.75) * q8_11_3 + T(0.75) * q7_8_3 - T(0.25) * q8_9_2 -
        T(0.25) * q8_10_2 - T(0.25) * q8_11_2 + T(0.25) * q7_8_2
    cx[99] =
        p9_3 / ((1) + (1) * p9_3) - p9_2 / ((1) + (1) * p9_2) +
        T(0.75) * q8_9_3 +
        T(0.25) * q8_9_2
    cx[100] =
        p10_3 / ((1) + (1) * p10_3) - p10_2 / ((1) + (1) * p10_2) +
        T(0.75) * q8_10_3 +
        T(0.25) * q8_10_2 - 1
    cx[101] =
        p11_3 / ((1) + (1) * p11_3) - p11_2 / ((1) + (1) * p11_2) - T(0.75) * q11_12_3 +
        T(0.75) * q8_11_3 - T(0.25) * q11_12_2 + T(0.25) * q8_11_2
    cx[102] =
        p12_3 / ((1) + (1) * p12_3) - p12_2 / ((1) + (1) * p12_2) - T(0.75) * q12_13_3 +
        T(0.75) * q11_12_3 - T(0.25) * q12_13_2 + T(0.25) * q11_12_2
    cx[103] =
        p13_3 / ((1) + (1) * p13_3) - p13_2 / ((1) + (1) * p13_2) - T(0.75) * q13_14_3 -
        T(0.75) * q13_15_3 + T(0.75) * q12_13_3 - T(0.25) * q13_14_2 - T(0.25) * q13_15_2 +
        T(0.25) * q12_13_2 - 1
    cx[104] =
        p14_3 / ((1) + (1) * p14_3) - p14_2 / ((1) + (1) * p14_2) +
        T(0.75) * q13_14_3 +
        T(0.25) * q13_14_2
    cx[105] =
        p15_3 / ((1) + (1) * p15_3) - p15_2 / ((1) + (1) * p15_2) - T(0.75) * q15_16_3 +
        T(0.75) * q13_15_3 - T(0.25) * q15_16_2 + T(0.25) * q13_15_2 - 1
    cx[106] =
        p16_3 / ((1) + (1) * p16_3) - p16_2 / ((1) + (1) * p16_2) +
        T(0.75) * q15_16_3 +
        T(0.25) * q15_16_2 - out16_3
    cx[107] =
        p17_3 / ((1) + (1) * p17_3) - p17_2 / ((1) + (1) * p17_2) - T(0.75) * q17_18_3 +
        T(0.75) * q1_17_3 - T(0.25) * q17_18_2 + T(0.25) * q1_17_2 - 1
    cx[108] =
        p18_3 / ((1) + (1) * p18_3) - p18_2 / ((1) + (1) * p18_2) - T(0.75) * q18_19_3 +
        T(0.75) * q17_18_3 - T(0.25) * q18_19_2 + T(0.25) * q17_18_2 - 1
    cx[109] =
        p19_3 / ((1) + (1) * p19_3) - p19_2 / ((1) + (1) * p19_2) - f19_20_3 +
        T(0.75) * q18_19_3 +
        T(0.25) * q18_19_2
    cx[110] =
        p20_3 / ((1) + (1) * p20_3) - p20_2 / ((1) + (1) * p20_2) - T(0.75) * q20_21_3 +
        f19_20_3 - T(0.25) * q20_21_2
    cx[111] =
        p21_3 / ((1) + (1) * p21_3) - p21_2 / ((1) + (1) * p21_2) - T(0.75) * q21_22_3 +
        T(0.75) * q20_21_3 - T(0.25) * q21_22_2 + T(0.25) * q20_21_2 - 1
    cx[112] =
        p22_3 / ((1) + (1) * p22_3) - p22_2 / ((1) + (1) * p22_2) - T(0.75) * q22_23_3 +
        T(0.75) * q21_22_3 - T(0.25) * q22_23_2 + T(0.25) * q21_22_2 - 1
    cx[113] =
        p23_3 / ((1) + (1) * p23_3) - p23_2 / ((1) + (1) * p23_2) +
        T(0.75) * q22_23_3 +
        T(0.25) * q22_23_2 - out23_3
    cx[114] = p3_3 * r3_4_3 - p4_3
    cx[115] = p5_3 * r5_7_3 - p7_3
    cx[116] = p19_3 * r19_20_3 - p20_3
    cx[117] =
        p1_3 * p1_3 - p2_3 * p2_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_3 + p2_3)) * ((abs(q1_2_3))^T(1.8539))
    cx[118] =
        p1_3 * p1_3 - p17_3 * p17_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_3 + p17_3)) * ((abs(q1_17_3))^T(1.8539))
    cx[119] =
        p2_3 * p2_3 - p3_3 * p3_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_3 + p3_3)) * ((abs(q2_3_3))^T(1.8539))
    cx[120] =
        p4_3 * p4_3 - p5_3 * p5_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_3 + p5_3)) * ((abs(q4_5_3))^T(1.8539))
    cx[121] =
        p5_3 * p5_3 - p6_3 * p6_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_3 + p6_3)) * ((abs(q5_6_3))^T(1.8539))
    cx[122] =
        p7_3 * p7_3 - p8_3 * p8_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_3 + p8_3)) * ((abs(q7_8_3))^T(1.8539))
    cx[123] =
        p8_3 * p8_3 - p9_3 * p9_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_3 + p9_3)) * ((abs(q8_9_3))^T(1.8539))
    cx[124] =
        p8_3 * p8_3 - p10_3 * p10_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_3 + p10_3)) * ((abs(q8_10_3))^T(1.8539))
    cx[125] =
        p8_3 * p8_3 - p11_3 * p11_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_3 + p11_3)) * ((abs(q8_11_3))^T(1.8539))
    cx[126] =
        p11_3 * p11_3 - p12_3 * p12_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_3 + p12_3)) * ((abs(q11_12_3))^T(1.8539))
    cx[127] =
        p12_3 * p12_3 - p13_3 * p13_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_3 + p13_3)) * ((abs(q12_13_3))^T(1.8539))
    cx[128] =
        p13_3 * p13_3 - p14_3 * p14_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_3 + p14_3)) * ((abs(q13_14_3))^T(1.8539))
    cx[129] =
        p13_3 * p13_3 - p15_3 * p15_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_3 + p15_3)) * ((abs(q13_15_3))^T(1.8539))
    cx[130] =
        p15_3 * p15_3 - p16_3 * p16_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_3 + p16_3)) * ((abs(q15_16_3))^T(1.8539))
    cx[131] =
        p17_3 * p17_3 - p18_3 * p18_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_3 + p18_3)) * ((abs(q17_18_3))^T(1.8539))
    cx[132] =
        p18_3 * p18_3 - p19_3 * p19_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_3 + p19_3)) * ((abs(q18_19_3))^T(1.8539))
    cx[133] =
        p20_3 * p20_3 - p21_3 * p21_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_3 + p21_3)) * ((abs(q20_21_3))^T(1.8539))
    cx[134] =
        p21_3 * p21_3 - p22_3 * p22_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_3 + p22_3)) * ((abs(q21_22_3))^T(1.8539))
    cx[135] =
        p22_3 * p22_3 - p23_3 * p23_3 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_3 + p23_3)) * ((abs(q22_23_3))^T(1.8539))
    cx[136] =
        p1_4 / ((1) + (1) * p1_4) - p1_3 / ((1) + (1) * p1_3) - T(0.75) * q1_17_4 -
        T(0.75) * q1_2_4 + in1_4 - T(0.25) * q1_17_3 - T(0.25) * q1_2_3
    cx[137] =
        p2_4 / ((1) + (1) * p2_4) - p2_3 / ((1) + (1) * p2_3) - T(0.75) * q2_3_4 +
        T(0.75) * q1_2_4 - T(0.25) * q2_3_3 + T(0.25) * q1_2_3 - 1
    cx[138] =
        p3_4 / ((1) + (1) * p3_4) - p3_3 / ((1) + (1) * p3_3) - f3_4_4 +
        T(0.75) * q2_3_4 +
        T(0.25) * q2_3_3
    cx[139] =
        p4_4 / ((1) + (1) * p4_4) - p4_3 / ((1) + (1) * p4_3) - T(0.75) * q4_5_4 + f3_4_4 -
        T(0.25) * q4_5_3
    cx[140] =
        p5_4 / ((1) + (1) * p5_4) - p5_3 / ((1) + (1) * p5_3) - T(0.75) * q5_6_4 - f5_7_4 +
        T(0.75) * q4_5_4 - T(0.25) * q5_6_3 + T(0.25) * q4_5_3
    cx[141] =
        p6_4 / ((1) + (1) * p6_4) - p6_3 / ((1) + (1) * p6_3) +
        T(0.75) * q5_6_4 +
        T(0.25) * q5_6_3 - 1
    cx[142] =
        p7_4 / ((1) + (1) * p7_4) - p7_3 / ((1) + (1) * p7_3) - T(0.75) * q7_8_4 + f5_7_4 -
        T(0.25) * q7_8_3
    cx[143] =
        p8_4 / ((1) + (1) * p8_4) - p8_3 / ((1) + (1) * p8_3) - T(0.75) * q8_9_4 -
        T(0.75) * q8_10_4 - T(0.75) * q8_11_4 + T(0.75) * q7_8_4 - T(0.25) * q8_9_3 -
        T(0.25) * q8_10_3 - T(0.25) * q8_11_3 + T(0.25) * q7_8_3
    cx[144] =
        p9_4 / ((1) + (1) * p9_4) - p9_3 / ((1) + (1) * p9_3) +
        T(0.75) * q8_9_4 +
        T(0.25) * q8_9_3
    cx[145] =
        p10_4 / ((1) + (1) * p10_4) - p10_3 / ((1) + (1) * p10_3) +
        T(0.75) * q8_10_4 +
        T(0.25) * q8_10_3 - 1
    cx[146] =
        p11_4 / ((1) + (1) * p11_4) - p11_3 / ((1) + (1) * p11_3) - T(0.75) * q11_12_4 +
        T(0.75) * q8_11_4 - T(0.25) * q11_12_3 + T(0.25) * q8_11_3
    cx[147] =
        p12_4 / ((1) + (1) * p12_4) - p12_3 / ((1) + (1) * p12_3) - T(0.75) * q12_13_4 +
        T(0.75) * q11_12_4 - T(0.25) * q12_13_3 + T(0.25) * q11_12_3
    cx[148] =
        p13_4 / ((1) + (1) * p13_4) - p13_3 / ((1) + (1) * p13_3) - T(0.75) * q13_14_4 -
        T(0.75) * q13_15_4 + T(0.75) * q12_13_4 - T(0.25) * q13_14_3 - T(0.25) * q13_15_3 +
        T(0.25) * q12_13_3 - 1
    cx[149] =
        p14_4 / ((1) + (1) * p14_4) - p14_3 / ((1) + (1) * p14_3) +
        T(0.75) * q13_14_4 +
        T(0.25) * q13_14_3
    cx[150] =
        p15_4 / ((1) + (1) * p15_4) - p15_3 / ((1) + (1) * p15_3) - T(0.75) * q15_16_4 +
        T(0.75) * q13_15_4 - T(0.25) * q15_16_3 + T(0.25) * q13_15_3 - 1
    cx[151] =
        p16_4 / ((1) + (1) * p16_4) - p16_3 / ((1) + (1) * p16_3) +
        T(0.75) * q15_16_4 +
        T(0.25) * q15_16_3 - out16_4
    cx[152] =
        p17_4 / ((1) + (1) * p17_4) - p17_3 / ((1) + (1) * p17_3) - T(0.75) * q17_18_4 +
        T(0.75) * q1_17_4 - T(0.25) * q17_18_3 + T(0.25) * q1_17_3 - 1
    cx[153] =
        p18_4 / ((1) + (1) * p18_4) - p18_3 / ((1) + (1) * p18_3) - T(0.75) * q18_19_4 +
        T(0.75) * q17_18_4 - T(0.25) * q18_19_3 + T(0.25) * q17_18_3 - 1
    cx[154] =
        p19_4 / ((1) + (1) * p19_4) - p19_3 / ((1) + (1) * p19_3) - f19_20_4 +
        T(0.75) * q18_19_4 +
        T(0.25) * q18_19_3
    cx[155] =
        p20_4 / ((1) + (1) * p20_4) - p20_3 / ((1) + (1) * p20_3) - T(0.75) * q20_21_4 +
        f19_20_4 - T(0.25) * q20_21_3
    cx[156] =
        p21_4 / ((1) + (1) * p21_4) - p21_3 / ((1) + (1) * p21_3) - T(0.75) * q21_22_4 +
        T(0.75) * q20_21_4 - T(0.25) * q21_22_3 + T(0.25) * q20_21_3 - 1
    cx[157] =
        p22_4 / ((1) + (1) * p22_4) - p22_3 / ((1) + (1) * p22_3) - T(0.75) * q22_23_4 +
        T(0.75) * q21_22_4 - T(0.25) * q22_23_3 + T(0.25) * q21_22_3 - 1
    cx[158] =
        p23_4 / ((1) + (1) * p23_4) - p23_3 / ((1) + (1) * p23_3) +
        T(0.75) * q22_23_4 +
        T(0.25) * q22_23_3 - out23_4
    cx[159] = p3_4 * r3_4_4 - p4_4
    cx[160] = p5_4 * r5_7_4 - p7_4
    cx[161] = p19_4 * r19_20_4 - p20_4
    cx[162] =
        p1_4 * p1_4 - p2_4 * p2_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_4 + p2_4)) * ((abs(q1_2_4))^T(1.8539))
    cx[163] =
        p1_4 * p1_4 - p17_4 * p17_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_4 + p17_4)) * ((abs(q1_17_4))^T(1.8539))
    cx[164] =
        p2_4 * p2_4 - p3_4 * p3_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_4 + p3_4)) * ((abs(q2_3_4))^T(1.8539))
    cx[165] =
        p4_4 * p4_4 - p5_4 * p5_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_4 + p5_4)) * ((abs(q4_5_4))^T(1.8539))
    cx[166] =
        p5_4 * p5_4 - p6_4 * p6_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_4 + p6_4)) * ((abs(q5_6_4))^T(1.8539))
    cx[167] =
        p7_4 * p7_4 - p8_4 * p8_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_4 + p8_4)) * ((abs(q7_8_4))^T(1.8539))
    cx[168] =
        p8_4 * p8_4 - p9_4 * p9_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_4 + p9_4)) * ((abs(q8_9_4))^T(1.8539))
    cx[169] =
        p8_4 * p8_4 - p10_4 * p10_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_4 + p10_4)) * ((abs(q8_10_4))^T(1.8539))
    cx[170] =
        p8_4 * p8_4 - p11_4 * p11_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_4 + p11_4)) * ((abs(q8_11_4))^T(1.8539))
    cx[171] =
        p11_4 * p11_4 - p12_4 * p12_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_4 + p12_4)) * ((abs(q11_12_4))^T(1.8539))
    cx[172] =
        p12_4 * p12_4 - p13_4 * p13_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_4 + p13_4)) * ((abs(q12_13_4))^T(1.8539))
    cx[173] =
        p13_4 * p13_4 - p14_4 * p14_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_4 + p14_4)) * ((abs(q13_14_4))^T(1.8539))
    cx[174] =
        p13_4 * p13_4 - p15_4 * p15_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_4 + p15_4)) * ((abs(q13_15_4))^T(1.8539))
    cx[175] =
        p15_4 * p15_4 - p16_4 * p16_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_4 + p16_4)) * ((abs(q15_16_4))^T(1.8539))
    cx[176] =
        p17_4 * p17_4 - p18_4 * p18_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_4 + p18_4)) * ((abs(q17_18_4))^T(1.8539))
    cx[177] =
        p18_4 * p18_4 - p19_4 * p19_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_4 + p19_4)) * ((abs(q18_19_4))^T(1.8539))
    cx[178] =
        p20_4 * p20_4 - p21_4 * p21_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_4 + p21_4)) * ((abs(q20_21_4))^T(1.8539))
    cx[179] =
        p21_4 * p21_4 - p22_4 * p22_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_4 + p22_4)) * ((abs(q21_22_4))^T(1.8539))
    cx[180] =
        p22_4 * p22_4 - p23_4 * p23_4 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_4 + p23_4)) * ((abs(q22_23_4))^T(1.8539))
    cx[181] =
        p1_5 / ((1) + (1) * p1_5) - p1_4 / ((1) + (1) * p1_4) - T(0.75) * q1_17_5 -
        T(0.75) * q1_2_5 + in1_5 - T(0.25) * q1_17_4 - T(0.25) * q1_2_4
    cx[182] =
        p2_5 / ((1) + (1) * p2_5) - p2_4 / ((1) + (1) * p2_4) - T(0.75) * q2_3_5 +
        T(0.75) * q1_2_5 - T(0.25) * q2_3_4 + T(0.25) * q1_2_4 - 1
    cx[183] =
        p3_5 / ((1) + (1) * p3_5) - p3_4 / ((1) + (1) * p3_4) - f3_4_5 +
        T(0.75) * q2_3_5 +
        T(0.25) * q2_3_4
    cx[184] =
        p4_5 / ((1) + (1) * p4_5) - p4_4 / ((1) + (1) * p4_4) - T(0.75) * q4_5_5 + f3_4_5 -
        T(0.25) * q4_5_4
    cx[185] =
        p5_5 / ((1) + (1) * p5_5) - p5_4 / ((1) + (1) * p5_4) - T(0.75) * q5_6_5 - f5_7_5 +
        T(0.75) * q4_5_5 - T(0.25) * q5_6_4 + T(0.25) * q4_5_4
    cx[186] =
        p6_5 / ((1) + (1) * p6_5) - p6_4 / ((1) + (1) * p6_4) +
        T(0.75) * q5_6_5 +
        T(0.25) * q5_6_4 - 1
    cx[187] =
        p7_5 / ((1) + (1) * p7_5) - p7_4 / ((1) + (1) * p7_4) - T(0.75) * q7_8_5 + f5_7_5 -
        T(0.25) * q7_8_4
    cx[188] =
        p8_5 / ((1) + (1) * p8_5) - p8_4 / ((1) + (1) * p8_4) - T(0.75) * q8_9_5 -
        T(0.75) * q8_10_5 - T(0.75) * q8_11_5 + T(0.75) * q7_8_5 - T(0.25) * q8_9_4 -
        T(0.25) * q8_10_4 - T(0.25) * q8_11_4 + T(0.25) * q7_8_4
    cx[189] =
        p9_5 / ((1) + (1) * p9_5) - p9_4 / ((1) + (1) * p9_4) +
        T(0.75) * q8_9_5 +
        T(0.25) * q8_9_4
    cx[190] =
        p10_5 / ((1) + (1) * p10_5) - p10_4 / ((1) + (1) * p10_4) +
        T(0.75) * q8_10_5 +
        T(0.25) * q8_10_4 - 1
    cx[191] =
        p11_5 / ((1) + (1) * p11_5) - p11_4 / ((1) + (1) * p11_4) - T(0.75) * q11_12_5 +
        T(0.75) * q8_11_5 - T(0.25) * q11_12_4 + T(0.25) * q8_11_4
    cx[192] =
        p12_5 / ((1) + (1) * p12_5) - p12_4 / ((1) + (1) * p12_4) - T(0.75) * q12_13_5 +
        T(0.75) * q11_12_5 - T(0.25) * q12_13_4 + T(0.25) * q11_12_4
    cx[193] =
        p13_5 / ((1) + (1) * p13_5) - p13_4 / ((1) + (1) * p13_4) - T(0.75) * q13_14_5 -
        T(0.75) * q13_15_5 + T(0.75) * q12_13_5 - T(0.25) * q13_14_4 - T(0.25) * q13_15_4 +
        T(0.25) * q12_13_4 - 1
    cx[194] =
        p14_5 / ((1) + (1) * p14_5) - p14_4 / ((1) + (1) * p14_4) +
        T(0.75) * q13_14_5 +
        T(0.25) * q13_14_4
    cx[195] =
        p15_5 / ((1) + (1) * p15_5) - p15_4 / ((1) + (1) * p15_4) - T(0.75) * q15_16_5 +
        T(0.75) * q13_15_5 - T(0.25) * q15_16_4 + T(0.25) * q13_15_4 - 1
    cx[196] =
        p16_5 / ((1) + (1) * p16_5) - p16_4 / ((1) + (1) * p16_4) +
        T(0.75) * q15_16_5 +
        T(0.25) * q15_16_4 - out16_5
    cx[197] =
        p17_5 / ((1) + (1) * p17_5) - p17_4 / ((1) + (1) * p17_4) - T(0.75) * q17_18_5 +
        T(0.75) * q1_17_5 - T(0.25) * q17_18_4 + T(0.25) * q1_17_4 - 1
    cx[198] =
        p18_5 / ((1) + (1) * p18_5) - p18_4 / ((1) + (1) * p18_4) - T(0.75) * q18_19_5 +
        T(0.75) * q17_18_5 - T(0.25) * q18_19_4 + T(0.25) * q17_18_4 - 1
    cx[199] =
        p19_5 / ((1) + (1) * p19_5) - p19_4 / ((1) + (1) * p19_4) - f19_20_5 +
        T(0.75) * q18_19_5 +
        T(0.25) * q18_19_4
    cx[200] =
        p20_5 / ((1) + (1) * p20_5) - p20_4 / ((1) + (1) * p20_4) - T(0.75) * q20_21_5 +
        f19_20_5 - T(0.25) * q20_21_4
    cx[201] =
        p21_5 / ((1) + (1) * p21_5) - p21_4 / ((1) + (1) * p21_4) - T(0.75) * q21_22_5 +
        T(0.75) * q20_21_5 - T(0.25) * q21_22_4 + T(0.25) * q20_21_4 - 1
    cx[202] =
        p22_5 / ((1) + (1) * p22_5) - p22_4 / ((1) + (1) * p22_4) - T(0.75) * q22_23_5 +
        T(0.75) * q21_22_5 - T(0.25) * q22_23_4 + T(0.25) * q21_22_4 - 1
    cx[203] =
        p23_5 / ((1) + (1) * p23_5) - p23_4 / ((1) + (1) * p23_4) +
        T(0.75) * q22_23_5 +
        T(0.25) * q22_23_4 - out23_5
    cx[204] = p3_5 * r3_4_5 - p4_5
    cx[205] = p5_5 * r5_7_5 - p7_5
    cx[206] = p19_5 * r19_20_5 - p20_5
    cx[207] =
        p1_5 * p1_5 - p2_5 * p2_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_5 + p2_5)) * ((abs(q1_2_5))^T(1.8539))
    cx[208] =
        p1_5 * p1_5 - p17_5 * p17_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_5 + p17_5)) * ((abs(q1_17_5))^T(1.8539))
    cx[209] =
        p2_5 * p2_5 - p3_5 * p3_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_5 + p3_5)) * ((abs(q2_3_5))^T(1.8539))
    cx[210] =
        p4_5 * p4_5 - p5_5 * p5_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_5 + p5_5)) * ((abs(q4_5_5))^T(1.8539))
    cx[211] =
        p5_5 * p5_5 - p6_5 * p6_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_5 + p6_5)) * ((abs(q5_6_5))^T(1.8539))
    cx[212] =
        p7_5 * p7_5 - p8_5 * p8_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_5 + p8_5)) * ((abs(q7_8_5))^T(1.8539))
    cx[213] =
        p8_5 * p8_5 - p9_5 * p9_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_5 + p9_5)) * ((abs(q8_9_5))^T(1.8539))
    cx[214] =
        p8_5 * p8_5 - p10_5 * p10_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_5 + p10_5)) * ((abs(q8_10_5))^T(1.8539))
    cx[215] =
        p8_5 * p8_5 - p11_5 * p11_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_5 + p11_5)) * ((abs(q8_11_5))^T(1.8539))
    cx[216] =
        p11_5 * p11_5 - p12_5 * p12_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_5 + p12_5)) * ((abs(q11_12_5))^T(1.8539))
    cx[217] =
        p12_5 * p12_5 - p13_5 * p13_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_5 + p13_5)) * ((abs(q12_13_5))^T(1.8539))
    cx[218] =
        p13_5 * p13_5 - p14_5 * p14_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_5 + p14_5)) * ((abs(q13_14_5))^T(1.8539))
    cx[219] =
        p13_5 * p13_5 - p15_5 * p15_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_5 + p15_5)) * ((abs(q13_15_5))^T(1.8539))
    cx[220] =
        p15_5 * p15_5 - p16_5 * p16_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_5 + p16_5)) * ((abs(q15_16_5))^T(1.8539))
    cx[221] =
        p17_5 * p17_5 - p18_5 * p18_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_5 + p18_5)) * ((abs(q17_18_5))^T(1.8539))
    cx[222] =
        p18_5 * p18_5 - p19_5 * p19_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_5 + p19_5)) * ((abs(q18_19_5))^T(1.8539))
    cx[223] =
        p20_5 * p20_5 - p21_5 * p21_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_5 + p21_5)) * ((abs(q20_21_5))^T(1.8539))
    cx[224] =
        p21_5 * p21_5 - p22_5 * p22_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_5 + p22_5)) * ((abs(q21_22_5))^T(1.8539))
    cx[225] =
        p22_5 * p22_5 - p23_5 * p23_5 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_5 + p23_5)) * ((abs(q22_23_5))^T(1.8539))
    cx[226] =
        p1_6 / ((1) + (1) * p1_6) - p1_5 / ((1) + (1) * p1_5) - T(0.75) * q1_17_6 -
        T(0.75) * q1_2_6 + in1_6 - T(0.25) * q1_17_5 - T(0.25) * q1_2_5
    cx[227] =
        p2_6 / ((1) + (1) * p2_6) - p2_5 / ((1) + (1) * p2_5) - T(0.75) * q2_3_6 +
        T(0.75) * q1_2_6 - T(0.25) * q2_3_5 + T(0.25) * q1_2_5 - 1
    cx[228] =
        p3_6 / ((1) + (1) * p3_6) - p3_5 / ((1) + (1) * p3_5) - f3_4_6 +
        T(0.75) * q2_3_6 +
        T(0.25) * q2_3_5
    cx[229] =
        p4_6 / ((1) + (1) * p4_6) - p4_5 / ((1) + (1) * p4_5) - T(0.75) * q4_5_6 + f3_4_6 -
        T(0.25) * q4_5_5
    cx[230] =
        p5_6 / ((1) + (1) * p5_6) - p5_5 / ((1) + (1) * p5_5) - T(0.75) * q5_6_6 - f5_7_6 +
        T(0.75) * q4_5_6 - T(0.25) * q5_6_5 + T(0.25) * q4_5_5
    cx[231] =
        p6_6 / ((1) + (1) * p6_6) - p6_5 / ((1) + (1) * p6_5) +
        T(0.75) * q5_6_6 +
        T(0.25) * q5_6_5 - 1
    cx[232] =
        p7_6 / ((1) + (1) * p7_6) - p7_5 / ((1) + (1) * p7_5) - T(0.75) * q7_8_6 + f5_7_6 -
        T(0.25) * q7_8_5
    cx[233] =
        p8_6 / ((1) + (1) * p8_6) - p8_5 / ((1) + (1) * p8_5) - T(0.75) * q8_9_6 -
        T(0.75) * q8_10_6 - T(0.75) * q8_11_6 + T(0.75) * q7_8_6 - T(0.25) * q8_9_5 -
        T(0.25) * q8_10_5 - T(0.25) * q8_11_5 + T(0.25) * q7_8_5
    cx[234] =
        p9_6 / ((1) + (1) * p9_6) - p9_5 / ((1) + (1) * p9_5) +
        T(0.75) * q8_9_6 +
        T(0.25) * q8_9_5
    cx[235] =
        p10_6 / ((1) + (1) * p10_6) - p10_5 / ((1) + (1) * p10_5) +
        T(0.75) * q8_10_6 +
        T(0.25) * q8_10_5 - 1
    cx[236] =
        p11_6 / ((1) + (1) * p11_6) - p11_5 / ((1) + (1) * p11_5) - T(0.75) * q11_12_6 +
        T(0.75) * q8_11_6 - T(0.25) * q11_12_5 + T(0.25) * q8_11_5
    cx[237] =
        p12_6 / ((1) + (1) * p12_6) - p12_5 / ((1) + (1) * p12_5) - T(0.75) * q12_13_6 +
        T(0.75) * q11_12_6 - T(0.25) * q12_13_5 + T(0.25) * q11_12_5
    cx[238] =
        p13_6 / ((1) + (1) * p13_6) - p13_5 / ((1) + (1) * p13_5) - T(0.75) * q13_14_6 -
        T(0.75) * q13_15_6 + T(0.75) * q12_13_6 - T(0.25) * q13_14_5 - T(0.25) * q13_15_5 +
        T(0.25) * q12_13_5 - 1
    cx[239] =
        p14_6 / ((1) + (1) * p14_6) - p14_5 / ((1) + (1) * p14_5) +
        T(0.75) * q13_14_6 +
        T(0.25) * q13_14_5
    cx[240] =
        p15_6 / ((1) + (1) * p15_6) - p15_5 / ((1) + (1) * p15_5) - T(0.75) * q15_16_6 +
        T(0.75) * q13_15_6 - T(0.25) * q15_16_5 + T(0.25) * q13_15_5 - 1
    cx[241] =
        p16_6 / ((1) + (1) * p16_6) - p16_5 / ((1) + (1) * p16_5) +
        T(0.75) * q15_16_6 +
        T(0.25) * q15_16_5 - out16_6
    cx[242] =
        p17_6 / ((1) + (1) * p17_6) - p17_5 / ((1) + (1) * p17_5) - T(0.75) * q17_18_6 +
        T(0.75) * q1_17_6 - T(0.25) * q17_18_5 + T(0.25) * q1_17_5 - 1
    cx[243] =
        p18_6 / ((1) + (1) * p18_6) - p18_5 / ((1) + (1) * p18_5) - T(0.75) * q18_19_6 +
        T(0.75) * q17_18_6 - T(0.25) * q18_19_5 + T(0.25) * q17_18_5 - 1
    cx[244] =
        p19_6 / ((1) + (1) * p19_6) - p19_5 / ((1) + (1) * p19_5) - f19_20_6 +
        T(0.75) * q18_19_6 +
        T(0.25) * q18_19_5
    cx[245] =
        p20_6 / ((1) + (1) * p20_6) - p20_5 / ((1) + (1) * p20_5) - T(0.75) * q20_21_6 +
        f19_20_6 - T(0.25) * q20_21_5
    cx[246] =
        p21_6 / ((1) + (1) * p21_6) - p21_5 / ((1) + (1) * p21_5) - T(0.75) * q21_22_6 +
        T(0.75) * q20_21_6 - T(0.25) * q21_22_5 + T(0.25) * q20_21_5 - 1
    cx[247] =
        p22_6 / ((1) + (1) * p22_6) - p22_5 / ((1) + (1) * p22_5) - T(0.75) * q22_23_6 +
        T(0.75) * q21_22_6 - T(0.25) * q22_23_5 + T(0.25) * q21_22_5 - 1
    cx[248] =
        p23_6 / ((1) + (1) * p23_6) - p23_5 / ((1) + (1) * p23_5) +
        T(0.75) * q22_23_6 +
        T(0.25) * q22_23_5 - out23_6
    cx[249] = p3_6 * r3_4_6 - p4_6
    cx[250] = p5_6 * r5_7_6 - p7_6
    cx[251] = p19_6 * r19_20_6 - p20_6
    cx[252] =
        p1_6 * p1_6 - p2_6 * p2_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_6 + p2_6)) * ((abs(q1_2_6))^T(1.8539))
    cx[253] =
        p1_6 * p1_6 - p17_6 * p17_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_6 + p17_6)) * ((abs(q1_17_6))^T(1.8539))
    cx[254] =
        p2_6 * p2_6 - p3_6 * p3_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_6 + p3_6)) * ((abs(q2_3_6))^T(1.8539))
    cx[255] =
        p4_6 * p4_6 - p5_6 * p5_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_6 + p5_6)) * ((abs(q4_5_6))^T(1.8539))
    cx[256] =
        p5_6 * p5_6 - p6_6 * p6_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_6 + p6_6)) * ((abs(q5_6_6))^T(1.8539))
    cx[257] =
        p7_6 * p7_6 - p8_6 * p8_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_6 + p8_6)) * ((abs(q7_8_6))^T(1.8539))
    cx[258] =
        p8_6 * p8_6 - p9_6 * p9_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_6 + p9_6)) * ((abs(q8_9_6))^T(1.8539))
    cx[259] =
        p8_6 * p8_6 - p10_6 * p10_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_6 + p10_6)) * ((abs(q8_10_6))^T(1.8539))
    cx[260] =
        p8_6 * p8_6 - p11_6 * p11_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_6 + p11_6)) * ((abs(q8_11_6))^T(1.8539))
    cx[261] =
        p11_6 * p11_6 - p12_6 * p12_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_6 + p12_6)) * ((abs(q11_12_6))^T(1.8539))
    cx[262] =
        p12_6 * p12_6 - p13_6 * p13_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_6 + p13_6)) * ((abs(q12_13_6))^T(1.8539))
    cx[263] =
        p13_6 * p13_6 - p14_6 * p14_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_6 + p14_6)) * ((abs(q13_14_6))^T(1.8539))
    cx[264] =
        p13_6 * p13_6 - p15_6 * p15_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_6 + p15_6)) * ((abs(q13_15_6))^T(1.8539))
    cx[265] =
        p15_6 * p15_6 - p16_6 * p16_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_6 + p16_6)) * ((abs(q15_16_6))^T(1.8539))
    cx[266] =
        p17_6 * p17_6 - p18_6 * p18_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_6 + p18_6)) * ((abs(q17_18_6))^T(1.8539))
    cx[267] =
        p18_6 * p18_6 - p19_6 * p19_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_6 + p19_6)) * ((abs(q18_19_6))^T(1.8539))
    cx[268] =
        p20_6 * p20_6 - p21_6 * p21_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_6 + p21_6)) * ((abs(q20_21_6))^T(1.8539))
    cx[269] =
        p21_6 * p21_6 - p22_6 * p22_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_6 + p22_6)) * ((abs(q21_22_6))^T(1.8539))
    cx[270] =
        p22_6 * p22_6 - p23_6 * p23_6 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_6 + p23_6)) * ((abs(q22_23_6))^T(1.8539))
    cx[271] =
        p1_7 / ((1) + (1) * p1_7) - p1_6 / ((1) + (1) * p1_6) - T(0.75) * q1_17_7 -
        T(0.75) * q1_2_7 + in1_7 - T(0.25) * q1_17_6 - T(0.25) * q1_2_6
    cx[272] =
        p2_7 / ((1) + (1) * p2_7) - p2_6 / ((1) + (1) * p2_6) - T(0.75) * q2_3_7 +
        T(0.75) * q1_2_7 - T(0.25) * q2_3_6 + T(0.25) * q1_2_6 - 1
    cx[273] =
        p3_7 / ((1) + (1) * p3_7) - p3_6 / ((1) + (1) * p3_6) - f3_4_7 +
        T(0.75) * q2_3_7 +
        T(0.25) * q2_3_6
    cx[274] =
        p4_7 / ((1) + (1) * p4_7) - p4_6 / ((1) + (1) * p4_6) - T(0.75) * q4_5_7 + f3_4_7 -
        T(0.25) * q4_5_6
    cx[275] =
        p5_7 / ((1) + (1) * p5_7) - p5_6 / ((1) + (1) * p5_6) - T(0.75) * q5_6_7 - f5_7_7 +
        T(0.75) * q4_5_7 - T(0.25) * q5_6_6 + T(0.25) * q4_5_6
    cx[276] =
        p6_7 / ((1) + (1) * p6_7) - p6_6 / ((1) + (1) * p6_6) +
        T(0.75) * q5_6_7 +
        T(0.25) * q5_6_6 - 1
    cx[277] =
        p7_7 / ((1) + (1) * p7_7) - p7_6 / ((1) + (1) * p7_6) - T(0.75) * q7_8_7 + f5_7_7 -
        T(0.25) * q7_8_6
    cx[278] =
        p8_7 / ((1) + (1) * p8_7) - p8_6 / ((1) + (1) * p8_6) - T(0.75) * q8_9_7 -
        T(0.75) * q8_10_7 - T(0.75) * q8_11_7 + T(0.75) * q7_8_7 - T(0.25) * q8_9_6 -
        T(0.25) * q8_10_6 - T(0.25) * q8_11_6 + T(0.25) * q7_8_6
    cx[279] =
        p9_7 / ((1) + (1) * p9_7) - p9_6 / ((1) + (1) * p9_6) +
        T(0.75) * q8_9_7 +
        T(0.25) * q8_9_6
    cx[280] =
        p10_7 / ((1) + (1) * p10_7) - p10_6 / ((1) + (1) * p10_6) +
        T(0.75) * q8_10_7 +
        T(0.25) * q8_10_6 - 1
    cx[281] =
        p11_7 / ((1) + (1) * p11_7) - p11_6 / ((1) + (1) * p11_6) - T(0.75) * q11_12_7 +
        T(0.75) * q8_11_7 - T(0.25) * q11_12_6 + T(0.25) * q8_11_6
    cx[282] =
        p12_7 / ((1) + (1) * p12_7) - p12_6 / ((1) + (1) * p12_6) - T(0.75) * q12_13_7 +
        T(0.75) * q11_12_7 - T(0.25) * q12_13_6 + T(0.25) * q11_12_6
    cx[283] =
        p13_7 / ((1) + (1) * p13_7) - p13_6 / ((1) + (1) * p13_6) - T(0.75) * q13_14_7 -
        T(0.75) * q13_15_7 + T(0.75) * q12_13_7 - T(0.25) * q13_14_6 - T(0.25) * q13_15_6 +
        T(0.25) * q12_13_6 - 1
    cx[284] =
        p14_7 / ((1) + (1) * p14_7) - p14_6 / ((1) + (1) * p14_6) +
        T(0.75) * q13_14_7 +
        T(0.25) * q13_14_6
    cx[285] =
        p15_7 / ((1) + (1) * p15_7) - p15_6 / ((1) + (1) * p15_6) - T(0.75) * q15_16_7 +
        T(0.75) * q13_15_7 - T(0.25) * q15_16_6 + T(0.25) * q13_15_6 - 1
    cx[286] =
        p16_7 / ((1) + (1) * p16_7) - p16_6 / ((1) + (1) * p16_6) +
        T(0.75) * q15_16_7 +
        T(0.25) * q15_16_6 - out16_7
    cx[287] =
        p17_7 / ((1) + (1) * p17_7) - p17_6 / ((1) + (1) * p17_6) - T(0.75) * q17_18_7 +
        T(0.75) * q1_17_7 - T(0.25) * q17_18_6 + T(0.25) * q1_17_6 - 1
    cx[288] =
        p18_7 / ((1) + (1) * p18_7) - p18_6 / ((1) + (1) * p18_6) - T(0.75) * q18_19_7 +
        T(0.75) * q17_18_7 - T(0.25) * q18_19_6 + T(0.25) * q17_18_6 - 1
    cx[289] =
        p19_7 / ((1) + (1) * p19_7) - p19_6 / ((1) + (1) * p19_6) - f19_20_7 +
        T(0.75) * q18_19_7 +
        T(0.25) * q18_19_6
    cx[290] =
        p20_7 / ((1) + (1) * p20_7) - p20_6 / ((1) + (1) * p20_6) - T(0.75) * q20_21_7 +
        f19_20_7 - T(0.25) * q20_21_6
    cx[291] =
        p21_7 / ((1) + (1) * p21_7) - p21_6 / ((1) + (1) * p21_6) - T(0.75) * q21_22_7 +
        T(0.75) * q20_21_7 - T(0.25) * q21_22_6 + T(0.25) * q20_21_6 - 1
    cx[292] =
        p22_7 / ((1) + (1) * p22_7) - p22_6 / ((1) + (1) * p22_6) - T(0.75) * q22_23_7 +
        T(0.75) * q21_22_7 - T(0.25) * q22_23_6 + T(0.25) * q21_22_6 - 1
    cx[293] =
        p23_7 / ((1) + (1) * p23_7) - p23_6 / ((1) + (1) * p23_6) +
        T(0.75) * q22_23_7 +
        T(0.25) * q22_23_6 - out23_7
    cx[294] = p3_7 * r3_4_7 - p4_7
    cx[295] = p5_7 * r5_7_7 - p7_7
    cx[296] = p19_7 * r19_20_7 - p20_7
    cx[297] =
        p1_7 * p1_7 - p2_7 * p2_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_7 + p2_7)) * ((abs(q1_2_7))^T(1.8539))
    cx[298] =
        p1_7 * p1_7 - p17_7 * p17_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_7 + p17_7)) * ((abs(q1_17_7))^T(1.8539))
    cx[299] =
        p2_7 * p2_7 - p3_7 * p3_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_7 + p3_7)) * ((abs(q2_3_7))^T(1.8539))
    cx[300] =
        p4_7 * p4_7 - p5_7 * p5_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_7 + p5_7)) * ((abs(q4_5_7))^T(1.8539))
    cx[301] =
        p5_7 * p5_7 - p6_7 * p6_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_7 + p6_7)) * ((abs(q5_6_7))^T(1.8539))
    cx[302] =
        p7_7 * p7_7 - p8_7 * p8_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_7 + p8_7)) * ((abs(q7_8_7))^T(1.8539))
    cx[303] =
        p8_7 * p8_7 - p9_7 * p9_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_7 + p9_7)) * ((abs(q8_9_7))^T(1.8539))
    cx[304] =
        p8_7 * p8_7 - p10_7 * p10_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_7 + p10_7)) * ((abs(q8_10_7))^T(1.8539))
    cx[305] =
        p8_7 * p8_7 - p11_7 * p11_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_7 + p11_7)) * ((abs(q8_11_7))^T(1.8539))
    cx[306] =
        p11_7 * p11_7 - p12_7 * p12_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_7 + p12_7)) * ((abs(q11_12_7))^T(1.8539))
    cx[307] =
        p12_7 * p12_7 - p13_7 * p13_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_7 + p13_7)) * ((abs(q12_13_7))^T(1.8539))
    cx[308] =
        p13_7 * p13_7 - p14_7 * p14_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_7 + p14_7)) * ((abs(q13_14_7))^T(1.8539))
    cx[309] =
        p13_7 * p13_7 - p15_7 * p15_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_7 + p15_7)) * ((abs(q13_15_7))^T(1.8539))
    cx[310] =
        p15_7 * p15_7 - p16_7 * p16_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_7 + p16_7)) * ((abs(q15_16_7))^T(1.8539))
    cx[311] =
        p17_7 * p17_7 - p18_7 * p18_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_7 + p18_7)) * ((abs(q17_18_7))^T(1.8539))
    cx[312] =
        p18_7 * p18_7 - p19_7 * p19_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_7 + p19_7)) * ((abs(q18_19_7))^T(1.8539))
    cx[313] =
        p20_7 * p20_7 - p21_7 * p21_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_7 + p21_7)) * ((abs(q20_21_7))^T(1.8539))
    cx[314] =
        p21_7 * p21_7 - p22_7 * p22_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_7 + p22_7)) * ((abs(q21_22_7))^T(1.8539))
    cx[315] =
        p22_7 * p22_7 - p23_7 * p23_7 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_7 + p23_7)) * ((abs(q22_23_7))^T(1.8539))
    cx[316] =
        p1_8 / ((1) + (1) * p1_8) - p1_7 / ((1) + (1) * p1_7) - T(0.75) * q1_17_8 -
        T(0.75) * q1_2_8 + in1_8 - T(0.25) * q1_17_7 - T(0.25) * q1_2_7
    cx[317] =
        p2_8 / ((1) + (1) * p2_8) - p2_7 / ((1) + (1) * p2_7) - T(0.75) * q2_3_8 +
        T(0.75) * q1_2_8 - T(0.25) * q2_3_7 + T(0.25) * q1_2_7 - 1
    cx[318] =
        p3_8 / ((1) + (1) * p3_8) - p3_7 / ((1) + (1) * p3_7) - f3_4_8 +
        T(0.75) * q2_3_8 +
        T(0.25) * q2_3_7
    cx[319] =
        p4_8 / ((1) + (1) * p4_8) - p4_7 / ((1) + (1) * p4_7) - T(0.75) * q4_5_8 + f3_4_8 -
        T(0.25) * q4_5_7
    cx[320] =
        p5_8 / ((1) + (1) * p5_8) - p5_7 / ((1) + (1) * p5_7) - T(0.75) * q5_6_8 - f5_7_8 +
        T(0.75) * q4_5_8 - T(0.25) * q5_6_7 + T(0.25) * q4_5_7
    cx[321] =
        p6_8 / ((1) + (1) * p6_8) - p6_7 / ((1) + (1) * p6_7) +
        T(0.75) * q5_6_8 +
        T(0.25) * q5_6_7 - 1
    cx[322] =
        p7_8 / ((1) + (1) * p7_8) - p7_7 / ((1) + (1) * p7_7) - T(0.75) * q7_8_8 + f5_7_8 -
        T(0.25) * q7_8_7
    cx[323] =
        p8_8 / ((1) + (1) * p8_8) - p8_7 / ((1) + (1) * p8_7) - T(0.75) * q8_9_8 -
        T(0.75) * q8_10_8 - T(0.75) * q8_11_8 + T(0.75) * q7_8_8 - T(0.25) * q8_9_7 -
        T(0.25) * q8_10_7 - T(0.25) * q8_11_7 + T(0.25) * q7_8_7
    cx[324] =
        p9_8 / ((1) + (1) * p9_8) - p9_7 / ((1) + (1) * p9_7) +
        T(0.75) * q8_9_8 +
        T(0.25) * q8_9_7
    cx[325] =
        p10_8 / ((1) + (1) * p10_8) - p10_7 / ((1) + (1) * p10_7) +
        T(0.75) * q8_10_8 +
        T(0.25) * q8_10_7 - 1
    cx[326] =
        p11_8 / ((1) + (1) * p11_8) - p11_7 / ((1) + (1) * p11_7) - T(0.75) * q11_12_8 +
        T(0.75) * q8_11_8 - T(0.25) * q11_12_7 + T(0.25) * q8_11_7
    cx[327] =
        p12_8 / ((1) + (1) * p12_8) - p12_7 / ((1) + (1) * p12_7) - T(0.75) * q12_13_8 +
        T(0.75) * q11_12_8 - T(0.25) * q12_13_7 + T(0.25) * q11_12_7
    cx[328] =
        p13_8 / ((1) + (1) * p13_8) - p13_7 / ((1) + (1) * p13_7) - T(0.75) * q13_14_8 -
        T(0.75) * q13_15_8 + T(0.75) * q12_13_8 - T(0.25) * q13_14_7 - T(0.25) * q13_15_7 +
        T(0.25) * q12_13_7 - 1
    cx[329] =
        p14_8 / ((1) + (1) * p14_8) - p14_7 / ((1) + (1) * p14_7) +
        T(0.75) * q13_14_8 +
        T(0.25) * q13_14_7
    cx[330] =
        p15_8 / ((1) + (1) * p15_8) - p15_7 / ((1) + (1) * p15_7) - T(0.75) * q15_16_8 +
        T(0.75) * q13_15_8 - T(0.25) * q15_16_7 + T(0.25) * q13_15_7 - 1
    cx[331] =
        p16_8 / ((1) + (1) * p16_8) - p16_7 / ((1) + (1) * p16_7) +
        T(0.75) * q15_16_8 +
        T(0.25) * q15_16_7 - out16_8
    cx[332] =
        p17_8 / ((1) + (1) * p17_8) - p17_7 / ((1) + (1) * p17_7) - T(0.75) * q17_18_8 +
        T(0.75) * q1_17_8 - T(0.25) * q17_18_7 + T(0.25) * q1_17_7 - 1
    cx[333] =
        p18_8 / ((1) + (1) * p18_8) - p18_7 / ((1) + (1) * p18_7) - T(0.75) * q18_19_8 +
        T(0.75) * q17_18_8 - T(0.25) * q18_19_7 + T(0.25) * q17_18_7 - 1
    cx[334] =
        p19_8 / ((1) + (1) * p19_8) - p19_7 / ((1) + (1) * p19_7) - f19_20_8 +
        T(0.75) * q18_19_8 +
        T(0.25) * q18_19_7
    cx[335] =
        p20_8 / ((1) + (1) * p20_8) - p20_7 / ((1) + (1) * p20_7) - T(0.75) * q20_21_8 +
        f19_20_8 - T(0.25) * q20_21_7
    cx[336] =
        p21_8 / ((1) + (1) * p21_8) - p21_7 / ((1) + (1) * p21_7) - T(0.75) * q21_22_8 +
        T(0.75) * q20_21_8 - T(0.25) * q21_22_7 + T(0.25) * q20_21_7 - 1
    cx[337] =
        p22_8 / ((1) + (1) * p22_8) - p22_7 / ((1) + (1) * p22_7) - T(0.75) * q22_23_8 +
        T(0.75) * q21_22_8 - T(0.25) * q22_23_7 + T(0.25) * q21_22_7 - 1
    cx[338] =
        p23_8 / ((1) + (1) * p23_8) - p23_7 / ((1) + (1) * p23_7) +
        T(0.75) * q22_23_8 +
        T(0.25) * q22_23_7 - out23_8
    cx[339] = p3_8 * r3_4_8 - p4_8
    cx[340] = p5_8 * r5_7_8 - p7_8
    cx[341] = p19_8 * r19_20_8 - p20_8
    cx[342] =
        p1_8 * p1_8 - p2_8 * p2_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_8 + p2_8)) * ((abs(q1_2_8))^T(1.8539))
    cx[343] =
        p1_8 * p1_8 - p17_8 * p17_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p1_8 + p17_8)) * ((abs(q1_17_8))^T(1.8539))
    cx[344] =
        p2_8 * p2_8 - p3_8 * p3_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p2_8 + p3_8)) * ((abs(q2_3_8))^T(1.8539))
    cx[345] =
        p4_8 * p4_8 - p5_8 * p5_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p4_8 + p5_8)) * ((abs(q4_5_8))^T(1.8539))
    cx[346] =
        p5_8 * p5_8 - p6_8 * p6_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p5_8 + p6_8)) * ((abs(q5_6_8))^T(1.8539))
    cx[347] =
        p7_8 * p7_8 - p8_8 * p8_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p7_8 + p8_8)) * ((abs(q7_8_8))^T(1.8539))
    cx[348] =
        p8_8 * p8_8 - p9_8 * p9_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_8 + p9_8)) * ((abs(q8_9_8))^T(1.8539))
    cx[349] =
        p8_8 * p8_8 - p10_8 * p10_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_8 + p10_8)) * ((abs(q8_10_8))^T(1.8539))
    cx[350] =
        p8_8 * p8_8 - p11_8 * p11_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p8_8 + p11_8)) * ((abs(q8_11_8))^T(1.8539))
    cx[351] =
        p11_8 * p11_8 - p12_8 * p12_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p11_8 + p12_8)) * ((abs(q11_12_8))^T(1.8539))
    cx[352] =
        p12_8 * p12_8 - p13_8 * p13_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p12_8 + p13_8)) * ((abs(q12_13_8))^T(1.8539))
    cx[353] =
        p13_8 * p13_8 - p14_8 * p14_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_8 + p14_8)) * ((abs(q13_14_8))^T(1.8539))
    cx[354] =
        p13_8 * p13_8 - p15_8 * p15_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p13_8 + p15_8)) * ((abs(q13_15_8))^T(1.8539))
    cx[355] =
        p15_8 * p15_8 - p16_8 * p16_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p15_8 + p16_8)) * ((abs(q15_16_8))^T(1.8539))
    cx[356] =
        p17_8 * p17_8 - p18_8 * p18_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p17_8 + p18_8)) * ((abs(q17_18_8))^T(1.8539))
    cx[357] =
        p18_8 * p18_8 - p19_8 * p19_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p18_8 + p19_8)) * ((abs(q18_19_8))^T(1.8539))
    cx[358] =
        p20_8 * p20_8 - p21_8 * p21_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p20_8 + p21_8)) * ((abs(q20_21_8))^T(1.8539))
    cx[359] =
        p21_8 * p21_8 - p22_8 * p22_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p21_8 + p22_8)) * ((abs(q21_22_8))^T(1.8539))
    cx[360] =
        p22_8 * p22_8 - p23_8 * p23_8 -
        T(0.01) * ((1) + (T(0.5) * 1) * (p22_8 + p23_8)) * ((abs(q22_23_8))^T(1.8539))
    return cx
end

function mycons(nlp, x)
    @info "SCT entering mycons"
    c = similar(x, nlp.meta.ncon)
    @info "SCT setting cons!"
    # Infiltrator.@infiltrate true
    c!(c, x)
    @info "SCT leaving mycons"
    return c
end

function mylag(nlp, x)
    @info "SCT entering mylag"
    o = obj(nlp, x)
    c = mycons(nlp, x)
    λ = randn(length(c))
    @info "SCT leaving mylag"
    return o + dot(λ, c)
end

function hess_sparsity_sct(name::Symbol)
    @info "SCT: Evaluating problem"
    nlp = OptimizationProblems.ADNLPProblems.eval(name)()
    f = Base.Fix1(mylag, nlp)
    x = nlp.meta.x0
    @info "SCT: Computing Hessian sparsity of $name problem."
    return ADTypes.hessian_sparsity(f, x, TracerSparsityDetector())
end

@time hess_sparsity_sct(:britgas)

Repository owner deleted a comment from adrhill Jun 13, 2024
@gdalle
Copy link
Collaborator

gdalle commented Jun 13, 2024

Working hypothesis: the new PR #119 introduces more types and puts extra burden on the compiler. The britgas test isn't failing in CI, just running forever.

@adrhill
Copy link
Owner Author

adrhill commented Jun 14, 2024

We figured out what went wrong:

Problem

All operators are overloaded in functions overload_$operator_$n_to_$m using metaprogramming.
Let's use Hessian tracing on a single-input-single-output function as an example:

function overload_hessian_1_to_1(M, op)
    SCT = SparseConnectivityTracer
    return quote
        function $M.$op(t::$SCT.HessianTracer)
            return $SCT.hessian_tracer_1_to_1(
                t,
                $SCT.is_firstder_zero_global($M.$op),
                $SCT.is_seconder_zero_global($M.$op),
            )
        end
    end
end

Since this generated code is a one-liner, the Julia compiler inlines the call to hessian_tracer_1_to_1.

This inlined code has to be compiled for each operator, leading to a lot of unnecessary overhead, since hessian_tracer_1_to_1 functions are completely independent of operators.

Arguably, this is already problematic on main, but #119 made things even worse by introducing a layer of dispatching between hessian_tracer_1_to_1 and hessian_tracer_1_to_1_inner. The "outer" call generically handles empty tracers and the "inner" call allows for future, non-AbstractSet sparsity representations via multiple dispatch.

My best guess is that in combination with constant propagation of boolean operator properties like

is_firstder_arg1_zero::Bool
is_secondder_arg1_zero::Bool
is_firstder_arg2_zero::Bool
is_secondder_arg2_zero::Bool
is_crossder_zero::Bool

the Julia compiler tried to optimize twice-inlined functions for each operator, leading to an explosion of compile time.

Solution

The solution is to add @noinline to the "outer" hessian_tracer_1_to_1 call, and more generally all *_tracer_*_to_* functions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants