
    tKg/L                         d dl Z d dlZd dlmZmZmZ d dlmc m	Z
 d dlmZmZ d dlmZmZmZ  G d d      Z G d d      Zy)	    N)assert_array_lessassert_allcloseassert_equal)statsoptimize)_differentiate	_jacobian_EERRORINCREASEc            	       N   e Zd Zd Zej
                  j                  dd ej                  ddd      g      d        Z	ej
                  j                  de
j                  j                        d	        Zej
                  j                  d
ddg      ej
                  j                  d e       dddg      d               Zd Zd Zd Zd Zd Zd Zd Zd Zej
                  j                  dd      ej
                  j                  ddddgf      ej
                  j                  dej0                  ej2                  ej4                  f      d                      Zd  Zd! Zej
                  j<                  ej
                  j                  dd" dfd# dff      d$               Zy%)&TestDifferentiatec                 H    t        j                         j                  |      S N)r   normcdf)selfxs     k/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/optimize/tests/test_differentiate.pyfzTestDifferentiate.f   s    zz|""    r   333333?皙?
   c                 l   t        | j                  |      }t        j                         j	                  |      }t
        j                  j                  |j                  |       t        t        |j                  |z
        |j                         |j                  j                  |j                  k(  sJ y r   )differentiater   r   r   pdfnptestingr   dfr   abserrorr   shape)r   r   resrefs       r   
test_basiczTestDifferentiate.test_basic   sy     DFFA&jjlq!


""3663/ 	#cffsl+SYY7uu{{cii'''r   casec                     |\  }} t        t        |      | }|j                         dz   }t        |j                  |      }|j                  |      }t        |j                  |d       y )Ng?绽|=atol)getattrr   medianr   r   r   r   r   )r   r&   distnameparamsdistr   r#   r$   s           r   test_accuracyzTestDifferentiate.test_accuracy   s\    &'wuh'0KKMCDHHa(hhqk%0r   order      r"   )         )r6      r8   c                 z	    |r&t        j                  ddd      j                  |      nd}t        j                  |      t         j                   fd       } fdd_        d_        t        |	      } ||      j                         }|D cg c]  }|j                   }}t        |j                  j                         |       t        |j                  j                  |       |D cg c]  }|j                   }	}t        |j                  j                         |	       t        |j                  j                  |       |D cg c]  }|j                   }
}t        |j                  j                         |
d
       t        |j                  j                  |       |D cg c]  }|j                   }}t        |j                  j                         |       t        |j                  j                  |       t        j                   |j                  j"                  t         j$                        sJ |D cg c]  }|j&                   }}t        |j&                  j                         |       t        |j&                  j                  |       t        j                   |j&                  j"                  t         j(                        sJ |D cg c]  }|j*                   }}t        |j*                  j                         |       t        t        j,                  |j*                        j                         t        |j*                  j                  |j                  j                         t        j                   |j*                  j"                  t         j(                        sJ |D cg c]  }|j
                   }}t        |j
                  j                         |       t        t        j,                  |j
                        j
                         t        |j
                  j                  |j                  j                         t        j                   |j
                  j"                  t         j(                        sJ y c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nr   r   r4   r   c                 4    t        j                  |       S )Nr1   )r   r   )r   r1   r   s    r   _differentiate_singlezCTestDifferentiate.test_vectorization.<locals>._differentiate_single,   s     %88r   c                     xj                   dz  c_         xj                  | j                  k(  s| j                  dk  rdn| j                  d   z  c_         j
                  | g|i |S )Nr2   )nitfevalsizendimr"   r   )r   argskwargsr   nr   s      r   r   z/TestDifferentiate.test_vectorization.<locals>.f0   sW    EEQJEGGQVVq[AFFQJqQWWR[HG466!-d-f--r   r>   r   r;   g-q=r)   )r   linspacereshaperA   	vectorizer?   r@   r   ravelr   r   r   r"   r   r!   success
issubdtypedtypebool_statusintegernfevmax)r   r1   r"   r   r<   r#   refsr$   ref_xref_df	ref_errorref_successref_flagref_nfevref_nitr   rE   s   ``             @@r   test_vectorizationz$TestDifferentiate.test_vectorization$   s-   
 <ABKKtR(007cGGAJ		9 
	9	. Aq.$Q'--/"&'$3$'u-SUU[[%($()DS#&&D)/SVV\\5)*./$3SYY$	/		)95ASYY__e,.23dss{{d3S[[&&(+6S[[&&.}}S[[..999*./$3CJJ$/SZZ%%'2SZZ%%u-}}SZZ--rzz:::(,-CHH-SXX^^%x0RVVCHH%qww/SXX^^SUU[[1}}SXX^^RZZ888&*+ds377d+SWW]]_g.RVVCGG_aee,SWW]]CEEKK0}}SWW]]BJJ777A ( * 0 4
 0
 . ,s*   R7RR$3R)
