
    S_fi                         d dl Z d dlZd dlmZmZmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZ d dlmZmZmZ d dlmZ  G d d	      Z G d
 de      Z G d d      Z G d de      Zd Zd Zd Zy)    N)TestCaseassert_array_almost_equalassert_array_equalassert_assert_allcloseassert_equal)
csr_matrix)LinearOperator)ScalarFunctionVectorFunctionLinearVectorFunctionIdentityVectorFunction)rosen	rosen_der
rosen_hess)BFGSc                   $    e Zd Zd Zd Zd Zd Zy)ExScalarFunctionc                 .    d| _         d| _        d| _        y Nr   )nfevngevnhevselfs    Rlib/python3.12/site-packages/scipy/optimize/tests/test_differentiable_functions.py__init__zExScalarFunction.__init__       			    c                 f    | xj                   dz  c_         d|d   dz  |d   dz  z   dz
  z  |d   z
  S )N      r   )r   r   xs     r   funzExScalarFunction.fun   s=    		Q	!A$'AaD!G#a'(1Q4//r   c                 x    | xj                   dz  c_         t        j                  d|d   z  dz
  d|d   z  g      S )Nr!      r   )r   nparrayr#   s     r   gradzExScalarFunction.grad   s7    		Q	xx1Q41QqT6*++r   c                 \    | xj                   dz  c_         dt        j                  d      z  S )Nr!   r'   r"   )r   r(   eyer#   s     r   hesszExScalarFunction.hess   s!    		Q	{r   N)__name__
__module____qualname__r   r%   r*   r-    r   r   r   r      s    
0,r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestScalarFunctionc           
      V   t               }d}d}ddg}t        |j                  |d|j                  |j                  d t
        j                   t
        j                  f      }|dz  }|dz  }t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |dd|j                  d t
        j                   t
        j                  f      }|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       t        |j                  |j                         t        |j                  |j                         dd	g}|j                  |      }|j                  |      }	|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       |j                  |      }
|j                  |      }|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       t        ||
       t        |	|       d
dg}|j                  |      }	|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       |j                  |      }|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       t        |	|       dd	g}|j                  |      }|j                  |      }	|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       |j                  |      }
|j                  |      }|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       t        ||
       t        |	|       dd	g}|j                  |      }|j                  |      }	|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       |j                  |      }
|j                  |      }|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                  z   |       t        ||
       t        |	|       y )Nr         ?        r1   r!   2-point   
   333333?       @      @r"   )r   r   r%   r*   r-   r(   infr   r   r   fr   g)r   exr   r   x0analitapproxr$   f_analitg_analitf_approxg_approxs               r   test_finite_difference_gradz.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!(H5!(H5#J;;q>	277D)6;;v{{2D96;;v{{2D9;;q>		277D)6;;v{{2D96;;v{{2D9!(H5#J::a=;;q>		277D)6;;v{{2D96;;v{{2D9::a=;;q>		277D)6;;v{{2D96;;v{{2D9!(H5!(H5H::a=;;q>		277D)6;;v{{2D96;;v{{2D9::a=;;q>		277D)6;;v{{2D96;;v{{2D9!(H5!(H5r   c           
         t               }d }ddg}t        |j                  |d|j                  |j                  d t
        j                   t
        j                  f      }|j                  |      |j                  |      f} ||j                  |      |       |j                  dk(  sJ d|d<   |j                  |      |j                  |      f} ||j                  |      |       ddg}t        |j                  |dd|j                  d t
        j                   t
        j                  f      }|j                  dk(  sJ |j                  |      |j                  |      f} ||j                  |      |       |j                  dk(  sJ d|d<   |j                  |      |j                  |      f} ||j                  |      |       y )Nc                 L    t        | d   |d          t        | d   |d          y )Nr   r!   )r   )r$   ys     r   fg_allclosez9TestScalarFunction.test_fun_and_grad.<locals>.fg_allclose   s&    AaD!A$'AaD!A$'r   r;   r:   r1   r!   r5   3-point)	r   r   r%   r*   r-   r(   r=   fun_and_gradr   )r   r@   rL   rA   rB   fgsfs          r   test_fun_and_gradz$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           
         t               }d}d}d}ddg}t        |j                  |d|j                  |j                  d t
        j                   t
        j                  f      }|dz  }|dz  }|dz  }t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |d|j                  dd t
        j                   t
        j                  f      }t        t        |j                  t                     ddgdd	gd
