from .aircrfta import AIRCRFTA as AIRCRFTA
from .argauss import ARGAUSS as ARGAUSS
from .arglale import ARGLALE as ARGLALE
from .arglble import ARGLBLE as ARGLBLE
from .arglcle import ARGLCLE as ARGLCLE
from .argtrig import ARGTRIG as ARGTRIG
from .artif import ARTIF as ARTIF

# TODO: Human review needed - constraint dimension mismatch
# from .arwhdne import ARWHDNE as ARWHDNE
from .bardne import BARDNE as BARDNE
from .bdvalues import BDVALUES as BDVALUES

# from .bdqrticne import BDQRTICNE as BDQRTICNE  # TODO: Human review needed
from .bealene import BEALENE as BEALENE
from .bennett5 import BENNETT5 as BENNETT5
from .biggs6ne import BIGGS6NE as BIGGS6NE
from .booth import BOOTH as BOOTH
from .box3ne import BOX3NE as BOX3NE
from .boxbod import BOXBOD as BOXBOD
from .bratu2dt import BRATU2DT as BRATU2DT

# TODO: Human review needed - Jacobian precision issues with product term
# from .brownale import BROWNALE as BROWNALE
from .brownbsne import BROWNBSNE as BROWNBSNE
from .browndene import BROWNDENE as BROWNDENE

# TODO: Human review needed - constraint values don't match pycutest
# from .broydn3d import BROYDN3D as BROYDN3D
# TODO: Human review needed - systematic differences in constraint values
# from .broydnbd import BROYDNBD as BROYDNBD
# TODO: Human review needed - constraint values don't match pycutest
# from .brybndne import BRYBNDNE as BRYBNDNE
# from .ceri651a import CERI651A as CERI651A
# from .ceri651b import CERI651B as CERI651B
# from .ceri651c import CERI651C as CERI651C
# from .ceri651d import CERI651D as CERI651D
# from .ceri651e import CERI651E as CERI651E
# TODO: Human review needed - constraint values don't match pycutest
# from .chainwoone import CHAINWOONE as CHAINWOONE
from .chandheq import CHANDHEQ as CHANDHEQ

# from .channel import CHANNEL as CHANNEL  # TODO: Human review needed
from .chebyqadne import CHEBYQADNE as CHEBYQADNE
from .cluster import CLUSTER as CLUSTER

# from .coatingne import COATINGNE as COATINGNE  # TODO: Human review - SIF diffs
from .coolhans import COOLHANS as COOLHANS

# from .chnrsbne import CHNRSBNE as CHNRSBNE  # TODO: Human review needed
# from .chnrsnbmne import CHNRSNBMNE as CHNRSNBMNE  # TODO: Human review needed
# TODO: Human review needed - constraint values and Jacobian mismatch
# from .cubene import CUBENE as CUBENE
from .cyclic3 import CYCLIC3 as CYCLIC3
from .cycloocf import CYCLOOCF as CYCLOOCF
from .cyclooct import CYCLOOCT as CYCLOOCT
from .daniwood import DANIWOOD as DANIWOOD
from .deconvbne import DECONVBNE as DECONVBNE
from .deconvne import DECONVNE as DECONVNE
from .denschnbne import DENSCHNBNE as DENSCHNBNE
from .denschncne import DENSCHNCNE as DENSCHNCNE
from .denschndne import DENSCHNDNE as DENSCHNDNE
from .denschnene import DENSCHNENE as DENSCHNENE
from .denschnfne import DENSCHNFNE as DENSCHNFNE
from .devgla1ne import DEVGLA1NE as DEVGLA1NE
from .devgla2ne import DEVGLA2NE as DEVGLA2NE
from .dmn15102 import DMN15102 as DMN15102
from .dmn15103 import DMN15103 as DMN15103

# TODO: Human review needed - Jacobian precision issues (0.001-0.003 differences)
# from .dmn15332 import DMN15332 as DMN15332
# from .dmn15333 import DMN15333 as DMN15333
# from .dmn37142 import DMN37142 as DMN37142
# from .dmn37143 import DMN37143 as DMN37143
from .drcavty1 import DRCAVTY1 as DRCAVTY1
from .drcavty2 import DRCAVTY2 as DRCAVTY2
from .drcavty3 import DRCAVTY3 as DRCAVTY3
from .eggcratene import EGGCRATENE as EGGCRATENE