R.!R3?R8c                    t         j                  j                  d      fdd_        t        j                  dt         j
                        f}t        dgdz  dd|	      }t        j                  t        j                  t        t        j                  t        j                  g      }t        |j                  |       y )
N   ;O c                     xj                   dz  c_         d fdd d g}t        | |j                               D cg c]  \  }} ||   |       }}}|S c c}}w )Nr2   c                     | dz
  S )N      @ r   s    r   <lambda>z9TestDifferentiate.test_flags.<locals>.f.<locals>.<lambda>b   s    q3wr   c                 P    t        j                  |       j                         z  S r   )r   exprandomr   rngs    r   rb   z9TestDifferentiate.test_flags.<locals>.f.<locals>.<lambda>c   s    rvvay5r   c                 ,    t        j                  |       S r   )r   rd   ra   s    r   rb   z9TestDifferentiate.test_flags.<locals>.f.<locals>.<lambda>d   s    rvvayr   c                 P    t        j                  | t         j                        d   S )Nr`   )r   	full_likenanra   s    r   rb   z9TestDifferentiate.test_flags.<locals>.f.<locals>.<lambda>e   s    r||Arvv6r:r   )r?   ziprI   )xsjsfuncsr   jr#   r   rg   s         r   r   z'TestDifferentiate.test_flags.<locals>.f`   sa    EEQJE&5(:<E ,/r288:+>?+>41a858A;+>C?J @s    Ar   r7   rL   r2   +=r8   )rtolr1   rC   )r   re   default_rngr?   arangeint64r   arrayeim_ECONVERGEDr
   	_ECONVERR
