
    9i'                     B   S SK Jr  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KJr  S4S jrS5S jr S r!S r"S r# " S S5      r$S r%S r&S r'S r(S r)S5S jr*S r+ " S S5      r, " S S5      r-S r.\/" \R`                  " 5       5      \./-   r1 " S  S!5      r2 " S" S#5      r3 " S$ S%5      r4 " S& S'5      r5 " S( S)\2\3\4\55      r6 " S* S+\2\3\4\55      r7 " S, S-\25      r8S. r9S/ r:S0 r;S1 r<S2 r=S3 r>g)6    )product)PoolN)norm)assert_assert_allcloseassert_equalsuppress_warnings)raises)issparse	lil_array)aslinearoperator)least_squaresBounds)IMPLEMENTED_LOSSES)EPSmake_strictly_feasibleCL_scaling_vector)OptimizeResultc                     X-
  S-  S-   $ )N         @ xas     g/var/www/html/land-doc-ocr/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                   $    \ rS rSrS rSS jrSrg)Fun_Rosenbrock'   c                     SU l         g Nr   nfevselfs    r   __init__Fun_Rosenbrock.__init__(   s	    	r   c                 B    U =R                   S-  sl         [        U5      $ Nr$   )r6   r/   )r8   r   r   s      r   __call__Fun_Rosenbrock.__call__+   s    		Q	a  r   r5   Nr   )__name__
__module____qualname____firstlineno__r9   r=   __static_attributes__r   r   r   r1   r1   '   s    !r   r1   c                 F    [         R                  " SU S   -  S/SS//5      $ )Nr   r.   r%   r(   s    r   jac_rosenbrockrH   0   s/    88	qtR	Q  r   c                 L    [         R                  " SU S   -  S/SS/SS//5      $ )NrF   r   r.   rG           r%   r(   s    r   jac_rosenbrock_bad_dimrK   7   s6    88	qtR	Q	c
  r   c                     [        U 5      S   $ r4   )r/   r(   s    r   fun_rosenbrock_croppedrM   ?       !Qr   c                     [        U 5      S   $ r4   )rH   r(   s    r   jac_rosenbrock_croppedrP   C   rN   r   c                 >    [         R                  " X S-  U S-  /5      $ )Nr      r%   r(   s    r   fun_wrong_dimensionsrS   H   s    88Q1adO$$r   c                 <    [         R                  " [        XS95      $ )N)r   )r&   
atleast_3dr!   r   s     r   jac_wrong_dimensionsrV   L   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$   rG      rR   )intr&   sqrtshapezerosreshaperavel)r   nuys       r   fun_bvprc   P   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)BroydenTridiagonalY   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   rX         grJ   皙?sparse)dtyper$   operatorc                 8   > [        TR                  U 5      5      $ N)r   _jacr   r8   s    r   <lambda>-BroydenTridiagonal.__init__.<locals>.<lambda>t   s    !1$))A,!?r   densec                 B   > TR                  U 5      R                  5       $ rn   )ro   toarrayrp   s    r   rq   rr   w   s    1!5!5!7r   F)r&   randomRandomStater`   onesx0linspacelbubrandnr   r   rZ   sparsityarangero   jacr   )r8   r`   moderngis   `    r   r9   BroydenTridiagonal.__init__Z   sx   ii##A&771:+++b$*++dC+31%%31%%31%%($''477C8%qfC8DM		!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$ )NrR   r$   rG   r   r   )r8   r   fs      r   funBroydenTridiagonal.fun{   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$ )NrR   r   r$   rG   rX   )r   r`   r&   r   )r8   r   Jr   s       r   ro   BroydenTridiagonal._jac   s    tvvtvv&'IIdffa!e)Q$IIa QU(IIdffqj!QU(r   )r   r{   r`   r~   r|   ry   N)d   rj   )r@   rA   rB   rC   r9   r   ro   rD   r   r   r   re   re   Y   s    Br   re   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&   rv   rw   mr`   r]   p0rz   r   exprb   r}   randintrandr'   p_opt)
r8   r   bnoise
n_outliersx_rangen_pointsrandom_seedr   outlierss
             r   r9   "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   rb   r8   ps     r   r   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   r`   r   r   )r8   r   r   s      r   r   ExponentialFittingProblem.jac   sZ    HHdffdff%&!Q$&&266!A$-00!Q$r   )r   r`   r   r   r   rb   )r$   )rG   r$      N)	r@   rA   rB   rC   __doc__r9   r   r   rD   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$ )NrR   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\R4                  R7                  S5      S 5       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   r   r8   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)rR   rY   kaboomrR   )r!   r	   filterUserWarningr   r   r   r   r   assert_raises	TypeError)r8   r   r   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r   r   )r!   r	   r   r   r   r   r   r   r   r   
