
    doiLl                     2   S SK r S SKrS SKrS SKJs  Jr  S SKJs  J	r
  S SKJrJrJr  S SKJrJrJr  S SKJrJrJr  S SKJrJrJr  S SKJr  \" \5       " S S5      5       r " S	 S
5      r\" \5       " S S\5      5       r\" \5       " S S\5      5       r g)    N)xp_assert_closexp_assert_equalxp_assert_less)is_numpyis_torchmake_xp_test_case)statsoptimizespecial)
derivativejacobianhessian)_EERRORINCREASEc            	       R   \ rS rSrS r\R                  R                  SS\R                  " SSS5      /5      S 5       r
\R                  R                  S	\R                  R                  5      S
 5       r\R                  R                  SSS/5      \R                  R                  S\" 5       SSS/5      S 5       5       rS rS rS rS rS rS rS rS rS r\R                  R                  SS5      \R                  R                  SSSS/45      \R                  R                  S S!5      S" 5       5       5       rS# rS$ r\R                  R;                  S%S&9\R                  R<                  \R                  R                  S	S' S4S( S445      S) 5       5       5       rS*r g+),TestDerivative   c                 .    [         R                  " U5      $ Nr   ndtr)selfxs     h/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/differentiate/tests/test_differentiate.pyfTestDerivative.f   s    ||A    r   333333?皙?
   c                    UR                  S5      R                  n[        U R                  UR                  XS95      nUR                  [        R
                  " 5       R                  U5      US9n[        UR                  U5        [        U5      (       d3  [        UR                  UR                  U-
  5      UR                  5        g g )N      ?dtype)asarrayr$   r   r   r	   normpdfr   dfr   r   abserror)r   r   xpdefault_dtyperesrefs         r   
test_basicTestDerivative.test_basic   s     

