
    ^MhIo                        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 j#        $                     ej%                    dk    d          d             Z&e j#        $                     ej%                    dk    d          e j#        '                    d          d                         Z(e j#        $                     ej%                    dk    d          d             Z)dS )    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dS )ExScalarFunctionc                 0    d| _         d| _        d| _        d S Nr   )nfevngevnhevselfs    r/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_differentiable_functions.py__init__zExScalarFunction.__init__       					    c                 n    | 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   s:    		Q		x1Q41QqT6*+++r    c                 P    | 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      sP          
0 0 0, , ,    r    r   c                   V    e Zd Zd Zd Zd Zej        j        d             Z	d Z
d ZdS )TestScalarFunctionc           
         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}|                    |          }|                    |          }	|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           |                    |          }
|                    |          }|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           t          ||
           t          |	|           d
dg}|                    |          }	|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           |                    |          }|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           t          |	|           dd	g}|                    |          }|                    |          }	|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           |                    |          }
|                    |          }|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           t          ||
           t          |	|           dd	g}|                    |          }|                    |          }	|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           |                    |          }
|                    |          }|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |j	        z   |           t          ||
           t          |	|           d S )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(   sk   3ZB "/@B B		27D)))6;---27D)))6;---B	 "/@B B		27D)))6;v{2D9996;v{2D99968VX...!&(FH555I::a==;;q>>		27D)))6;v{2D9996;v{2D999::a==;;q>>		27D)))6;v{2D9996;v{2D999!(H555!(H555#J;;q>>	27D)))6;v{2D9996;v{2D999;;q>>		27D)))6;v{2D9996;v{2D999!(H555#J::a==;;q>>		27D)))6;v{2D9996;v{2D999::a==;;q>>		27D)))6;v{2D9996;v{2D999!(H555!(H555H::a==;;q>>		27D)))6;v{2D9996;v{2D999::a==;;q>>		27D)))6;v{2D9996;v{2D999!(H555!(H55555r    c           
         t                      }d }ddg}t          |j        |d|j        |j        d t
          j         t
          j        f          }|                    |          |                    |          f} ||                    |          |           |j        dk    sJ d|d<   |                    |          |                    |          f} ||                    |          |           ddg}t          |j        |dd|j        d t
          j         t
          j        f          }|j        dk    sJ |                    |          |                    |          f} ||                    |          |           |j        dk    sJ d|d<   |                    |          |                    |          f} ||                    |          |           d S )Nc                 v    t          | d         |d                    t          | d         |d                    d S )Nr   r"   )r   )r%   ys     r   fg_allclosez9TestScalarFunction.test_fun_and_grad.<locals>.fg_allclose   s8    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 B VVBZZ$F''++R000{a1VVBZZ$F''++R000 3ZBFBI "/@B Bw!||||VVBZZ$BOOB'',,,w!||||1VVBZZ$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 ]v}t          |j        |j                   t!          |j        |j                   t!          |j                            |          |j                            |                     w|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}	|                    |	          }
|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |	          }t          t          |t                               ddgdd	gd
dgfD ]8}t!          |
                    |          |                    |                     9|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           ddg}	|                    |	          }
|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |	          }t          t          |t                               ddgdd	gd
dgfD ]8}t!          |
                    |          |                    |                     9|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           ddg}	|                    |	          }|                    |	          }
|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |	          }|                    |	          }t          t          |t                               ddgdd	gd
dgfD ]8}t!          |
                    |          |                    |                     9|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           ddg}	|                    |	          }|                    |	          }
|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |	          }|                    |	          }t          t          |t                               ddgdd	gd
dgfD ]8}t!          |
                    |          |                    |                     9|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           d S )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 B			27D)))6;---27D)))6;---27D)))6;---B )426'261BD D