ValueError)r8   r   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   )r8   r   r   s      r   test_nfev_optionsBaseMixin.test_nfev_options   s3    "HS8'+{{4CCEE140 #r   c           	      h   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  g )N      ?      ?r   r   )x_scaler   auto)r   r         y      ?       @)	r&   r'   r   r   r   r   r   r   r   )r8   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-8DKK	Ar   c                     [        [        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  g )Nr   ri   )	diff_stepr   r   r   r   r   )r8   r   res3s      r   test_diff_stepBaseMixin.test_diff_step   sQ    [#$(KK1[#'+DKKA--r   c           	          [        [        [        [        SU R                  SS0S9  [        [        [        [        SU R                  SS0S9  g )Nr   no_such_optionr   )r   optionsr   )r   r   r   r   r   r7   s    r   test_incorrect_options_usage&BaseMixin.test_incorrect_options_usage   sA    iS![[3CS2I	KiS![[:s2C	Er   c                 l   [        [        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  a  [        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?lmr.   )r   r   r   r   r   costr   r   grad
optimalityr   active_maskr   njevr6   statussuccessr   s     r   test_full_resultBaseMixin.test_full_result  s     KT[[Aqt,$'#.!$/5S__a(;;$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@	   rY   $   r   )r   r   r   r   r   r&   r'   r   r   r   r   r   r   r6   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5       Ht  n[        R                  R                  S5      nUR	                  SS9S-  n[        5       n[        XC[        U R                  US9nUR                  UR                  :X  a  Mt   e   g )Nr$   rR   i r   )r   r.   )r   r   r   )
ranger&   rv   default_rnguniformr1   r   rH   r   r6   )r8   r   r   ry   ftrivialr   s         r   	test_nfevBaseMixin.test_nfev*  sr    q!A))''/C!$r)B%'HaC 88x}},,, 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)NrX   r$   r   r   r   r   皙?r   exactlsmrr   r   	tr_solverr   )r   rH   r&   r'   r	   r   r   r   r/   r   r   r   )r8   ry   x_optr   r   r  r   r   s           r   test_rosenbrockBaseMixin.test_rosenbrock5  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 )NrX   r$   r   r   r   r   r   r   r  r   r  r	  r
  r   g+=r   )r   r   r   r   rM   r   rP   r&   r'   r   r   )r8   ry   r   r   r  r   s         r   test_rosenbrock_cropped!BaseMixin.test_rosenbrock_croppedE  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   rS   r   r7   s    r   test_fun_wrong_dimensions#BaseMixin.test_fun_wrong_dimensionsT  s    j-1E$++	/r   c           	      T    [        [        [        [        S[        U R
                  S9  g r  )r   r   r   r   rV   r   r7   s    r   test_jac_wrong_dimensions#BaseMixin.test_jac_wrong_dimensionsX  s    j-/	Er   c           	      \    SS/n[        [        [        [        U[        U R
                  S9  g )Nr$   r   r   )r   r   r   r/   rK   r   r8   ry   s     r   (test_fun_and_jac_inconsistent_dimensions2BaseMixin.test_fun_and_jac_inconsistent_dimensions\  s%    Vj-,T[[	Br   c                     [         R                  " S5      R                  SS5      n[        [        [
        [        UU R                  S9  g )NrY   r   r   )r&   rx   r^   r   r   r   r   r   r  s     r   test_x0_multidimensional"BaseMixin.test_x0_multidimensionala  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_scalarf  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_arrayk  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  r   r   )ftolr   r   r   )r&   rx   r   r   rc   r   r6   r   )r8   r`   ry   r   r   s        r   test_bvpBaseMixin.test_bvpp  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"  r7   s    r   /test_error_raised_when_all_tolerances_below_eps9BaseMixin.test_error_raised_when_all_tolerances_below_eps  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   rX   r$   )):0yE>NN)Nr2  N)NNr2  )r   r)  r.  r-  r   )r   r   r/   rH   r   r   )r8   ry   r  r)  r-  r.  r   s          r   0test_convergence_with_only_one_tolerance_enabled:BaseMixin.test_convergence_with_only_one_tolerance_enabled  sb    ;;$!WA!6D  %)4'+{{4C CEE5)!6r   r   c                 L   [        [        SU R                  S9n/ nS H.  n[        [        SU R                  US9nUR                  U5        M0     [	        5        n[        [        SU R                  UR
                  S9nUR                  U5        S S S 5        U Hv  nUR                  (       d   e[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        Mx     g ! , (       d  f       N= f)Nr   r   r    )r   workers)r   r   r   appendr   mapr   r   r   r6   r   )r8   serialresesr6  r   s        r   test_workersBaseMixin.test_workers  s    {CD GSgC LL	 !
 VwSgkkC LL	 
 C;;;)6;;/6;;/	  Vs   6D
