Ë
    âQ(hIo  ã                   ó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    úp/var/www/skyplay_api_hub/venv/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‘$˜‘'˜A˜a™D !™GÑ# aÑ'Ñ(¨1¨Q©4Ñ/Ð/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‰�	Ü�x‰x˜˜1˜Q™4™ ™ 1 Q q¡T¡6Ð*Ó+Ð+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                   ób   — e Zd Zd„ Zd„ Zd„ Zej                  j                  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Æ  € ÜÓˆØˆØˆà�3ˆZˆÜ §¡¨¨B°·±Ø "§¡¨´·±°¼¿¹Ð/@óBˆà�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü §¡¨¨B°	Ø "§¡¨´·±°¼¿¹Ð/@óBˆà�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ8™8 V§X¡XÔ.Ü! &§(¡(¨F¯H©HÔ5à�ˆIˆØ—:‘:˜a“=ˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—:‘:˜a“=ˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü! (¨HÔ5Ü! (¨HÔ5à�#ˆJˆØ—;‘;˜q“>ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü! (¨HÔ5à�#ˆJˆØ—:‘:˜a“=ˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—:‘:˜a“=ˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü! (¨HÔ5Ü! (¨HÔ5à�ˆHˆØ—:‘:˜a“=ˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—:‘:˜a“=ˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ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&   € Ü˜A˜a™D ! A¡$Ô'Ü˜A˜a™D ! 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‰  € ÜÓˆò	(ð
 �3ˆZˆÜ §¡¨¨B°·±Ø "§¡¨´·±°¼¿¹Ð/@óBˆð �V‰V�B‹Z˜Ÿ™ ›Ð$ˆÙ�F×'Ñ'¨Ó+¨RÔ0Ø�{‰{˜aÒÐÐàˆˆ1‰Ø�V‰V�B‹Z˜Ÿ™ ›Ð$ˆÙ�F×'Ñ'¨Ó+¨RÔ0ð �3ˆZˆÜ˜BŸF™F B¨¨IØ "§¡¨´·±°¼¿¹Ð/@óBˆà�w‰w˜!Š|Ðˆ|Ø�V‰V�B‹Z˜Ÿ™ ›Ð$ˆÙ�B—O‘O BÓ'¨Ô,Ø�w‰w˜!Š|Ðˆ|àˆˆ1‰Ø�V‰V�B‹Z˜Ÿ™ ›Ð$ˆÙ�B—O‘O BÓ'¨Õ,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½  € ÜÓˆØˆØˆØˆà�3ˆZˆÜ §¡¨¨B°·±Ø "§¡¨´·±°¼¿¹Ð/@óBˆà�‰	ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü §¡¨¨B°·±Ø )¨4´2·6±6°'¼2¿6¹6Ð1BóDˆä”
˜6Ÿ8™8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	HˆAÜ˜vŸx™x¨¯©Ô2Ü% f§h¡h°·±Ô9Ü% f§h¡h§l¡l°1£o°v·x±x·|±|ÀA³ÕGð	Hð 	�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ—;‘;˜q“>ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—;‘;˜q“>ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	HˆAÜ% h§l¡l°1£o°x·|±|ÀA³ÕGð	Hà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ—;‘;˜q“>ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—;‘;˜q“>ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	HˆAÜ% h§l¡l°1£o°x·|±|ÀA³ÕGð	Hà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ�K‰K˜‹NˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø�K‰K˜‹NˆØ—;‘;˜q“>ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	HˆAÜ% h§l¡l°1£o°x·|±|ÀA³ÕGð	Hà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ�K‰K˜‹NˆØ—;‘;˜q“>ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø�K‰K˜‹NˆØ—;‘;˜q“>ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	HˆAÜ% h§l¡l°1£o°x·|±|ÀA³ÕGð	Hà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÕ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   € Ü—6‘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                 ó6   — | | z  } t        j                  | «      S ri   )r)   re   rg   s    r   Úffz5TestScalarFunction.test_x_storage_overlap.<locals>.ffN  s   € Ø�‰FˆAÜ—6‘6˜!“9Ð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"  s  € ò	.ô �H‰H’\Ó"ˆÜ˜A˜q " i±¸dÄbÇfÁfÀWÌbÏfÉfÐDUÓVˆà˜Ÿ™‰}Ðˆ}Ü�R—V‘V˜A“Y Ô%Ø˜Ÿ™‰}Ðˆ}àˆˆ!‰Ø�V‰V�A‹YˆÜ�R˜Ôàˆˆ!‰Ø�V‰V�A‹YˆÜ�R˜ÔØ˜Ÿ™‰}Ðˆ}ô ‹vˆÜ�H‰H’\Ó"ˆÜ˜A˜q " i°°t¼r¿v¹v¸gÄrÇvÁvÐ=NÓOˆà˜Ÿ™‰}Ðˆ}Ü�R—V‘V˜A“Y Ô%Ø˜Ÿ™‰}Ðˆ}àˆˆ!‰Ø�V‰V�A‹YˆÜ�R˜Ôàˆˆ!‰Ø�V‰V�A‹YˆÜ�R˜ÔØ˜Ÿ™‰}Ðˆ}ò	ô �H‰H’\Ó"ˆÜØ��2�y¡+¨t´r·v±v°g¼r¿v¹vÐ5Fó
ˆð ˜Ÿ™‰}Ðˆ}Ü�R—V‘V˜A“Y Ô%Ü�R—T‘Tœ2Ÿ8™8¢LÓ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_x[  sç   € ä�X‰X’iÓ ˆÜœE 2 r¬9´jØ  $ó(ˆà
�‰ŠyÔØ
�‰ˆrŒ
Ø
�‰Š~ÔØ
�‰’ÔÜ�R—\‘\ 3Ô'Ü�R—\‘\¢?Ô3äœE 2 r¨9´jØ ¤B§F¡F 7¬B¯F©FÐ"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_u  s!   € Ø—7‘7œbŸj™jÒ(Ð(Ð(Ü˜“8ˆOr    r2   r8   )	r)   r*   Úastypery   r   r   r>   r&   rx   )r   rB   rz   rQ   Úress        r   Útest_float_sizez"TestScalarFunction.test_float_sizep  sq   € Ü�X‰X’iÓ ×'Ñ'¬¯
©
Ó3ˆò	ô ˜F B¨¨I´zØ ¤B§F¡F 7¬B¯F©FÐ"3ó5ˆà�f‰f�R‹jˆØ�y‰yœBŸJ™JÒ&Ð&Ñ&r    N)r/   r0   r1   rI   rR   rb   ÚpytestÚmarkÚthread_unsaferp   ru   r}   r2   r    r   r4   r4   &   s?   „ ò[6òz-òBz:ðx ‡[�[×Ññ6ó ð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‰�	Ü�x‰x˜˜A˜a™D !™G a¨¡d¨A¡gÑ-°Ñ1Ñ2°Q°q±TÑ9Ø˜A˜a™D !™G a¨¡d¨A¡gÑ-°Ñ1Ñ2°Q°q¸±t±VÑ;ð=ØDEÇGÁGô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‰�	Ü�x‰x˜!˜A˜a™D™& ™( A a¨¡d¡FÐ+Ø˜Q˜q™T 1™W™* Q™,¨¨!¨A©$©Ð/ð1Ø89¿¹ô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‰�	Ø�‰t�A‰v”b—f‘f˜Q“iÑ ! A¡$¤r§x¡x°"°Q°q±T±'¸1°Ø23°Q°ð19ó (:ñ #:ñ :ð 	:r    N)r/   r0   r1   r   r&   rŠ   r.   r2   r    r   r‚   r‚     s   „ òò
Mò
Aó
:r    r‚   c                   óV   — e Zd Zd„ Zd„ Zej                  j                  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  € Ü Ó"ˆØˆØˆà�3ˆZˆÜ §¡¨¨B¯F©F°B·G±G¸TÀ4Ü"$§&¡& ¬"¯&©&Ð 1°4ó9ˆà�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü §¡¨¨I°r·w±wÀÀdÜ"$§&¡& ¬"¯&©&Ð 1°4ó9ˆà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜6Ÿ8™8 V§X¡XÔ.Ü! &§(¡(¨F¯H©HÔ5à�ˆIˆØ—:‘:˜a“=ˆØ—:‘:˜a“=ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—:‘:˜a“=ˆØ—:‘:˜a“=ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü! (¨HÔ5Ü! (¨H¸aÕ@à�#ˆJˆØ—:‘:˜a“=ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—:‘:˜a“=ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü! (¨HÔ5à�#ˆJˆØ—:‘:˜a“=ˆØ—:‘:˜a“=ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—:‘:˜a“=ˆØ—:‘:˜a“=ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü! (¨HÔ5Ü! (¨HÔ5à�ˆHˆØ—:‘:˜a“=ˆØ—:‘:˜a“=ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—:‘:˜a“=ˆØ—:‘:˜a“=ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ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ý  € Ü Ó"ˆØˆØˆØˆà�3ˆZˆØ�3ˆZˆÜ §¡¨¨B¯F©F°B·G±G¸TÀ4Ü"$§&¡& ¬"¯&©&Ð 1°4ó9ˆà�‰	ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™;¨Ô-Ü §¡¨¨B¯F©F°I¸tÀTÜ"$§&¡& ¬"¯&©&Ð 1°4ó9ˆä”
˜6Ÿ8™8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	HˆAÜ˜vŸx™x¨¯©Ô2Ü% f§h¡h°·±Ô9Ü% f§h¡h§l¡l°1£o°v·x±x·|±|ÀA³ÕGð	Hð 	�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ—;‘;˜q "Ó%ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—;‘;˜q "Ó%ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	1ˆAÜ% h§l¡l°1£o°x·|±|ÀA³Ø./ö1ð	1ð 	�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ�#ˆJˆØ—;‘;˜q !Ó$ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø—;‘;˜q !Ó$ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	HˆAÜ% h§l¡l°1£o°x·|±|ÀA³ÕGð	Hà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ�J‰J�q‹MˆØ—;‘;˜q "Ó%ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø�J‰J�q‹MˆØ—;‘;˜q "Ó%ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	SˆAÜ% h§l¡l°1£o°x·|±|ÀA³ÐPQÖRð	Sà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9à�#ˆJˆØ�#ˆJˆØ�J‰J�q‹MˆØ—;‘;˜q !Ó$ˆØ�‰	ˆØ�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ø�J‰J�q‹MˆØ—;‘;˜q !Ó$ˆÜ”
˜8¤^Ó4Ô5Ø˜�*˜s C˜j¨3°¨*Ð5ò 	SˆAÜ% h§l¡l°1£o°x·|±|ÀA³ÐPQÖRð	Sà�‰	ˆÜ˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÔ9Ü˜2Ÿ7™7 DÔ)Ü˜6Ÿ;™; v§{¡{Ñ2°DÕ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   r~   ÚwarnsÚUserWarning)r   rA   rB   Úvfr.   s        r   rp   z,TestVectorialFunction.test_x_storage_overlapx  s   € ô
 !Ó"ˆÜ�X‰X�s˜C�jÓ!ˆä˜BŸF™F B¨	°2·7±7¸DÀ$Ü Ÿf™f˜W¤b§f¡fÐ-¨tó5ˆð ˜Ÿ™‰~Ðˆ~Ü�R—V‘V˜B“Z §¡¨£Ô,Ø˜Ÿ™‰~Ðˆ~àˆˆ1‰Ü�R—V‘V˜B“Z §¡¨£Ô,Ø˜Ÿ™‰~Ðˆ~àˆˆ1‰Ü�R—V‘V˜B“Z §¡¨£Ô,Ø˜Ÿ™‰~Ðˆ~ô ‹vˆÜ�X‰X�s˜C�jÓ!ˆÜ˜BŸF™F B¨	°4¸¸tÜ Ÿf™f˜W¤b§f¡fÐ-¨tó5ˆô �\‰\œ+Ó&ñ 	"ð ˜RŸT™T‘>Ð!�>Ü˜Ÿ™ › R§V¡V¨B£ZÔ0Ø˜RŸT™T‘>Ð!�>àˆBˆq‰EÜ˜Ÿ™ › R§V¡V¨B£ZÔ0Ø˜RŸT™T‘>Ð!�>àˆBˆq‰EÜ˜Ÿ™ › R§V¡V¨B£ZÔ0Ø˜RŸT™T‘>Ð!‘>÷	"÷ 	"ñ 	"ú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©   € Ü Ó"ˆÜ�X‰X�s˜C�jÓ!×(Ñ(¬¯©Ó4ˆä˜BŸF™F B¨¯©°·±¸¸tÜ Ÿf™f˜W¤b§f¡fÐ-¨tó5ˆð �f‰f�R‹jˆØ�y‰yœBŸJ™JÒ&Ð&Ð&à�f‰f�R‹jˆØ�y‰yœBŸJ™JÒ&Ð&Ñ&r    N)
r/   r0   r1   r•   rb   r~   r   r€   rp   r}   r2   r    r   rŽ   rŽ   –  s4   „ ò^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—  € Ü�h‰hÚÚðó €Gô 
�‰�!‹€BÜ˜'Ó"€HÜ
�‰’Ó€AÜ
�‰�"�a�Ó€AÜ	�‰�2�r�(Ó	€Bä	˜g r¨4Ó	0€BÜ�×"Ñ"Ð"Ô#ä	˜g r¨4Ó	0€BÜˆB×ÑÔä	˜g r¨5Ó	1€BÜ�×"Ñ"Ð"Ô#ä	˜h¨¨DÓ	1€BÜˆB×ÑÔä	˜h¨¨DÓ	1€BÜˆB×ÑÔä	˜h¨¨EÓ	2€BÜ�×"Ñ"Ð"Ô#ä�r—v‘v˜a“y "Ô%Ü�r—v‘v˜a“y "Ô%Ü�r—v‘v˜a“y 'Ô*Ü�r—v‘v˜a“y×(Ñ(Ó*¨H×,<Ñ,<Ó,>Ô?Ü�r—w‘w˜q !“}×,Ñ,Ó.´·±¸Ó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ä�r˜3Ÿ5™5Ô!Ü�q—u‘u˜R“y #§%¡%Ô(ä	�‰’+Ó	€BÜ�q˜#Ÿ'™' "›+Ô&Ü�r˜3Ÿ5™5Ô!Ü�q—u‘u˜R“y #§%¡%Ô(Ü�q—u‘u˜R“y #§'¡'¨"£+Ô.Ü�q—u‘u˜R“y #§%¡%Õ(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ä�r—v‘v˜a“y !Ô$Ü�r—v‘v˜a“y !Ô$ä�r—v‘v˜a“y×(Ñ(Ó*¬B¯F©F°1«IÔ6Ü�r—v‘v˜a“y¤"§&¡&¨£)Ô,ä�r—w‘w˜q !“}×,Ñ,Ó.´·±¸Ó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>  s6   ø€ ¤N°2·6±6¸2¸rÀ2Ç7Á7ØŸG™G T¬R¯V©V¨G´R·V±VÐ+<ó%>€ 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>  s9   ø€ ¤N°2·6±6¸2¸r¿v¹vØŸG™G T¨4´2·6±6°'¼2¿6¹6Ð1BÀDó%J€ r    N)r‚   r	   r½   s   @@r   Ú#test_VectorFunctionNoReferenceCyclerÁ   
  s=   ù€ ô 
Ó	€BØ
ˆsˆ€BÜ	ô Jó 
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¸À2ÀtÓ$L€ r    N)r)   r*   r¦   r
   r	   )r©   rª   rB   s    @@r   Ú)test_LinearVectorFunctionNoReferenceCyclerÄ     sX   ù€ ô �h‰hÚÚðó €Gô 
�‰�!‹€BÜ˜'Ó"€HÜ	ÔLÓ	Mñ Ø÷÷ ñ ús   Á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Ñ      sV  ðÛ Û Û ÷)÷ )õ 3Ý #Ý .÷Nó N÷ 8Ñ 7Ý 8÷ñ ô(V'˜ô V'÷r
:ñ :ô.Y'˜Hô Y'òx!BòH)ò Bð. ‡�×ÑØ"€H×"Ñ"Ó$¨Ñ.Ø4ð ó ñó	ðð ‡�×ÑØ"€H×"Ñ"Ó$¨Ñ.Ø4ð ó ð ‡�×ÑÐKÐÓLñó Mó	ð
ð ‡�×ÑØ"€H×"Ñ"Ó$¨Ñ.Ø4ð ó ñ	ó	ñ	r    