dgfD ]  }t        |j                  |j                         t!        |j"                  |j"                         t!        |j                  j%                  |      |j                  j%                  |              |dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}	|j	                  |	      }
|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j	                  |	      }t        t        |t                     ddgdd	gd
dgfD ],  }t!        |
j%                  |      |j%                  |             . |dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}	|j	                  |	      }
|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j	                  |	      }t        t        |t                     ddgdd	gd
dgfD ],  }t!        |
j%                  |      |j%                  |             . |dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}	|j                  |	      }|j	                  |	      }
|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |	      }|j	                  |	      }t        t        |t                     ddgdd	gd
dgfD ],  }t!        |
j%                  |      |j%                  |             . |dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}	|j                  |	      }|j	                  |	      }
|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |	      }|j	                  |	      }t        t        |t                     ddgdd	gd
dgfD ],  }t!        |
j%                  |      |j%                  |             . |dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       y )Nr   r5   r6   r1   r!   r7   r;         @      @      @r'    @333333?r<   r:   @ffffff@)r   r   r%   r*   r-   r(   r=   r   r   r   r   r   
isinstanceHr
   r>   r   r?   dot)r   r@   r   r   r   rA   rB   rC   vr$   H_analitH_approx_s                r   +test_finite_difference_hess_linear_operatorz>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*5 	HAvxx2%fhh9%fhhll1ovxx||AG	H 			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*5 	HA%hll1ox||AG	H	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*5 	HA%hll1ox||AG	H	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*5 	HA%hll1ox||AG	H	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*5 	HA%hll1ox||AG	H	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9r   c           
         d }t        j                  g d      }t        ||ddd d t         j                   t         j                  f      }||j                  usJ t        |j                  |      d       ||j                  usJ d|d<   |j                  |      }t        |d	       d
|d<   |j                  |      }t        |d       ||j                  usJ t               }t        j                  g d      }t        ||dd|d t         j                   t         j                  f      }||j                  usJ t        |j                  |      d       ||j                  usJ d|d<   |j                  |      }t        |d	       d
|d<   |j                  |      }t        |d       ||j                  usJ d }t        j                  g d      }t        ||ddd d t         j                   t         j                  f      }||j                  usJ t        |j                  |      d       t        |j                  t        j                  g d             ||j                  usJ y )Nc                 X    t        j                  t        j                  |       dz        S )Nr"   )r(   sumasarrayr$   s    r   r>   z4TestScalarFunction.test_x_storage_overlap.<locals>.f%  s    66"**Q-1,--r   )r5   r;   rS   r1   rM   c                     | S Nr1   rf   s    r   <lambda>z;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>)  s    1 r   g      ,@r6   r   g      *@r!   c                 6    | | z  } t        j                  |       S rh   )r(   rd   rf   s    r   ffz5TestScalarFunction.test_x_storage_overlap.<locals>.ffK  s    FA66!9r   c                     | S rh   r1   rf   s    r   ri   z;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>Q  s    A r   )r(   r)   r   r=   r$   r   r%   r   )r   r>   r$   rP   f1f2r-   rk   s           r   test_x_storage_overlapz)TestScalarFunction.test_x_storage_overlap   s   
	. HH\"Aq"idbffWbffDUV}}RVVAY%}}!VVAYR!VVAYR}} vHH\"Aq"itrvvgrvv=NO}}RVVAY%}}!VVAYR!VVAYR}}	 HH\"2y+trvvgrvv5F
 }}RVVAY%RTT288L12}}r   c           
         t        j                  g d      }t        t        |dt        t
        d d       }|j                  g d       |j                  |       |j                  g d       |j                  g d       t        |j                  d       t        |j                  g d       t        t        |ddt
        d t         j                   t         j                  f      }|j                  g d       |j                  |       |j                  g d       |j                  g d       t        |j                  d       t        |j                  g d       y )Nr"   r8   r'   r1   )r!   r!   r!   )g)\(?r!   r5   r6   )r5   r5   r5   r7   )r(   r)   r   r   r   r   r%   r*   r   	_lowest_f	_lowest_xr=   )r   rA   rP   s      r   test_lowest_xz TestScalarFunction.test_lowest_xX  s    XXi E2r9j $(
