
    9im                     L   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  S SKJrJrJr  S SKJrJrJr  S SKJr  Sr\R:                  R=                  S\S	9\R:                  R=                  S
SS	9 " S S5      5       5       r " S S5      r \R:                  R=                  S\S	9\R:                  R=                  S
SS	9 " S S\ 5      5       5       r!\R:                  R=                  S\S	9\R:                  R=                  S
SS	9 " S S\ 5      5       5       r"g)    N)xp_assert_closexp_assert_equalxp_assert_less)is_numpyis_torch)statsoptimizespecial)
derivativejacobianhessian)_EERRORINCREASEz5Array API does not support fancy indexing assignment.array_api_strict)reasonz
dask.arrayzboolean indexing assignmentc            	          \ rS rSrS r\R                  R                  SS\R                  " SSS5      /5      S 5       r
\R                  R                  S	S
9\R                  R                  S\R                  R                  5      S 5       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     l/var/www/html/land-doc-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   T)np_onlycasec                     Uu  p4[        [        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   r3   r,   distnameparamsdistr   r.   r/   s	            r   test_accuracyTestDerivative.test_accuracy%   sZ      uh'0KKMC1%hhqk%0r   order      shape)         )rG      rI   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    rE   r   c                 .   > [        TR                  U TS9$ )NrA   )r   r   )r   rA   r   s    r   _derivative_single=TestDerivative.test_vectorization.<locals>._derivative_single8   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nitrB   feval)sizendimrD   r   )r   argskwargsnr   states      r   r   ,TestDerivative.test_vectorization.<locals>.f<   sV    %LAL'NAFFaK166A:aAGGBKON66!-d-f--r   rR   rP   r   rQ   r$   rL   rR   g-q=r7   )nplinspacereshaperS   	vectorizer   r&   float64ravelr   r   r)   r+   boolsuccessr   int32statusnfevr   maxrP   )r   rA   rD   r,   r   rM   r   r.   refsr/   ref_xref_df	ref_errorref_successref_flagref_nfevref_nitrW   rX   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 )NrB   c                     U S-
  $ Ng      @ r   s    r   <lambda>6TestDerivative.test_flags.<locals>.f.<locals>.<lambda>g   s    q3wr   c                 H   > TR                  U 5      TR                  5       -  $ r   )exprandom)r   rngr,   s    r   rx   ry   h   s    rvvay5r   c                 &   > TR                  U 5      $ r   r{   r   r,   s    r   rx   ry   i   s    rvvayr   c                 <   > TR                  U TR                  5      $ r   )	full_likenanr   s    r   rx   ry   j   s    r||Arvv6r   rZ   )rP   zipr]   intstack)	xsjsfuncsr   jr.   r   r}   r,   s	         r   r   $TestDerivative.test_flags.<locals>.fe   sp    EEQJE&5(68E 14B

2u8M0NO0N5Q=#0NCO88C=  Ps   
 A>r   rH   r$   +=rtolrI   )
tolerancesrA   rU   )r[   r|   default_rngrP   arangeint64r   onesr_   dictr&   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERRrc   r   rd   )r   r,   rU   r.   	ref_flagsr   r}   s    `   @@r   
test_flagsTestDerivative.test_flagsa   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 )
Nrr   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      $ ru   )r{   r|   r   r   r   )r   outr}   r,   s     r   r   3TestDerivative.test_flags_preserve_shape.<locals>.f}   sT    s766!9SZZ\)66!9<<266*,C 88C= r   rB   r$   r   r   rI   T)r   rA   preserve_shape)r[   r|   r   r   r&   r_   r   r   r   r   r   r   rc   r   rd   )r   r,   r   r.   r   r}   s    `   @r   test_flags_preserve_shape(TestDerivative.test_flags_preserve_shapez   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      $ )NrG   r!      rB   rI   )sinr   )r   r   r,   s     r   r   -TestDerivative.test_preserve_shape.<locals>.f   sT    bffQqSk1RVVBqD\>266"Q$<1q3HIC88C= r           rB   rG   r!   r   rI   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   )r8   r   gMbP?r8   rH   )r   rA   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$         ?rB   )initial_stepmaxiterg?rI   )step_factorr   r   rH   r   )rA   r   step_direction)r   r   g+<r   rR   r   )r&   r_   r
   r   r   r   r'   r(   r   r*   r)   r   r   r[   sqrt)	r   r,   r   r   r/   r   r   rV   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   rI   )r{   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   rI   r!   r   rB   gffffff?rR   r   )r\   
