
    (phm                        S SK r S SKrS SKrS SK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  \\R8                  R;                  S5      /rS	rS
r \R8                  RC                  S\S9\R8                  RC                  S\ S9 " S S5      5       5       r" " S S5      r#\R8                  RC                  S\S9\R8                  RC                  S\ S9 " S S\#5      5       5       r$\R8                  RC                  S\S9\R8                  RC                  S\ S9 " S S\#5      5       5       r%g)    N)array_api_compatible)xp_assert_closexp_assert_equalxp_assert_less)is_numpyis_torcharray_namespace)statsoptimizespecial)
derivativejacobianhessian)_EERRORINCREASEskip_xp_backendsz5Array API does not support fancy indexing assignment.z*JAX arrays do not support item assignment.array_api_strict)reasonz	jax.numpyc            	          \ 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     _/var/www/html/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  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   r6   distnameparamsdistr   r1   r2   s           r   test_accuracyTestDerivative.test_accuracy)   sZ      uh'0KKMC1%hhqk%0r    order      shape)         )rJ      rL   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#   rH   r!   c                 .   > [        TR                  U TS9$ )NrD   )r   r   )r   rD   r   s    r   _derivative_single=TestDerivative.test_vectorization.<locals>._derivative_single<   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nitrE   feval)sizendimrG   r   )r   argskwargsnr   states      r   r   ,TestDerivative.test_vectorization.<locals>.f@   sV    %LAL'NAFFaK166A:aAGGBKON66!-d-f--r    rU   rS   r   rT   r'   rO   rU   g-q=r:   )nplinspacereshaperV   	vectorizer   r)   float64ravelr   r   r,   r.   boolsuccessr   int32statusnfevr   maxrS   )r   rD   rG   r/   r   rP   r   r1   refsr2   ref_xref_df	ref_errorref_successref_flagref_nfevref_nitrZ   r[   s   ``               @@r   test_vectorization!TestDerivative.test_vectorization3   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 )NrE   c                     U S-
  $ Ng      @ r   s    r   <lambda>6TestDerivative.test_flags.<locals>.f.<locals>.<lambda>k   s    q3wr    c                 H   > TR                  U 5      TR                  5       -  $ r   )exprandom)r   rngr/   s    r   r{   r|   l   s    rvvay5r    c                 &   > TR                  U 5      $ r   r~   r   r/   s    r   r{   r|   m   s    rvvayr    c                 <   > TR                  U TR                  5      $ r   )	full_likenanr   s    r   r{   r|   n   s    r||Arvv6r    r]   )rS   zipr`   intstack)	xsjsfuncsr   jr1   r   r   r/   s	         r   r   $TestDerivative.test_flags.<locals>.fi   sp    EEQJE&5(68E 14B

2u8M0NO0N5Q=#0NCO88C=  Ps   
 A>r   rK   r'   +=rtolrL   )
tolerancesrD   rX   )r^   r   default_rngrS   arangeint64r   onesrb   dictr)   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERRrf   r   rg   )r   r/   rX   r1   	ref_flagsr   r   s    `   @@r   
test_flagsTestDerivative.test_flagse   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 )
Nru   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      $ rx   )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    rE   r'   r   r   rL   T)r   rD   preserve_shape)r^   r   r   r   r)   rb   r   r   r   r   r   r   rf   r   rg   )r   r/   r   r1   r   r   s    `   @r   test_flags_preserve_shape(TestDerivative.test_flags_preserve_shape~   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      $ )NrJ   r$      rE   rL   )sinr   )r   r   r/   s     r   r   -TestDerivative.test_preserve_shape.<locals>.f   sT    bffQqSk1RVVBqD\>266"Q$<1q3HIC88C= r            rE   rJ   r$   r   rL   Tr   )r)   cosr   r   r   r,   )r   r/   r   r   r2   r1   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   )r;   r   gMbP?r;   rK   )r   rD   gư>r   )r)   rb   r   r   floatr
   r*   r+   r   copyr   r-   r,   )	r   r/   r   r   r2   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'         ?rE   )initial_stepmaxiterg?rL   )step_factorr   r   rK   r   )rD   r   step_direction)r   r   g+<r   rU   r   )r)   rb   r   r   r   r
   r*   r+   r   r-   r,   r   r   r^   sqrt)	r   r/   r   r   r2   r   r   rY   r1   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Su  XCS:  '   XCS:  '   [        X#US9n[        UR                  TR                  U5      5        TR                  UR                  5      (       d   eg )	Nc                 X   > TR                  U 5      nTR                  XS:  U S:  -   '   U$ )Nr   rL   )r~   r   r   yr/   s     r   r   -TestDerivative.test_step_direction.<locals>.f   s.    q	A#%66A1uQ Hr    r   rL   r$   )rE   rU   r!   gffffff?r   )r_   
zeros_liker   r   r,   r~   allre   )r   r/   r   r   r   r1   s    `    r   test_step_direction"TestDerivative.test_step_direction   s}    	
 KK1b!q);@83wC!8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   ry   r   ps     r   r   =TestDerivative.test_vectorized_step_direction_args.<locals>.f   s	    6Mr    c                     XUS-
  -  -  $ NrE   ry   r   s     r   r,   >TestDerivative.test_vectorized_step_direction_args.<locals>.df   s    QU|##r    )rE   rL   rJ   rK   )rU   rE   rE   rU   r   rE   )rE   rU   rE   rL   rJ   )rE   rE   rU   )r   rX   r&   r'   )r`   r)   r   broadcast_tor,   rG   r(   r   )	r   r/   r   r,   r   hdirr   r1   r2   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$   )rU   rE   rL   rE   )r   rD   r   r   rU   .r   r   )r)   rb   r`   logspacer   r-   r,   r   rangerG   r   )
r   r/   r   r   r   h0r1   errir2   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'   rJ   c                 2    [         R                  " U 5      nU$ r   r   )r   r1   s     r   r   /TestDerivative.test_maxiter_callback.<locals>.f  s    ,,q/CJr       V瞯<r   )r   r   rE   rL   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 )NrE   r   )iterr1   hasattrr   r,   dfsaddrg   r   _EINPROGRESSStopIteration)r1   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    rU   )r   r   rg   )r)   rb   r   r   anyre   r   rh   rS   r   r1   setr   keysr   r   
_ECALLBACK)
r   r/   r   r   default_orderr1   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float32rb   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>.f;  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.   )r1   r(   s    r   r   +TestDerivative.test_dtype.<locals>.callback?  sE    55;;%'''66<<5(((99??e+++r    rK   )rD   r   r   r   2   r   )r   pytestskipr<   r)   r   r   r(   r,   r.   finfoepsr   r   r~   )
r   r   r   r(   r/   r   r   r1   r  r   s
      ``     r   
test_dtypeTestDerivative.test_dtype0  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)'NrE   z`f` must be callable.matchz3Abscissae and function output must be real numbers.c                     U $ r   ry   rz   s    r   r{   6TestDerivative.test_input_validation.<locals>.<lambda>W      r    y            ?z6When `preserve_shape=False`, the shape of the array...c                 
    / SQ$ )N)rE   rL   rJ   ry   rz   s    r   r{   r  [  s    r    r   z6Tolerances and step parameters must be non-negative...c                     U $ r   ry   rz   s    r   r{   r  _  r  r    rU   r:   r   c                     U $ r   ry   rz   s    r   r{   r  a  r  r    ekkir   c                     U $ r   ry   rz   s    r   r{   r  c  r  r    r   %`maxiter` must be a positive integer.c                     U $ r   ry   rz   s    r   r{   r  g  r  r          ?r   c                     U $ r   ry   rz   s    r   r{   r  i  r  r    r   z"`order` must be a positive integerc                     U $ r   ry   rz   s    r   r{   r  m  r  r    rO   c                     U $ r   ry   rz   s    r   r{   r  o  r  r    z'`preserve_shape` must be True or False.c                     U $ r   ry   rz   s    r   r{   r  s  r  r    herringr   z`callback` must be callable.c                     U $ r   ry   rz   s    r   r{   r  w  r  r    	shrubbery)r   )r)   r  raises
ValueErrorr   r   object)r   r/   onemessages       r   test_input_validation$TestDerivative.test_input_validationM  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           
      t  ^ S n[        U5      (       dX  [        X!R                  S5      [        SS9S9nUR                  (       d   e[        UR                  UR                  S5      5        [        UR                  UR                  S5      UR                  S9n[        UR                  UR                  UR                  5      5        [        UR                  UR                  S	UR                  S
95        [        UR                  UR                  S5      SS9n[        UR                  UR                  UR                  5      5        [        UR                  UR                  S	UR                  S
95        [        S5       H  mUR                  SU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                  UR                  UR                  U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[        X!R                  S5      UR                  S5      S9n[        UR                  UR                  S5      5        g )Nc                 n    [        U 5      nUR                  U R                  S5      (       d   eU S-  S-
  $ )Nzreal floatingc   rE   )r	   isdtyper(   )r   xp_tests     r   r   ,TestDerivative.test_special_cases.<locals>.f~  s5    %a(G??177O<<<<7Q;r       r9   r   r  gl)~IQrE   r   r   r'   r   r   rF   r  c                    > SU T-  -  $ NrL   ry   )r   rZ   s    r   r   r,    s    Avr    rL   )r   rD   r   rO   c                     X-  S-
  $ r   ry   )r   cs     r   r   r,    s    37Nr    rJ   )rX   g      @)r   r   r)   r   re   r   r,   r~   r   r   rg   rf   r   rb   ri   r.   rS   )r   r/   r   r1   r   r2   rZ   s         @r   test_special_cases!TestDerivative.test_special_casesy  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 "	 JJqM

1>

2/r    c                     U S-
  S-  $ )NrE   rJ   ry   rz   s    r   r{   TestDerivative.<lambda>  s    AEa<r    c                 P    [         R                  " U S:  U S-
  S-  U S-
  S-  5      $ )NrE      rJ   )r^   whererz   s    r   r{   r6    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   r;   r   r:   )r   r^   r   re   r   r,   )r   r6   r;   r1   s       r   test_saddle_gh18811"TestDerivative.test_saddle_gh18811  s@     $zEvvckk""""-r    ry   N)!__name__
__module____qualname____firstlineno__r   r  markparametrizer^   r_   r3   r   r
   _distr_paramsdistcontrB   tuplerr   r   r   r   r   r   r   r   r   r   r  r%  r3  xfailr;  __static_attributes__ry   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40n [[!!$!/[[[[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  rE   rU   r:   r  rJ   z<Tolerances and step parameters must be non-negative scalars.r   r  z#`order` must be a positive integer.rO   r  r  )
jh_func__func__r  r   r!  r   r   r   r   rosen)r   r/   rK  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;ry   N)r=  r>  r?  r@  rO  rG  ry   r    r   rI  rI    s    )r    rI  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      $ NrL   r8  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      //$ rT  )r^   r   r   )rV  r   r   s      r   df1TestJacobian.df1  s=    QAF#bll1a&8"&&)%DEEr    )rL   rL   c                 t    U u  p#UR                  X!R                  U5      -  X!R                  U5      -  /5      $ r   r   r   r   )rV  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   )rV  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   )rV  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   )rV  r^  r_  rf  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    )rJ   rJ   c           	      v    U u  p#nUR                  USU-  SUS-  -  SU-  -
  XAR                  U5      -  /5      $ Nr8  rK   rL   rU  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   r8  r   r  )r^   	ones_liker   r   r   ro  rp  rq  r#  s        r   df4TestJacobian.df4  s    
ll2a#gq3w'S!c'1s7+S!b&"s(+bffRj!c'266":68 	8r    rI   c           	      x    U u  p#nUR                  SU-  SUS-  -  SUR                  X4-  5      -  -
  X4-  /5      $ rm  rU  rn  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//$ ru  )r^   rv  r   rw  s        r   df5TestJacobian.df5   sy    
ll2S!c'1s7+Rb266"'?2BGbffRWo4MNS"!# 	#r    c                 .    [         R                  " U 5      $ r   )r   rM  )r   _s     r   rM  TestJacobian.rosen*  s    HNN1--r    )r8  rE   r(   )r   rb   rV   )ry   )rF   )rL   rJ   rN  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 )	Nrb   r9   ghUM`?   6H2)rV   c                    > T" U T5      $ r   ry   )r   rN  r/   s    r   r{   ,TestJacobian.test_examples.<locals>.<lambda>7  s    a"r    r'   r:   )
r<   r^   r   r   mnr   r)   r2   r   r,   )r   r(   rV   rN  r/   r;   r   mrZ   r   r1   r2   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           	        ^^^^ 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      (       a^  [        [        R
                  " UR                  5      5      S:X  d   e[        [        R
                  " UR                  5      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
5      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   rL   r]  )rV  r   r   r/   s      r   rZ  $TestJacobian.test_attrs.<locals>.df1B  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_0xyF  s"    66#a%=266!9,,r    c                 8   > TR                  SU -  5      US-  -  $ r0  )r   r   s     r   df1_1xy(TestJacobian.test_attrs.<locals>.df1_1xyI  s    66!A#;A%%r    r$   r.  rK   c                    > T" U TS   5      $ r   ry   )r   r  rV  s    r   r{   )TestJacobian.test_attrs.<locals>.<lambda>Q      71ad#3r    r   rE   c                    > T" TS   U 5      $ Nr   ry   )r   r  rV  s    r   r{   r  R      71Q4#3r    rL   c                    > T" U TS   5      $ r   ry   )r   r  rV  s    r   r{   r  S  r  r    c                    > T" TS   U 5      $ r  ry   )r   r  rV  s    r   r{   r  T  r  r    )re   rg   r,   rS   rh   giUMu>gt=r   )r)   r   r   lenr^   uniquerS   rh   r   OptimizeResultr<   squeezer(   r   r   )r   r/   rZ  r1   res00res01res10res11r2   attrref_attrr   r  r  rV  s    `          @@@r   
test_attrsTestJacobian.test_attrs<  sZ   JJT{#	M	-	& sAB/B<<ryy)*a///ryy*+q0003QqV"M3QqV"M3QqV"M3QqV"M%%'>DzzGE$8'%:N#O$+E$8'%:N#O#Q RH

8,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   ]2ZVrJ   gHz>c                   > TR                   U SU S   TS   :  4'   TR                   U SU S   TS   S-   :  4'   TR                   U SU S   TS   :  4'   TR                   U SU S   TS   S-
  T-
  :  4'   [        R                  U T5      $ )Nr   r  rE   r8   )r   rR  r{  )r   br  r/   s    r   r   0TestJacobian.test_step_direction_size.<locals>.fd  s     "Aa1!n')vvAa1!t##$ "Aa1!n*,&&Aa1!s