68^44555*sCj3*5 	H 	HAvx222%fh999%fhll1oovx||AGGGG		27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#J;;q>>	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999;;q>>
8^44555*sCj3*5 	H 	HA%hll1oox||AGGGG	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#J;;q>>	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999;;q>>
8^44555*sCj3*5 	H 	HA%hll1oox||AGGGG	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#JKKNN;;q>>		27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999KKNN;;q>>
8^44555*sCj3*5 	H 	HA%hll1oox||AGGGG	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#JKKNN;;q>>		27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999KKNN;;q>>
8^44555*sCj3*5 	H 	HA%hll1oox||AGGGG	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D99999r    c           
         d }t          j        g d          }t          ||ddd d t           j         t           j        f          }||j        usJ t          |                    |          d           ||j        usJ d|d<   |                    |          }t          |d	           d
|d<   |                    |          }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          |                    |          d           ||j        usJ d|d<   |                    |          }t          |d	           d
|d<   |                    |          }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          |                    |          d           t          |j        t          j        g d                     ||j        usJ d S )Nc                 T    t          j        t          j        |           dz            S )Nr#   )r)   sumasarrayr%   s    r   r?   z4TestScalarFunction.test_x_storage_overlap.<locals>.f(  s    6"*Q--1,---r    )r6   r<   rT   r2   rN   c                     | S Nr2   rg   s    r   <lambda>z;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>,  s    1 r    g      ,@r7   r   g      *@r"   c                 4    | | z  } t          j        |           S ri   )r)   re   rg   s    r   ffz5TestScalarFunction.test_x_storage_overlap.<locals>.ffN  s    FA6!99r    c                     | S ri   r2   rg   s    r   rj   z;TestScalarFunction.test_x_storage_overlap.<locals>.<lambda>T  s    A r    )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"  si   	. 	. 	. H\\\""Aq"idbfWbfDUVV}}}}RVVAYY%%%}}}}!VVAYYR!VVAYYR}}}} vvH\\\""Aq"itrvgrv=NOO}}}}RVVAYY%%%}}}}!VVAYYR!VVAYYR}}}}	 	 	 H\\\""2y++trvgrv5F
 
 }}}}RVVAYY%%%RT28LLL11222}}}}}}r    c           
         t          j        g d          }t          t          |dt          t
          d d           }|                    g d           |                    |           |                    g d           |                    g d           t          |j	        d           t          |j
        g d           t          t          |ddt
          d t           j         t           j        f          }|                    g d           |                    |           |                    g d           |                    g d           t          |j	        d           t          |j
        g d           d S )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_x[  sT   Xiii  E2r9j $( (
yyy
r



~~~
R\3'''R\???333E2r9j BF7BF"35 5
yyy
r



~~~
R\3'''R\???33333r    c           
      ,   t          j        g d                              t           j                  }d }t	          ||ddt
          d t           j         t           j        f          }|                    |          }|j        t           j        k    sJ d S )Nrr   c                 N    | j         t          j        k    sJ t          |           S ri   )dtyper)   float32r   rg   s    r   rosen_z2TestScalarFunction.test_float_size.<locals>.rosen_u  s"    7bj((((88Or    r2   r8   )	r)   r*   astypery   r   r   r>   r&   rx   )r   rB   rz   rQ   ress        r   test_float_sizez"TestScalarFunction.test_float_sizep  s    Xiii  ''
33	 	 	 FBIz BF7BF"35 5ffRjjyBJ&&&&&&r    N)r/   r0   r1   rI   rR   rb   pytestmarkthread_unsaferp   ru   r}   r2   r    r   r4   r4   &   s        [6 [6 [6z- - -Bz: z: z:x [6 6 6p4 4 4*' ' ' ' 'r    r4   c                   &    e Zd Zd Zd Zd Zd ZdS )ExVectorialFunctionc                 0    d| _         d| _        d| _        d S 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		xAaD!GadAg-12QqT9AaD!GadAg-12QqtV;=DEGM M 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  ss    		Q		x!AaD&(AadF+QqT1W*Q,!A$/189A A 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  sf    		Q		tAvbfQii!A$rx"QqT'123Q19 (: (: #: : 	:r    N)r/   r0   r1   r   r&   r   r.   r2   r    r   r   r     sV          
M M M
A A A
: : : : :r    r   c                   J    e Zd Zd Zd Zej        j        d             Zd Z	dS )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}|                    |          }|                    |          }	|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           |                    |          }
|                    |          }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          ||
           t          |	|d	
           ddg}|                    |          }	|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           |                    |          }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |	|           ddg}|                    |          }|                    |          }	|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           |                    |          }