zeros_liker   r   r   r   r   r)   r{   allrb   )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   rv   r   ps     r   r   =TestDerivative.test_vectorized_step_direction_args.<locals>.f   s	    6Mr   c                     XUS-
  -  -  $ NrB   rv   r   s     r   r)   >TestDerivative.test_vectorized_step_direction_args.<locals>.df   s    QU|##r   )rB   rI   rG   rH   )rR   rB   rB   rR   r   rB   )rB   rR   rB   rI   rG   )rB   rB   rR   )r   rU   r#   r$   )r]   r&   r   broadcast_tor)   rD   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!   )rR   rB   rI   rB   )r   rA   r   r   rR   .r   r   )r&   r_   r]   logspacer   r*   r)   r   rangerD   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;  Xg   TR                  U   s=:X  a  XW   :X  a  M[   e   e   g )Ng~,?r$   rG   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   rB   rI   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 )NrB   r   )iterr.   hasattrr   r)   dfsaddrd   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   rR   )r   r   rd   )r&   r_   r   r   anyrb   r   re   rP   r   r.   r   r   keysr   r   
_ECALLBACK)
r   r,   r   r   default_orderr.   r   keyr   r   s
           @@r   test_maxiter_callback$TestDerivative.test_maxiter_callback  s<   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yHLL$5AAAAAA r   r   r   g?gffffff?r%   )float16float32r_   c                 <  ^^ TS:X  a&  [        T5      (       d  [        R                  " S5        [        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   z+float16 not tested for alternative backendsr$   c                 J   > U R                   T:X  d   eTR                  U 5      $ r   )r%   r{   )r   r%   r,   s    r   r   $TestDerivative.test_dtype.<locals>.f8  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   rH   )rA   r   r   r   2   r   )r   pytestskipr9   r&   r   r   r%   r)   r+   finfoepsr   r   r{   )
r   r   r   r%   r,   r   r   r.   r  r   s
      ``     r   
test_dtypeTestDerivative.test_dtype-  s     IhrllKKEF 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)'NrB   z`f` must be callable.matchz3Abscissae and function output must be real numbers.c                     U $ r   rv   rw   s    r   rx   6TestDerivative.test_input_validation.<locals>.<lambda>T      r   y            ?z6When `preserve_shape=False`, the shape of the array...c                 
    / SQ$ )N)rB   rI   rG   rv   rw   s    r   rx   r
  X  s    r   r   z6Tolerances and step parameters must be non-negative...c                     U $ r   rv   rw   s    r   rx   r
  \  r  r   rR   r7   r   c                     U $ r   rv   rw   s    r   rx   r
  ^  r  r   ekkir   c                     U $ r   rv   rw   s    r   rx   r
  `  r  r   r   %`maxiter` must be a positive integer.c                     U $ r   rv   rw   s    r   rx   r
  d  r  r         ?r   c                     U $ r   rv   rw   s    r   rx   r
  f  r  r   r   z"`order` must be a positive integerc                     U $ r   rv   rw   s    r   rx   r
  j  r  r   rL   c                     U $ r   rv   rw   s    r   rx   r
  l  r  r   z'`preserve_shape` must be True or False.c                     U $ r   rv   rw   s    r   rx   r
  p  r  r   herringr   z`callback` must be callable.c                     U $ r   rv   rw   s    r   rx   r
  t  r  r   	shrubbery)r   )r&   r   raises
ValueErrorr   r   object)r   r,   onemessages       r   test_input_validation$TestDerivative.test_input_validationJ  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   rB   )isdtyper%   r   s    r   r   ,TestDerivative.test_special_cases.<locals>.f{  s,    ::agg77777Q;r      r6   r   r  gl)~IQrB   r   r   r$   r   r   rC   r  c                    > SU T-  -  $ NrI   rv   )r   rW   s    r   r   r*    s    Avr   rI   )r   rA   r   rL   c                     X-  S-
  $ r   rv   )r   cs     r   r   r*    s    37Nr   rG   )rU   g      @)r   r   r&   r   rb   r   r)   r{   r   r   rd   rc   r   r_   rf   r+   rP   )r   r,   r   r.   r   r/   rW   s    `    @r   test_special_cases!TestDerivative.test_special_casesv  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   c                     U S-
  S-  $ )NrB   rG   rv   rw   s    r   rx   TestDerivative.<lambda>  s    AEa<r   c                 P    [         R                  " U S:  U S-
  S-  U S-
  S-  5      $ )NrB      rG   )r[   whererw   s    r   rx   r4    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   r8   r   r7   )r   r[   r   rb   r   r)   )r   r3   r,   r8   r.   s        r   test_saddle_gh18811"TestDerivative.test_saddle_gh18811  s@     $zEvvckk""""-r   rv   N)!__name__
__module____qualname____firstlineno__r   r   markparametrizer[   r\   r0   skip_xp_backendsr   _distr_paramsdistcontr?   tuplero   r   r   r   r   r   r   r   r   r   r  r$  r1  xfailr9  __static_attributes__rv   r   r   r   r      s    [[S3E4(D"EF	< G	< [[!!$!/[[VU%8%8%A%AB1 C 01 [[Wq!f-[[Wuwvy&IJ.3 K ..3`/2/(
%724>#% >,$BL [[VZ0[[S4$"56[[W&GH: I 7 1:4*?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  rB   rR   r7   r  rG   z<Tolerances and step parameters must be non-negative scalars.r   r  z#`order` must be a positive integer.rL   r  r  )
jh_func__func__r   r  r   r   r   r   r	   rosen)r   r,   rJ  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;rv   N)r;  r<  r=  r>  rN  rF  rv   r   r   rH  rH    s    )r   rH  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      $ NrI   r6  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      //$ rS  )r[   r   r   )rU  r   r   s      r   df1TestJacobian.df1  s=    QAF#bll1a&8"&&)%DEEr   )rI   rI   c                 t    U u  p#UR                  X!R                  U5      -  X!R                  U5      -  /5      $ r   r   r   r   )rU  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   )r[   r   r   )rU  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   )rU  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   )r[   r   r   r   )rU  r]  r^  re  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   )rG   rG   c           	      v    U u  p#nUR                  USU-  SUS-  -  SU-  -
  XAR                  U5      -  /5      $ Nr6  rH   rI   rT  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   r6  r   r  )r[   	ones_liker   r   r   rn  ro  rp  r"  s        r   df4TestJacobian.df4  s    
ll2a#gq3w'S!c'1s7+S!b&"s(+bffRj!c'266":68 	8r   rF   c           	      x    U u  p#nUR                  SU-  SUS-  -  SUR                  X4-  5      -  -
  X4-  /5      $ rl  rT  rm  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//$ rt  )r[   ru  r   rv  s        r   df5TestJacobian.df5  sy    
ll2S!c'1s7+Rb266"'?2BGbffRWo4MNS"!# 	#r   c                 .    [         R                  " U 5      $ r   )r	   rL  )r   _s     r   rL  TestJacobian.rosen&  s    HNN1--r   )r6  rB   r%   )r   r_   rS   )rv   )rC   )rI   rG   rM  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_   r6   ghUM`?   6H2)rS   c                    > T" U T5      $ r   rv   )r   rM  r,   s    r   rx   ,TestJacobian.test_examples.<locals>.<lambda>3  s    a"r   r$   r7   )
r9   r[   r|   r   mnr   r&   r/   r   r)   )r   r%   rS   rM  r,   r8   r}   mrW   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   rI   r\  )rU  r   r   r,   s      r   rY  $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_0xyB  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_1xyE  s    66!A#;A%%r   r!   r,  rH   c                    > T" U TS   5      $ r   rv   )r   r  rU  s    r   rx   )TestJacobian.test_attrs.<locals>.<lambda>N      71ad#3r   r   rB   c                    > T" TS   U 5      $ Nr   rv   )r   r  rU  s    r   rx   r  O      71Q4#3r   rI   c                    > T" U TS   5      $ r   rv   )r   r  rU  s    r   rx   r  P  r  r   c                    > T" TS   U 5      $ r  rv   )r   r  rU  s    r   rx   r  Q  r  r   )rb   rd   r)   rP   re   c              3   :   #    U  H  u  pUS :X  d  M  Uv   M     g7f)rB   Nrv   ).0axrS   s      r   	<genexpr>*TestJacobian.test_attrs.<locals>.<genexpr>X  s     U.G("4ST922.Gs   	)axisgiUMu>gt=r   )r&   r   r   r   nuniquerP   re   r	   OptimizeResultr9   squeezerD  	enumeraterD   r%   r   r   )r   r,   rY  r.   res00res01res10res11r/   attrref_attrr   r  r  rU  s    `          @@@r   
test_attrsTestJacobian.test_attrs8  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   ]2ZVrG   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  rB   r5   )r   r   r   r   rQ  rz  )r   br  r,   s    r   r   0TestJacobian.test_step_direction_size.<locals>.fd  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   )rB   rR   r   )r  r5   r   r8   :0yE>r$   )r   r   r   r7   )r[   r|   r   r   r&   r_   rQ  r}  r   r)   r   isfinite)r   r,   r}   r   dirr   r8   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   rv   N)r;  r<  r=  r>  r   rJ  rV  rY  r  r/   r_  rb  rf  ri  rq  rw  rz  r}  rL  r	   	rosen_derr   r?  r@  r  r  r  rF  rv   r   r   rQ  rQ    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   rQ  c                       \ rS rSr\r\R                  R                  S/ SQ5      S 5       r	S r
S r\R                  R                  \R                  R                  SSS	9S
 5       5       rSrg)TestHessianiu  rD   )rv   )rH   )rI   rH   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  rG   r$   rR   r   r  r7   )r[   r|   r   r&   r_   r   r	   rL  r]   r   T
rosen_hessmoveaxisr   ddf)	r   rD   r,   r}   r  r   r.   xir/   s	            r   test_exampleTestHessian.test_examplez  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  rG   r$   r   g{Gz?r7   )r[   r|   r   r&   r   r   r	   rL  r  r   r  r*   min)r   r,   r}   r   r.   r/   maskr8   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-  -  $ )NrI   rB   rG   )broadcast_arraysre   rT   mathprodrD   r   )rU  r   r   rV  r,   s      r   rV  !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   rB   rv   )r   rV  rU  s    r   rx   'TestHessian.test_nfev.<locals>.<lambda>      "adAaD\"2r   rB   )r   r   c                 $   > T" TS   U S   /5      $ r  rv   )r   rV  rU  s    r   rx   r    r  r   rI   )rB   rB   )r&   re   r   )r   r,   r.   r  r  rV  rU  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)r2   r   c           	          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rv   N)r;  r<  r=  r>  r   rJ  r   r?  r@  r  r  r  thread_unsaferA  r  rF  rv   r   r   r  r  u  sx     G[[W&891 :1&?=0 [[[[!!$)O " Q?Q ?r   r  )#r  r   numpyr[   (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   scipyr   r	   r
   scipy.differentiater   r   r   "scipy.differentiate._differentiater   array_api_strict_skip_reasonr?  rA  r   rH  rQ  r  rv   r   r   <module>r     s:      6 6 ( ( X X 4 * * = = >V  09UVl3PQe. e. R We.P) )< 09UVl3PQV(& V( R WV(r 09UVl3PQ??% ?? R W??r   