3&&'??1b))r    )rE   rU   r   )r  r8   r   r;   :0yE>r'   )r   r   r   r:   )r^   r   r   r   r)   rb   rR  r~  r   r,   r   isfinite)r   r/   r   r   dirr   r;   r1   r2   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    ry   N)r=  r>  r?  r@  r   rK  rW  rZ  r  r2   r`  rc  rg  rj  rr  rx  r{  r~  rM  r   	rosen_derr  rA  rB  r  r  r  rG  ry   r    r   rR  rR    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=B(r    rR  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  rG   )ry   )rK   )rL   rK   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  rJ   r'   rU   r   r  r:   )r^   r   r   r)   rb   r   r   rM  r`   r   T
rosen_hessmoveaxisr   ddf)	r   rG   r/   r   r  r   r1   xir2   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  rJ   r'   r   g{Gz?r:   )r^   r   r   r)   r   r   r   rM  r  r   r  r-   min)r   r/   r   r   r1   r2   maskr;   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[        T5      mU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-  -  $ )NrL   rE   rJ   )broadcast_arraysrh   rW   mathprodrG   r   )rV  r   r   rW  r/   r+  s      r   rW  !TestHessian.test_nfev.<locals>.f1  s[    ++Q/DAgg166A:17712;!71MBG66!9qAv%%r    r   r$   r.  c                 $   > T" U S   TS   /5      $ )Nr   rE   ry   )r   rW  rV  s    r   r{   'TestHessian.test_nfev.<locals>.<lambda>      "adAaD\"2r    rE   )r   r   c                 $   > T" TS   U S   /5      $ r  ry   )r   rW  rV  s    r   r{   r    r  r    rL   )rE   rE   )r)   r	   rh   r   )r   r/   r1   r  r  rW  r+  rV  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)r5   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ry   N)r=  r>  r?  r@  r   rK  r  rA  rB  r  r  r  thread_unsafer   r  rG  ry   r    r   r  r  u  sx     G[[W&891 :1&?=2 [[[[!!$)O " Q?Q ?r    r  )&r  r  numpyr^   scipy.conftestr   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipy._lib._array_api_no_0dr   r   r   scipy._lib._array_apir   r   r	   scipyr
   r   r   scipy.differentiater   r   r   "scipy.differentiate._differentiater   rA  usefixtures
pytestmarkarray_api_strict_skip_reasonjax_skip_reasonr   r   rI  rR  r  ry   r    r   <module>r     s[      / 6 6 X X E E * * = = > #FKK$;$;<N$OP
V > 09UVkAe. e. B We.P) )< 09UVkAR(& R( B WR(j 09UVkA@?% @? B W@?r    