_EVALUEERRr   rN   )r   rC   r#   	ref_flagsr   rg   s       @@r   
test_flagszTestDifferentiate.test_flags\   s     ii##$45	 		!288,.As1u5EHHcoo-!mm!nn. /	 	SZZ+r   c                 (   t         j                  j                  d      fd}t        |dddd      }t        j                  t
        j                  t        t
        j                  t
        j                  g      }t        |j                  |       y )Nr\   c                     | dz
  t        j                  |       j                         z  t        j                  |       t        j                  | t         j                        d   gS )Nr_   r`   )r   rd   re   rj   rk   rf   s    r   r   z6TestDifferentiate.test_flags_preserve_shape.<locals>.fv   sL    GFF1Icjjl*FF1ILLBFF+B/1 1r   r2   rr   r8   T)rs   r1   preserve_shape)r   re   rt   r   rw   rx   ry   r
   rz   r{   r   rN   )r   r   r#   r|   rg   s       @r   test_flags_preserve_shapez+TestDifferentiate.test_flags_preserve_shapes   sk    ii##$45	1 AquAdKHHcoo-!mm!nn. /	 	SZZ+r   c           	      T   d }d}ddt        j                  d|z        z  ddt        j                  d|z        z  z   dt        j                  d|z        z  |dz
  dz  z  dt        j                  d|z        z  |dz
  z  z   g}t        ||d	      }t	        |j
                  |       y )
Nc                     | t        j                  d| z        | t        j                  d| z        z   t        j                  d| z        | dz
  dz  z  gS )Nr6   r      r2   r8   r   sinra   s    r   r   z0TestDifferentiate.test_preserve_shape.<locals>.f   sF    rvvac{AbffRTlNBFF2a4L!A#4IJJr   r   r2   r6   r   r   r8   Tr   )r   cosr   r   r   r   )r   r   r   r$   r#   s        r   test_preserve_shapez%TestDifferentiate.test_preserve_shape   s    	K !BFF1Q3K-2bffRTl?!2"&&A,!ax'!BFF2a4L.!A#*>>@Aq6$r   c                    t        j                         }d}|j                  }|j                  |      }t	        ddd      }|j                         }d|d<   t        ||fi |}t        t        |j                  |z
        d       d|d<   t        ||fi |}t        t        |j                  |z
        d       t        t        |j                  |z
        t        |j                  |z
               |j                         }d|d<   t        ||fi |}t        t        |j                  |z
        dt        j                  |      z         d|d<   t        ||fi |}t        t        |j                  |z
        dt        j                  |      z         t        t        |j                  |z
        t        |j                  |z
               y )	Nr2   r   r7   )r*   rs   r1   gMbP?r*   gư>rs   )r   r   r   r   dictcopyr   r   r    r   r   )	r   r/   r   r   r$   kwargs0rD   res1res2s	            r   test_convergencez"TestDifferentiate.test_convergence   sr   zz|HHhhqkAAQ/vQ,V,#dggm,d3vQ,V,#dggm,d3#dggm,c$''C-.@AvQ,V,#dggm,dRVVC[.@AvQ,V,#dggm,dRVVC[.@A#dggm,c$''C-.@Ar   c                    t        j                         }d}|j                  }|j                  |      }t	        ||dd      }t	        ||dd      }t        |j                  |z
        t        |j                  |z
        k  sJ t	        ||dd      }t	        ||dd      }t        |j                  |z
        t        |j                  |z
        k  sJ t        ddd	
      }t	        ||fddd|}t	        ||fddd|}t        |j                  |j                  d       t        ddd
      }t	        ||fddd|}t	        ||fdt        j                  d      z  dd|}t        |j                  |j                  d       d|d<   t	        ||fddd|}t	        ||fdt        j                  d      z  dd|}t        |j                  |j                  d       y )Nr2   g      ?)initial_stepmaxiterg?r8   )step_factorr   r   r7   r   )r1   r   step_direction)r   r   g+<rs   r>   r   )r   r   r   r   r   r    r   r   r   r   sqrt)	r   r/   r   r   r$   r   r   rD   r#   s	            r   test_step_parametersz&TestDifferentiate.test_step_parameters   s   zz|HHhhqkQQ?Qa@477S=!C#$6666Qq!<Qr1=477S=!C#$6666 Aq;AqNsNvNAqJqaJ6JU3 Aq;AqJqaJ6JAq -q| -%+-U3#% AqJqaJ6JAq -q| -%+-U3r   c                 4   d }t        j                  ddd      }t        j                  |      }d\  ||dk  <   ||dkD  <   t        |||      }t	        |j
                  t        j                  |             t        j                  |j                        sJ y )	Nc                 h    t        j                  |       }t         j                  || dk  | dkD  z   <   |S )Nr   r8   )r   rd   rk   )r   ys     r   r   z0TestDifferentiate.test_step_direction.<locals>.f   s/    q	A#%66Aq1uQ Hr   r   r8   r   )r2   r>   r   gffffff?)r   )	r   rF   
zeros_liker   r   r   rd   allrJ   )r   r   r   r   r#   s        r   test_step_directionz%TestDifferentiate.test_step_direction   s    	
 KK1b!q);@8q3wC!8Aq@q	*vvckk"""r   c                    d }d }t        j                  g d      j                  ddd      }t        j                  g d      j                  ddd      }t        j                  ddg      j                  ddd      }t        ||||f	      }t        j                   |||      |j
                  j                        }t        |j
                  |       y )
Nc                     | |z  S r   r`   r   ps     r   r   z@TestDifferentiate.test_vectorized_step_direction_args.<locals>.f   s    6Mr   c                     || |dz
  z  z  S Nr2   r`   r   s     r   r   zATestDifferentiate.test_vectorized_step_direction_args.<locals>.df   s    qQU|##r   )r2   r8   r6   r7   r>   r2   r>   r   r2   r8   r6   )r   rC   )r   rw   rG   r   broadcast_tor   r"   r   )r   r   r   r   hdirr   r#   r$   s           r   #test_vectorized_step_direction_argsz5TestDifferentiate.test_vectorized_step_direction_args   s    		$ HH\"**2q!4xx
#++Ar15HHaV$$Q2.AqQDAoobAh5$r   c                   	 d}t        j                         d	fd}d}t        ||	d      }t        j                  |j
                        rJ t        j                  |j                  |dz   	dz
  dz  z   k(        sJ t        j                  |j                  	k(        sJ 	fd	d
_	        d _
        t               _        t        ||d      }|j                         D ]}  }|dk(  rS||   t        j                  k(  sJ j                  |   t        j                   k(  sJ ||   t        j"                  k(  rYJ ||   j                  |   cxk(  r
||   k(  rzJ  J  y )Ng~,?r6   c                 *    j                  |       }|S r   )r   )r   r#   r/   s     r   r   z2TestDifferentiate.test_maxiter_callback.<locals>.f   s    ((1+CJr      V瞯<)r   rs   r2   r8   c                 @   xj                   dz  c_         | _        t        | d      sJ | j                  j                  vsJ j                  j                  | j                         | j                  t        j                  k(  sJ j                   k(  rt        y )Nr2   r   )
iterr#   hasattrr   dfsaddrN   rx   _EINPROGRESSStopIteration)r#   callbackr   s    r   r   z9TestDifferentiate.test_maxiter_callback.<locals>.callback   s    MMQMHL3$$$66---LLSVV$::!1!1111}}'## (r   r>   )r   rs   rN   )r   r   r   r   anyrJ   r   rP   r?   r   r#   setr   keysrx   rz   r   
_ECALLBACK)
r   r   r   default_orderr#   r   keyr   r/   r   s
          @@@r   test_maxiter_callbackz'TestDifferentiate.test_maxiter_callback   sL   zz|	 Aq'>66#++&&&vvchh-!"3w{Ao"EEFFFvvcgg()))	$ uQH5A 88:Ch3x3==000||C(C,<,<<<<CyCNN222CyHLL$5ASAAAAA r   r   r   g?gffffff?rL   c                    t        j                  |      d   }fd}fd}t        ||d||      }|j                  j                  k(  sJ |j
                  j                  k(  sJ |j                  j                  k(  sJ t        j                        j                  }t        |j
                  t        j                  |j                        t        j                  |             y )Nrq   r`   c                 P    | j                   k(  sJ t        j                  |       S r   )rL   r   rd   )r   rL   s    r   r   z'TestDifferentiate.test_dtype.<locals>.f  s#    77e###66!9r   c                     | j                   j                  k(  sJ | j                  j                  k(  sJ | j                  j                  k(  sJ y r   )r   rL   r   r!   )r#   rL   s    r   r   z.TestDifferentiate.test_dtype.<locals>.callback  sE    55;;%'''66<<5(((99??e+++r   r7   )r1   r   r   r   )r   asarrayr   r   rL   r   r!   finfoepsr   rd   r   )r   r   r   rL   r   r   r#   r   s      `    r   