# TODO: Human review needed - systematic constraint value discrepancies
# from .eigena import EIGENA as EIGENA
# TODO: Human review needed - same constraint issues as EIGENA
# from .eigenau import EIGENAU as EIGENAU
from .elatvidune import ELATVIDUNE as ELATVIDUNE
from .engval2ne import ENGVAL2NE as ENGVAL2NE
from .errinrosne import ERRINROSNE as ERRINROSNE
from .errinrsmne import ERRINRSMNE as ERRINRSMNE
from .exp2ne import EXP2NE as EXP2NE
from .expfitne import EXPFITNE as EXPFITNE
from .extrosnbne import EXTROSNBNE as EXTROSNBNE
from .fbrain import FBRAIN as FBRAIN
from .fbrain2 import FBRAIN2 as FBRAIN2
from .fbrain2ne import FBRAIN2NE as FBRAIN2NE
from .fbrain3 import FBRAIN3 as FBRAIN3
from .fbrainne import FBRAINNE as FBRAINNE

# from .flosp2hh import FLOSP2HH as FLOSP2HH  # TODO: Human review - NQR constraints
# from .flosp2hl import FLOSP2HL as FLOSP2HL  # TODO: Human review - NQR constraints
# from .flosp2hm import FLOSP2HM as FLOSP2HM  # TODO: Human review - NQR constraints
# from .flosp2th import FLOSP2TH as FLOSP2TH  # TODO: Human review - NQR constraints
# from .flosp2tl import FLOSP2TL as FLOSP2TL  # TODO: Human review - NQR constraints
# from .flosp2tm import FLOSP2TM as FLOSP2TM  # TODO: Human review - NQR constraints
from .freurone import FREURONE as FREURONE
from .genrosebne import GENROSEBNE as GENROSEBNE
from .genrosene import GENROSENE as GENROSENE
from .gottfr import GOTTFR as GOTTFR
from .gulfne import GULFNE as GULFNE
from .hatfldane import HATFLDANE as HATFLDANE
from .hatfldbne import HATFLDBNE as HATFLDBNE
from .hatfldcne import HATFLDCNE as HATFLDCNE
from .hatflddne import HATFLDDNE as HATFLDDNE

# TODO: Human review needed - sign convention issues with pycutest
# from .hatfldene import HATFLDENE as HATFLDENE
from .hatfldf import HATFLDF as HATFLDF
from .hatfldflne import HATFLDFLNE as HATFLDFLNE
from .hatfldg import HATFLDG as HATFLDG
from .helixne import HELIXNE as HELIXNE
from .himmelba import HIMMELBA as HIMMELBA
from .himmelbfne import HIMMELBFNE as HIMMELBFNE
from .hs1ne import HS1NE as HS1NE
from .hs2ne import HS2NE as HS2NE
from .hs25ne import HS25NE as HS25NE

# TODO: Human review needed - complex scaling interactions
# from .hydcar6 import HYDCAR6 as HYDCAR6
from .hypcir import HYPCIR as HYPCIR
from .inteqne import INTEQNE as INTEQNE
from .jensmpne import JENSMPNE as JENSMPNE
from .judgene import JUDGENE as JUDGENE
from .kirby2 import KIRBY2 as KIRBY2
from .koebhelbne import KOEBHELBNE as KOEBHELBNE
from .kowosbne import KOWOSBNE as KOWOSBNE
from .kss import KSS as KSS

# TODO: KTMODEL needs human review - multiple test failures
# from .ktmodel import KTMODEL as KTMODEL
from .levymone import LEVYMONE as LEVYMONE
from .levymone5 import LEVYMONE5 as LEVYMONE5
from .levymone6 import LEVYMONE6 as LEVYMONE6
from .levymone7 import LEVYMONE7 as LEVYMONE7
from .levymone8 import LEVYMONE8 as LEVYMONE8
from .levymone9 import LEVYMONE9 as LEVYMONE9
from .levymone10 import LEVYMONE10 as LEVYMONE10
from .liarwhdne import LIARWHDNE as LIARWHDNE

# TODO: Human review needed - incomplete implementation
# from .linversene import LINVERSENE as LINVERSENE
from .luksan11 import LUKSAN11 as LUKSAN11
from .luksan12 import LUKSAN12 as LUKSAN12
from .luksan13 import LUKSAN13 as LUKSAN13
from .luksan14 import LUKSAN14 as LUKSAN14
from .luksan15 import LUKSAN15 as LUKSAN15
from .luksan16 import LUKSAN16 as LUKSAN16
from .luksan17 import LUKSAN17 as LUKSAN17
from .luksan21 import LUKSAN21 as LUKSAN21
from .luksan22 import LUKSAN22 as LUKSAN22
from .mancinone import MANCINONE as MANCINONE
from .meyer3ne import MEYER3NE as MEYER3NE
from .mgh09 import MGH09 as MGH09
from .mgh10 import MGH10 as MGH10
from .mgh10s import MGH10S as MGH10S
from .mgh17 import MGH17 as MGH17
from .mgh17s import MGH17S as MGH17S
from .misra1d import MISRA1D as MISRA1D