|                    |          }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          ||
           t          |	|           ddg}|                    |          }|                    |          }	|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           |                    |          }
|                    |          }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          ||
           t          |	|           d S )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BFBGT4"$&"& 149 9		27D)))6;---27D)))6;---Irwd"$&"& 149 9	27D)))6;v{2D99927D)))6;v{2D99968VX...!&(FH555I::a==::a==		27D)))6;v{2D99927D)))6;v{2D999::a==::a==	27D)))6;v{2D99927D)))6;v{2D999!(H555!(Ha@@@@#J::a==	27D)))6;v{2D99927D)))6;v{2D999::a==	27D)))6;v{2D99927D)))6;v{2D999!(H555#J::a==::a==		27D)))6;v{2D99927D)))6;v{2D999::a==::a==	27D)))6;v{2D99927D)))6;v{2D999!(H555!(H555H::a==::a==		27D)))6;v{2D99927D)))6;v{2D999::a==::a==	27D)))6;v{2D99927D)))6;v{2D999!(H555!(H5555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 ]v}	t          |j        |j                   t!          |j        |j                   t!          |j                            |	          |j                            |	                     w|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}
|                    |
|          }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |
|          }t          t          |t                               ddgddgd	dgfD ]:}	t!          |                    |	          |                    |	          d           ;|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}|                    |
|          }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |
|          }t          t          |t                               ddgddgd	dgfD ]8}t!          |                    |          |                    |                     9|d
z  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           ddg}
|                    |
          }|                    |
|          }|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |
          }|                    |
|          }t          t          |t                               ddgddgd	dgfD ]:}t!          |                    |          |                    |          d
           ;|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}|                    |
          }|                    |
|          }|dz  }|dz  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           |                    |
          }|                    |
|          }t          t          |t                               ddgddgd	dgfD ]:}t!          |                    |          |                    |          d
           ;|d
z  }t          |j        |           t          |j        |j        z   |           t          |j	        |           t          |j	        |j	        z   |           t          |j
        |           t          |j
        |j
        z   |           d S )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  sQ	    ""3Z3ZBFBGT4"$&"& 149 9			27D)))6;---27D)))6;---27D)))6;---BFItT"$&"& 149 9
68^44555*sCj3*5 	H 	HAvx222%fh999%fhll1oovx||AGGGG		27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#J;;q"%%	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999;;q"%%
8^44555*sCj3*5 	1 	1A%hll1oox||A./1 1 1 1 1	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#J#J;;q!$$	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999;;q!$$
8^44555*sCj3*5 	H 	HA%hll1oox||AGGGG	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#JJJqMM;;q"%%		27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999JJqMM;;q"%%
8^44555*sCj3*5 	S 	SA%hll1oox||APQRRRRR	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999#J#JJJqMM;;q!$$		27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D999JJqMM;;q!$$
8^44555*sCj3*5 	S 	SA%hll1oox||APQRRRRR	27D)))6;v{2D99927D)))6;v{2D99927D)))6;v{2D9999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        usJ d|d<   t          |                    |          |                    |                     ||j        usJ d|d<   t          |                    |          |                    |                     ||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        usJ d|d<   t          |                    |          |                    |                     ||j        usJ d|d<   t          |                    |          |                    |                     ||j        usJ 	 d d d            d S # 1 swxY w Y   d S )Nr6   r7   rN   r<   r   )r   r)   r*   r   r&   r.   r>   r%   r   r   r~   warnsUserWarning)r   rA   rB   vfr.   s        r   rp   z,TestVectorialFunction.test_x_storage_overlapx  s   
 !""XsCj!!BFB	27D$ fWbf-t5 5 ~~~~RVVBZZ,,,~~~~1RVVBZZ,,,~~~~1RVVBZZ,,,~~~~ vvXsCj!!BFB	4t fWbf-t5 5 \+&& 	" 	" RT>>>>RVVBZZ000RT>>>>BqERVVBZZ000RT>>>>BqERVVBZZ000RT>>>>>	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   #CJ

JJc           
         t                      }t          j        ddg                              t          j                  }t          |j        ||j        |j        d d t          j	         t          j	        fd           }|                    |          }|j
        t          j        k    sJ |                    |          }|j
        t          j        k    sJ d S )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     ""XsCj!!((44BFBt fWbf-t5 5 ffRjjyBJ&&&&ffRjjyBJ&&&&&&r    N)
r/   r0   r1   r   rb   r~   r   r   rp   r}   r2   r    r   r   r     sk        ^6 ^6 ^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          |                    |          |           t          |                    |          |           t          |	                    |          |            t          |	                    |          
                                |
                                           t          |                    ||          
                                t          j        d                     d S )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   h

		  G 