test_dtypezTestDifferentiate.test_dtype  s    
 JJq&r*		,
 Aq$,46uu{{e###vv||u$$$yy%'''hhuo!!suuBGGCLAr   c                    d}t        j                  t        |      5  t        d d       d d d        d}t        j                  t        |      5  t        d d       d d d        d}t        j                  t        |      5  t        d d	d
g       d d d        d}t        j                  t        |      5  t        d dd       d d d        t        j                  t        |      5  t        d dd       d d d        t        j                  t        |      5  t        d dd        d d d        t        j                  t        |      5  t        d dt	                      d d d        d}t        j                  t        |      5  t        d dd       d d d        t        j                  t        |      5  t        d dd       d d d        d}t        j                  t        |      5  t        d dd       d d d        t        j                  t        |      5  t        d dd       d d d        d }t        j                  t        |      5  t        d! dd"#       d d d        d$}t        j                  t        |      5  t        d% dd&'       d d d        y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)(Nz`func` must be callable.matchr2   z3Abscissae and function output must be real numbers.c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>1      Ar   y            ?z6When `preserve_shape=False`, the shape of the array...c                 
    g dS )N)r2   r8   r6   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>5  s    Ir   z6Tolerances and step parameters must be non-negative...c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>9  r   r   r>   r)   c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>;  r   r   ekkir   c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>=  r   r   r   c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>?  r   r   r   %`maxiter` must be a positive integer.c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>C  r   r         ?r   c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>E  r   r   r   z"`order` must be a positive integerc                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>I  r   r   r;   c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>K  r   r   z'`preserve_shape` must be True or False.c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>O  r   r   herringr   z`callback` must be callable.c                     | S r   r`   ra   s    r   rb   z9TestDifferentiate.test_input_validation.<locals>.<lambda>S  r   r   	shrubbery)r   )pytestraises