y
r

~
R\\3'R\\?3E2r9j BFF7BFF"35
y
r

~
R\\3'R\\?3r   c           
      :   t        j                  g d      j                  t         j                        }d }t	        ||ddt
        d t         j                   t         j                  f      }|j                  |      }|j                  t         j                  k(  sJ y )Nrq   c                 V    | j                   t        j                  k(  sJ t        |       S rh   )dtyper(   float32r   rf   s    r   rosen_z2TestScalarFunction.test_float_size.<locals>.rosen_r  s!    77bjj(((8Or   r1   r7   )	r(   r)   astyperx   r   r   r=   r%   rw   )r   rA   ry   rP   ress        r   test_float_sizez"TestScalarFunction.test_float_sizem  sq    XXi ''

3	 FBIz BFF7BFF"35ffRjyyBJJ&&&r   N)	r.   r/   r0   rH   rQ   ra   ro   rt   r|   r1   r   r   r3   r3   $   s&    [6z-Bz:x6p4*'r   r3   c                   $    e Zd Zd Zd Zd Zd Zy)ExVectorialFunctionc                 .    d| _         d| _        d| _        y r   )r   njevr   r   s    r   r   zExVectorialFunction.__init__~  r   r   c                     | xj                   dz  c_         t        j                  d|d   dz  |d   dz  z   dz
  z  |d   z
  d|d   dz  |d   dz  z   dz
  z  d|d   z  z
  g|j                        S )Nr!   r"   r   r'   r8   rw   )r   r(   r)   rw   r#   s     r   r%   zExVectorialFunction.fun  s    		Q	xxAaD!GadAg-12QqT9AaD!GadAg-12QqtV;=DEGGM 	Mr   c                     | xj                   dz  c_         t        j                  d|d   z  dz
  d|d   z  gd|d   dz  z  dz
  d|d   z  gg|j                        S )	Nr!   r'   r      r"   r8      r   )r   r(   r)   rw   r#   s     r   jaczExVectorialFunction.jac  si    		Q	xx!AaD&(AadF+QqT1W*Q,!A$/189A 	Ar   c                     | xj                   dz  c_         |d   dz  t        j                  d      z  |d   t        j                  d|d   z  dgddgg      z  z   S )Nr!   r   r'   r"      r   )r   r(   r,   r)   )r   r$   r]   s      r   r-   zExVectorialFunction.hess  sa    		Q	tAvbffQi!A$rxx"QqT'123Q19 (: #: : 	:r   N)r.   r/   r0   r   r%   r   r-   r1   r   r   r~   r~   |  s    
M
A
:r   r~   c                   $    e Zd Zd Zd Zd Zd Zy)TestVectorialFunctionc           
         t               }d}d}ddg}t        |j                  ||j                  |j                  d d t
        j                   t
        j                  fd       }|dz  }|dz  }t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |d|j                  d d t
        j                   t
        j                  fd       }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |j                         t        |j                  |j                         ddg}|j                  |      }|j                  |      }	|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |      }
|j                  |      }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        ||
       t        |	|d	
       ddg}|j                  |      }	|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |      }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |	|       ddg}|j                  |      }|j                  |      }	|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |      }
|j                  |      }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        ||
       t        |	|       ddg}|j                  |      }|j                  |      }	|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |      }