# TODO: Human review - constraint ordering issues
# from .modbealene import MODBEALENE as MODBEALENE
# TODO: Human review - SIF file bug on line 64
# from .morebvne import MOREBVNE as MOREBVNE
from .msqrta import MSQRTA as MSQRTA
from .msqrtb import MSQRTB as MSQRTB

# TODO: Human review needed - hardcoded data values in SIF
# from .muonsine import MUONSINE as MUONSINE
from .nondiane import NONDIANE as NONDIANE

# TODO: Human review needed - element structure issues
# from .nonmsqrtne import NONMSQRTNE as NONMSQRTNE
from .nonscompne import NONSCOMPNE as NONSCOMPNE
from .oscigrne import OSCIGRNE as OSCIGRNE
from .oscipane import OSCIPANE as OSCIPANE
from .palmer1ane import PALMER1ANE as PALMER1ANE
from .palmer1bne import PALMER1BNE as PALMER1BNE
from .palmer1ene import PALMER1ENE as PALMER1ENE
from .palmer1ne import PALMER1NE as PALMER1NE
from .palmer2ane import PALMER2ANE as PALMER2ANE
from .palmer2bne import PALMER2BNE as PALMER2BNE
from .palmer2ene import PALMER2ENE as PALMER2ENE
from .palmer2ne import PALMER2NE as PALMER2NE
from .palmer3ane import PALMER3ANE as PALMER3ANE
from .palmer3bne import PALMER3BNE as PALMER3BNE
from .palmer3ene import PALMER3ENE as PALMER3ENE
from .palmer3ne import PALMER3NE as PALMER3NE
from .palmer4ane import PALMER4ANE as PALMER4ANE
from .palmer4bne import PALMER4BNE as PALMER4BNE
from .palmer4ene import PALMER4ENE as PALMER4ENE
from .palmer4ne import PALMER4NE as PALMER4NE

# TODO: Fix Chebyshev polynomial calculation
# from .palmer5ane import PALMER5ANE as PALMER5ANE
from .palmer5bne import PALMER5BNE as PALMER5BNE

# TODO: Human review - numerical precision
# from .palmer5ene import PALMER5ENE as PALMER5ENE
from .palmer6ane import PALMER6ANE as PALMER6ANE
from .palmer6ene import PALMER6ENE as PALMER6ENE
from .palmer7ane import PALMER7ANE as PALMER7ANE
from .palmer7ene import PALMER7ENE as PALMER7ENE
from .palmer8ane import PALMER8ANE as PALMER8ANE
from .palmer8ene import PALMER8ENE as PALMER8ENE
from .pfit1 import PFIT1 as PFIT1
from .pfit2 import PFIT2 as PFIT2
from .pfit3 import PFIT3 as PFIT3
from .pfit4 import PFIT4 as PFIT4
from .powellbs import POWELLBS as POWELLBS
from .powellse import POWELLSE as POWELLSE
from .powellsq import POWELLSQ as POWELLSQ
from .powersumne import POWERSUMNE as POWERSUMNE

# TODO: Human review needed - mixed constraint types (equality/inequality)
# from .res import RES as RES
from .santa import SANTA as SANTA
from .sinvalne import SINVALNE as SINVALNE
from .spin import SPIN as SPIN

# TODO: Human review needed - constraint test failures (fully vectorized)
# from .spin2 import SPIN2 as SPIN2
# TODO: Human review needed - complex element structure
# from .ssbrybndne import SSBRYBNDNE as SSBRYBNDNE
from .tenfoldtr import TENFOLDTR as TENFOLDTR

# TODO: Human review needed - mixed constraint types (equality/inequality)
# from .vanderm1 import VANDERM1 as VANDERM1
# from .vanderm2 import VANDERM2 as VANDERM2
# TODO: Human review needed - originally had issues in constrained version
# from .vanderm3 import VANDERM3 as VANDERM3
# from .vanderm4 import VANDERM4 as VANDERM4
from .trigon1ne import TRIGON1NE as TRIGON1NE