ValueErrorr   object)r   messages     r   test_input_validationz'TestDifferentiate.test_input_validation(  s@    -]]:W5$" 6 H]]:W5+u- 6 K]]:W5-Bx8 6 K]]:W5+qr2 6]]:W5+qv6 6]]:W5+qt< 6]]:W5+qfh? 6 :]]:W5+q#6 6]]:W5+q!4 6 7]]:W5+q4 6]]:W5+q2 6 <]]:W5+qC 6 1]]:W5+q;? 65M 65 65 65 65555555 6555 6555 65 65s   J,J9K8K+K K-K:LL6L!)L.L:M,J69KKK K*-K7:LLL!L+.L7:MMc           
      P   d }t        |dd      }|j                  sJ t        |j                  d       t	        d      D ]  d}fd}d	z  |d
z
  z  z  }t        ||d
t        d
            }t        |j                  |d       t        |j                  t        j                         t        ||t        d
            }|j                  sJ |j                  d	k(  sJ t        |j                  |d        d }t        |d	d      }t        |j                  d       y )Nc                 r    t        j                  | j                  t         j                        sJ | dz  dz
  S )Nc   r2   )r   rK   rL   floatingra   s    r   r   z/TestDifferentiate.test_special_cases.<locals>.fZ  s,    =="++6667Q;r      r(   r   gl)~IQr3   r   c                     d| z  z  S )Nr8   r`   )r   rE   s    r   r   z/TestDifferentiate.test_special_cases.<locals>.fk  s    Avr   r8   r2   )r   r1   r   r;   c                     || z  dz
  S r   r`   )r   cs     r   r   z/TestDifferentiate.test_special_cases.<locals>.fz  s    Q37Nr   r6   )rC   )r   rJ   r   r   rangerQ   r   r!   r   rk   r?   )r   r   r#   r   r$   rE   s        @r   test_special_casesz$TestDifferentiate.test_special_casesU  s    
	 Aqu-{{{	* qAA A#a!A#h,C1as1ayACCFFCe4BFF+1C1I6C;;;77a<<CFFCe4 "	 Aqq)"r   c                     | dz
  dz  S )Nr2   r6   r`   ra   s    r   rb   zTestDifferentiate.<lambda>  s    AEa<r   c                 N    t        j                  | dkD  | dz
  dz  | dz
  dz        S )Nr2      r6   )r   wherera   s    r   rb   zTestDifferentiate.<lambda>  s%    288AEAEa<!a%A>r   c                     d}t        |g d|d}t        j                  |j                        sJ t	        |j
                  d|       y )NgؗҜ<r   )r   r*   r   r)   )r   r   r   rJ   r   r   )r   r&   r*   r#   s       r   test_saddle_gh18811z%TestDifferentiate.test_saddle_gh18811  s=     T*4Hvvckk"""-r   N) __name__