|j                  |      }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        ||
       t        |	|       y )Nr   r5   r6   r!   r7   r8   r9   r:   r'   decimalr;   r<   r"   )r~   r   r%   r   r-   r(   r=   r   r   r   r>   r   J)r   r@   r   r   rA   rB   rC   r$   rD   J_analitrF   J_approxs               r   test_finite_difference_jacz0TestVectorialFunction.test_finite_difference_jac  s    "3ZBFFBGGT4"$&&"&& 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!(H5!(Ha@#J::a=	277D)6;;v{{2D9277D)6;;v{{2D9::a=	277D)6;;v{{2D9277D)6;;v{{2D9!(H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!(H5!(H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!(H5!(H5r   c           
         t               }d}d}d}ddg}ddg}t        |j                  ||j                  |j                  d d t
        j                   t
        j                  fd       }|dz  }|dz  }|dz  }t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  |       t        |j                  ||j                  dd d t
        j                   t
        j                  fd       }t        t        |j                  t                     ddgddgd	dgfD ]  }	t        |j                  |j                         t!        |j"                  |j"                         t!        |j                  j%                  |	      |j                  j%                  |	              |dz  }|d
z  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}
|j	                  |
|      }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j	                  |
|      }t        t        |t                     ddgddgd	dgfD ].  }	t!        |j%                  |	      |j%                  |	      d       0 |d
z  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}
ddg}|j	                  |
|      }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j	                  |
|      }t        t        |t                     ddgddgd	dgfD ],  }t!        |j%                  |      |j%                  |             . |d
z  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}
|j                  |
      }|j	                  |
|      }|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |
      }|j	                  |
|      }t        t        |t                     ddgddgd	dgfD ].  }t!        |j%                  |      |j%                  |      d
       0 |d
z  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       ddg}
ddg}|j                  |
      }|j	                  |
|      }|dz  }|dz  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       |j                  |
      }|j	                  |
|      }t        t        |t                     ddgddgd	dgfD ].  }t!        |j%                  |      |j%                  |      d
       0 |d