!B'""H
A
"aA	2r(		B	gr4	0	0B""###	gr4	0	0BB	gr5	1	1B""###	hD	1	1BB	hD	1	1BB	hE	2	2B""###rvvayy"%%%rvvayy"%%%rvvayy'***rvvayy((**H,<,<,>,>???rwwq!}},,..0@0@AAAAAr    c                     t          j        g dg dg          } t          j        g d          }t          | |d          }t          ||j                   t          |                     |          |j                   t          j        g d          }t          | |                    |                     t          ||j                   t          |                     |          |j                   t          |                     |          |                    |                     t          |                     |          |j                   d S )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   
***iii())A	***		B
q"e
,
,Cr35!!!quuRyy#%(((	+++		Bq#''"++&&&r35!!!quuRyy#%(((quuRyy#''"++...quuRyy#%(((((r    c                  t   t          j        d          } t          | d           }t          | d          }t          | d          }t          |j                   t          |j                    t          |j                   t          j        g d          }t          j        g d          }t          |                    |          |           t          |                    |          |           t          |                    |          	                                t          j
        d                     t          |                    |          t          j
        d                     t          |                    ||          	                                t          j        d                     d S )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     sT   	!B	D	)	)B	E	*	*B	D	)	)BB""###B
A
Arvvayy!$$$rvvayy!$$$rvvayy((**BF1II666rvvayy"&)),,,rwwq!}},,..0@0@AAAAAr    PyPyz'assert_deallocate not available on PyPy)reasonc                       t                       t          j        d          t           fd          5  	 ddd           dS # 1 swxY w Y   dS )Regression test for gh-20768.r9   c            
      z    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>  s1    N262r27GTRVGRV+<%> %> r    N)r   r)   r   r	   r   s   @@r   #test_ScalarFunctionNoReferenceCycler     s     
		B	!B	 > > > > > 
? 
?                   s   AAAz/TODO remove reference cycle from VectorFunctionc                       t                       ddgt           fd          5  	 ddd           dS # 1 swxY w Y   dS )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>  s5    N262rvGT426'261BD%J %J r    N)r   r	   r   s   @@r   #test_VectorFunctionNoReferenceCycler   
  s     
		B
sB	 J J J J J 
K 
K                   s   7;;c                      t          j        g dg dg          } t          j        d          t          |           t	          fd          5  	 ddd           dS # 1 swxY w Y   dS )r   r   r   r9   c                  &    t           d           S ri   )r   )r   rB   s   r   rj   z;test_LinearVectorFunctionNoReferenceCycle.<locals>.<lambda>$  s    $82t$L$L r    N)r)   r*   r   r
   r	   )r   r   rB   s    @@r   )test_LinearVectorFunctionNoReferenceCycler     s     h

		  G 
!B'""H	LLLLL	M	M                   s   A""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   r   skipifpython_implementationr   xfailr   r   r2   r    r   <module>r      s        ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 3 2 2 2 2 2 # # # # # # . . . . . .N N N N N N N N N N N N 8 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8       (V' V' V' V' V' V' V' V'r
: : : : : : : :.Y' Y' Y' Y' Y'H Y' Y' Y'x!B !B !BH) ) ) B B B. "H"$$.4    	  "H"$$.4    KLL  ML	 
 "H"$$.4   	 		 	 	 	r    