__module____qualname__r   r   markparametrizer   rF   r%   r   _distr_paramsdistcontr0   tuplerZ   r}   r   r   r   r   r   r   r   float16float32float64r   r   r   xfailr   r`   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48 K .48l,.,"	%B4 4D#%&BP [[VZ0[[S4$"56[[Wrzz2::rzz&JKB L 7 1B*+@Z)#V [[[[V	#	>B& .	 
.r   r   c            
          e Zd Zd Zd Zde_        ee_        d Zd Zde_        ee_        d Z	d Z
de	_        e
e	_        d	 Zd
 Zde_        ee_        d Zd Zde_        ee_        ej                   Zde_        ej"                  e_        ej&                  j)                  dg d      ej&                  j)                  deee	eeeg      d               Zd Zy)TestJacobianc                 R    | \  }}|dz  |z  d|z  t        j                  |      z   gS Nr8   r   r   zr   r   s      r   f1zTestJacobian.f1  s/    1Q
AEBFF1I-..r   c                 |    | \  }}d|z  |z  |dz  gt        j                  |d      t        j                  |      ggS r  )r   rj   r   r  s      r   df1zTestJacobian.df1  s?    1QAF#bll1a&8"&&)%DEEr   )r8   r8   c                 l    | \  }}|t        j                  |      z  |t        j                  |      z  gS r   r   r   r   r  rphis      r   f2zTestJacobian.f2  s.    3BFF3KRVVC[11r   c                     | \  }}t        j                  |      | t        j                  |      z  gt        j                  |      |t        j                  |      z  ggS r   r	  r
  s      r   df2zTestJacobian.df2  sP    3qb266#;./a"&&+o.0 	0r   c                     | \  }}}|t        j                  |      z  t        j                  |      z  |t        j                  |      z  t        j                  |      z  |t        j                  |      z  gS r   )r   r   r   r  r  r  ths       r   f3zTestJacobian.f3  s]    
3BFF3K"&&*,a"&&+or
.JBFF3K! 	!r   c                    | \  }}}t        j                  |      t        j                  |      z  |t        j                  |      z  t        j                  |      z  | t        j                  |      z  t        j                  |      z  gt        j                  |      t        j                  |      z  |t        j                  |      z  t        j                  |      z  |t        j                  |      z  t        j                  |      z  gt        j                  |      | t        j                  |      z  t        j                  |      ggS r   )r   r   r   r   r  s       r   df3zTestJacobian.df3  s    
3rvvbz)1rvvc{?RVVBZ+GbffSk!BFF2J.0rvvbz)1rvvc{?RVVBZ+GRVVC[266":-/qb266#;.a0@A	C 	Cr   )r6   r6   c                 d    | \  }}}|d|z  d|dz  z  d|z  z
  |t        j                  |      z  gS Nr   r7   r8   r   r   x1x2x3s       r   f4zTestJacobian.f4  s=    
BAFAaK!b&0"rvvbz/BBr   c                     | \  }}}t        j                  |      }|d|z  d|z  gd|z  d|z  d|z  gd|z  d|z  d|z  g|t        j                  |      z  d|z  t        j                  |      ggS Nr   r   r   r   )r   	ones_liker   r   r   r  r  r  ones        r   df4zTestJacobian.df4  s    
Bll2a#gq3w'S!c'1s7+S!b&"s(+bffRj!c'266":68 	8r   r5   c                 h    | \  }}}d|z  d|dz  z  dt        j                  ||z        z  z
  ||z  gS r  r   r  s       r   f5zTestJacobian.f5  s@    
BBB!Ga"&&b/&9927CCr   c                     | \  }}}t        j                  |      }d|z  d|z  d|z  gd|z  d|z  t        j                  ||z        z  d|z  t        j                  ||z        z  gd|z  ||ggS r  )r   r  r   r   s        r   df5zTestJacobian.df5  s    
Bll2S!c'1s7+Rb266"r'?2BGbffR"Wo4MNS"b!# 	#r   )r   r2   rA   )r`   )r3   )r8   r6   funcc                    t         j                  j                  d      }|j                  \  }}|j                  |f|z         }t	        ||      j
                  }|j                  |      }t         j                  j                  ||d       y )Nl   6H2)rA   r(   r)   )	r   re   rt   mnjacobianr   r$   r   r   )	r   rA   r'  rg   mrE   r   r#   r$   s	            r   test_exampleszTestJacobian.test_examples  ss     ii##L1ww1JJQD4KJ(tQ""hhqk


""3%"8r   c                    d}t        j                  t        |      5  t        t        j
                  dd       d d d        t	        j                  d      }t        j                  }d}t        j                  t        |      5  t        ||d       d d d        t        j                  t        |      5  t        ||d       d d d        t        j                  t        |      5  t        ||d	       d d d        t        j                  t        |      5  t        ||d
       d d d        d}t        j                  t        |      5  t        ||d       d d d        d}t        j                  t        |      5  t        ||d       d d d        y # 1 sw Y   bxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   y xY w)Nz"Argument `x` must be at least 1-D.r   r2   r>   r)   r6   z<Tolerances and step parameters must be non-negative scalars.r   r   r   z#`order` must be a positive integer.r;   r   r   )	r   r   r   r*  r   r   onesr   rosen)r   r   r   r'  s       r   test_ivzTestJacobian.test_iv  sK   6]]:W5RVVQR( 6
 GGAJ~~P]]:W5T12& 6]]:W5T12& 6]]:W5T12. 6]]:W5T1"- 6 8]]:W5T1B' 6 :]]:W5T1b) 65- 65 65555555 65 65sS   FF(7F5)GGGG%F%(F25F>G
GG"%G.N)r   r   r   r  r  r)  r$   r  r  r  r  r  r"  r$  r&  r   r/  	rosen_derr   r   r   r,  r0  r`   r   r   r   r     s    
/F BEBF20
 BEBF!
C BEBFC8 BEBFD# BEBFNNEEH""EI[[V%78[[Vb"b"b%%@A9 B 99*r   r   )r   numpyr   numpy.testingr   r   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodrx   scipyr   r   scipy.optimize._differentiater   r   r	   r*  r
   r   r   r`   r   r   <module>r9     s?      J J 6 6 !S SA. A.Hq* q*r   