
    -ic                     6   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  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$\ RJ                  RM                  \RN                  " 5       S:H  SS9S 5       r(\ RJ                  RM                  \RN                  " 5       S:H  SS9S 5       r)\ RJ                  RM                  \RN                  " 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)
MapWrapper	csr_array)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+   r1   r5   __static_attributes__ r%   r!   r   r      s    
0,r%   r   c                       \ rS rSrS r\R                  R                  S5      S 5       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+   r1   r5   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                    [         R                  " SS/5      n[        5       n[        5       n[        S5       n[	        UR
                  USSUR                  S [         R                  * [         R                  4US9n[	        UR
                  USSUR                  S [         R                  * [         R                  45      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        5       n[        5       n[	        UR
                  USSUR                  S [         R                  * [         R                  4US9n[	        UR
                  USSUR                  S [         R                  * [         R                  45      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        5       n[        5       n[         R                  " SS	/5      n[	        UR
                  USUR                  SS [         R                  * [         R                  4US9n[	        UR
                  USUR                  SS [         R                  * [         R                  45      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        UR                  U5        UR                  U5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        S S S 5        g ! , (       d  f       g = f)
NrG   rF   r(   r<   rC   workers3-point      @      @)r/   r0   r   r
   r   r+   r5   rI   r   r1   r   r   r   r   )r    rM   rL   ex2mapperrO   approx_seriesx1s           r!   test_workersTestScalarFunction.test_workers   s   XXsCj! ]f#BFFBI$&GGTRVVGRVV3D,24F +377BI+.88TRVVGRVV;L-M FKKORWWR[9M..r2BGGBK@M..r2BGGBK@FKKORWWR[9m&8&89++SXX6m&8&89m&8&89++SXX6!#B"$C#BFFBI$&GGTRVVGRVV3D,24F +377BI+.88TRVVGRVV;L,M FKKORWWR[9M..r2BGGBK@M..r2BGGBK@FKKORWWR[9m&8&89++SXX6m&8&89m&8&89++SXX6!#B"$C3*%B#BFFBBGG$-trvvgrvv5F,24F +377BCHH+4dbffWbff<M-M FKKORWWR[9M..r2BGGBK@r"KKOm&8&89++SXX6m&8&89++SXX6m&8&89++SXX6m ]]s   VW
W+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%   rG   rF   r<   r'   rA   rZ   )	r   r   r+   r1   r5   r/   rI   fun_and_gradr   )r    rL   rf   rM   rN   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   rA   rB   r<   r'   rC   rG   r[   r\   rV   r.    @333333?rH   rF   @ffffff@)r   r   r+   r1   r5   r/   rI   r   r   r   r   r   
isinstanceHr   rJ   r   rK   dot)r    rL   r   r   r   rM   rN   rO   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!   rJ   4TestScalarFunction.test_x_storage_overlap.<locals>.ff  s    66"**Q-1,--r%   )rA   rG   r[   r<   rZ   c                     U $ Nr<   r   s    r!   <lambda>;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>j  s    1r%   g      ,@rB   r   g      *@r'   c                 6    X -  n [         R                  " U 5      $ r   )r/   r}   r   s    r!   ff5TestScalarFunction.test_x_storage_overlap.<locals>.ff  s    FA66!9r%   c                     U $ r   r<   r   s    r!   r   r     s    Ar%   )r/   r0   r   rI   r*   r   r+   r   )r    rJ   r*   rj   f1f2r5   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(   rD   r.   r<   )r'   r'   r'   )g)\(?r'   rA   rB   )rA   rA   rA   rC   )r/   r0   r   r   r   r   r+   r1   r   	_lowest_f	_lowest_xrI   )r    rM   rj   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      $ r   )dtyper/   float32r   r   s    r!   rosen_2TestScalarFunction.test_float_size.<locals>.rosen_  s!    77bjj(((8Or%   r<   rC   )	r/   r0   astyper   r   r   rI   r+   r   )r    rM   r   rj   ress        r!   test_float_size"TestScalarFunction.test_float_size  so    XXi ''

3	 FIz BFF7BFF"35ffRjyyBJJ&&&r%   r<   N)r7   r8   r9   r:   rT   pytestmark	fail_slowra   rk   ry   thread_unsafer   r   r   r;   r<   r%   r!   r>   r>   '   sc    [6z [[3:7  :7x-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.   rD   r   )r   r/   r0   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(   rD      r   )r   r/   r0   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/   r4   r0   )r    r*   ru   s      r!   r5   ExVectorialFunction.hess  sa    		Q	tAvbffQi!A$rxx"QqT'123Q19 (: #: : 	:r%   )r   r   r   N)	r7   r8   r9   r:   r"   r+   r   r5   r;   r<   r%   r!   r   r     s    
M
A
:r%   r   c                       \ rS rSrS rS r\R                  R                  S5      S 5       r	S r
S r\R                  R                  S 5       rS	 rS
 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                  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   rA   rB   r'   rC   rD   rE   rF   r.   decimalrG   rH   r(   )r   r   r+   r   r5   r/   rI   r   r   r   rJ   r   J)r    rL   r   r   rM   rN   rO   r*   rP   J_analitrR   J_approxs               r!   test_finite_difference_jac0TestVectorialFunction.test_finite_difference_jac  s    "3ZFFBGGT4"$&&"&& 149		277D)6;;-277D)6;;-  Irww?	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                 (   [         R                  " SS/5      n[        5       n[        UR                  XR
                  UR                  5      nUR                  (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR	                  U5        UR                  U5        UR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg )NrH   r[   r'   )
r/   r0   r   r   r+   r   r5   	f_updatedr   r   )r    rM   rL   vfs       r!   test_updating_on_initial_setup4TestVectorialFunction.test_updating_on_initial_setup7  s     XXsCj! "BFFB8|||ww!||ww!||ww!||ww!||
r

r
ww!||ww!||ww!||ww!||r%   rV   c                    [         R                  " SS/5      n[        5       n[        5       n[         R                  " SS/5      n[        S5       n[	        UR
                  USUR                  S S [         R                  * [         R                  4SUS9	n[	        UR
                  USUR                  S S [         R                  * [         R                  4S5      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  X5      UR                  X5      5        [        UR                  X5      UR                  X5      5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        S	=Ul        =Ul        Ul        S	=Ul        =Ul        Ul        [	        UR
                  US
UR                  S S [         R                  * [         R                  4SUS9	n[	        UR
                  US
UR                  S S [         R                  * [         R                  4S5      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        [        UR                  X5      UR                  X5      5        [        UR                  X5      UR                  X5      5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        S	=Ul        =Ul        Ul        S	=Ul        =Ul        Ul        [	        UR
                  XR                  SS S [         R                  * [         R                  4SUS9	n[	        UR
                  XR                  SS S [         R                  * [         R                  4S5      n[        UR                  U5      UR                  U5      5        [        UR                  U5      UR                  U5      5        UR                  X5      nUR                  X5      n	UR                  X5      n
SS/n[        U
R                  U5      UR                  U5      5        [        U	R                  U5      UR                  U5      5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        S S S 5        g ! , (       d  f       g = f)NrH   r[   rA   rG   r(   rC   FrX   r   rZ      )r/   r0   r   r
   r   r+   r5   rI   r   r   r   r   r   r   rt   )r    rM   rL   r]   ru   r^   rO   r_   rv   H_approx_seriesrw   r*   s               r!   ra   "TestVectorialFunction.test_workersI  sx   XXsCj! "!#HHc3Z ]f#BFFB	$&GGT4266'2669J$)6;F +377B	+.88T4266'266AR+02M FJJrNBFF2J7M--b1266":>M..r5rwwr~FFKK.?m&8&89++SXX6m&8&89m&8&89++SXX6*++BG+bg-..CH.sx#(#BFFB	$&GGT4266'2669J$)6;F +377B	+.88T4266'266AR+02M FJJrNBFF2J7M--b1266":>M..r5rwwr~FFKK.?m&8&89++SXX6m&8&89m&8&89++SXX6
 +,+BG+bg-..CH.sx#(#BFFB$-tTRVVGRVV;L$)6;F +377B+4dDBFF7BFFBS+02M FJJrNBFF2J7M--b1266":>xxH+007O{{2)HCAHLLOX\\!_=O//2HLLODm&8&89++SXX6m&8&89m&8&89{ ]]s   WX66
Y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        [
        R&                  " SS/5      n
[
        R&                  " SS/5      nUR(                  R                  nUR)                  XS S9n[        U[        5      (       d   eUR(                  R                  US-   :X  d   eg )Nr   rA   rB   rG   r'   rC   r[   r\   rV   r.   r   r   rn   ro   rH   rF   rp   rq   g      ?g      ?)J0)r   r   r+   r   r5   r/   rI   r   r   r   r   r   rr   rs   r   rJ   r   r   rt   r0   hess_wrapped)r    rL   r   r   r   rM   v0rN   rO   pr*   rv   rw   ru   rx   njev_beforers   s                    r!   ry   ATestVectorialFunction.test_finite_difference_hess_linear_operator  sE    "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9 HHc3Z HHc3Z ))...!^,,,,""'';?:::r%   c           
         [        5       n[        R                  " SS/5      n[        UR                  USUR
                  S S [        R                  * [        R                  4S 5      nUR	                  [        R                  " SS/5      5      nUR                  SS/5      nUR                  ULd   eUR                  ULd   e[        XCR                  5        [        XSR                  5        [        UR                  X!R                  UR
                  S S [        R                  * [        R                  4S 5      nUR	                  [        R                  " SS/5      5      nUR                  SS/5      nUR                  ULd   eUR                  ULd   e[        XCR                  5        [        XSR                  5        g )NrA   rB   rZ   g?g?)r   r/   r0   r   r+   r5   rI   r   rJ   r   r   )r    rL   rM   r   rJ   r   s         r!   test_fgh_overlap&TestVectorialFunction.test_fgh_overlap  sL    "XXsCj!BFFB	277D$ ffWbff-t5FF288S#J'(FFC:tt1}}tt1}}QQBFFBt ffWbff-t5FF288S#J'(FFC:tt1}}tt1}}QQr%   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)NrA   rB   rZ   rG   r   )r   r/   r0   r   r+   r5   rI   r*   r   r   r   warnsUserWarning)r    rL   rM   r   r5   s        r!   r   ,TestVectorialFunction.test_x_storage_overlap/  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 )NrA   rB   )r   r/   r0   r   r   r   r+   r   r5   rI   r   )r    rL   rM   r   r   s        r!   r   %TestVectorialFunction.test_float_size[  s     "XXsCj!((4BFFBt ffWbff-t5 ffRjyyBJJ&&&ffRjyyBJJ&&&r%   c                    [        5       n[        R                  " SS/5      nS n[        UR                  X!R
                  UR                  S S [        R                  * [        R                  4S S9n[        UR                  X#" UR
                  5      UR                  S S [        R                  * [        R                  4SS9nUR                  US-   5      nUR                  US-   5      n[        Xg5        g )NrA   rB   c                    ^  U 4S jnU$ )Nc                 *   > T" U 5      n[        U5      $ r   r   )r*   f_xfuncs     r!   innerUTestVectorialFunction.test_sparse_analytic_jac.<locals>.sparse_adapter.<locals>.innerl  s    1g ~%r%   r<   )r   r   s   ` r!   sparse_adapterFTestVectorialFunction.test_sparse_analytic_jac.<locals>.sparse_adapterk  s    & Lr%   sparse_jacobianFr'   )	r   r/   r0   r   r+   r   r5   rI   r   )r    rL   rM   r   vf1vf2res1res2s           r!   test_sparse_analytic_jac.TestVectorialFunction.test_sparse_analytic_jach  s     "XXsCj!	 RVVR$ ffWbff-tE RVVR)?$PT ffWbff-uF wwrAvwwrAvT r%   c                    [        5       n[        R                  " SS/5      n[        U5      n[	        UR
                  USUR                  S S [        R                  * [        R                  4S S9n[        [        R                  " X345      5      n[	        UR
                  USUR                  S U[        R                  * [        R                  4SS9nUR                  US-   5      nUR                  US-   5      n[        Xx5        g )NrA   rB   rC   r   Fr'   )r   r/   r0   lenr   r+   r5   rI   r   onesr   r   )	r    rL   rM   Nr   finite_diff_jac_sparsityr   r   r   s	            r!   test_sparse_numerical_jac/TestVectorialFunction.test_sparse_numerical_jac|  s     "XXsCj!G RVVRBGGT4!vvgrvv.F $-RWWaV_#= RVVRBGGT57H-24 wwrAvwwrAvT r%   r<   N)r7   r8   r9   r:   r   r   r   r   r   ra   ry   r   r   r   r   r   r   r;   r<   r%   r!   r   r     sn    _6B$ [[3C:  C:JG;R. [[)" )"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(   rD   )r'   r   r   r   r'   TFrD   rD   )r/   r0   zerosr   r   r   r   r   r+   r   toarrayr5   )A_denserM   A_sparser*   ru   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   rD   rE   )	r/   r0   r   r   r*   rt   rJ   r   r+   )ArM   r+   r`   s       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 )NrD   FT)r   r(   r'   )rD   r   r   )r/   r   r   r   r   r0   r   r+   r   r   r4   r5   )rM   r   r   r   r*   ru   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.rD   c            
         > [        T R                  TST R                  T R                  S [        R
                  * [        R
                  45      $ )Nr<   )r   r+   r1   r5   r/   rI   rL   rM   s   r!   r   5test_ScalarFunctionNoReferenceCycle.<locals>.<lambda>  s4    N2662r277GGTRVVGRVV+<%>r%   N)r   r/   r   r	   r  s   @@r!   #test_ScalarFunctionNoReferenceCycler
    s:     
	B	!B	 > 
?
? 
? 
?s	   >
Ac                  z   ^ ^ [        5       m SS/m[        U U4S j5          SSS5        g! , (       d  f       g= f)r  rA   rB   c            
         > [        T R                  TT R                  T R                  S S [        R
                  * [        R
                  4S 5      $ r   )r   r+   r   r5   r/   rI   r  s   r!   r   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   rD   c                     > [        T TS 5      $ r   )r   )r   rM   s   r!   r   ;test_LinearVectorFunctionNoReferenceCycle.<locals>.<lambda>   s    $82t$Lr%   N)r/   r0   r   r   r	   )r   r   rM   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._lib._utilr
   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
  r  r  r<   r%   r!   <module>r     s5     ) ) 3 ' " .N N 8 7 8 (S' S'l: :.x!H x!v!BH) B. ""$.4  	 ""$.4  	 ""$.4  			r%   