# TODO: Human review needed - minor numerical tolerance issue (Jacobian diff 1.26e-05)
# from .trigon2ne import TRIGON2NE as TRIGON2NE
from .vandaniums import VANDANIUMS as VANDANIUMS
from .vardimne import VARDIMNE as VARDIMNE
from .vesuvia import VESUVIA as VESUVIA
from .vesuvio import VESUVIO as VESUVIO
from .vesuviou import VESUVIOU as VESUVIOU
from .vibrbeamne import VIBRBEAMNE as VIBRBEAMNE
from .yatp1cne import YATP1CNE as YATP1CNE
from .yatp1ne import YATP1NE as YATP1NE


# TODO: Human review needed - constraint ordering mismatch with pycutest
# from .yatp2cne import YATP2CNE as YATP2CNE
# TODO: Human review needed - constraint ordering mismatch with pycutest
# from .yatp2sq import YATP2SQ as YATP2SQ


nonlinear_equations_problems = (
    AIRCRFTA(),
    ARGAUSS(),
    ARGLALE(),
    ARGLBLE(),
    ARGLCLE(),
    ARGTRIG(),
    ARTIF(),
    # TODO: Human review needed - constraint dimension mismatch
    # ARWHDNE(),
    BARDNE(),
    BDVALUES(),
    # BDQRTICNE(),  # TODO: Human review needed
    BEALENE(),
    BENNETT5(),
    BIGGS6NE(),
    BOOTH(),
    BOX3NE(),
    BRATU2DT(),
    LEVYMONE9(),
    # BROWNALE(),  # TODO: Human review needed - Jacobian precision issues
    BROWNBSNE(),
    BROWNDENE(),
    # CERI651D(),  # TODO: Human review needed - constraint precision
    # CERI651E(),  # TODO: Human review needed - constraint precision
    # BROYDN3D(),  # TODO: Human review needed - constraint values mismatch
    # BROYDNBD(),  # TODO: Human review needed - systematic differences
    # BRYBNDNE(),  # TODO: Human review needed - constraint values mismatch
    DRCAVTY1(),
    DRCAVTY2(),
    DRCAVTY3(),
    HYPCIR(),
    MSQRTA(),
    MSQRTB(),
    # CERI651A(),  # TODO: Human review needed - constraint precision
    # CERI651B(),  # TODO: Human review needed - constraint precision
    # CERI651C(),  # TODO: Human review needed - constraint precision
    # CHAINWOONE(),  # TODO: Human review needed - constraint values mismatch
    # CHANNEL(),  # TODO: Human review needed
    CHEBYQADNE(),
    # CHNRSBNE(),  # TODO: Human review needed
    # CHNRSNBMNE(),  # TODO: Human review needed
    # COATINGNE(),  # TODO: Human review - SIF diffs
    # CUBENE(),  # TODO: Human review needed - constraint and Jacobian mismatch
    CYCLIC3(),
    CYCLOOCF(),
    CYCLOOCT(),
    DENSCHNBNE(),
    DENSCHNCNE(),
    DENSCHNDNE(),
    DENSCHNENE(),
    DENSCHNFNE(),
    DECONVBNE(),
    DECONVNE(),
    DEVGLA1NE(),
    DEVGLA2NE(),
    DMN15102(),
    DMN15103(),
    # DMN15332(),  # TODO: Human review needed - Jacobian precision issues
    # DMN15333(),  # TODO: Human review needed - Jacobian precision issues
    # DMN37142(),  # TODO: Human review needed - Jacobian precision issues
    # DMN37143(),  # TODO: Human review needed - Jacobian precision issues
    EGGCRATENE(),
    # EIGENA(),  # TODO: Human review needed - systematic constraint value discrepancies
    # EIGENAU(),  # TODO: Human review needed - same constraint issues as EIGENA
    ELATVIDUNE(),
    ENGVAL2NE(),
    ERRINRSMNE(),
    ERRINROSNE(),
    EXP2NE(),
    EXPFITNE(),
    EXTROSNBNE(),
    FBRAIN(),
    FBRAIN2(),
    FBRAIN2NE(),
    FBRAIN3(),
    FBRAINNE(),
    # FLOSP2HH(),  # TODO: Human review needed - NQR constraint handling
    # FLOSP2HL(),  # TODO: Human review needed - NQR constraint handling
    # FLOSP2HM(),  # TODO: Human review needed - NQR constraint handling
    # FLOSP2TH(),  # TODO: Human review needed - NQR constraint handling
    # FLOSP2TL(),  # TODO: Human review needed - NQR constraint handling
    # FLOSP2TM(),  # TODO: Human review needed - NQR constraint handling
    FREURONE(),
    GENROSEBNE(),
    GENROSENE(),
    GOTTFR(),
    GULFNE(),
    HATFLDANE(),
    HATFLDBNE(),
    HATFLDCNE(),
    HATFLDDNE(),
    # HATFLDENE(),  # TODO: Human review needed - sign convention issues
    HATFLDF(),
    HATFLDFLNE(),
    HATFLDG(),
    HELIXNE(),
    HIMMELBA(),
    HIMMELBFNE(),
    HS1NE(),
    HS2NE(),
    HS25NE(),
    # HYDCAR6(),  # TODO: Human review needed - complex scaling interactions
    INTEQNE(),
    JENSMPNE(),
    JUDGENE(),
    KIRBY2(),
    KOEBHELBNE(),
    KSS(),
    # KTMODEL(),  # TODO: KTMODEL needs human review - multiple test failures
    KOWOSBNE(),
    LEVYMONE(),
    LEVYMONE5(),
    LEVYMONE6(),
    LEVYMONE7(),
    LEVYMONE8(),
    LEVYMONE10(),
    LIARWHDNE(),
    # LINVERSENE(),  # TODO: Human review needed - incomplete implementation
    LUKSAN11(),
    LUKSAN12(),
    LUKSAN13(),
    LUKSAN14(),
    LUKSAN15(),
    LUKSAN16(),
    LUKSAN17(),
    LUKSAN21(),
    LUKSAN22(),
    MANCINONE(),
    MEYER3NE(),
    MGH09(),
    MGH10(),
    MGH10S(),
    MGH17(),
    MGH17S(),
    MISRA1D(),
    # MODBEALENE(),  # TODO: Human review - constraint ordering issues
    # MOREBVNE(),  # TODO: Human review - SIF file bug on line 64
    # MUONSINE(),  # TODO: Human review - hardcoded data values
    NONDIANE(),
    # NONMSQRTNE(),  # TODO: Human review - element structure issues
    NONSCOMPNE(),
    OSCIGRNE(),
    OSCIPANE(),
    PALMER1ANE(),
    PALMER1BNE(),
    PALMER1ENE(),
    PALMER1NE(),
    PALMER2ANE(),
    PALMER2BNE(),
    PALMER2ENE(),
    PALMER2NE(),
    PALMER3ANE(),
    PALMER3BNE(),
    PALMER3ENE(),
    PALMER3NE(),
    PALMER4ANE(),
    PALMER4BNE(),
    PALMER4ENE(),
    PALMER4NE(),
    # PALMER5ANE(),  # TODO: Fix Chebyshev polynomial calculation
    PALMER5BNE(),
    # PALMER5ENE(),  # TODO: Human review - numerical precision
    PALMER6ANE(),
    PALMER6ENE(),
    PALMER7ANE(),
    PALMER7ENE(),
    PALMER8ANE(),
    PALMER8ENE(),
    PFIT1(),
    PFIT2(),
    PFIT3(),
    PFIT4(),
    POWERSUMNE(),
    # RES(),  # TODO: Human review needed - mixed constraint types
    SANTA(),
    SINVALNE(),
    SPIN(),
    # SPIN2(),  # TODO: Human review - constraint test failures
    # SSBRYBNDNE(),  # TODO: Human review needed - complex element structure
    TENFOLDTR(),
    BOXBOD(),
    CHANDHEQ(),
    CLUSTER(),
    COOLHANS(),
    DANIWOOD(),
    POWELLBS(),
    POWELLSE(),
    POWELLSQ(),
    TRIGON1NE(),
    # TRIGON2NE(),  # TODO: Human review - minor Jacobian tolerance (1.26e-05)
    VANDANIUMS(),
    VARDIMNE(),
    VESUVIA(),
    VESUVIO(),
    VESUVIOU(),
    VIBRBEAMNE(),
    YATP1CNE(),
    YATP1NE(),
    # YATP2CNE(),  # TODO: Human review - constraint ordering mismatch with pycutest
    # YATP2SQ(),  # TODO: Human review - constraint ordering mismatch with pycutest
    # VANDERM1(),  # TODO: Human review needed - mixed constraint types
    # VANDERM2(),  # TODO: Human review needed - mixed constraint types
    # VANDERM3(),  # TODO: Human review needed - originally had issues
    # VANDERM4(),  # TODO: Human review needed - originally had issues
)
