
    (ph                        S SK Jr  S SKrS SKJr  S SKJrJrJ	r	J
r
  S SKrS SKJr  S SKJrJr  S SKJr  S SKJrJr  S S	KJr  S S
KJrJrJr  S/S jrS0S jrS rS rS r S r!S r"S r#S r$S r%S0S jr&S r' " S S5      r( " S S5      r)S r*\+" \RX                  " 5       5      \*/-   r- " S S5      r. " S S5      r/ " S  S!5      r0 " S" S#5      r1 " S$ S%\.\/\0\15      r2 " S& S'\.\/\0\15      r3 " S( S)\.5      r4S* r5S+ r6S, r7S- r8S. r9g)1    )productN)norm)assert_assert_allcloseassert_equalsuppress_warnings)raises)issparse
lil_matrix)aslinearoperator)least_squaresBounds)IMPLEMENTED_LOSSES)EPSmake_strictly_feasibleCL_scaling_vectorc                     X-
  S-  S-   $ )N         @ xas     Z/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_least_squares.pyfun_trivialr      s    EA:    c                     SX-
  -  $ Nr   r   r   s     r   jac_trivialr      s    ;r   c                 >    [         R                  " U S   U S   /5      $ Nr      nparrayr   s    r   fun_2d_trivialr'      s    88QqT1Q4L!!r   c                 .    [         R                  " S5      $ r   )r$   identityr&   s    r   jac_2d_trivialr*      s    ;;q>r   c                 \    [         R                  " SU S   U S   S-  -
  -  SU S   -
  /5      $ )N
   r"   r   r   r#   r&   s    r   fun_rosenbrockr-   !   s3    88R1Q4!A$'>*Q1X788r   c                 F    [         R                  " SU S   -  S/SS//5      $ )Nr   r,   r#   r&   s    r   jac_rosenbrockr1   %   s/    88	qtR	Q  r   c                 L    [         R                  " SU S   -  S/SS/SS//5      $ )Nr/   r   r,   r0           r#   r&   s    r   jac_rosenbrock_bad_dimr4   ,   s6    88	qtR	Q	c
  r   c                     [        U 5      S   $ Nr   )r-   r&   s    r   fun_rosenbrock_croppedr7   4       !Qr   c                     [        U 5      S   $ r6   )r1   r&   s    r   jac_rosenbrock_croppedr:   8   r8   r   c                 >    [         R                  " X S-  U S-  /5      $ )Nr      r#   r&   s    r   fun_wrong_dimensionsr=   =   s    88Q1adO$$r   c                 <    [         R                  " [        XS95      $ )N)r   )r$   
