
    (phIo                     b   S SK r S SKrS SKrS SKJrJrJrJrJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJrJrJr  S SKJrJrJr  S SKJr   " S	 S
5      r " S S\5      r " S S5      r " S S\5      rS r S r!S r"\ RF                  RI                  \RJ                  " 5       S:H  SS9S 5       r&\ RF                  RI                  \RJ                  " 5       S:H  SS9\ RF                  RO                  SS9S 5       5       r(\ RF                  RI                  \RJ                  " 5       S:H  SS9S 5       r)g)    N)TestCaseassert_array_almost_equalassert_array_equalassert_assert_allcloseassert_equal)assert_deallocated)
csr_matrix)LinearOperator)ScalarFunctionVectorFunctionLinearVectorFunctionIdentityVectorFunction)rosen	rosen_der
rosen_hess)BFGSc                   ,    \ rS rSrS rS rS rS rSrg)ExScalarFunction   c                 .    SU l         SU l        SU l        g Nr   nfevngevnhevselfs    e/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_differentiable_functions.py__init__ExScalarFunction.__init__       			    c                 f    U =R                   S-  sl         SUS   S-  US   S-  -   S-
  -  US   -
  $ )N      r   )r   r   xs     r   funExScalarFunction.fun   s=    		Q	!A$'AaD!G#a'(1Q4//r#   c                 z    U =R                   S-  sl         [        R                  " SUS   -  S-
  SUS   -  /5      $ )Nr%      r   )r   nparrayr'   s     r   gradExScalarFunction.grad   s7    		Q	xx1Q41QqT6*++r#   c                 ^    U =R                   S-  sl         S[        R                  " S5      -  $ )Nr%   r,   r&   )r   r-   eyer'   s     r   hessExScalarFunction.hess!   s!    		Q	{r#   r   N)	__name__
__module____qualname____firstlineno__r    r)   r/   r3   __static_attributes__ r#   r   r   r      s    
0,r#   r   c                   j    \ rS rSrS rS rS r\R                  R                  S 5       r
S rS rSrg	)
TestScalarFunction&   c           
      H   [        5       nSnSnSS/n[        UR                  USUR                  UR                  S [
        R                  * [
        R                  45      nUS-  nUS-  n[        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  USSUR                  S [
        R                  * [
        R                  45      nUS-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        [        UR                  UR                  5        [        UR                  UR                  5        SS	/nUR                  U5      nUR                  U5      n	US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        UR                  U5      n
UR                  U5      nUS-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        [        X5        [        X5        S
S/nUR                  U5      n	US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        UR                  U5      nUS-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        [        X5        SS	/nUR                  U5      nUR                  U5      n	US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        UR                  U5      n
UR                  U5      nUS-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        [        X5        [        X5        SS	/nUR                  U5      nUR                  U5      n	US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        UR                  U5      n
UR                  U5      nUS-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  -   U5        [        X5        [        X5        g )Nr         ?        r:   r%   2-point   
   333333?       @      @r&   )r   r   r)   r/   r3   r-   infr   r   r   fr   g)r   exr   r   x0analitapproxr(   f_analitg_analitf_approxg_approxs               r   test_finite_difference_grad.TestScalarFunction.test_finite_difference_grad(   s   3ZB "/@B		277D)6;;-277D)6;;-B	 "/@B		277D)6;;v{{2D96;;v{{2D9688VXX.!&((FHH5I::a=;;q>		277D)6;;v{{2D96;;v{{2D9::a=;;q>		277D)6;;v{{2D96;;v{{2D9!(5!(5#J;;q>	277D)6;;v{{2D96;;v{{2D9;;q>		277D)6;;v{{2D96;;v{{2D9!(5#J::a=;;q>		277D)6;;v{{2D96;;v{{2D9::a=;;q>		277D)6;;v{{2D96;;v{{2D9!(5!(5H::a=;;q>		277D)6;;v{{2D96;;v{{2D9::a=;;q>		277D)6;;v{{2D96;;v{{2D9!(5!(5r#   c           
         [        5       nS nSS/n[        UR                  USUR                  UR                  S [
        R                  * [
        R                  45      nUR                  U5      UR                  U5      4nU" UR                  U5      U5        UR                  S:X  d   eSUS'   UR                  U5      UR                  U5      4nU" UR                  U5      U5        SS/n[        UR                  USSUR                  S [
        R                  * [
        R                  45      nUR                  S:X  d   eUR                  U5      UR                  U5      4nU" UR                  U5      U5        UR                  S:X  d   eSUS'   UR                  U5      UR                  U5      4nU" UR                  U5      U5        g )Nc                 L    [        U S   US   5        [        U S   US   5        g )Nr   r%   )r   )r(   ys     r   fg_allclose9TestScalarFunction.test_fun_and_grad.<locals>.fg_allclose   s&    AaD!A$'AaD!A$'r#   rE   rD   r:   r%   r?   3-point)	r   r   r)   r/   r3   r-   rG   fun_and_gradr   )r   rJ   rW   rK   rL   fgsfs          r   test_fun_and_grad$TestScalarFunction.test_fun_and_grad   s   	(
 3ZB "/@B VVBZ$F''+R0{{a1VVBZ$F''+R0 3ZBFFBI "/@Bww!||VVBZ$BOOB',ww!||1VVBZ$BOOB',r#   c           
         [        5       nSnSnSnSS/n[        UR                  USUR                  UR                  S [
        R                  * [
        R                  45      nUS-  nUS-  nUS-  n[        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  USUR                  SS [
        R                  * [
        R                  45      n[        [        UR                  [        5      5        SS/SS	/S
S/4 H  n[        UR                  UR                  5        [!        UR"                  UR"                  5        [!        UR                  R%                  U5      UR                  R%                  U5      5        M     US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n	UR	                  U	5      n
US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR	                  U	5      n[        [        U[        5      5        SS/SS	/S
S/4 H-  n[!        U
R%                  U5      UR%                  U5      5        M/     US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n	UR	                  U	5      n
US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR	                  U	5      n[        [        U[        5      5        SS/SS	/S
S/4 H-  n[!        U
R%                  U5      UR%                  U5      5        M/     US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n	UR                  U	5      nUR	                  U	5      n
US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U	5      nUR	                  U	5      n[        [        U[        5      5        SS/SS	/S
S/4 H-  n[!        U
R%                  U5      UR%                  U5      5        M/     US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n	UR                  U	5      nUR	                  U	5      n
US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U	5      nUR	                  U	5      n[        [        U[        5      5        SS/SS	/S
S/4 H-  n[!        U
R%                  U5      UR%                  U5      5        M/     US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        g )Nr   r?   r@   r:   r%   rA   rE         @      @      @r,    @333333?rF   rD   @ffffff@)r   r   r)   r/   r3   r-   rG   r   r   r   r   r   
isinstanceHr   rH   r   rI   dot)r   rJ   r   r   r   rK   rL   rM   vr(   H_analitH_approx_s                r   +test_finite_difference_hess_linear_operator>TestScalarFunction.test_finite_difference_hess_linear_operator   s   3ZB "/@B			277D)6;;-277D)6;;-277D)6;;-B )4266'2661BD
688^45*sCj3*5Avxx2%fhh9%fhhll1ovxx||AG 6 			277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J;;q>	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9;;q>
8^45*sCj3*5A%hll1ox||AG 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J;;q>	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9;;q>
8^45*sCj3*5A%hll1ox||AG 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#JKKN;;q>		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9KKN;;q>
8^45*sCj3*5A%hll1ox||AG 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#JKKN;;q>		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9KKN;;q>
8^45*sCj3*5A%hll1ox||AG 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9r#   c           
         S n[         R                  " / SQ5      n[        XSSS S [         R                  * [         R                  45      nX#R                  Ld   e[        UR                  U5      S5        X#R                  Ld   eSUS'   UR                  U5      n[        US	5        S
US'   UR                  U5      n[        US5        X#R                  Ld   e[        5       n[         R                  " / SQ5      n[        XSSUS [         R                  * [         R                  45      nX#R                  Ld   e[        UR                  U5      S5        X#R                  Ld   eSUS'   UR                  U5      n[        US	5        S
US'   UR                  U5      n[        US5        X#R                  Ld   eS n[         R                  " / SQ5      n[        XrSSS S [         R                  * [         R                  45      nX#R                  Ld   e[        UR                  U5      S5        [        UR                  [         R                  " / SQ5      5        X#R                  Ld   eg )Nc                 \    [         R                  " [         R                  " U 5      S-  5      $ )Nr&   )r-   sumasarrayr(   s    r   rH   4TestScalarFunction.test_x_storage_overlap.<locals>.f(  s    66"**Q-1,--r#   )r?   rE   r`   r:   rY   c                     U $ Nr:   rt   s    r   <lambda>;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>,  s    1r#   g      ,@r@   r   g      *@r%   c                 6    X -  n [         R                  " U 5      $ rw   )r-   rr   rt   s    r   ff5TestScalarFunction.test_x_storage_overlap.<locals>.ffN  s    FA66!9r#   c                     U $ rw   r:   rt   s    r   rx   ry   T  s    Ar#   )r-   r.   r   rG   r(   r   r)   r   )r   rH   r(   r\   f1f2r3   r{   s           r   test_x_storage_overlap)TestScalarFunction.test_x_storage_overlap"  s   	. HH\"A"idbffWbffDUV}}RVVAY%}}!VVAYR!VVAYR}} vHH\"A"itrvvgrvv=NO}}RVVAY%}}!VVAYR!VVAYR}}	 HH\"2y+trvvgrvv5F
 }}RVVAY%RTT288L12}}r#   c           
         [         R                  " / SQ5      n[        [        US[        [
        S S 5      nUR                  / SQ5        UR                  U5        UR                  / SQ5        UR                  / SQ5        [        UR                  S5        [        UR                  / SQ5        [        [        USS[
        S [         R                  * [         R                  45      nUR                  / SQ5        UR                  U5        UR                  / SQ5        UR                  / SQ5        [        UR                  S5        [        UR                  / SQ5        g )Nr&   rB   r,   r:   )r%   r%   r%   )g)\(?r%   r?   r@   )r?   r?   r?   rA   )r-   r.   r   r   r   r   r)   r/   r   	_lowest_f	_lowest_xrG   )r   rK   r\   s      r   test_lowest_x TestScalarFunction.test_lowest_x[  s    XXi E2r9j $(
y
r

~
R\\3'R\\?3E2r9j BFF7BFF"35
y
r

~
R\\3'R\\?3r#   c           
      <   [         R                  " / SQ5      R                  [         R                  5      nS n[	        X!SS[
        S [         R                  * [         R                  45      nUR                  U5      nUR                  [         R                  :X  d   eg )Nr   c                 X    U R                   [        R                  :X  d   e[        U 5      $ rw   )dtyper-   float32r   rt   s    r   rosen_2TestScalarFunction.test_float_size.<locals>.rosen_u  s!    77bjj(((8Or#   r:   rA   )	r-   r.   astyper   r   r   rG   r)   r   )r   rK   r   r\   ress        r   test_float_size"TestScalarFunction.test_float_sizep  so    XXi ''

3	 FIz BFF7BFF"35ffRjyyBJJ&&&r#   r:   N)r5   r6   r7   r8   rR   r]   rn   pytestmarkthread_unsafer   r   r   r9   r:   r#   r   r<   r<   &   s?    [6z-Bz:x [[6 6p4*'r#   r<   c                   ,    \ rS rSrS rS rS rS rSrg)ExVectorialFunctioni  c                 .    SU l         SU l        SU l        g r   )r   njevr   r   s    r   r    ExVectorialFunction.__init__  r"   r#   c                     U =R                   S-  sl         [        R                  " SUS   S-  US   S-  -   S-
  -  US   -
  SUS   S-  US   S-  -   S-
  -  SUS   -  -
  /UR                  S9$ )Nr%   r&   r   r,   rB   r   )r   r-   r.   r   r'   s     r   r)   ExVectorialFunction.fun  s    		Q	xxAaD!GadAg-12QqT9AaD!GadAg-12QqtV;=DEGGM 	Mr#   c                     U =R                   S-  sl         [        R                  " SUS   -  S-
  SUS   -  /SUS   S-  -  S-
  SUS   -  //UR                  S9$ )	Nr%   r,   r      r&   rB      r   )r   r-   r.   r   r'   s     r   jacExVectorialFunction.jac  si    		Q	xx!AaD&(AadF+QqT1W*Q,!A$/189A 	Ar#   c                     U =R                   S-  sl         US   S-  [        R                  " S5      -  US   [        R                  " SUS   -  S/SS//5      -  -   $ )Nr%   r   r,   r&      r   )r   r-   r2   r.   )r   r(   rj   s      r   r3   ExVectorialFunction.hess  sa    		Q	tAvbffQi!A$rxx"QqT'123Q19 (: #: : 	:r#   )r   r   r   N)	r5   r6   r7   r8   r    r)   r   r3   r9   r:   r#   r   r   r     s    
M
A
:r#   r   c                   ^    \ rS rSrS rS r\R                  R                  S 5       r	S r
Srg)TestVectorialFunctioni  c           
         [        5       nSnSnSS/n[        UR                  XAR                  UR                  S S [
        R                  * [
        R                  4S 5      nUS-  nUS-  n[        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  USUR                  S S [
        R                  * [
        R                  4S 5      nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  UR                  5        [        UR                  UR                  5        SS/nUR                  U5      nUR                  U5      n	US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U5      n
UR                  U5      nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        X5        [        XS	S
9  SS/nUR                  U5      n	US-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U5      nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        X5        SS/nUR                  U5      nUR                  U5      n	US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U5      n
UR                  U5      nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        X5        [        X5        SS/nUR                  U5      nUR                  U5      n	US-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U5      n
UR                  U5      nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        X5        [        X5        g )Nr   r?   r@   r%   rA   rB   rC   rD   r,   decimalrE   rF   r&   )r   r   r)   r   r3   r-   rG   r   r   r   rH   r   J)r   rJ   r   r   rK   rL   rM   r(   rN   J_analitrP   J_approxs               r   test_finite_difference_jac0TestVectorialFunction.test_finite_difference_jac  s    "3ZFFBGGT4"$&&"&& 149		277D)6;;-277D)6;;-Irwwd"$&&"&& 149	277D)6;;v{{2D9277D)6;;v{{2D9688VXX.!&((FHH5I::a=::a=		277D)6;;v{{2D9277D)6;;v{{2D9::a=::a=	277D)6;;v{{2D9277D)6;;v{{2D9!(5!(a@#J::a=	277D)6;;v{{2D9277D)6;;v{{2D9::a=	277D)6;;v{{2D9277D)6;;v{{2D9!(5#J::a=::a=		277D)6;;v{{2D9277D)6;;v{{2D9::a=::a=	277D)6;;v{{2D9277D)6;;v{{2D9!(5!(5H::a=::a=		277D)6;;v{{2D9277D)6;;v{{2D9::a=::a=	277D)6;;v{{2D9277D)6;;v{{2D9!(5!(5r#   c           
         [        5       nSnSnSnSS/nSS/n[        UR                  XQR                  UR                  S S [
        R                  * [
        R                  4S 5      nUS-  nUS-  nUS-  n[        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  U5        [        UR                  XQR                  SS S [
        R                  * [
        R                  4S 5      n[        [        UR                  [        5      5        SS/SS/S	S/4 H  n	[        UR                  UR                  5        [!        UR"                  UR"                  5        [!        UR                  R%                  U	5      UR                  R%                  U	5      5        M     US-  nUS
-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n
UR	                  X5      nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR	                  X5      n[        [        U[        5      5        SS/SS/S	S/4 H,  n	[!        UR%                  U	5      UR%                  U	5      SS9  M.     US
-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n
SS/nUR	                  X5      nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR	                  X5      n[        [        U[        5      5        SS/SS/S	S/4 H-  n[!        UR%                  U5      UR%                  U5      5        M/     US
-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n
UR                  U
5      nUR	                  X5      nUS-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U
5      nUR	                  X5      n[        [        U[        5      5        SS/SS/S	S/4 H,  n[!        UR%                  U5      UR%                  U5      S
S9  M.     US
-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        SS/n
SS/nUR                  U
5      nUR	                  X5      nUS-  nUS-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        UR                  U
5      nUR	                  X5      n[        [        U[        5      5        SS/SS/S	S/4 H,  n[!        UR%                  U5      UR%                  U5      S
S9  M.     US
-  n[        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        [        UR                  U5        [        UR                  UR                  -   U5        g )Nr   r?   r@   rE   r%   rA   r`   ra   rb   r,      r   rc   rd   rF   rD   re   rf   )r   r   r)   r   r3   r-   rG   r   r   r   r   r   rg   rh   r   rH   r   r   ri   )r   rJ   r   r   r   rK   v0rL   rM   pr(   rk   rl   rj   rm   s                  r   rn   ATestVectorialFunction.test_finite_difference_hess_linear_operator  s    "3Z3ZFFBGGT4"$&&"&& 149			277D)6;;-277D)6;;-277D)6;;-FFItT"$&&"&& 149
688^45*sCj3*5Avxx2%fhh9%fhhll1ovxx||AG 6 			277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J;;q%	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9;;q%
8^45*sCj3*5A%hll1ox||A./1 6 		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J#J;;q$	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9;;q$
8^45*sCj3*5A%hll1ox||AG 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#JJJqM;;q%		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9JJqM;;q%
8^45*sCj3*5A%hll1ox||APQR 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J#JJJqM;;q$		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9JJqM;;q$
8^45*sCj3*5A%hll1ox||APQR 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9r#   c           
         [        5       n[        R                  " SS/5      n[        UR                  USUR
                  S S [        R                  * [        R                  4S 5      nX#R                  Ld   e[        UR	                  U5      UR	                  U5      5        X#R                  Ld   eSUS'   [        UR	                  U5      UR	                  U5      5        X#R                  Ld   eSUS'   [        UR	                  U5      UR	                  U5      5        X#R                  Ld   e[        5       n[        R                  " SS/5      n[        UR                  USUS S [        R                  * [        R                  4S 5      n[        R                  " [        5         X#R                  Ld   e[        UR	                  U5      UR	                  U5      5        X#R                  Ld   eSUS'   [        UR	                  U5      UR	                  U5      5        X#R                  Ld   eSUS'   [        UR	                  U5      UR	                  U5      5        X#R                  Ld   e S S S 5        g ! , (       d  f       g = f)Nr?   r@   rY   rE   r   )r   r-   r.   r   r)   r3   rG   r(   r   r   r   warnsUserWarning)r   rJ   rK   vfr3   s        r   r   ,TestVectorialFunction.test_x_storage_overlapx  s   
 !"XXsCj!BFFB	277D$ ffWbff-t5 ~~RVVBZ,~~1RVVBZ,~~1RVVBZ,~~ vXXsCj!BFFB	4t ffWbff-t5 \\+& TT>!>RVVBZ0TT>!>BqERVVBZ0TT>!>BqERVVBZ0TT>!> '&&s   'C	I::
Jc           
         [        5       n[        R                  " SS/5      R                  [        R                  5      n[        UR                  X!R                  UR                  S S [        R                  * [        R                  4S 5      nUR                  U5      nUR                  [        R                  :X  d   eUR                  U5      nUR                  [        R                  :X  d   eg )Nr?   r@   )r   r-   r.   r   r   r   r)   r   r3   rG   r   )r   rJ   rK   r   r   s        r   r   %TestVectorialFunction.test_float_size  s     "XXsCj!((4BFFBt ffWbff-t5 ffRjyyBJJ&&&ffRjyyBJJ&&&r#   r:   N)r5   r6   r7   r8   r   rn   r   r   r   r   r   r9   r:   r#   r   r   r     s4    ^6@~:@ [[)" )"V'r#   r   c                  B   [         R                  " / SQ/ SQ/5      n [         R                  " S5      n[        U 5      n[         R                  " / SQ5      n[         R                  " SS/5      n[         R                  " SS/5      n[	        XS 5      n[        UR                  (       + 5        [	        XS	5      n[        UR                  5        [	        XS
5      n[        UR                  (       + 5        [	        X!S 5      n	[        U	R                  5        [	        X!S	5      n
[        U
R                  5        [	        X!S
5      n[        UR                  (       + 5        [        UR                  U5      U5        [        UR                  U5      U5        [        UR                  U5      U 5        [        UR                  U5      R                  5       UR                  5       5        [        UR                  X45      R                  5       [         R                  " S5      5        g )Nr&   r   r   r,   r&   rB   )r%   r   r   r   r%   TFrB   rB   )r-   r.   zerosr
   r   r   sparse_jacobianr   r)   r   toarrayr3   )A_denserK   A_sparser(   rj   Axr~   r   f3f4f5f6s               r   test_LinearVectorFunctionr     s   hh G 
!B'"H
A
"aA	2r(	B	g4	0B"""#	g4	0BB	g5	1B"""#	hD	1BB	hD	1BB	hE	2B"""#rvvay"%rvvay"%rvvay'*rvvay((*H,<,<,>?rwwq},,.0@Ar#   c                  n   [         R                  " / SQ/ SQ/5      n [         R                  " / SQ5      n[        XS5      n[        XR                  5        [        U R                  U5      UR                  5        [         R                  " / SQ5      n[        XR                  U5      5        [        X2R                  5        [        U R                  U5      UR                  5        [        U R                  U5      UR                  U5      5        [        U R                  U5      UR                  5        g )Nr   r   )r%   r&   r   F)r   rB   rC   )	r-   r.   r   r   r(   ri   rH   r   r)   )ArK   r)   x1s       r   %test_LinearVectorFunction_memoizationr     s    
*i()A	*	B
qe
,Cr55!quuRy#%%(	+	Bq''"+&r55!quuRy#%%(quuRy#''"+.quuRy#%%(r#   c                     [         R                  " S5      n [        U S 5      n[        U S5      n[        U S5      n[        UR                  5        [        UR                  (       + 5        [        UR                  5        [         R
                  " / SQ5      n[         R
                  " / SQ5      n[        UR                  U5      U5        [        UR                  U5      U5        [        UR                  U5      R                  5       [         R                  " S5      5        [        UR                  U5      [         R                  " S5      5        [        UR                  XE5      R                  5       [         R                  " S5      5        g )NrB   FT)r   r&   r%   )rB   r   r   )r-   r   r   r   r   r.   r   r)   r   r   r2   r3   )rK   r~   r   r   r(   rj   s         r   test_IdentityVectorFunctionr     s   	!B	D	)B	E	*B	D	)BB"""#B
A
Arvvay!$rvvay!$rvvay((*BFF1I6rvvay"&&),rwwq},,.0@Ar#   PyPyz'assert_deallocate not available on PyPy)reasonc                     ^ ^ [        5       m [        R                  " S5      m[        U U4S j5          SSS5        g! , (       d  f       g= f)Regression test for gh-20768.rB   c            
         > [        T R                  TST R                  T R                  S [        R
                  * [        R
                  45      $ )Nr:   )r   r)   r/   r3   r-   rG   rJ   rK   s   r   rx   5test_ScalarFunctionNoReferenceCycle.<locals>.<lambda>  s4    N2662r277GGTRVVGRVV+<%>r#   N)r   r-   r   r	   r   s   @@r   #test_ScalarFunctionNoReferenceCycler     s:     
	B	!B	 > 
?
? 
? 
?s	   >
Az/TODO remove reference cycle from VectorFunctionc                  z   ^ ^ [        5       m SS/m[        U U4S j5          SSS5        g! , (       d  f       g= f)r   r?   r@   c            
         > [        T R                  TT R                  T R                  S S [        R
                  * [        R
                  4S 5      $ rw   )r   r)   r   r3   r-   rG   r   s   r   rx   5test_VectorFunctionNoReferenceCycle.<locals>.<lambda>  s7    N2662rvvGGT4266'2661BD%Jr#   N)r   r	   r   s   @@r   #test_VectorFunctionNoReferenceCycler   
  s;     
	B
sB	 J 
K
K 
K 
Ks   ,
:c                     ^^ [         R                  " / SQ/ SQ/5      n [         R                  " S5      m[        U 5      m[	        UU4S j5          SSS5        g! , (       d  f       g= f)r   r   r   rB   c                     > [        T TS 5      $ rw   )r   )r   rK   s   r   rx   ;test_LinearVectorFunctionNoReferenceCycle.<locals>.<lambda>$  s    $82t$Lr#   N)r-   r.   r   r
   r	   )r   r   rK   s    @@r   )test_LinearVectorFunctionNoReferenceCycler     sP     hh G 
!B'"H	L	M 
N	M	Ms   A
A))*r   platformnumpyr-   numpy.testingr   r   r   r   r   r   scipy._lib._gcutilsr	   scipy.sparser
   scipy.sparse.linalgr   (scipy.optimize._differentiable_functionsr   r   r   r   scipy.optimizer   r   r   'scipy.optimize._hessian_update_strategyr   r   r<   r   r   r   r   r   r   skipifpython_implementationr   xfailr   r   r:   r#   r   <module>r      sP     ) ) 3 # .N N 8 7 8 (V' V'r
: :.Y'H Y'x!BH) B. ""$.4  	 ""$.4   KL M	
 ""$.4  			r#   