z  }t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       t        |j                  |       t        |j                  |j                  z   |       y )Nr   r5   r6   r;   r!   r7   rS   rT   rU   r'      r   rV   rW   r<   r:   rX   rY   )r~   r   r%   r   r-   r(   r=   r   r   r   r   r   rZ   r[   r
   r>   r   r   r\   )r   r@   r   r   r   rA   v0rB   rC   pr$   r^   r_   r]   r`   s                  r   ra   zATestVectorialFunction.test_finite_difference_hess_linear_operator  s    "3Z3ZBFFBGGT4"$&&"&& 149			277D)6;;-277D)6;;-277D)6;;-BFFItT"$&&"&& 149
688^45*sCj3*5 	HAvxx2%fhh9%fhhll1ovxx||AG	H 			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*5 	1A%hll1ox||A./1	1 		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*5 	HA%hll1ox||AG	H	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*5 	SA%hll1ox||APQR	S	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*5 	SA%hll1ox||APQR	S	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9r   c           
         t               }t        j                  ddg      }t        |j                  |d|j
                  d d t        j                   t        j                  fd       }||j                  usJ t        |j	                  |      |j	                  |             ||j                  usJ d|d<   t        |j	                  |      |j	                  |             ||j                  usJ d|d<   t        |j	                  |      |j	                  |             ||j                  usJ t               }t        j                  ddg      }t        |j                  |d|d d t        j                   t        j                  fd       }t        j                  t              5  ||j                  usJ t        |j	                  |      |j	                  |             ||j                  usJ d|d<   t        |j	                  |      |j	                  |             ||j                  usJ d|d<   t        |j	                  |      |j	                  |             ||j                  usJ 	 d d d        y # 1 sw Y   y xY w)Nr5   r6   rM   r;   r   )r~   r(   r)   r   r%   r-   r=   r$   r   r   pytestwarnsUserWarning)r   r@   rA   vfr-   s        r   ro   z,TestVectorialFunction.test_x_storage_overlapu  s     !"XXsCj!BFFB	277D$ ffWbff-t5 ~~RVVBZ,~~1RVVBZ,~~1RVVBZ,~~ vXXsCj!BFFB	4t ffWbff-t5 \\+& 	" RTT>!>RVVBZ0RTT>!>BqERVVBZ0RTT>!>BqERVVBZ0RTT>!>	" 	" 	"s   $C	I77J c           
         t               }t        j                  ddg      j                  t        j                        }t        |j                  ||j                  |j                  d d t        j                   t        j                  fd       }|j                  |      }|j                  t        j                  k(  sJ |j                  |      }|j                  t        j                  k(  sJ y )Nr5   r6   )r~   r(   r)   rz   rx   r   r%   r   r-   r=   rw   )r   r@   rA   r   r{   s        r   r|   z%TestVectorialFunction.test_float_size  s     "XXsCj!((4BFFBt ffWbff-t5 ffRjyyBJJ&&&ffRjyyBJJ&&&r   N)r.   r/   r0   r   ra   ro   r|   r1   r   r   r   r     s    ^6@~:@)"V'r   r   c                  ,   t        j                  g dg dg      } t        j                  d      }t        |       }t        j                  g d      }t        j                  ddg      }t        j                  ddg      }t	        | |d       }t        |j                          t	        | |d	      }t        |j                         t	        | |d
      }t        |j                          t	        ||d       }	t        |	j                         t	        ||d	      }
t        |
j                         t	        ||d
      }t        |j                          t        |j                  |      |       t        |j                  |      |       t        |j                  |      |        t        |j                  |      j                         |j                                t        |j                  ||      j                         t        j                  d             y )Nr"   r   r   r'   r"   r8   )r!   r   r   r   r!   TFr8   r8   )r(   r)   zerosr	   r   r   sparse_jacobianr   r%   r   toarrayr-   )A_denserA   A_sparser$   r]   Axrm   rn   f3f4f5f6s               r   test_LinearVectorFunctionr     s   hh G 
!B'"H
A
"aA	2r(	B	gr4	0B"""#	gr4	0BB	gr5	1B"""#	hD	1BB	hD	1BB	hE	2B"""#rvvay"%rvvay"%rvvay'*rvvay((*H,<,<,>?rwwq!},,.0@Ar   c                  p   t        j                  g dg dg      } t        j                  g d      }t        | |d      }t        ||j                         t        | j                  |      |j                         t        j                  g d      }t        | |j                  |             t        ||j                         t        | j                  |      |j                         t        | j                  |      |j                  |             t        | j                  |      |j                         y )Nr   r   )r!   r"   r   F)r   r8   r9   )	r(   r)   r   r   r$   r\   r>   r   r%   )ArA   r%   x1s       r   %test_LinearVectorFunction_memoizationr     s    
*i()A	*	B
q"e
,Cr355!quuRy#%%(	+	Bq#''"+&r355!quuRy#%%(quuRy#''"+.quuRy#%%(r   c                     t        j                  d      } t        | d       }t        | d      }t        | d      }t        |j                         t        |j                          t        |j                         t        j
                  g d      }t        j
                  g d      }t        |j                  |      |       t        |j                  |      |       t        |j                  |      j                         t        j                  d             t        |j                  |      t        j                  d             t        |j                  ||      j                         t        j                  d             y )Nr8   FT)r   r"   r!   )r8   r   r   )r(   r   r   r   r   r)   r   r%   r   r   r,   r-   )rA   rm   rn   r   r$   r]   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   ) r   numpyr(   numpy.testingr   r   r   r   r   r   scipy.sparser	   scipy.sparse.linalgr
   (scipy.optimize._differentiable_functionsr   r   r   r   scipy.optimizer   r   r   'scipy.optimize._hessian_update_strategyr   r   r3   r~   r   r   r   r   r1   r   r   <module>r      sx     ) ) $ .N N 8 7 8 (U' U'p
: :.X'H X'v!BH) Br   