
    tKgo                     z   d dl Z 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 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"e jF                  jI                   ejJ                         dk(  d      d        Z&e jF                  jI                   ejJ                         dk(  d      e jF                  jO                  d      d               Z(e jF                  jI                   ejJ                         dk(  d      d        Z)y)    N)TestCaseassert_array_almost_equalassert_array_equalassert_assert_allcloseassert_equal)assert_deallocated)
csr_matrix)LinearOperator)ScalarFunctionVectorFunctionLinearVectorFunctionIdentityVectorFunction)rosen	rosen_der
rosen_hess)BFGSc                   $    e Zd Zd Zd Zd Zd Zy)ExScalarFunctionc                 .    d| _         d| _        d| _        y Nr   )nfevngevnhevselfs    v/home/alanp/www/video.onchill/myenv/lib/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         ?        r2   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;   r2   r"   r6   3-point)	r   r   r&   r+   r.   r)   r>   fun_and_gradr   )r   rA   rM   rB   rC   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   r6   r7   r2   r"   r8   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   rA   r   r   r   rB   rC   rD   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*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           
         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    )r6   r<   rT   r2   rN   c                     | S Nr2   rg   s    r   <lambda>z;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>+  s    1r    g      ,@r7   r   g      *@r"   c                 6    | | z  } t        j                  |       S ri   )r)   re   rg   s    r   ffz5TestScalarFunction.test_x_storage_overlap.<locals>.ffM  s    FA66!9r    c                     | S ri   r2   rg   s    r   rj   z;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>S  s    Ar    )r)   r*   r   r>   r%   r   r&   r   )r   r?   r%   rQ   f1f2r.   rl   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#   r9   r(   r2   )r"   r"   r"   )g)\(?r"   r6   r7   )r6   r6   r6   r8   )r)   r*   r   r   r   r   r&   r+   r   	_lowest_f	_lowest_xr>   )r   rB   rQ   s      r   test_lowest_xz TestScalarFunction.test_lowest_xZ  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 )Nrr   c                 V    | j                   t        j                  k(  sJ t        |       S ri   )dtyper)   float32r   rg   s    r   rosen_z2TestScalarFunction.test_float_size.<locals>.rosen_t  s!    77bjj(((8Or    r2   r8   )	r)   r*   astypery   r   r   r>   r&   rx   )r   rB   rz   rQ   ress        r   test_float_sizez"TestScalarFunction.test_float_sizeo  sq    XXi ''

3	 FBIz BFF7BFF"35ffRjyyBJJ&&&r    N)	r/   r0   r1   rI   rR   rb   rp   ru   r}   r2   r    r   r4   r4   &   s&    [6z-Bz:x6p4*'r    r4   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(   r9   rx   )r   r)   r*   rx   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#   r9      r   )r   r)   r*   rx   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/   r0   r1   r   r&   r   r.   r2   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   r6   r7   r"   r8   r9   r:   r;   r(   decimalr<   r=   r#   )r   r   r&   r   r.   r)   r>   r   r   r   r?   r   J)r   rA   r   r   rB   rC   rD   r%   rE   J_analitrG   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   r6   r7   r<   r"   r8   rT   rU   rV   r(      r   rW   rX   r=   r;   rY   rZ   )r   r   r&   r   r.   r)   r>   r   r   r   r   r   r[   r\   r   r?   r   r   r]   )r   rA   r   r   r   rB   v0rC   rD   pr%   r_   r`   r^   ra   s                  r   rb   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*5Avxx2%fhh9%fhhll1ovxx||AG 6 			277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J;;q"%	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9;;q"%
8^45*sCj3*5A%hll1ox||A./1 6 		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J#J;;q!$	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9;;q!$
8^45*sCj3*5A%hll1ox||AG 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#JJJqM;;q"%		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9JJqM;;q"%
8^45*sCj3*5A%hll1ox||APQR 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9#J#JJJqM;;q!$		277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9JJqM;;q!$
8^45*sCj3*5A%hll1ox||APQR 6	277D)6;;v{{2D9277D)6;;v{{2D9277D)6;;v{{2D9r    c           
         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)Nr6   r7   rN   r<   r   )r   r)   r*   r   r&   r.   r>   r%   r   r   pytestwarnsUserWarning)r   rA   rB   vfr.   s        r   rp   z,TestVectorialFunction.test_x_storage_overlapw  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 )Nr6   r7   )r   r)   r*   r{   ry   r   r&   r   r.   r>   rx   )r   rA   rB   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/   r0   r1   r   rb   rp   r}   r2   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#   r9   )r"   r   r   r   r"   TFr9   r9   )r)   r*   zerosr
   r   r   sparse_jacobianr   r&   r   toarrayr.   )A_denserB   A_sparser%   r^   Axrn   ro   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   r9   r:   )	r)   r*   r   r   r%   r]   r?   r   r&   )ArB   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 )Nr9   FT)r   r#   r"   )r9   r   r   )r)   r   r   r   r   r*   r   r&   r   r   r-   r.   )rB   rn   ro   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    PyPyz'assert_deallocate not available on PyPy)reasonc                       t                t        j                  d      t         fd      5  	 ddd       y# 1 sw Y   yxY w)Regression test for gh-20768.r9   c            
          t         j                  d j                   j                  d t        j
                   t        j
                  f      S )Nr2   )r   r&   r+   r.   r)   r>   rA   rB   s   r   rj   z5test_ScalarFunctionNoReferenceCycle.<locals>.<lambda>  s4    N2662r277GGTRVVGRVV+<%>r    N)r   r)   r   r	   r   s   @@r   #test_ScalarFunctionNoReferenceCycler     s:     
	B	!B	 > 
?
? 
? 
?s	   <Az/TODO remove reference cycle from VectorFunctionc                  n     t                ddgt         fd      5  	 ddd       y# 1 sw Y   yxY w)r   r6   r7   c            
          t         j                   j                   j                  d d t        j
                   t        j
                  fd       S ri   )r   r&   r   r.   r)   r>   r   s   r   rj   z5test_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   +4c                      t        j                  g dg dg      } t        j                  d      t        |       t	        fd      5  	 ddd       y# 1 sw Y   yxY w)r   r   r   r9   c                      t         d       S ri   )r   )r   rB   s   r   rj   z;test_LinearVectorFunctionNoReferenceCycle.<locals>.<lambda>"  s    $82t$Lr    N)r)   r*   r   r
   r	   )r   r   rB   s    @@r   )test_LinearVectorFunctionNoReferenceCycler     sP     hh G 
!B'"H	L	M 
N	M	Ms   AA!)*r   platformnumpyr)   numpy.testingr   r   r   r   r   r   scipy._lib._gcutilsr	   scipy.sparser
   scipy.sparse.linalgr   (scipy.optimize._differentiable_functionsr   r   r   r   scipy.optimizer   r   r   'scipy.optimize._hessian_update_strategyr   r   r4   r   r   r   r   r   markskipifpython_implementationr   xfailr   r   r2   r    r   <module>r      sV     ) ) 3 # .N N 8 7 8 (U' U'p
: :.X'H X'v!BH) B. "H""$.4  	 "H""$.4   KL M	
 "H""$.4  			r    