2,,A!CDjj))!,MjB$ ||266#&&3,/; r   casec                     Uu  p#[        [        U5      " U6 nUR                  5       S-   n[        UR                  U5      nUR                  U5      n[        UR                  USS9  g )N皙?绽|=atol)getattrr	   medianr   cdfr'   r   r(   )r   r1   distnameparamsdistr   r-   r.   s           r   test_accuracyTestDerivative.test_accuracy#   sX    uh'0KKMC1%hhqk%0r   order      shape)         )rE      rG   c                 j  ^ ^^^ U(       a'  [         R                  " SSS5      R                  U5      OSn[         R                  " U5      m0 m[         R                  UU 4S j5       nUU U4S jnSTS'   S	TS
'   [        XcR                  XCR                  S9TS9nU" U5      R                  5       nU V	s/ s H  oR                  PM     n
n	[        UR                  UR                  S5      UR                  U
5      5        U V	s/ s H  oR                  PM     nn	[        UR                  UR                  S5      UR                  U5      5        U V	s/ s H  oR                  PM     nn	[        UR                  UR                  S5      UR                  U5      SS9  U V	s/ s H  n	[        U	R                  5      PM     nn	[        UR                  UR                  S5      UR                  U5      5        U V	s/ s H#  n	[         R                   " U	R"                  5      PM%     nn	[        UR                  UR"                  S5      UR                  U5      5        U V	s/ s H#  n	[         R                   " U	R$                  5      PM%     nn	[        UR                  UR$                  S5      UR                  U5      5        ['        U5      (       a$  UR)                  UR$                  5      TS
   :X  d   eU V	s/ s H#  n	[         R                   " U	R*                  5      PM%     nn	[        UR                  UR*                  S5      UR                  U5      5        ['        U5      (       a%  UR)                  UR*                  5      TS   :X  d   eg g s  sn	f s  sn	f s  sn	f s  sn	f s  sn	f s  sn	f s  sn	f )Nr   r   rC   r   c                 .   > [        TR                  U TS9$ )Nr?   )r   r   )r   r?   r   s    r   _derivative_single=TestDerivative.test_vectorization.<locals>._derivative_single5   s    dffau55r   c                    > TS==   S-  ss'   TS==   U R                   T:X  d  U R                  S::  a  SOU R                  S   -  ss'   TR                  " U /UQ70 UD6$ )Nnitr@   feval)sizendimrB   r   )r   argskwargsnr   states      r   r   ,TestDerivative.test_vectorization.<locals>.f9   sV    %LAL'NAFFaK166A:aAGGBKON66!-d-f--r   rP   rN   r   rO   r#   rJ   rP   g-q=r5   )nplinspacereshaperQ   	vectorizer   r%   float64ravelr   r   r(   r*   boolsuccessr   int32statusnfevr   maxrN   )r   r?   rB   r+   r   rK   r   r-   refsr.   ref_xref_df	ref_errorref_successref_flagref_nfevref_nitrU   rV   s   ``               @@r   test_vectorization!TestDerivative.test_vectorization,   s   
 <ABKKtR(007cGGAJ		6 
	6	.
 egJJq

J;5I!!$**,"&'$3$'

355%0"**U2CD$()DS&&D)

366512::f3EF*./$3YY$	/

399e4bjj6K"	$ 599DStCKK(D9

3;;6

;8OP489DSBHHSZZ(D9

3::u5rzz(7KL267$3BHHSXX&$7

388U3RZZ5IJB<<66#((#uW~555045288CGG$5

377E2BJJw4GHB<<66#''?eEl222 / ( * 0 : : 8
 6s*   4NNN#N!=*N&"*N+;*N0c                   ^^^ [         R                  R                  S5      mUUU4S jmSTl        TR	                  STR
                  S94n[        TTR                  STR                  S9[        SS9SUS	9nTR                  [        R                  [        [        R                  [        R                  /TR                   S9n[#        UR$                  U5        g )
N   ;O c                   > T=R                   S-  sl         S UU4S jU4S jU4S j/n[        U TR                  US5      5       VVs/ s H  u  p4U[        U5         " U5      PM     nnnTR	                  U5      $ s  snnf )Nr@   c                     U S-
  $ Ng      @ r   s    r   <lambda>6TestDerivative.test_flags.<locals>.f.<locals>.<lambda>d   s    q3wr   c                 H   > TR                  U 5      TR                  5       -  $ r   )exprandom)r   rngr+   s    r   rv   rw   e   s    rvvay5r   c                 &   > TR                  U 5      $ r   ry   r   r+   s    r   rv   rw   f   s    rvvayr   c                 <   > TR                  U TR                  5      $ r   )	full_likenanr~   s    r   rv   rw   g   s    r||Arvv6r   rX   )rN   zipr[   intstack)	xsjsfuncsr   jr-   r   r{   r+   s	         r   r   $TestDerivative.test_flags.<locals>.fb   sp    EEQJE&5(68E 14B

2u8M0NO0N5Q=#0NCO88C=  Ps   
 A>r   rF   r#   +=rtolrG   )
tolerancesr?   rS   )rY   rz   default_rngrN   arangeint64r   onesr]   dictr%   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERRra   r   rb   )r   r+   rS   r-   	ref_flagsr   r{   s    `   @@r   
test_flagsTestDerivative.test_flags^   s     ii##$45	! 		!288	,.BGGARZZG8$(e$4 t- JJ / # # 0 8:xx  A	 	

I.r   c                 p  ^^ [         R                  R                  S5      mUU4S jn[        UTR	                  STR
                  S9[        SS9SSS	9nTR	                  [        R                  [        [        R                  [        R                  /TR                  S9n[        UR                  U5        g )
Nrp   c                    > U S-
  TR                  U 5      TR                  5       -  TR                  U 5      TR                  U TR                  5      /nTR	                  U5      $ rs   )ry   rz   r   r   r   )r   outr{   r+   s     r   r   3TestDerivative.test_flags_preserve_shape.<locals>.fz   sT    s766!9SZZ\)66!9<<266*,C 88C= r   r@   r#   r   r   rG   T)r   r?   preserve_shape)rY   rz   r   r   r%   r]   r   r   r   r   r   r   ra   r   rb   )r   r+   r   r-   r   r{   s    `   @r   test_flags_preserve_shape(TestDerivative.test_flags_preserve_shapew   s    ii##$45	! BJJq

J;$(e$4 7 JJ / # # 0 8:xx  A	 	

I.r   c                   ^ U4S jnTR                  S5      nTR                  TR                  S5      STR                  SU-  5      -  SSTR                  SU-  5      -  -   STR                  SU-  5      -  US-
  S-  -  STR                  SU-  5      -  US-
  -  -   /5      n[        X#SS	9n[	        UR
                  U5        g )
Nc                    > U TR                  SU -  5      U TR                  SU -  5      -   TR                  SU -  5      U S-
  S-  -  /nTR                  U5      $ )NrE   r       r@   rG   )sinr   )r   r   r+   s     r   r   -TestDerivative.test_preserve_shape.<locals>.f   sT    bffQqSk1RVVBqD\>266"Q$<1q3HIC88C= r           r@   rE   r    r   rG   Tr   )r%   cosr   r   r   r(   )r   r+   r   r   r.   r-   s    `    r   test_preserve_shape"TestDerivative.test_preserve_shape   s    	! JJrNjj"**Q-266!A#;"RVVBqD\/8IRVVBqD\/1Q3(2Qrvvbd|^QqS5IIK Ld3$r   c                 H   UR                  SUR                  S9n[        R                  n[	        [
        R                  R                  S5      5      n[        SSS9nUR                  5       nSUS'   [        X2USS9n[        UR                  U-
  5      S:  d   eS	US'   [        X2USS9n[        UR                  U-
  5      S	:  d   e[        UR                  U-
  5      [        UR                  U-
  5      :  d   eUR                  5       nSUS
'   [        X2USS9n[        UR                  U-
  5      SU-  :  d   eS	US
'   [        X2USS9n[        UR                  U-
  5      S	U-  :  d   e[        UR                  U-
  5      [        UR                  U-
  5      :  d   eg )Nr"   r#   r   )r6   r   gMbP?r6   rF   )r   r?   gư>r   )r%   r]   r   r   floatr	   r&   r'   r   copyr   r)   r(   )	r   r+   r   r   r.   tolerances0r   res1res2s	            r   test_convergenceTestDerivative.test_convergence   s   JJrJ,LLEJJNN2&'* %%'
!
6!:Q?477S=!D(((!
6!:Q?477S=!D(((477S=!C#$6666 %%'
!
6!:Q?477S=!D3J...!
6!:Q?477S=!D3J...477S=!C#$6666r   c                    UR                  SUR                  S9n[        R                  n[	        [
        R                  R                  S5      5      n[        X2SSS9n[        X2SSS9n[        UR                  U-
  5      [        UR                  U-
  5      :  d   e[        X2SSS9n[        X2S	SS9n[        UR                  U-
  5      [        UR                  U-
  5      :  d   e[        S
SSS9n[        X24SSS.UD6n[        X24SSS.UD6n[        UR                  UR                  SS9  [        SSSS9n[        X24SSS.UD6n[        X24S[        R                  " S5      -  SS.UD6n[        UR                  UR                  SS9  SUS'   [        X24SSS.UD6n[        X24S[        R                  " S5      -  SS.UD6n[        UR                  UR                  SS9  g )Nr"   r#         ?r@   )initial_stepmaxiterg?rG   )step_factorr   r   rF   r   )r?   r   step_direction)r   r   g+<r   rP   r   )r%   r]   r   r   r   r	   r&   r'   r   r)   r(   r   r   rY   sqrt)	r   r+   r   r   r.   r   r   rT   r-   s	            r   test_step_parameters#TestDerivative.test_step_parameters   s   JJrJ,LLEJJNN2&'!S!<!T1=477S=!C#$6666!Aq9!B:477S=!C#$6666 Aq;KCSKFKGA1GGU3 Aq;GA1GGTAbggajLcTVTU3#% GA1GGTAbggajLcTVTU3r   c                   ^ U4S jnTR                  SSS5      nTR                  U5      n[        R                  " U5      US:     R	                  S5      n[        R                  " U5      US:     R	                  S5      n[        X#US	9n[        UR                  TR                  U5      5        TR                  UR                  5      (       d   eg )
Nc                    > TR                  U 5      n[        R                  " U5      U S:  U S:  -      R                  TR                  5      nU$ )Nr   rG   )ry   xpxatsetr   r   yr+   s     r   r   -TestDerivative.test_step_direction.<locals>.f   sC    q	Aq	1q5QU+,008AHr   r   rG   r    r   r@   gffffff?rP   r   )rZ   
zeros_liker   r   r   r   r   r(   ry   allr`   )r   r+   r   r   r   r-   s    `    r   test_step_direction"TestDerivative.test_step_direction   s    	
 KK1b!q)/C8<<Q?/C8<<R@n=q	*vvckk""""r   c                    S nS nUR                  UR                  / SQ5      S5      nUR                  UR                  / SQ5      S5      nUR                  UR                  SS/5      S	5      n[        X$XV4S
9nUR                  U" XF5      UR                  R
                  5      nUR                  XR                  S5      R                  S9n[        UR                  U5        g )Nc                 
    X-  $ r   rt   r   ps     r   r   =TestDerivative.test_vectorized_step_direction_args.<locals>.f   s	    6Mr   c                     XUS-
  -  -  $ Nr@   rt   r   s     r   r(   >TestDerivative.test_vectorized_step_direction_args.<locals>.df   s    QU|##r   )r@   rG   rE   rF   )rP   r@   r@   rP   r   r@   )r@   rP   r@   rG   rE   )r@   r@   rP   )r   rS   r"   r#   )r[   r%   r   broadcast_tor(   rB   r$   r   )	r   r+   r   r(   r   hdirr   r-   r.   s	            r   #test_vectorized_step_direction_args2TestDerivative.test_vectorized_step_direction_args   s    		$ JJrzz,/<zz"**Z0*=JJrzz1a&):6d>oobh5jjJJrN$8$8j9$r   c           
        ^ U4S jnTR                  STR                  S9nTR                  / SQ5      nTR                  TR                  SSS5      S5      n[	        X#US	S
US9nTR                  UR                  U" U5      -
  5      nTR                  US S2S4   US
S 2S4   :  5      (       d   e[        UR                  S   5       H:  n[	        X#XXS4   S	S
US9n	[        UR                  US S 24   U	R                  SS9  M<     g )Nc                 &   > TR                  U 5      $ r   r}   r~   s    r   r   +TestDerivative.test_initial_step.<locals>.f   s    66!9r   r   r#   r   r   r    )rP   r@   rG   r@   )r   r?   r   r   rP   .r   r   )r%   r]   r[   logspacer   r)   r(   r   rangerB   r   )
r   r+   r   r   r   h0r-   errir.   s
    `        r   test_initial_step TestDerivative.test_initial_step   s    	 JJrJ,J/ZZB2.8Ba(68ffSVVad]# vvc#2#s(mc!"c'l23333 rxx{#AQa41,:<CCFF1a4L#&&u= $r   c           	        ^^	 UR                  SUR                  S9nSm	S nSn[        X2T	[        SS9S9nUR	                  UR
                  5      (       a   eUR                  UR                  US	-   T	S	-
  S
-  -   :H  5      (       d   eUR                  UR                  T	:H  5      (       d   eUU	4S jmSTl	        S Tl
        [        5       Tl        [        X2T[        SS9S9nUR                  5        H  nUS:X  a2  XW   [        R                  :X  d   eXg   [        R                   :X  d   eM;  US:X  a+  [#        Xg   XW   SS9  [#        TR                  U   XW   SS9  Ml  Xg   TR                  U   s=:X  a  XW   :X  a  M   e   e   g )Ng~,?r#   rE   c                 2    [         R                  " U 5      nU$ r   r   )r   r-   s     r   r   /TestDerivative.test_maxiter_callback.<locals>.f	  s    ,,q/CJr      V瞯<r   )r   r   r@   rG   c                 v  > T=R                   S-  sl         U Tl        [        U S5      (       d   e[        U R                  5      TR
                  ;  d   eTR
                  R                  [        U R                  5      5        U R                  [        R                  :X  d   eTR                   T:X  a  [        eg )Nr@   r   )iterr-   hasattrr   r(   dfsaddrb   r   _EINPROGRESSStopIteration)r-   callbackr   s    r   r   6TestDerivative.test_maxiter_callback.<locals>.callback  s    MMQMHL3$$$$=444LLU366]+::!1!1111}}'## (r   rP   )r   r   rb   r*   r   r5   )r%   r]   r   r   anyr`   r   rc   rN   r   r-   r   r   keysr   r   
_ECALLBACKr   )
r   r+   r   r   default_orderr-   r   keyr   r   s
           @@r   test_maxiter_callback$TestDerivative.test_maxiter_callback  sl   JJxrzzJ2	 w4U;KL66#++&&&&vvchh-!"3w{Ao"EEFFFFvvcgg())))	$ u!d>NO 88:Chx3==000yCNN222  	38%@S 138%HyHLL$5AAAAAA r   r   r   g?gffffff?r$   float32r]   c                   ^^ [        TT5      mTR                  UTS9nUU4S jnU4S jn[        XRSXS9nUR                  R                  T:X  d   eUR
                  R                  T:X  d   eUR                  R                  T:X  d   eTR                  T5      R                  n[        T5      (       a  US-  S-  OUS-  n	[        UR
                  TR                  UR                  5      U	S9  g )	Nr#   c                 J   > U R                   T:X  d   eTR                  U 5      $ r   )r$   ry   )r   r$   r+   s    r   r   $TestDerivative.test_dtype.<locals>.f7  s#    77e###66!9r   c                    > U R                   R                  T:X  d   eU R                  R                  T:X  d   eU R                  R                  T:X  d   eg r   )r   r$   r(   r*   )r-   r$   s    r   r   +TestDerivative.test_dtype.<locals>.callback;  sE    55;;%'''66<<5(((99??e+++r   rF   )r?   r   r   r   2   r   )r7   r%   r   r   r$   r(   r*   finfoepsr   r   ry   )
r   r   r   r$   r+   r   r   r-   r   r   s
      ``     r   
test_dtypeTestDerivative.test_dtype/  s    
 E"JJqJ&		,
 QtOuu{{e###vv||u$$$yy%'''hhuo!! (sCx"}#s(suuD9r   c           	         UR                  S5      nSn[        R                  " [        US9   [	        S U5        S S S 5        Sn[        R                  " [        US9   [	        S UR                  S5      5        S S S 5        Sn[        R                  " [        US9   [	        S UR                  S	S
/5      5        S S S 5        Sn[        R                  " [        US9   [	        S U[        SS9S9  S S S 5        [        R                  " [        US9   [	        S U[        SS9S9  S S S 5        [        R                  " [        US9   [	        S U[        5       S9  S S S 5        Sn[        R                  " [        US9   [	        S USS9  S S S 5        [        R                  " [        US9   [	        S USS9  S S S 5        Sn[        R                  " [        US9   [	        S USS9  S S S 5        [        R                  " [        US9   [	        S USS9  S S S 5        Sn[        R                  " [        US9   [	        S  US!S"9  S S S 5        S#n[        R                  " [        US9   [	        S$ US%S&9  S S S 5        g ! , (       d  f       GNP= f! , (       d  f       GN"= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNh= f! , (       d  f       GNL= f! , (       d  f       GN.= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)'Nr@   z`f` must be callable.matchz3Abscissae and function output must be real numbers.c                     U $ r   rt   ru   s    r   rv   6TestDerivative.test_input_validation.<locals>.<lambda>S      r   y            ?z6When `preserve_shape=False`, the shape of the array...c                 
    / SQ$ )N)r@   rG   rE   rt   ru   s    r   rv   r  W  s    r   r   z6Tolerances and step parameters must be non-negative...c                     U $ r   rt   ru   s    r   rv   r  [  r  r   rP   r5   r   c                     U $ r   rt   ru   s    r   rv   r  ]  r  r   ekkir   c                     U $ r   rt   ru   s    r   rv   r  _  r  r   r   %`maxiter` must be a positive integer.c                     U $ r   rt   ru   s    r   rv   r  c  r  r         ?r   c                     U $ r   rt   ru   s    r   rv   r  e  r  r   r   z"`order` must be a positive integerc                     U $ r   rt   ru   s    r   rv   r  i  r  r   rJ   c                     U $ r   rt   ru   s    r   rv   r  k  r  r   z'`preserve_shape` must be True or False.c                     U $ r   rt   ru   s    r   rv   r  o  r  r   herringr   z`callback` must be callable.c                     U $ r   rt   ru   s    r   rv   r  s  r  r   	shrubbery)r   )r%   pytestraises
ValueErrorr   r   object)r   r+   onemessages       r   test_input_validation$TestDerivative.test_input_validationI  s@   jjm)]]:W5tS! 6 H]]:W5{BJJu$56 6 K]]:W5*BJJBx,@A 6 K]]:W5{CDbMB 6]]:W5{CDf4EF 6]]:W5{CVX> 6 :]]:W5{C5 6]]:W5{C3 6 7]]:W5{Cs3 6]]:W5{Cq1 6 <]]:W5{C	B 6 1]]:W5{C+> 65I 65 65 65 655555 6555 6555 65 65s   JJJ'J9K	KK//LLL%=L7-M
J
J$'
J69
K
K
K,/
K>
L
L"%
L47
M
Mc           
        ^^ U4S jn[        T5      (       dY  [        UTR                  S5      [        SS9S9nUR                  (       d   e[        UR                  TR                  S5      5        [        TR                  TR                  S5      TR                  S9n[        UR                  TR                  TR                  5      5        [        UR                  TR                  S	TR                  S
95        [        TR                  TR                  S5      SS9n[        UR                  TR                  TR                  5      5        [        UR                  TR                  S	TR                  S
95        [        S5       H  mTR                  STR                  S
9nU4S jnST-  UTS-
  -  -  n[        X$S[        ST5      S9n[        UR                  USS9  [        UR                  TR                  TR                  TR                  S
95        [        X$[        ST5      S9nUR                  (       d   eUR                   S:X  d   e[        UR                  USS9  M     S n[        UTR                  S5      TR                  S5      S9n[        UR                  TR                  S5      5        g )Nc                 Z   > TR                  U R                  S5      (       d   eU S-  S-
  $ )Nzreal floatingc   r@   )isdtyper$   r~   s    r   r   ,TestDerivative.test_special_cases.<locals>.fz  s,    ::agg77777Q;r      r4   r   r  gl)~IQr@   r   r   r#   r   r   rA   r  c                    > SU T-  -  $ NrG   rt   )r   rU   s    r   r   r'    s    Avr   rG   )r   r?   r   rJ   c                     X-  S-
  $ r   rt   )r   cs     r   r   r'    s    37Nr   rE   )rS   g      @)r   r   r%   r   r`   r   r(   ry   r   r   rb   ra   r   r]   rd   r*   rN   )r   r+   r   r-   r   r.   rU   s    `    @r   test_special_cases!TestDerivative.test_special_casesu  s   
	 ||Q

1$E:JKC;;;CFFBJJy$9: ArvvF

266 23

BJJrJ$BCAQ?

266 23

BJJrJ$BC qA

3bjj
1A A#a!A#h,CQ1C1I>CCFFCe4CIIrzz"&&

z'KLQQ3C;;;77a<<CFFCe4 "	 BJJqM

1>

2/r   T)np_onlyc                     U S-
  S-  $ )Nr@   rE   rt   ru   s    r   rv   TestDerivative.<lambda>  s    AEa<r   c                 P    [         R                  " U S:  U S-
  S-  U S-
  S-  5      $ )Nr@      rE   )rY   whereru   s    r   rv   r2    s%    288AEAEa<!a%A>r   c                     Sn[        U/ SQUS.6n[        R                  " UR                  5      (       d   e[	        UR
                  SUS9  g )NgؗҜ<r   )r   r6   r   r5   )r   rY   r   r`   r   r(   )r   r1   r+   r6   r-   s        r   test_saddle_gh18811"TestDerivative.test_saddle_gh18811  s@     $zEvvckk""""-r   rt   N)!__name__
__module____qualname____firstlineno__r   r  markparametrizerY   rZ   r/   r	   _distr_paramsdistcontr=   tuplerm   r   r   r   r   r   r   r   r   r   r   r!  r.  skip_xp_backendsxfailr7  __static_attributes__rt   r   r   r   r      s    [[S3E4(D"EF	< G	< [[VU%8%8%A%AB1 C1 [[Wq!f-[[Wuwvy&IJ.3 K ..3`/2/(
%724>#% >,)BV [[VZ0[[S4$"56[[W&<=: > 7 1:.*?X30l [[!!$!/[[[[V	#	>B& .	  0.r   r   c                       \ rS rSrS rSrg)JacobianHessianTesti  c           	      |   U R                   R                  nSn[        R                  " [        US9   U" UR
                  S[        SS9S9  S S S 5        UR                  S5      n[        R                  nSn[        R                  " [        US9   U" XT[        SS9S9  S S S 5        [        R                  " [        US9   U" XT[        SS	9S9  S S S 5        [        R                  " [        US9   U" XTSS
9  S S S 5        Sn[        R                  " [        US9   U" XTSS9  S S S 5        Sn[        R                  " [        US9   U" XTSS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz"Argument `x` must be at least 1-D.r  r@   rP   r5   r  rE   z<Tolerances and step parameters must be non-negative scalars.r   r  z#`order` must be a positive integer.rJ   r  r  )
jh_func__func__r  r  r  r   r   r   r
   rosen)r   r+   rH  r   r   funcs         r   test_ivJacobianHessianTest.test_iv  s8   ,,'' 7]]:W5BFFA$B-8 6
 GGAJ~~P]]:W5D"6 6]]:W5D"6 6]]:W5D, 6 8]]:W5D2& 6 :]]:W5DR( 65) 65 655555 65 65sG   EE) E:0FFF-
E&)
E7:
F
F
F*-
F;rt   N)r9  r:  r;  r<  rL  rD  rt   r   r   rF  rF    s    )r   rF  c                      \ rS rSr\rS rS rS\l        \\l	        S r
S rS\
l        \\
l	        S rS rS	\l        \\l	        S
 rS rS\l        \\l	        S rS rS	\l        \\l	        S rS\l        \R(                  \l	        \R,                  R/                  SS5      \R,                  R/                  S/ SQ5      \R,                  R/                  S\\
\\\\/5      S 5       5       5       rS rS rSrg)TestJacobiani  c                 f    U u  p#UR                  US-  U-  SU-  UR                  U5      -   /5      $ NrG   r4  r   r   )zr+   r   r   s       r   f1TestJacobian.f1  s6    xxa!QURVVAY%6788r   c                 ~    U u  pSU-  U-  US-  /[         R                  " US5      [         R                  " U5      //$ rQ  )rY   r   r   )rS  r   r   s      r   df1TestJacobian.df1  s=    QAF#bll1a&8"&&)%DEEr   )rG   rG   c                 t    U u  p#UR                  X!R                  U5      -  X!R                  U5      -  /5      $ r   r   r   r   )rS  r+   rphis       r   f2TestJacobian.f2  s1    xxVVC[!ffSk/:;;r   c                     U u  p[         R                  " U5      U* [         R                  " U5      -  /[         R                  " U5      U[         R                  " U5      -  //$ r   )rY   r   r   )rS  r[  r\  s      r   df2TestJacobian.df2  sN    qb266#;./a"&&+o.0 	0r   c                     U u  p#nUR                  X!R                  U5      -  UR                  U5      -  X!R                  U5      -  UR                  U5      -  X!R                  U5      -  /5      $ r   )r   r   r   )rS  r+   r[  r\  ths        r   f3TestJacobian.f3  sa    
xxVVC[266":5q66#;PR7SVVC[* + 	+r   c                    U u  pn[         R                  " U5      [         R                  " U5      -  U[         R                  " U5      -  [         R                  " U5      -  U* [         R                  " U5      -  [         R                  " U5      -  /[         R                  " U5      [         R                  " U5      -  U[         R                  " U5      -  [         R                  " U5      -  U[         R                  " U5      -  [         R                  " U5      -  /[         R                  " U5      U* [         R                  " U5      -  [         R                  " U5      //$ r   )rY   r   r   r   )rS  r[  r\  rc  s       r   df3TestJacobian.df3  s    
rvvbz)1rvvc{?RVVBZ+GbffSk!BFF2J.0rvvbz)1rvvc{?RVVBZ+GRVVC[266":-/qb266#;.a0@A	C 	Cr   )rE   rE   c           	      v    U u  p#nUR                  USU-  SUS-  -  SU-  -
  XAR                  U5      -  /5      $ Nr4  rF   rG   rR  r   r+   x1x2x3s        r   f4TestJacobian.f4  sB    
xxQVQq[1r6%92r
?KLLr   c                     U u  pn[         R                  " U5      nUSU-  SU-  /SU-  SU-  SU-  /SU-  SU-  SU-  /U[         R                  " U5      -  SU-  [         R                  " U5      //$ Nr   r4  r   r	  )rY   	ones_liker   r   r   rl  rm  rn  r  s        r   df4TestJacobian.df4  s    
ll2a#gq3w'S!c'1s7+S!b&"s(+bffRj!c'266":68 	8r   rD   c           	      x    U u  p#nUR                  SU-  SUS-  -  SUR                  X4-  5      -  -
  X4-  /5      $ rj  rR  rk  s        r   f5TestJacobian.f5  sC    
xxRR1Wq266"'?/B!BBGLMMr   c                     U u  pn[         R                  " U5      nSU-  SU-  SU-  /SU-  SU-  [         R                  " X#-  5      -  SU-  [         R                  " X#-  5      -  /SU-  X2//$ rr  )rY   rs  r   rt  s        r   df5TestJacobian.df5  sy    
ll2S!c'1s7+Rb266"'?2BGbffRWo4MNS"!# 	#r   c                 .    [         R                  " U 5      $ r   )r
   rJ  )r   _s     r   rJ  TestJacobian.rosen$  s    HNN1--r   )r4  r@   r$   r   rQ   )rt   )rA   )rG   rE   rK  c                 ~  ^^ US:X  a  SOSn[        TU5      n[        R                  R                  S5      nTR                  u  pxUR                  U4U-   S9n	[        UU4S jTR                  XS95      n
TR                  [        R                  " TR                  U	5      5      US9n[        U
R                  XS9  g )	Nr]   r4   ghUM`?   6H2)rQ   c                    > T" U T5      $ r   rt   )r   rK  r+   s    r   rv   ,TestJacobian.test_examples.<locals>.<lambda>1  s    a"r   r#   r5   )
r7   rY   rz   r   mnr   r%   r.   r   r(   )r   r$   rQ   rK  r+   r6   r{   mrU   r   r-   r.   s      ``       r   test_examplesTestJacobian.test_examples(  s     *uE"ii##L1wwJJQD4KJ(-rzz!z/IJjjDHHQK0j>/r   c           
      6  ^^^^ TR                  SS/5      mU4S jnU4S jmU4S jm[        UTSS9n[        T5      (       dL  [        R                  " UR
                  5      S:X  d   e[        R                  " UR                  5      S:X  d   e[        UU4S	 jTS
S SS9n[        UU4S jTSS SS9n[        UU4S jTS
S SS9n[        UU4S jTSS SS9n[        R                  " 5       nS H  n	TR                  [        XI5      [        XY5      /[        Xi5      [        Xy5      //5      n
TR                  U
[        S [        U
R                  5       5       5      S9X'   X9   R                  TR                  :X  a  SOSn[!        X9   X   US9  M     g )Nr         ?c                    > U u  pTR                  TR                  SU-  5      TR                  U5      -  TR                  SU-  5      US-  -  /5      $ )Nr   rG   rZ  )rS  r   r   r+   s      r   rW  $TestJacobian.test_attrs.<locals>.df1<  sL    DA88RVVCE]RVVAY6qsad8JKLLr   c                 P   > TR                  SU -  5      TR                  U5      -  $ )Nr   )r   r   s     r   df1_0xy(TestJacobian.test_attrs.<locals>.df1_0xy@  s"    66#a%=266!9,,r   c                 8   > TR                  SU -  5      US-  -  $ r+  )r   r   s     r   df1_1xy(TestJacobian.test_attrs.<locals>.df1_1xyC  s    66!A#;A%%r   r    r)  rF   c                    > T" U TS   5      $ r   rt   )r   r  rS  s    r   rv   )TestJacobian.test_attrs.<locals>.<lambda>L      71ad#3r   r   r@   c                    > T" TS   U 5      $ Nr   rt   )r   r  rS  s    r   rv   r  M      71Q4#3r   rG   c                    > T" U TS   5      $ r   rt   )r   r  rS  s    r   rv   r  N  r  r   c                    > T" TS   U 5      $ r  rt   )r   r  rS  s    r   rv   r  O  r  r   )r`   rb   r(   rN   rc   c              3   :   #    U  H  u  pUS :X  d  M  Uv   M     g7f)r@   Nrt   ).0axrQ   s      r   	<genexpr>*TestJacobian.test_attrs.<locals>.<genexpr>V  s     U.G("4ST922.Gs   	)axisgiUMu>gt=r   )r%   r   r   r   nuniquerN   rc   r
   OptimizeResultr7   squeezerA  	enumeraterB   r$   r   r   )r   r+   rW  r-   res00res01res10res11r.   attrref_attrr   r  r  rS  s    `          @@@r   
test_attrsTestJacobian.test_attrs6  sq   JJT{#	M	-	& sAB/||;;sww'1,,,;;sxx(A---3QqV"M3QqV"M3QqV"M3QqV"M%%'>DzzGE$8'%:N#O$+E$8'%:N#O#Q RH

Ui.GUU # CI !Y__

:6DCIsyt< ?r   c                   ^^	^
 [         R                  R                  S5      nUR                  S5      m	Sm
U	U
U4S jn/ SQn/ SQnSS0n[        UTR	                  T	TR
                  S	9UXFS
9nTR	                  [        R                  T	5      TR
                  S	9n[        UR                  USS9  TR                  TR                  U5      5      (       d   eg )Nl   ]2ZVrE   gHz>c                 *  > [         R                  " U 5      SU S   TS   :  4   R                  TR                  5      n [         R                  " U 5      SU S   TS   S-   :  4   R                  TR                  5      n [         R                  " U 5      SU S   TS   :  4   R                  TR                  5      n [         R                  " U 5      SU S   TS   S-
  T-
  :  4   R                  TR                  5      n [        R                  U T5      $ )Nr   r  r@   r3   )r   r   r   r   rO  rx  )r   br   r+   s    r   r   0TestJacobian.test_step_direction_size.<locals>.fb  s    q	!QqTAaD[.)--bff5Aq	!QqTAaD4K//044RVV<Aq	!QqTAaD[.)--bff5Aq	!QqTAaD3JsN22377?A??1b))r   )r@   rP   r   )r  r3   r   r6   :0yE>r#   )r   r   r   r5   )rY   rz   r   r   r%   r]   rO  r{  r   r(   r   isfinite)r   r+   r{   r   dirr   r6   r-   r.   r  r   s    `       @@r   test_step_direction_size%TestJacobian.test_step_direction_size[  s     ii##N3JJqM	* ~q"**Qbjj*9&)<jj))!,BJJj?$/vvbkk#&''''r   rt   N)r9  r:  r;  r<  r   rH  rT  rW  r  r.   r]  r`  rd  rg  ro  ru  rx  r{  rJ  r
   	rosen_derr  r=  r>  r  r  r  rD  rt   r   r   rO  rO    s   G
9F BEBF<0
 BEBF+
C BEBFM8 BEBFN# BEBF-EH""EI[[W&<=[[V%78[[Vb"b"b%%@A	0 B 9 >	0#=J(r   rO  c                       \ rS rSr\r\R                  R                  S/ SQ5      S 5       r	S r
S r\R                  R                  SSS	9S
 5       rSrg)TestHessianis  rB   )rt   )rF   )rG   rF   c                 <   [         R                  R                  S5      nSnUR                  UR                  U4U-   5      UR                  S9n[        [        R                  U5      nU(       a}  UR                  XTS45      nUR                  UR                   Vs/ s H  n[        R                  " U5      PM     sn5      nUR                  USS5      nUR                  XU4U-   5      nO[        R                  " U5      n[        UR                  USS9  g s  snf )Nr  rE   r#   rP   r   r  r5   )rY   rz   r   r%   r]   r   r
   rJ  r[   r   T
rosen_hessmoveaxisr   ddf)	r   rB   r+   r{   r  r   r-   xir.   s	            r   test_exampleTestHessian.test_examplew  s    ii##L1JJszz1$,/rzzJBhnna(

1"g&A((accBcH//3cBCC++c1b)C**Sa'E/2C%%a(C40 Cs    Dc                    [         R                  R                  S5      nUR                  UR                  S5      UR                  S9n[        [        R                  U5      n[        R                  " U5      nUS:g  n[        UR                  U   XV   5        SUR                  UR                  XV   5      5      -  n[        UR                  U)    XV)    US9  g )Nr  rE   r#   r   g{Gz?r5   )rY   rz   r   r%   r   r   r
   rJ  r  r   r  r)   min)r   r+   r{   r   r-   r.   maskr6   s           r   test_float32TestHessian.test_float32  s    ii##L1JJszz!}BJJJ7hnna(!!!$qsy1bffRVVCI.//E
>r   c                   ^^^ TR                  SS/5      mUU4S jmSTl        [        TTSS9nSTl        [        UU4S jTSS SS9nUR                  S	   TR                  s=:X  a  UR                  S	   :X  d   e   eSTl        [        UU4S
 jTSS SS9nUR                  S   TR                  s=:X  a  UR                  S	   :X  d   e   eg )Nr   r  c                    > TR                   " U 6 u  pTR                  UR                  S:  a#  [        R                  " UR
                  SS  5      OS-   Tl        TR                  U5      US-  -  $ )NrG   r@   rE   )broadcast_arraysrc   rR   mathprodrB   r   )rS  r   r   rT  r+   s      r   rT  !TestHessian.test_nfev.<locals>.f1  s[    &&*DAgg166A:17712;!71MBG66!9qAv%%r   r   r    r)  c                 $   > T" U S   TS   /5      $ )Nr   r@   rt   )r   rT  rS  s    r   rv   'TestHessian.test_nfev.<locals>.<lambda>      "adAaD\"2r   r@   )r   r   c                 $   > T" TS   U S   /5      $ r  rt   )r   rT  rS  s    r   rv   r    r  r   rG   )r@   r@   )r%   rc   r   )r   r+   r-   r  r  rT  rS  s    `   @@r   	test_nfevTestHessian.test_nfev  s    JJT{#	&  b!"-2AaFLxx~<EJJt,<<<<<<2AaFLxx~<EJJt,<<<<<<r   Tz$Python list input uses NumPy backend)r0  reasonc           	          Sn[         R                  " [        US9   [        UR                  S/[        SS9S9  S S S 5        g ! , (       d  f       g = f)Nz"The specified `rtol=1e-15`, but...r  r"   r   r   r  )r  warnsRuntimeWarningr   r   r   )r   r+   r   s      r   test_small_rtol_warning#TestHessian.test_small_rtol_warning  s:     7\\.8BFFRDTu-=> 988s   A
Art   N)r9  r:  r;  r<  r   rH  r  r=  r>  r  r  r  rB  r  rD  rt   r   r   r  r  s  sd    G[[W&891 :1&?=0 [[!!$)O " Q?Q?r   r  )!r  r  numpyrY   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipy._lib.array_api_extraarray_api_extrar   scipy._lib._array_api_no_0dr   r   r   scipy._lib._array_apir   r   r   scipyr	   r
   r   scipy.differentiater   r   r   "scipy.differentiate._differentiater   r   rF  rO  r  rt   r   r   <module>r     s       6 6 ( ( X X G G * * = = > :f. f. f.R) )< 8V(& V( V(r 7>?% >? >?r   