D#r   N)r@   rA   rB   rC   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r#  r&  r*  r/  r3  pytestmark	fail_slowr;  rD   r   r   r   r   r      s    5D,*1	A.E&%(	-* 9/EB
*
*
*
 "K
* [[30  0r   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   )      $@rJ   boundsr   r"  r7   s    r   test_inconsistentBoundsMixin.test_inconsistent  s    j-c(	>r   c           	      L    [        [        [        [        SSU R                  S9  g )Nr   )r   rY   rD  r"  r7   s    r   test_infeasibleBoundsMixin.test_infeasible  s    j-c$T[[	:r   c           	      L    [        [        [        [        SSU R                  S9  g )Nr   )r   r   rR   rD  r"  r7   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   rD  rJ         @)r   r   r   r   r   r/   r7   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   r   rE  r   rJ   r   r   r   rG   rR   )r   r   r   )	r!   r   r   r   r   r   r   r   r   )r8   r   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$ rn   r   r{   r|   s     r   get_bounds_direct8BoundsMixin.test_bounds_shape.<locals>.get_bounds_direct  s	    6Mr   c                     [        X5      $ rn   )r   rX  s     r   get_bounds_instances;BoundsMixin.test_bounds_shape.<locals>.get_bounds_instances  s    ">!r   r   r   r   r   )r   rJ   r   r   rS  g333333?r  r   rG   h㈵>r   )r,   r   r)   r   r   r   )r8   rY  r\  r   bounds_funcry   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   )rE  rJ   r   r   r   r   )r{   r   rX        )r|   r^  ri   )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   rJ   g333333rh   g      ?r   g      Ir   r   r   r   r   r   r  r	  r
  r^  r   )