atleast_3dr   r   s     r   jac_wrong_dimensionsr@   A   s    ==Q,--r   c                 d   [        [        R                  " U R                  S   5      5      n[        R                  " US-   US-   45      nU R                  X45      n XSS2SS24'   US S2SS24   USS 2SS24   -   USS2S S24   -   USS2SS 24   -   SU -  -
  U S-  -   nUR                  5       $ )Nr   r   r"   r0      r<   )intr$   sqrtshapezerosreshaperavel)r   nuys       r   fun_bvprM   E   s    BGGAGGAJ A
!a%Q A			1&AadAbDjM	#2#qt)qQrT{"QqtSbSy\1AadABhK?!a%G!Q$NA779r   c                   *    \ rS rSrSS jrS rS rSrg)BroydenTridiagonalN   c                   ^  [         R                  R                  S5      nUT l        [         R                  " U5      * T l        [         R                  " SSU5      T l        [         R                  " SSU5      T l        T =R                  SUR                  U5      -  -  sl        T =R                  SUR                  U5      -  -  sl        T =R
                  SUR                  U5      -  -  sl        [        T R
                  T R                  T R                  5      T l        US:X  a  [        X4[        S9T l        [         R                  " U5      nS	T R                  XD4'   [         R                  " S	U5      nS	T R                  XDS	-
  4'   [         R                  " US	-
  5      nS	T R                  XDS	-   4'   T R                  T l        g US
:X  a  U 4S jT l        g US:X  a  S T l        U 4S jT l        g [#        S5        g )Nr   rB         gr3   皙?sparse)dtyper"   operatorc                 8   > [        TR                  U 5      5      $ N)r   _jacr   selfs    r   <lambda>-BroydenTridiagonal.__init__.<locals>.<lambda>i   s    !1$))A,!?r   densec                 B   > TR                  U 5      R                  5       $ rX   )rY   toarrayrZ   s    r   r\   r]   l   s    1!5!5!7r   F)r$   randomRandomStaterJ   onesx0linspacelbubrandnr   r   rD   sparsityarangerY   jacr   )r[   rJ   moderngis   `    r   __init__BroydenTridiagonal.__init__O   sx   ii##A&771:+++b$*++dC+31%%31%%31%%($''477C8&vS9DM		!A"#DMM!$		!QA&'DMM!U(#		!a% A&'DMM!U(#yyDHZ?DHW_ DM7DHENr   c                 f    SU-
  U-  S-   nUSS === US S -  sss& US S=== SUSS  -  -  sss& U$ )Nr<   r"   r0   r   r   )r[   r   fs      r   funBroydenTridiagonal.funp   sG    UaK!O	!"3B	#2!ae)r   c                 L   [        U R                  U R                  45      n[        R                  " U R                  5      nSSU-  -
  X#U4'   [        R                  " SU R                  5      nSX#US-
  4'   [        R                  " U R                  S-
  5      nSX#US-   4'   U$ )Nr<   r   r"   r0   rB   )r   rJ   r$   rj   )r[   r   Jrn   s       r   rY   BroydenTridiagonal._jacv   s    '(IIdffa!e)Q$IIa QU(IIdffqj!QU(r   )rk   rf   rJ   ri   rg   rd   N)d   rT   )__name__
__module____qualname____firstlineno__ro   rs   rY   __static_attributes__r   r   r   rO   rO   N   s    Br   rO   c                   2    \ rS rSrSr  SS jrS rS rSrg)	ExponentialFittingProblem   zYProvide data and function for exponential fitting in the form
y = a + exp(b * x) + noise.Nc                 V   [         R                  R                  U5      nX`l        SU l        [         R
                  " S5      U l        [         R                  " US   US   U5      U l        U[         R                  " X R                  -  5      -   U l
        U =R                  X8R                  U R                  5      -  -  sl
        UR                  SU R                  U5      n	U R                  U	==   SU-  UR                  U5      -  -  ss'   [         R                  " X/5      U l        g )Nr   r   r"   2   )r$   ra   rb   mrJ   rG   p0re   r   exprL   rh   randintrandr%   p_opt)
r[   r   bnoise
n_outliersx_rangen_pointsrandom_seedrm   outlierss
             r   ro   "ExponentialFittingProblem.__init__   s    ii##K0((1+WQZX>RVVAJ''%))DFF+++;;q$&&*5xBJ*)===XXqf%
r   c                 t    US   [         R                  " US   U R                  -  5      -   U R                  -
  $ r!   )r$   r   r   rL   r[   ps     r   rs   ExponentialFittingProblem.fun   s/    tbffQqTDFF]++dff44r   c                     [         R                  " U R                  U R                  45      nSUS S 2S4'   U R                  [         R
                  " US   U R                  -  5      -  US S 2S4'   U$ )Nr"   r   )r$   emptyr   rJ   r   r   )r[   r   rv   s      r   rk   ExponentialFittingProblem.jac   sZ    HHdffdff%&!Q$&&266!A$-00!Q$r   )r   rJ   r   r   r   rL   )r"   )r0   r"      N)	ry   rz   r{   r|   __doc__ro   rs   rk   r}   r   r   r   r   r      s    # ;B*.&"5r   r   c                     [         R                  " SU R                  45      nSU -   nSUS-  S-
  -  US'   US-  US'   SUS-  -  US'   U$ )Nr<   r"   gUUUUUU?r   gUUUUUUgr   )r$   r   size)zrhots      r   cubic_soft_l1r      s[    
((Aqvv;
C	AA!c(Q,CF4[CFAICFJr   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)	BaseMixin   c                     [        [        SU R                  S9n[        UR                  SSS9  [        UR
                  [        UR                  5      5        g )N       @methodr   -C6?atol)r   r   r   r   r   rs   r[   ress     r   
test_basicBaseMixin.test_basic   s;    KDKK@qt,SUU!34r   c           
         SnSSS[         4 H  n[        5        nUR                  [        S5        [	        [
        SX!4U R                  S9n[	        [
        SUSU0U R                  S	9nS S S 5        [        WR                  US
S9  [        WR                  US
S9  [        [        [        [
        SSU R                  S9  [        [        [        [
        SSS0U R                  S	9  M     g ! , (       d  f       N= f)N      @2-point3-pointcsBjac='(3-point|cs)' works equivalently to '2-point' for method='lm'r   )argsr   r   )kwargsr   r   )rtol)r<   rC   kaboomr<   )r   r   filterUserWarningr   r   r   r   r   assert_raises	TypeError)r[   r   rk   supr   res1s         r   test_args_kwargsBaseMixin.test_args_kwargs   s    y$<C"$

X $Kc+/;;8$[#sC8+/;;8 % CEE140DFFAD1)]K&t{{<)]K"*At{{D! =$$s   AC**
C8	c           	      >   SSS[         4 HZ  n[        5        nUR                  [        S5        [	        [
        SXR                  S9nS S S 5        [        WR                  SSS	9  M\     [        [        [        [
        SS
U R                  S9  g ! , (       d  f       NL= f)Nr   r   r   r   r   r   r   r   r   oopsrk   r   )r   r   r   r   r   r   r   r   r   r   
ValueError)r[   rk   r   r   s       r   test_jac_optionsBaseMixin.test_jac_options   s~    y$<C"$

X $Kc++N % CEE140 = 	j-cv![[	* %$s   0B
B	c                 t    S H2  n[        [        SUU R                  S9n[        UR                  SSS9  M4     g )N)N   r   )max_nfevr   r   r   r   )r   r   r   r   r   )r[   r   r   s      r   test_nfev_optionsBaseMixin.test_nfev_options   s3    "HS8'+{{4CCEE140 #r   c           	         S[         R                  " S/5      S4 H(  n[        [        SUS9n[	        UR
                  S5        M*     [        [        [        [        SSU R                  S9  [        [        [        [        SS	U R                  S9  [        [        [        [        SS U R                  S9  [        [        [        [        SS
U R                  S9  g )N      ?      ?rk   r   )x_scaler   auto)r   r         y      ?       @)	r$   r%   r   r   r   r   r   r   r   )r[   r   r   s      r   test_x_scale_optionsBaseMixin.test_x_scale_options   s    RXXse_e4GS'BCCEE1% 5 	j-6$++	?j-4	=j-4	=j-8DKK	Ar   c                    [        [        SSU R                  S9n[        [        SSU R                  S9n[        [        SS U R                  S9n[        UR                  SSS9  [        UR                  SSS9  [        UR                  SSS9  [        UR                  UR                  5        [        UR                  UR                  5        g )Nr   rS   )	diff_stepr   gr   r   r   )r   r   r   r   r   r   nfev)r[   r   res2res3s       r   test_diff_stepBaseMixin.test_diff_step   s     [#$(KK1[#$(KK1[#'+DKKA---TVVTVV$TYY		*r   c           	          [        [        [        [        SU R                  SS0S9  [        [        [        [        SU R                  SS0S9  g )Nr   no_such_optionrx   )r   optionsr   )r   r   r   r   r   r[   s    r   test_incorrect_options_usage&BaseMixin.test_incorrect_options_usage   sA    iS![[3CS2I	KiS![[:s2C	Er   c                    [        [        SU R                  S9n[        UR                  SSS9  [        UR
                  S5        [        UR                  S5        [        UR                  SSS9  [        UR                  SSS9  [        UR                  SSS9  [        UR                  S5        U R                  S	:X  a0  [        UR                  S
:  5        [        UR                  S L 5        O0[        UR                  S:  5        [        UR                  S:  5        [        UR                  S:  5        [        UR                   5        g )Nr   r   r   r   r   g      )@   {Gz?lm   r,   )r   r   r   r   r   costrs   rk   grad
optimalityr   active_maskr   r   njevstatussuccessr   s     r   test_full_resultBaseMixin.test_full_result   s     KT[[Aqt,$'#.!$/5S__a(;;$CHHrM"CHH$%CHHrM"CHHrM"

Qr   c                    U R                   S:X  a  g [        [        SU R                   SS9n[        UR                  [
        R                  " S/5      5        [        UR                  S5        [        UR                  [
        R                  " S/5      5        [        UR                  [
        R                  " S//5      5        [        UR                  [
        R                  " S	/5      5        [        UR                  S	5        [        UR                  [
        R                  " S
/5      5        [        UR                  S5        [        UR                  S5        [        UR                  S
5        [        UR                   S
5        g )Nr   r   r"   )r   r   r   g     @D@	   rC   $   r   )r   r   r   r   r   r$   r%   r   rs   rk   r   r   r   r   r   r   r   r   s     r   test_full_result_single_fev%BaseMixin.test_full_result_single_fev  s     ;;$KT[[%&(SUUBHHaSM*SXXt$SWWbhhsm,SWWbhhuo.SXXrxx~.S^^R(S__bhhsm4SXXq!SXXq!SZZ#S[[!$r   c                 \   SS/nSS/n[        SSS[        /S[        R                  " SS/5      S/S	S
/5       H_  u  p4n[	        5        nUR                  [        S5        [        [        XUXPR                  S9nS S S 5        [        WR                  U5        Ma     g ! , (       d  f       N)= f)NrB   r"   r   r   r   r   皙?rk   exactlsmrr   r   	tr_solverr   )r   r1   r$   r%   r   r   r   r   r-   r   r   r   )r[   rd   x_optrk   r   r   r   r   s           r   test_rosenbrockBaseMixin.test_rosenbrock(  s    !WA'.It^<bhhSz*E2&!(##C) #$

X $NBW.7M % CEE5)(# %$s   	1B
B+	c           
      2   SS/nU R                   S:X  a  [        [        [        [        USS9  g [        SSS[        /S[        R                  " SS	/5      S
/SS/5       H5  u  p#n[        [        XUX@R                   S9n[        UR                  SSS9  M7     g )NrB   r"   r   r   r   r   r   r   r   rk   r   r   r   r   g+=r   )r   r   r   r   r7   r   r:   r$   r%   r   r   )r[   rd   rk   r   r   r   s         r   test_rosenbrock_cropped!BaseMixin.test_rosenbrock_cropped8  s    !W;;$*m5KT+ ,3	41GH"((C:.6f%,''i $*BW'=  !%8,'r   c                 J    [        [        [        [        SU R                  S9  g Nr   r   )r   r   r   r=   r   r   s    r   test_fun_wrong_dimensions#BaseMixin.test_fun_wrong_dimensionsG  s    j-1E$++	/r   c           	      T    [        [        [        [        S[        U R
                  S9  g r   )r   r   r   r   r@   r   r   s    r   test_jac_wrong_dimensions#BaseMixin.test_jac_wrong_dimensionsK  s    j-/	Er   c           	      \    SS/n[        [        [        [        U[        U R
                  S9  g )Nr"   r   r   )r   r   r   r-   r4   r   r[   rd   s     r   (test_fun_and_jac_inconsistent_dimensions2BaseMixin.test_fun_and_jac_inconsistent_dimensionsO  s%    Vj-,T[[	Br   c                     [         R                  " S5      R                  SS5      n[        [        [
        [        UU R                  S9  g )NrC   r   r   )r$   rc   rH   r   r   r   r   r   r  s     r   test_x0_multidimensional"BaseMixin.test_x0_multidimensionalT  s3    WWQZ1%j-b![[	*r   c                 N    Sn[        [        [        [        UU R                  S9  g )N       @        r   r   r   r   r   r   r  s     r   test_x0_complex_scalar BaseMixin.test_x0_complex_scalarY  s    j-b![[	*r   c                 R    SS/n[        [        [        [        UU R                  S9  g )Nr   r  r   r  r  s     r   test_x0_complex_arrayBaseMixin.test_x0_complex_array^  s#    < j-b![[	*r   c                     Sn[         R                  " US-  5      nU R                  S:X  a  SnOSn[        [        USU R                  US9n[        UR                  U:  5        [        UR                  S:  5        g )	Nr,   r   r   i  rx   r   )ftolr   r   r   )r$   rc   r   r   rM   r   r   r   )r[   rJ   rd   r   r   s        r   test_bvpBaseMixin.test_bvpc  sl    
 WWQT];;$HHGRd4;;%-/ 	8#$3r   c                 P    [        [        [        [        SU R                  S S S S9  g )Nr   )r   r  xtolgtolr  r   s    r   /test_error_raised_when_all_tolerances_below_eps9BaseMixin.test_error_raised_when_all_tolerances_below_epst  s     j-c![[t$T	Kr   c                     U R                   S:X  a  g SS/nSS/nS H<  u  p4n[        [        U[        X5UU R                   S9n[	        UR
                  U5        M>     g )Nr   rB   r"   )):0yE>NN)Nr  N)NNr  )rk   r  r  r  r   )r   r   r-   r1   r   r   )r[   rd   r   r  r  r  r   s          r   0test_convergence_with_only_one_tolerance_enabled:BaseMixin.test_convergence_with_only_one_tolerance_enabledy  sb    ;;$!WA!6D  %)4'+{{4C CEE5)!6r   r   N)ry   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r}   r   r   r   r   r      sl    5D,*1A+E(%(* 9/EB
*
*
*
 "K
*r   r   c                       \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	5      S
 5       rSrg)BoundsMixini  c           	      L    [        [        [        [        SSU R                  S9  g )Nr   )      $@r3   boundsr   r  r   s    r   test_inconsistentBoundsMixin.test_inconsistent  s    j-c(	>r   c           	      L    [        [        [        [        SSU R                  S9  g )Nr   )r   rC   r&  r  r   s    r   test_infeasibleBoundsMixin.test_infeasible  s    j-c$T[[	:r   c           	      L    [        [        [        [        SSU R                  S9  g )Nr   )r   r   r<   r&  r  r   s    r   test_wrong_numberBoundsMixin.test_wrong_number  s    j-b'	=r   c           	          [        [        [        [        SSSS/4U R                  S9  [        [        [        [
        SS/S/SS/4U R                  S9  g )Nr   r   r   r&  r3         @)r   r   r   r   r   r-   r   s    r   test_inconsistent_shape#BoundsMixin.test_inconsistent_shape  sP    j-c!C:.t{{	D 	j-#s"ec3Z0	Fr   c           	         SSS[         4 H  n[        [        SUSU R                  S9n[	        UR
                  SSS	9  [        UR                  S
/5        [        SUR
                  s=:*  =(       a    S:*  Os  5        [        [        SUSU R                  S9n[	        UR
                  SSS	9  [        UR                  S/5        [        SUR
                  s=:*  =(       a    S:*  Os  5        M     g )Nr   r   r   r   )r   r   rk   r'  r   r3   r   r   r   r0   r<   )r   r   r   )	r   r   r   r   r   r   r   r   r   )r[   rk   r   s      r   test_in_boundsBoundsMixin.test_in_bounds  s    y$<CSc'24;;HCCEE3T21#.B#%%$$1$%Sc'1$++GCCEE3T22$/C355%%A%& =r   c                    S nS nSSS[         4 H  nX4 H  nSS/n[        [        XSS9n[        UR                  SS/5        [        [        XSU" S	S
S
/5      U R
                  S9n[        UR                  S	S	/5        [        [        XSU" SS/S5      U R
                  S9n[        UR                  SS/5        [        [        XSU" SS	/SS/5      U R
                  S9n[        UR                  SS	/SS9  M     M     g )Nc                     X4$ rX   r   rf   rg   s     r   get_bounds_direct8BoundsMixin.test_bounds_shape.<locals>.get_bounds_direct  s	    6Mr   c                     [        X5      $ rX   )r   r:  s     r   get_bounds_instances;BoundsMixin.test_bounds_shape.<locals>.get_bounds_instances  s    ">!r   r   r   r   r   )rk   r3   r   r   r5  g333333?r   r   r0   h㈵>r   )r*   r   r'   r   r   r   )r[   r;  r>  rk   bounds_funcrd   r   s          r   test_bounds_shapeBoundsMixin.test_bounds_shape  s   		" y$?C 1H3Z#NB@Sz2#NB+6sS#J+G+/;;8  Sz2#NB+6Sz3+G+/;;8  Sz2#"B&Cy3*=;;(  Sz=!  I @r   c           	      &   [        [        S[        5       S9n[        UR                  SSS9  [        [        S[        SS9S9n[        UR                  SSS9  [        [        S[        S	SS
9S9n[        UR                  SSS9  [        [        S[        S	S9S9n[        UR                  S	SS9  [        [
        SS/[        S	S	/SS
9S9n[        UR                  SS/SS9  [        [
        SS/[        SS/S9S9n[        UR                  SS/SS9  g )Nr   )r'  r3   r   r   r   r   )rf   r   r:        )rg   r@  rS   )r   r   r   r   r   r'   r   s     r   test_bounds_instances!BoundsMixin.test_bounds_instances  s    KVX>s.KVs^Ds.KVt5LMs.KfoFt$/NS#J#)dD\c#BDSz5NS#J#)c3Z#8:Sz5r   r,   c                    [         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      nU[         R                  * S/[         R                  44U[         R                  * S/[         R                  44U[         R                  * S/[         R                  44U[         R                  * S/S[         R                  /44USS/SS/44US	S/S
S/44/nU H[  u  px[        SSS[        /SSS
/S/SS/5       H6  u  pn[        [        XyUXU R                  S9n[        UR                  SSS9  M8     M]     g )Ng       r   r   r3   g333333rR   g      ?r   g      Ir   rx   r   r   r   rk   r   r   r   r@  r   )
r$   r%   infr   r1   r   r-   r   r   r   )r[   x0_1x0_2x0_3x0_4x0_5problemsrd   r'  rk   r   r   r   s                r   test_rosenbrock_bounds"BoundsMixin.test_rosenbrock_bounds  so   xxs$xxc
#xxs$xxc
#xxs$bffWdORVV,-bffWcNBFF+,bffWcNBFF+,bffWcNS"&&M23S#Jc
+,UCL3*-.
 #JB+2	4@3*e,f%,''i $NBV,3+/;;8  $?,' #r   r   N)ry   rz   r{   r|   r(  r+  r.  r2  r6  rB  rF  pytestmark	fail_slowrP  r}   r   r   r   r#  r#    sK    >:=F'>46* [[2@ @r   r#  c                       \ rS rSrS rS rS rS rS rS r	\
R                  R                  S5      S	 5       rS
 rS rS rSrg)SparseMixini  c           
         [        5       n[        [        [        UR                  UR
                  UR                  SU R                  S9  [        [        [        UR                  UR
                  SUR                  U R                  S9  g )Nr   r   r   )r   jac_sparsityr   )	rO   r   r   r   rs   rd   rk   r   ri   r   s     r   test_exact_tr_solver SparseMixin.test_exact_tr_solver  sY     j-aee '	=j- 'ajj![[	*r   c                    [        SS9n[        SS9n[        UR                  UR                  UR                  U R
                  S9n[        UR                  UR                  UR                  U R
                  S9n[        UR                  UR                  5        [        UR                  UR                  SS9  [        UR                  SSS9  [        UR                  SSS9  g )NrT   rl   r^   r   #B;r   r   )rO   r   rs   rd   rk   r   r   r   r   r   r   r[   rT   r^   
res_sparse	res_denses        r   test_equivalenceSparseMixin.test_equivalence  s    #2"0"JJ		vzz;; 
 "IIuxxVZZ;; 	 	Z__inn5
ikk>
7	6r   c                     [        5       n[        UR                  UR                  UR                  U R
                  SS0S9n[        UR                  SSS9  g )Nbtol绽|=r   
tr_optionsr   r^  r   )rO   r   rs   rd   rk   r   r   r   r[   r   r   s      r   test_tr_optionsSparseMixin.test_tr_options  sC     AEE144t{{(.8!%0r   c           
         [        5       n[        [        [        UR                  UR
                  UR                  SU R                  S9  [        [        [        UR                  UR
                  UR                  SSS0S9  g )NbestrX  r   tolrf  )r   rh  )	rO   r   r   r   rs   rd   rk   r   r   r   s     r   test_wrong_parameters!SparseMixin.test_wrong_parameters  sY     j-aee &t{{	<iqttQUU &E5>	Cr   c                    [        SS9n[        SS9n[        UR                  UR                  UR                  U R
                  S9n[        UR                  UR                  UR                  U R
                  S9n[        UR                  SSS9  [        UR                  SSS9  [        [        UR                  5      5        [        [        UR                  [        R                  5      5        g )NrT   r]  r^   r   r   r^  r   )rO   r   rs   rd   rk   r   r   r   r   r
   
isinstancer$   ndarrayr_  s        r   test_solver_selection!SparseMixin.test_solver_selection  s    #2"0"6::vyyfjj*.++7
!%))UXX599)-6	
7	6()
9=="**56r   c           	         [        5       nS H  n[        UR                  UR                  X R                  S9n[        UR                  UR                  X R                  UR
                  S9n[        UR                  UR                  5        [        UR                  UR                  SS9  [        UR                  SSS9  [        UR                  SSS9  M     g )N)r   r   r   r   )r   rY  r^  r   r   )rO   r   rs   rd   r   ri   r   r   r   r   r   )r[   r   rk   ra  r`  s        r   test_numerical_jacSparseMixin.test_numerical_jac!  s     /C%aeeQTT3{{KI&qttSZZ)J 9IKKEBINNAE:JOOQU; 0r   r,   c           
         [        5       n[        UR                  SSS/S UR                  /5       GH  u  p#[	        UR
                  UR                  X!R                  [        R                  4U R                  US9n[	        UR
                  UR                  U[        R                  * UR                  4U R                  US9n[	        UR
                  UR                  X!R                  UR                  4U R                  US9n[        UR                  SSS9  [        UR                  SSS9  [        UR                  SSS9  GM     g )Nr   r   r   )r'  r   rY  r   rf  r   )rO   r   rk   ri   r   rs   rd   rf   r$   rI  r   rg   r   r   )r[   r   rk   rY  res_1res_2res_3s          r   test_with_boundsSparseMixin.test_with_bounds-  s    !(	9d3dAJJ5G"IC!qttS$${{>E "qttS266'144{{?E "qttS$${{?E E,,ae<E,,ae<E,,ae<"Ir   c           	          [        5       nUR                  S S n[        [        [        UR
                  UR                  X R                  S9  g )Nr0   rY  r   )rO   ri   r   r   r   rs   rd   r   )r[   r   ri   s      r   test_wrong_jac_sparsity#SparseMixin.test_wrong_jac_sparsity?  s9     ::cr?j-#+KK	Ar   c           
      &   [        SS9n[        UR                  UR                  UR                  U R
                  S9n[        UR                  SSS9  [        [        [        UR                  UR                  UR                  U R
                  SS9  g )	NrV   r]  r   r3   r^  r   r   )r   r   
rO   r   rs   rd   rk   r   r   r   r   r   ri  s      r   test_linear_operator SparseMixin.test_linear_operatorE  sc    J/AEE144t{{C#E2j-aee![[G	=r   c           
      <   [        5       n[        UR                  UR                  UR                  U R
                  SS9n[        UR                  SSS9  [        SS9n[        [        [        UR                  UR                  UR                  U R
                  SS9  g )Nrk   )r   r   r3   r^  r   rV   r]  r  ri  s      r   test_x_scale_jac_scale"SparseMixin.test_x_scale_jac_scaleL  sp     AEE144t{{$)+#E2J/j-aee![[%	9r   r   N)ry   rz   r{   r|   rZ  rb  rj  ro  rt  rw  rR  rS  rT  r}  r  r  r  r}   r   r   r   rV  rV    sT    *71C
7
< [[2= ="A=9r   rV  c                   2    \ rS rSrS rS rS rS rS rSr	g)	LossFunctionMixiniW  c           	          [          H2  n[        [        SUU R                  S9n[	        UR
                  SSS9  M4     [        [        [        [        SSU R                  S9  g )Nr   lossr   r   V瞯<r   hinge)LOSSESr   r   r   r   r   r   r   r[   r  r   s      r   test_optionsLossFunctionMixin.test_optionsX  sN    DSt'+{{4CCEE151 
 	j-c"4;;	8r   c                     [          HF  n[        [        SUU R                  S9n[	        UR
                  [        UR                  5      5        MH     g )Nr   r  )r  r   r   r   r   rs   r   r  s      r   test_funLossFunctionMixin.test_funa  s<     DSt'+{{4C+cee"45 r   c           	         [         R                  " S/5      n[        [        U[        SSU R
                  S9n[        UR                  SU-  US-  S-   -  5        [        [        U[        SSU R
                  S9n[        UR                  SU-  5        [        [        U[        SSU R
                  S9n[        UR                  SU-  US-  S-   -  SUS-  S-   S-  -   S	-  -  5        [        [        U[        S
SU R
                  S9n[        UR                  SU-  US-  S-   -  SUS-  S-   S-  -   -  5        [        [        U[        SSU R
                  S9n[        UR                  SU-  US-  S-   -  SUS-  S-   S-  -   -  5        [        [        U[        [        SU R
                  S9n[        UR                  SU-  US-  S-   -  SUS-  S-   S-  -   S-  -  5        g )Nr   linearr"   r  r   r   r   r   hubersoft_l1r   cauchyarctanrC   gUUUUUU?)
r$   r%   r   r   r   r   r   r   r   r   )r[   r   r   s      r   	test_gradLossFunctionMixin.test_gradi  s    HHcUOKKh%&t{{<SXXq1u1q12KKg%&t{{<SXXq1u%KKi%&t{{<AA*a1a4!8a-.?#-EE	G KKh%&t{{<!a%1a4!8"4QTAXM8I"JKKKh%&t{{<!a%1a4!8"4QTAXM8I"JKKKm%&t{{<AA*a1a4!8a-.?3-GG	Ir   c           
      x   SnUS-  S-   n[        [        U[        SSU R                  S9n[	        UR
                  SU-  5        [        [        U[        SSU R                  S9n[	        UR
                  SU-  [        S-  -  5        [        [        U[        SS	SS
9n[	        UR
                  SU-  5        [        [        U[        SSU R                  S9n[        UR
                  SU-  SUS-  -   S-  -  5        [        [        U[        SSU R                  S9n[        UR
                  SU-  [        S-  -  5        [        [        U[        SS	SU R                  S9nUS	-  n[        UR
                  SU-  SUS-  -
  S-  -  SUS-  -   -  5        [        [        U[        SSU R                  S9n[        UR
                  SU-  [        S-  -  5        [        [        U[        SSSU R                  S9nUS-  n[        UR
                  SU-  SSUS-  -  -
  S-  -  SUS-  -   -  5        [        [        U[        [        SS9n[        UR
                  SU-  [        S-  -  5        [        [        U[        [        SSS
9nUS-  n[        UR
                  SU-  SUS-  S-  -
  S-  -  SUS-  -   S-  -  5        g )Nr   r   r   r  r"   r  r  r   r,   )r  f_scaler   r  g      r  )r  r  r   r   r  g      4@r   r<   rC   )r  r      g)	r   r   r   r   r   rk   r   r   r   )r[   r   rr   r   fss        r   test_jacLossFunctionMixin.test_jac  s    qD1HKKh%&t{{<SWWa!e$ KKg%&t{{<SWWa!ec3h./ KKg$&4SWWa!e$ KKi%&t{{<Q!ad(U):!:; KKh%&t{{<Qc!12 KKh$&4;;HVQ!b!e)c)9!9QQY!GH KKh%&t{{<Qc!12 KKh$(1T[[JVQ!a"a%i-#)=!=RU!KL KKm%&(Qc!12 KK!.AGUARUQY 44BE	T7JJ	Lr   c                 $   S GH	  n[        SSUSS9nSSSUR                  4 H  n[        UR                  UR                  UU R
                  S	9n[        UR                  SS
S9  [         H  nUS:X  a  M  [        UR                  UR                  X5UU R
                  S9n[        UR                  SS
S9  [        [        UR                  UR                  -
  5      [        UR                  UR                  -
  5      :  5        M     M     GM     g )N)rS   r   r"   rS   r   )r   r   r   r   r   r   r   r  )rk   r  r  r   )r   rk   r   rs   r   r   r   r   r  r   r   r   r   )r[   r   r   rk   res_lsqr  
res_robusts          r   test_robustness!LossFunctionMixin.test_robustness  s    E)!S%QGA!9dAEE:'qtt/3{{< 2 2ADA"Dx' !.qtt#{{",J $J$9$914HD!78 QWW!456 7 #	 ;  r   r   N)
ry   rz   r{   r|   r  r  r  r  r  r}   r   r   r   r  r  W  s    86I>BLH7r   r  c                       \ rS rSrSrSrg)
TestDogboxi  dogboxr   N)ry   rz   r{   r|   r   r}   r   r   r   r  r    s    Fr   r  c                       \ rS rSrSrS rSrg)TestTRFi  trfc           	          [        5       nS HE  n[        UR                  UR                  UR                  SSU0S9n[        UR                  SSS9  MG     g )N)TFr  
regularizerg  r   r^  r   )rO   r   rs   rd   rk   r   r   )r[   r   r  r   s       r   test_lsmr_regularization TestTRF.test_lsmr_regularization  sK     'JqttQUU5,8*+EGCCHHae4 (r   r   N)ry   rz   r{   r|   r   r  r}   r   r   r   r  r    s    F5r   r  c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)TestLMi  r   c           	      8    [        [        [        [        SSSS9  g )Nr   )rE  r   r   r&  r   r   r   r   r   s    r   test_bounds_not_supported TestLM.test_bounds_not_supported  s    j-+d	<r   c                 >    SS/n[        [        [        [        USS9  g )NrB   r"   r   r   )r   r   r   r7   r  s     r   test_m_less_n_not_supported"TestLM.test_m_less_n_not_supported  s    !Wj-1G!	#r   c           	          [        5       n[        [        [        UR                  UR
                  UR                  SS9  g )Nr   r   rO   r   r   r   rs   rd   rk   r   s     r   test_sparse_not_supported TestLM.test_sparse_not_supported  s+     j-aee!	#r   c           	      :    [        [        [        [        SS/SS9  g )Nr   r"   r   r  r  r   s    r   test_jac_sparsity_not_supported&TestLM.test_jac_sparsity_not_supported  s    j-c$%3t	5r   c           	      ~    [        SS9n[        [        [        UR                  UR
                  UR                  SS9  g )NrV   r]  r   r   r  r   s     r   !test_LinearOperator_not_supported(TestLM.test_LinearOperator_not_supported  s-    J/j-aee!	#r   c           	          [        [        SSSS9n[        UR                  SSS9  [	        [
        [         [        SSSS	9  g )
Nr   r  r   r  r3   r   r   r  )r   r  )r   r   r   r   r   r   r   s     r   	test_lossTestLM.test_loss  s7    K8DIs.j-c!	1r   r   N)ry   rz   r{   r|   r   r  r  r  r  r  r  r}   r   r   r   r  r    s%    F<#
#
5#
1r   r  c                  N    [        [        S5      n [        U R                  SSS9  g )Nr   r   rf  r   )r   r   r   r   )r   s    r   r   r     s    
S
)CCEE15)r   c                  R    S H!  u  pn[        [        [        [        SUXSS9  M#     g )N))NvIh%<=r  )r  Nr  )r  r  Nr   r   )r  r  r  r   r  )r  r  r  s      r   test_small_tolerances_for_lmr    s,    3D 	j-c4	93r   c                  z  ^ [         R                  R                  S5      n [         R                  " SSS5      R	                  S5      nU R                  S5      R	                  S5      nS mU4S jn[        USS/X4S9nUR                  S	:  d   e[        UR                  [         R                  " S
S/5      SS9  g )Nr"   r   rx   float32c                     U S   U S   U-  -   $ r!   r   )r   r   s     r   functest_fp32_gh12991.<locals>.func&  s    tadQhr   c                    > T" X5      U-
  $ rX   r   )r   r   rL   r  s      r   errtest_fp32_gh12991.<locals>.err)  s    AzA~r   r   )r   r   g W ?g	?g-C6
?r   )
r$   ra   rb   re   astyper   r   r   r   r%   )rm   r   rL   r  r   r  s        @r   test_fp32_gh12991r    s     ))


"C
Aq#%%i0A

3y)A dD\
7C 88a<<CEE288Y
$;<4Hr   c                    ^ SmSn U4S jnSn[        XSS[        R                  4S9n[        UR                  UR
                  [        R                  " S5      [        R                  " [        R                  5      5      u  pEUR                  S:X  d   e[        R                  R                  UR
                  U-  [        R                  S9U:  d   eg )	Ng-q=gyYs=c                    > U T-
  S-  $ r   r   )r   answers    r   chi2%test_gh_18793_and_19351.<locals>.chi2;  s    &1}r   r  r   )rd   r  r'  r"   )ord)
r   r$   rI  r   r   r   
atleast_1dr   linalgr   )initial_guessr  r  r   scaling_r  s         @r   test_gh_18793_and_19351r  7  s    FM D
UArvv;
OC #355#((#%==#3R]]2665JLJG::??99>>#((W,"&&>9D@@@r   c                  
  ^^ [         R                  " S/S-  / SQ-   5      m[         R                  " STR                  5      S-  mUU4S jn / SQnS[         R                  S	S
44n[        XSUS9nUR                  (       d   eg )Nr3   B   )Sr   r3   r3   r3   r3   r3   r   r   r3   r3   r   r   r   r   r3   r3   r3   r   r3   r3   r   r   r3   r   r         @r   r3   r3   r          @r1  r1  r        "@      @r   r  r  r         *@r  r        &@r%  r  g      ,@      3@r  g      .@g      2@g      :@r        @@g      =@g      <@      B@r  g     A@r  g     E@      J@r  g      M@g      L@r  g     P@g     J@g      R@g      V@g     @S@g     W@g     W@g      U@g     U@g     @Y@g     Z@g      [@g     ]@g      X@g     \@g     @a@g      a@r   rS   c                 R   > U u  pnU[         R                  " UTU-
  -  5      -  T-
  $ rX   )r$   r   )paramsABrd   xdataydatas       r   exponential_wrapped*test_gh_19103.<locals>.exponential_wrappedc  s.    b266!urz*++e33r   )r   r   r   )r   r   r   r,   gfffff4@r  )r   r'  )r$   r%   rj   r   rI  r   r   )r  rd   r'  r   r  r  s       @@r   test_gh_19103r  Q  s|     HHbTBY 	" 	 	E IIa$s*E4 
BRVVR./F
+f
MC;;;r   )r   )r3   ):	itertoolsr   numpyr$   numpy.linalgr   numpy.testingr   r   r   r   rR  r	   r   scipy.sparser
   r   scipy.sparse.linalgr   scipy.optimizer   r   !scipy.optimize._lsq.least_squaresr   scipy.optimize._lsq.commonr   r   r   r   r   r'   r*   r-   r1   r4   r7   r:   r=   r@   rM   rO   r   r   listkeysr  r   r#  rV  r  r  r  r  r   r  r  r  r  r   r   r   <module>r     s'     < <  * - 0 0 @ U U"9  
%.0 0f > 
 %%'	(M?	:V* V*rg@ g@Tc9 c9LE7 E7PK6G 5ik3D 51Y 1D*9I2A4r   