r&   r'   infr   rH   r   r/   r   r   r   )r8   x0_1x0_2x0_3x0_4x0_5problemsry   rE  r   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)r@   rA   rB   rC   rF  rI  rL  rP  rT  r`  rd  r=  r>  r?  rn  rD   r   r   r   rA  rA    sK    >:=F'>46* [[2@ @r   rA  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   )	re   r   r   r   r   ry   r   r   r~   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 )Nrj   r   rs   r   #B;r   r   )re   r   r   ry   r   r   r   r6   r   r   r   r8   rj   rs   
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   ry  r   )re   r   r   ry   r   r   r   r   r8   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bestrs  r	  tolr  )r  r  )	re   r   r   r   r   ry   r   r   r   r   s     r   test_wrong_parameters!SparseMixin.test_wrong_parameters0  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 )Nrj   rx  rs   r   r   ry  r   )re   r   r   ry   r   r   r   r   r   r   
isinstancer&   ndarrayrz  s        r   test_solver_selection!SparseMixin.test_solver_selection7  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   rt  ry  r   r   )re   r   r   ry   r   r~   r   r6   r   r   r   )r8   r   r   r|  r{  s        r   test_numerical_jacSparseMixin.test_numerical_jacC  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   )rE  r   rt  r   r  r   )re   r   r   r~   r   r   ry   r{   r&   rg  r   r|   r   r   )r8   r   r   rt  res_1res_2res_3s          r   test_with_boundsSparseMixin.test_with_boundsO  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 )NrG   rt  r   )re   r~   r   r   r   r   ry   r   )r8   r   r~   s      r   test_wrong_jac_sparsity#SparseMixin.test_wrong_jac_sparsitya  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 )	Nrl   rx  r   rJ   ry  r   r  )r   r  
re   r   r   ry   r   r   r   r   r   r   r  s      r   test_linear_operator SparseMixin.test_linear_operatorg  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 )Nr   )r   r   rJ   ry  r   rl   rx  r  r  s      r   test_x_scale_jac_scale"SparseMixin.test_x_scale_jac_scalen  sp     AEE144t{{$)+#E2J/j-aee![[%	9r   r   N)r@   rA   rB   rC   ru  r}  r  r  r  r  r=  r>  r?  r  r  r  r  rD   r   r   r   rq  rq    sT    *71C
7
< [[2= ="A=9r   rq  c                   2    \ rS rSrS rS rS rS rS rSr	g)	LossFunctionMixiniy  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   r8   r  r   s      r   test_optionsLossFunctionMixin.test_optionsz  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   r   r   r  s      r   test_funLossFunctionMixin.test_fun  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arctanrY   gUUUUUU?)
r&   r'   r   r   r!   r   r   r   r   r   )r8   r   r   s      r   	test_gradLossFunctionMixin.test_grad  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   rR   rY   )r  r      g)	r   r   r!   r   r   r   r   r   r   )r8   r   r   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)ri   r   r$   ri   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   )r8   r   r   r   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)
r@   rA   rB   rC   r  r  r  r  r  rD   r   r   r   r  r  y  s    86I>BLH7r   r  c                       \ rS rSrSrSrg)
TestDogboxi  dogboxr   N)r@   rA   rB   rC   r   rD   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  
regularizer  r   ry  r   )re   r   r   ry   r   r   r   )r8   r   r  r   s       r   test_lsmr_regularization TestTRF.test_lsmr_regularization  sK     'JqttQUU5,8*+EGCCHHae4 (r   r   N)r@   rA   rB   rC   r   r  rD   r   r   r   r  r    s    F5r   r  c                   B    \ rS 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   )rc  r   r   rD  r   r   r   r   r7   s    r   test_bounds_not_supported TestLM.test_bounds_not_supported  s    j-+d	<r   c                 >    SS/n[        [        [        [        USS9  g )NrX   r$   r   r   )r   r   r   rM   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   re   r   r   r   r   ry   r   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  r7   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 )Nrl   rx  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  rJ   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   c                     S n[        5        nUR                  [        S5        [        [        S/SUS9  S S S 5        g ! , (       d  f       g = f)Nc                      ern   r   r(   s    r   callback5TestLM.test_callback_with_lm_method.<locals>.callback2  s    5r   z@Callback function specified, but not supported with `lm` method.r   r   )ry   r   r  )r	   r   r   r   r   )r8   r  r   s      r   test_callback_with_lm_method#TestLM.test_callback_with_lm_method1  sA    	  CJJR +1#dXN !  s	   (?
Ar   N)r@   rA   rB   rC   r   r  r  r  r  r  r  r  rD   r   r   r   r  r    s+    F<#
#
5#
1	Or   r  c                  N    [        [        S5      n [        U R                  SSS9  g )Nr   r   r  r   )r   r   r   r   )r   s    r   r   r   =  s    
S
)CCEE15)r   c                  N  ^
 / m
S[         4U
4S jjn U
4S jnS[         4U
4S jjnU
4S jnX/nUU/nS S S /n[        XF5       Hx  u  pxT
R                  5         U" U5      n	[        T
5      S	:  d   eT
S
   R                  S	:  d   eU	R
                  S:w  d   e[        T
S
   R                  U	R                  5        Mz     [        XV5       HU  u  pxT
R                  5         U" U5      n	[        T
5      S	:  d   eT
S
   R                  S:X  d   eU	R
                  S:X  a  MU   e   g )Nintermediate_resultc                 (   > TR                  U 5        g rn   )r7  r  resultss    r   my_callback_optimresult.test_callback.<locals>.my_callback_optimresultH  s    *+r   c                 V   > [        5       nSUl        Xl        TR                  U5        g)Nr$   F)r   nitr   r7  r   rr  s     r   my_callback_x$test_callback.<locals>.my_callback_xK  s&    qr   c                 2   > TR                  U 5        [        ern   )r7  StopIterationr  s    r   &my_callback_optimresult_stop_exception=test_callback.<locals>.my_callback_optimresult_stop_exceptionR  s    *+r   c                 `   > [        5       nSUl        Xl        TR                  U5        [        er<   )r   r  r   r7  r  r  s     r   my_callback_x_stop_exception3test_callback.<locals>.my_callback_x_stop_exceptionW  s)    qr   c                 "    [        [        SSU S9$ )Nr   r  r   r  r   r   r  s    r   rq   test_callback.<locals>.<lambda>e  s    {C08:r   c                 $    [        [        SSSU S9$ )Nr   r  )g              @)r   rE  r  r  r  s    r   rq   r  g  s    {C.9HNr   c                 "    [        [        SSU S9$ )Nr   r  r  r  r  s    r   rq   r  i  s    {C08:r   r   rG   rX   r$   )r   r   clearlenr  r   r   r   )r  r  r  r   callbacks_nostopcallbacks_stopcalls
mycallbackcallr   r  s             @r   test_callbackr  C  s5    G,^ ,+
 0?<24N
	:	N	:E $$4<
:7|ar{"""zzRsuu- = $N:
:7|ar{!###zzR ;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   r   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-
  $ rn   r   )r   r   rb   r  s      r   errtest_fp32_gh12991.<locals>.err  s    AzA~r   r   )r   r   g W ?g	?g-C6
?r   )
r&   rv   rw   rz   astyper   r6   r   r   r'   )r   r   rb   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   )ry   r.  rE  r$   )ord)
r   r&   rg  r   r   r   
atleast_1dr   linalgr   )initial_guessr"  r.  r   scaling_r!  s         @r   test_gh_18793_and_19351r*    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 )NrJ   B   )Sr   rJ   rJ   rJ   rJ   rJ   r   r   rJ   rJ   r   r   r   r   rJ   rJ   rJ   r   rJ   rJ   r   r   rJ   r   r         @r   rJ   rJ   r   r  rO  rO  r-        "@      @r   r/  r  r         *@r.  r        &@rC  r0  g      ,@      3@r1  g      .@g      2@g      :@r2        @@g      =@g      <@      B@r3  g     A@r4  g     E@      J@r3  g      M@g      L@r5  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   ri   c                 R   > U u  pnU[         R                  " UTU-
  -  5      -  T-
  $ rn   )r&   r   )paramsABry   xdataydatas       r   exponential_wrapped*test_gh_19103.<locals>.exponential_wrapped  s.    b266!urz*++e33r   )r   r   r   )r   r   r   r.   gfffff4@r  )r   rE  )r&   r'   r   r   rg  r   r   )r<  ry   rE  r   r:  r;  s       @@r   test_gh_19103r>    s|     HHbTBY 	" 	 	E IIa$s*E4 
BRVVR./F
+f
MC;;;r   r?   )rJ   )?	itertoolsr   multiprocessingr   numpyr&   numpy.linalgr   numpy.testingr   r   r   r	   r=  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,   r/   r1   rH   rK   rM   rP   rS   rV   rc   re   r   r   listkeysr  r   rA  rq  r  r  r  r  r   r  r  r  r*  r>  r   r   r   <module>rK     s@       < <  * , 0 0 @ U U )"9! !  
%.0 0f > 
 %%'	(M?	:m0 m0`g@ g@Tc9 c9LE7 E7PK6G 5ik3D 5*OY *OZ*@ F9I2A4r   