§
    µ³Ùgg~  ã                   óö   — d dl Z d dlmZ d dlZd dlmZmZmZ d dl	m
Z d dlmZmZmZ d dlmZmZmZmZmZmZ d„ Zd„ Z G d	„ d
¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Zd„ ZdS )é    N)Úproduct)Úassert_allcloseÚassert_equalÚassert_)Úraises)Ú
csr_matrixÚ
csc_matrixÚ
lil_matrix)Ú_adjust_scheme_to_boundsÚapprox_derivativeÚcheck_derivativeÚgroup_columnsÚ_eps_for_methodÚ_compute_absolute_stepc                  óò  — g d¢g d¢g d¢g d¢g d¢g d¢g d¢g} t           j        t          t          t          fD ]‘} || ¦  «        }t          j        d¦  «        }t          j        g d	¢¦  «        }t          ||¦  «        }t          ||¦  «         g d
¢}t          j        g d¢¦  «        }t          ||¦  «        }t          ||¦  «         Œ’t          |¦  «        }t          |¦  «        }t          ||¦  «         d S )N)é   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   é   )r   r   é   r   r   r   )r   r   é   é   é   r   )r   r   r   r   r   r   )	ÚnpÚasarrayr   r	   r
   ÚarangeÚarrayr   r   )Ú	structureÚ	transformÚAÚorderÚgroups_trueÚgroupsÚgroups_1Úgroups_2s           úX/granary/edev/quantum/lib/python3.11/site-packages/scipy/optimize/tests/test__numdiff.pyÚtest_group_columnsr%      s*  € àÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐð€Iõ ”j¥*­j½*ÐEð 
*ð 
*ˆ	ØˆI�iÑ Ô ˆÝ”	˜!‘”ˆÝ”hÐ1Ð1Ð1Ñ2Ô2ˆÝ˜q %Ñ(Ô(ˆÝ�V˜[Ñ)Ô)Ð)à"Ð"Ð"ˆÝ”hÐ1Ð1Ð1Ñ2Ô2ˆÝ˜q %Ñ(Ô(ˆÝ�V˜[Ñ)Ô)Ð)Ð)õ ˜QÑÔ€HÝ˜QÑÔ€HÝ�˜8Ñ$Ô$Ð$Ð$Ð$ó    c                  ó  — t          j        t           j        ¦  «        j        } | dz  | dz  | dz  dœ}dD ]t}t	          t          t           j        t           j        |¦  «        ||         ¦  «         t	          t          t           j        t           j        |¦  «        ||         ¦  «         Œut          j        t           j        ¦  «        j        } | dz  | dz  | dz  dœ}dD ]­}t	          t          t           j        t           j        |¦  «        ||         ¦  «         t	          t          t           j        t           j        |¦  «        ||         ¦  «         t	          t          t           j        t           j        |¦  «        ||         ¦  «         Œ®d S )Nç      à?çUUUUUUÕ?©ú2-pointz3-pointÚcs)r   ÚfinfoÚfloat64Úepsr   r   Ú
complex128Úfloat32)ÚEPSÚrelative_stepÚmethods      r$   Útest_correct_fp_epsr5   +   s‹  € å
Œ(•2”:Ñ
Ô
Ô
"€CØ # S¡Ø" S™zØ ™8ð%ð %€Mð /ð 
ð 
ˆÝÝ�BœJ­¬
°FÑ;Ô;Ø˜&Ô!ñ	#ô 	#ð 	#õ 	Ý�BœM­2¬=¸&ÑAÔAØ˜&Ô!ñ	
ô 	
ð 	
ð 	
õ Œ(•2”:Ñ
Ô
Ô
"€CØ # S¡Ø" S™zØ ™8ð%ð %€Mð /ð 
ð 
ˆÝÝ�BœJ­¬
°FÑ;Ô;Ø˜&Ô!ñ	
ô 	
ð 	
õ 	Ý�BœJ­¬
°FÑ;Ô;Ø˜&Ô!ñ	
ô 	
ð 	
õ 	Ý�BœJ­¬
°FÑ;Ô;Ø˜&Ô!ñ	
ô 	
ð 	
ð 	
ð
ð 
r&   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestAdjustSchemeToBoundsc                 ój  — t          j        d¦  «        }t          j        dd¦  «        }t          j        |¦  «        }t          j        |¦  «        }|                     t           j         ¦  «         |                     t           j        ¦  «         t          ||dd||¦  «        \  }}t          ||¦  «         t          t          j	        |¦  «        ¦  «         t          ||dd||¦  «        \  }}t          ||¦  «         t          t          j	        |¦  «        ¦  «         t          ||dd||¦  «        \  }}t          ||¦  «         t          t          j	        | ¦  «        ¦  «         t          ||dd||¦  «        \  }}t          ||¦  «         t          t          j	        | ¦  «        ¦  «         d S )Nr   ç{®Gáz„?r   ú1-sidedr   ú2-sided)
r   ÚzerosÚfullÚ
empty_likeÚfillÚinfr   r   r   Úall)ÚselfÚx0ÚhÚ	inf_lowerÚ	inf_upperÚ
h_adjustedÚ	one_sideds          r$   Útest_no_boundsz'TestAdjustSchemeToBounds.test_no_boundsP   s–  € ÝŒX�a‰[Œ[ˆÝŒG�A�tÑÔˆÝ”M "Ñ%Ô%ˆ	Ý”M "Ñ%Ô%ˆ	Ø�Š�œ�wÑÔÐØ�Š•r”vÑÔÐå 8Ø��1�i ¨Iñ!7ô !7Ñˆ
�Iå˜
 AÑ&Ô&Ð&Ý•”�yÑ!Ô!Ñ"Ô"Ð"å 8Ø��1�i ¨Iñ!7ô !7Ñˆ
�Iå˜
 AÑ&Ô&Ð&Ý•”�yÑ!Ô!Ñ"Ô"Ð"å 8Ø��1�i ¨Iñ!7ô !7Ñˆ
�Iå˜
 AÑ&Ô&Ð&Ý•”˜	�zÑ"Ô"Ñ#Ô#Ð#å 8Ø��1�i ¨Iñ!7ô !7Ñˆ
�Iå˜
 AÑ&Ô&Ð&Ý•”˜	�zÑ"Ô"Ñ#Ô#Ð#Ð#Ð#r&   c                 óú  — t          j        g d¢¦  «        }t          j        d¦  «         }t          j        d¦  «        }t          j        g d¢¦  «        dz  }t          ||dd||¦  «        \  }}t	          ||¦  «         t          ||dd||¦  «        \  }}t	          |t          j        g d¢¦  «        dz  ¦  «         t          ||dd	||¦  «        \  }}t	          |t          j        |¦  «        ¦  «         t          t          j        | ¦  «        ¦  «         t          ||dd	||¦  «        \  }}t	          |t          j        g d¢¦  «        dz  ¦  «         t          |t          j        g d
¢¦  «        ¦  «         d S )N)ç        g333333ë?g333333ë¿r   )r   r   éÿÿÿÿçš™™™™™¹?r   r:   r   )r   rL   r   r;   )FTT)	r   r   Úonesr   r   Úabsr   rA   r   )rB   rC   ÚlbÚubrD   rG   Ú_rH   s           r$   Útest_with_boundz(TestAdjustSchemeToBounds.test_with_boundl   ss  € ÝŒXÐ(Ð(Ð(Ñ)Ô)ˆÝŒg�a‰jŒjˆ[ˆÝŒW�Q‰ZŒZˆÝŒH�Z�Z�ZÑ Ô  4Ñ'ˆå0°°Q¸¸9ÀbÈ"ÑMÔM‰ˆ
�AÝ˜
 AÑ&Ô&Ð&å0°°Q¸¸9ÀbÈ"ÑMÔM‰ˆ
�AÝ˜
¥B¤H¨Z¨Z¨ZÑ$8Ô$8¸4Ñ$?Ñ@Ô@Ð@å 8Ø��1�i  Rñ!)ô !)Ñˆ
�Iå˜
¥B¤F¨1¡I¤IÑ.Ô.Ð.Ý•”˜	�zÑ"Ô"Ñ#Ô#Ð#å 8Ø��1�i  Rñ!)ô !)Ñˆ
�Iå˜
¥B¤H¨Z¨Z¨ZÑ$8Ô$8¸4Ñ$?Ñ@Ô@Ð@Ý�Y¥¤Ð)<Ð)<Ð)<Ñ =Ô =Ñ>Ô>Ð>Ð>Ð>r&   c                 ó  — t          j        ddg¦  «        }t          j        ddg¦  «        }t          j        ddg¦  «        }t          j        ddg¦  «        }t          ||dd||¦  «        \  }}t          |t          j        ddg¦  «        ¦  «         t          ||d	d||¦  «        \  }}t          |t          j        d
dg¦  «        ¦  «         t          ||dd||¦  «        \  }}t          |t          j        ddg¦  «        ¦  «         t	          |t          j        ddg¦  «        ¦  «         t          ||d	d||¦  «        \  }}t          |t          j        ddg¦  «        ¦  «         t	          |t          j        ddg¦  «        ¦  «         d S )Ng¸…ëQ¸ž¿gš™™™™™©?rK   g¸…ëQ¸ž?çš™™™™™¹¿r   r:   g¸…ëQ¸®¿r   gš™™™™™™?r;   FTg¸…ëQ¸Ž?g¸…ëQ¸Ž¿)r   r   r   r   r   )rB   rP   rQ   rC   rD   rG   rR   rH   s           r$   Útest_tight_boundsz*TestAdjustSchemeToBounds.test_tight_bounds‚   s€  € ÝŒX�u˜e�nÑ%Ô%ˆÝŒX�t˜T�lÑ#Ô#ˆÝŒX�s˜D�kÑ"Ô"ˆÝŒH�d˜D�\Ñ"Ô"ˆå0°°Q¸¸9ÀbÈ"ÑMÔM‰ˆ
�AÝ˜
¥B¤H¨d°E¨]Ñ$;Ô$;Ñ<Ô<Ð<å0°°Q¸¸9ÀbÈ"ÑMÔM‰ˆ
�AÝ˜
¥B¤H¨e°U¨^Ñ$<Ô$<Ñ=Ô=Ð=å 8Ø��1�i  Rñ!)ô !)Ñˆ
�Iå˜
¥B¤H¨d°E¨]Ñ$;Ô$;Ñ<Ô<Ð<Ý�Y¥¤¨%°¨Ñ 7Ô 7Ñ8Ô8Ð8å 8Ø��1�i  Rñ!)ô !)Ñˆ
�Iå˜
¥B¤H¨e°V¨_Ñ$=Ô$=Ñ>Ô>Ð>Ý�Y¥¤¨%°¨Ñ 7Ô 7Ñ8Ô8Ð8Ð8Ð8r&   N)Ú__name__Ú
__module__Ú__qualname__rI   rS   rV   © r&   r$   r7   r7   O   sA   € € € € € ð$ð $ð $ð8?ð ?ð ?ð,9ð 9ð 9ð 9ð 9r&   r7   c                   óä   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd'd„Zd(d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z#d$„ Z$d%„ Z%d&S ))ÚTestApproxDerivativesDensec                 ó*   — t          j        |¦  «        S ©N©r   Úsinh©rB   Úxs     r$   Úfun_scalar_scalarz,TestApproxDerivativesDense.fun_scalar_scalarš   ó   € ÝŒw�q‰zŒzÐr&   c                 ó*   — t          j        |¦  «        S r^   ©r   Úcoshra   s     r$   Újac_scalar_scalarz,TestApproxDerivativesDense.jac_scalar_scalar�   rd   r&   c                 ó¢   — t          j        |d         dz  t          j        |d         ¦  «        t          j        |d         ¦  «        g¦  «        S ©Nr   r   ©r   r   ÚtanÚexpra   s     r$   Úfun_scalar_vectorz,TestApproxDerivativesDense.fun_scalar_vector    ó9   € ÝŒx˜˜1œ˜q™¥"¤&¨¨1¬¡,¤,µ´°q¸´t±´Ð=Ñ>Ô>Ð>r&   c                 óÐ   — t          j        d|d         z  t          j        |d         ¦  «        dz  t          j        |d         ¦  «        g¦  «                             dd¦  «        S ©Nr   r   éþÿÿÿrL   r   ©r   r   Úcosrm   Úreshapera   s     r$   Újac_scalar_vectorz,TestApproxDerivativesDense.jac_scalar_vector£   óS   € ÝŒxØ��1”‰X•r”v˜a œd‘|”| rÑ)­2¬6°!°A´$©<¬<Ð8ñ:ô :ß:Aº'À"Àa¹.¼.ð	Ir&   c                 ó~   — t          j        |d         |d         z  ¦  «        t          j        |d         ¦  «        z  S ©Nr   r   ©r   ÚsinÚlogra   s     r$   Úfun_vector_scalarz,TestApproxDerivativesDense.fun_vector_scalar§   ó/   € ÝŒv�a˜”d˜Q˜qœT‘kÑ"Ô"¥R¤V¨A¨a¬D¡\¤\Ñ1Ð1r&   c                 ó~   — t          j        |dz  t          j        |¦  «        t          j        |¦  «        g¦  «        S ©Nr   rk   ra   s     r$   Úwrong_dimensions_funz/TestApproxDerivativesDense.wrong_dimensions_funª   s-   € ÝŒx˜˜A™�rœv a™yœy­"¬&°©)¬)Ð4Ñ5Ô5Ð5r&   c           	      óœ  — t          j        |d         t          j        |d         |d         z  ¦  «        z  t          j        |d         ¦  «        z  t          j        |d         |d         z  ¦  «        |d         z  z   |d         t          j        |d         |d         z  ¦  «        z  t          j        |d         ¦  «        z  g¦  «        S ©Nr   r   ©r   r   rt   r|   r{   ra   s     r$   Újac_vector_scalarz,TestApproxDerivativesDense.jac_vector_scalar­   ó¨   € ÝŒxØˆaŒD•2”6˜!˜Aœ$  1¤™+Ñ&Ô&Ñ&­¬°°!´©¬Ñ5ÝŒF�1�Q”4˜!˜Aœ$‘;ÑÔ ! A¤$Ñ&ñ'àˆaŒD•2”6˜!˜Aœ$  1¤™+Ñ&Ô&Ñ&­¬°°!´©¬Ñ5ð
ñ ô ð 	r&   c                 óÞ   — t          j        |d         t          j        |d         ¦  «        z  |d         t          j        |d         ¦  «        z  |d         dz  |d         dz  z  g¦  «        S ©Nr   r   r   ç      à¿©r   r   r{   rt   ra   s     r$   Úfun_vector_vectorz,TestApproxDerivativesDense.fun_vector_vector´   óc   € ÝŒxØˆaŒD•2”6˜!˜Aœ$‘<”<ÑØˆaŒD•2”6˜!˜Aœ$‘<”<ÑØˆaŒD�A‰I˜˜!œ ™Ñ$ð
ñ ô ð 	r&   c                 óî   — |dk    sJ ‚t          j        |d         t          j        |d         ¦  «        z  |d         t          j        |d         ¦  «        z  |d         dz  |d         dz  z  g¦  «        S )ú=Used to test passing custom arguments with check_derivative()é*   r   r   r   r‰   rŠ   ©rB   rb   Úargs      r$   Úfun_vector_vector_with_argz5TestApproxDerivativesDense.fun_vector_vector_with_arg»   sp   € à�bŠyˆyˆyˆyÝŒxØˆaŒD•2”6˜!˜Aœ$‘<”<ÑØˆaŒD•2”6˜!˜Aœ$‘<”<ÑØˆaŒD�A‰I˜˜!œ ™Ñ$ð
ñ ô ð 	r&   c                 ó‚  — t          j        t          j        |d         ¦  «        |d         t          j        |d         ¦  «        z  g|d          t          j        |d         ¦  «        z  t          j        |d         ¦  «        gd|d         dz  z  |d         dz  z  d|d         dz  z  |d         dz  z  gg¦  «        S ©Nr   r   r   r   r‰   ç      ø¿rŠ   ra   s     r$   Újac_vector_vectorz,TestApproxDerivativesDense.jac_vector_vectorÄ   óª   € ÝŒxÝŒV�A�a”D‰\Œ\˜1˜Qœ4¥"¤&¨¨1¬¡,¤,Ñ.Ð/Ø�ŒdˆU•R”V˜A˜aœD‘\”\Ñ!¥2¤6¨!¨A¬$¡<¤<Ð0Ø��1”˜‘‰]˜Q˜qœT T™\Ñ)¨4°!°A´$¸!±)Ñ+;¸aÀ¼dÀd¹lÑ+JÐKð
ñ ô ð 	r&   c                 ó’  — |dk    sJ ‚t          j        t          j        |d         ¦  «        |d         t          j        |d         ¦  «        z  g|d          t          j        |d         ¦  «        z  t          j        |d         ¦  «        gd|d         dz  z  |d         dz  z  d|d         dz  z  |d         dz  z  gg¦  «        S )rŽ   r�   r   r   r   r   r‰   r•   rŠ   r�   s      r$   Újac_vector_vector_with_argz5TestApproxDerivativesDense.jac_vector_vector_with_argË   s·   € à�bŠyˆyˆyˆyÝŒxÝŒV�A�a”D‰\Œ\˜1˜Qœ4¥"¤&¨¨1¬¡,¤,Ñ.Ð/Ø�ŒdˆU•R”V˜A˜aœD‘\”\Ñ!¥2¤6¨!¨A¬$¡<¤<Ð0Ø��1”˜‘‰]˜Q˜qœT T™\Ñ)¨4°!°A´$¸!±)Ñ+;¸aÀ¼dÀd¹lÑ+JÐKð
ñ ô ð 	r&   ç      ð?c                 óš   — t          j        t          j        ||d         z  ¦  «        t          j        ||d         z  ¦  «        g¦  «        S ry   ©r   r   rm   ©rB   rb   Úc0Úc1s       r$   Úfun_parametrizedz+TestApproxDerivativesDense.fun_parametrizedÔ   s;   € ÝŒx�œ  Q q¤T¡	Ñ*Ô*­B¬F°2¸¸!¼±9Ñ,=Ô,=Ð>Ñ?Ô?Ð?r&   rM   c           
      ó®   — t          j        |t          j        ||d         z  ¦  «        z  dgd|t          j        ||d         z  ¦  «        z  gg¦  «        S ry   rœ   r�   s       r$   Újac_parametrizedz+TestApproxDerivativesDense.jac_parametrized×   sY   € ÝŒxØ•"”&˜˜a œd™Ñ#Ô#Ñ# QÐ'Ø�•R”V˜B  1¤™IÑ&Ô&Ñ&Ð'ð
ñ ô ð 	r&   c                 óN   — t          j        |¦  «        dk    r|nt           j        S )Nç:Œ0âŽyE>©r   rO   Únanra   s     r$   Úfun_with_nanz'TestApproxDerivativesDense.fun_with_nanÝ   s    € Ý”F˜1‘I”I Ò%Ð%ˆqˆq­2¬6Ð1r&   c                 óN   — t          j        |¦  «        dk    rdnt           j        S )Nr¤   rš   r¥   ra   s     r$   Újac_with_nanz'TestApproxDerivativesDense.jac_with_nanà   s    € Ý”f˜Q‘i”i 4Ò'Ð'ˆsˆs­R¬VÐ3r&   c                 óŽ   — t          j        |d         |d         z  t          j        |d         |d         z  ¦  «        g¦  «        S ry   )r   r   rt   ra   s     r$   Úfun_zero_jacobianz,TestApproxDerivativesDense.fun_zero_jacobianã   s9   € ÝŒx˜˜1œ  !¤™¥b¤f¨Q¨q¬T°A°a´D©[Ñ&9Ô&9Ð:Ñ;Ô;Ð;r&   c           
      óú   — t          j        |d         |d         g|d          t          j        |d         |d         z  ¦  «        z  |d          t          j        |d         |d         z  ¦  «        z  gg¦  «        S rƒ   )r   r   r{   ra   s     r$   Újac_zero_jacobianz,TestApproxDerivativesDense.jac_zero_jacobianæ   st   € ÝŒxØˆqŒT�1�Q”4ˆLØ�ŒdˆU•R”V˜A˜aœD 1 Q¤4™KÑ(Ô(Ñ(¨1¨Q¬4¨%µ"´&¸¸1¼ÀÀ!Ä¹Ñ2EÔ2EÑ*EÐFð
ñ ô ð 	r&   c                 óv   — t          j        |¦  «                             ¦   «         }t          j        |¦  «        S r^   )r   r   ÚitemÚmathrm   )rB   rb   Úxps      r$   Újac_non_numpyz(TestApproxDerivativesDense.jac_non_numpyì   s+   € õ ŒZ˜‰]Œ]×ÒÑ!Ô!ˆÝŒx˜‰|Œ|Ðr&   c                 ó&  — d}t          | j        |d¬¦  «        }t          | j        |¦  «        }t          | j        |d¬¦  «        }|                      |¦  «        }t          ||d¬¦  «         t          ||d¬¦  «         t          ||d¬¦  «         d S )	Nrš   r+   ©r4   r,   ç�íµ ÷Æ°>©Úrtolç•Ö&è.>çê-�™—q=©r   rc   rh   r   ©rB   rC   Ú
jac_diff_2Ú
jac_diff_3Ú
jac_diff_4Újac_trues         r$   Útest_scalar_scalarz-TestApproxDerivativesDense.test_scalar_scalarò   s­   € ØˆÝ& tÔ'=¸rØ.7ð9ñ 9ô 9ˆ
å& tÔ'=¸rÑBÔBˆ
Ý& tÔ'=¸rØ.2ð4ñ 4ô 4ˆ
à×)Ò)¨"Ñ-Ô-ˆÝ˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°5Ð9Ñ9Ô9Ð9Ð9Ð9r&   c                 ó.  — d}t          | j        |dd¬¦  «        }t          | j        |d¬¦  «        }t          | j        |dd¬¦  «        }|                      |¦  «        }t          ||d¬¦  «         t          ||d	¬¦  «         t          ||d
¬¦  «         d S )Nrš   r+   çÛ"•“\ÿO>©r4   Úabs_step)rÄ   r,   rµ   r¶   r¸   r¹   rº   r»   s         r$   Útest_scalar_scalar_abs_stepz6TestApproxDerivativesDense.test_scalar_scalar_abs_stepþ   sÃ   € àˆÝ& tÔ'=¸rØ.7À'ðKñ Kô Kˆ
å& tÔ'=¸rØ07ð9ñ 9ô 9ˆ
å& tÔ'=¸rØ.2¸WðFñ Fô Fˆ
à×)Ò)¨"Ñ-Ô-ˆÝ˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°5Ð9Ñ9Ô9Ð9Ð9Ð9r&   c                 óJ  — d}t          | j        |d¬¦  «        }t          | j        |¦  «        }t          | j        |d¬¦  «        }|                      t          j        |¦  «        ¦  «        }t          ||d¬¦  «         t          ||d¬¦  «         t          ||d¬¦  «         d S )	Nr(   r+   r´   r,   rµ   r¶   r¸   r¹   )r   rn   rv   r   Ú
atleast_1dr   r»   s         r$   Útest_scalar_vectorz-TestApproxDerivativesDense.test_scalar_vector  s·   € ØˆÝ& tÔ'=¸rØ.7ð9ñ 9ô 9ˆ
å& tÔ'=¸rÑBÔBˆ
Ý& tÔ'=¸rØ.2ð4ñ 4ô 4ˆ
à×)Ò)­"¬-¸Ñ*;Ô*;Ñ<Ô<ˆÝ˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°5Ð9Ñ9Ô9Ð9Ð9Ð9r&   c                 óN  — t          j        ddg¦  «        }t          | j        |d¬¦  «        }t          | j        |¦  «        }t          | j        |d¬¦  «        }|                      |¦  «        }t          ||d¬¦  «         t          ||d¬¦  «         t          ||d	¬¦  «         d S )
Nç      Y@r‰   r+   r´   r,   rµ   r¶   çH¯¼šò×z>r¹   )r   r   r   r}   r…   r   r»   s         r$   Útest_vector_scalarz-TestApproxDerivativesDense.test_vector_scalar  s»   € ÝŒX�u˜d�mÑ$Ô$ˆÝ& tÔ'=¸rØ.7ð9ñ 9ô 9ˆ
å& tÔ'=¸rÑBÔBˆ
Ý& tÔ'=¸rØ.2ð4ñ 4ô 4ˆ
à×)Ò)¨"Ñ-Ô-ˆÝ˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°5Ð9Ñ9Ô9Ð9Ð9Ð9r&   c                 ól  — t          j        ddg¦  «        }t          | j        |dd¬¦  «        }t          | j        |dt           j        ¬¦  «        }t          | j        |dd¬¦  «        }|                      |¦  «        }t          ||d¬	¦  «         t          ||d
¬	¦  «         t          ||d¬	¦  «         d S )NrÊ   r‰   r+   rÂ   rÃ   )rÄ   Úrel_stepr,   rµ   r¶   çßA:ÜÅ)>r¹   )r   r   r   r}   r@   r…   r   r»   s         r$   Útest_vector_scalar_abs_stepz6TestApproxDerivativesDense.test_vector_scalar_abs_step$  sØ   € åŒX�u˜d�mÑ$Ô$ˆÝ& tÔ'=¸rØ.7À'ðKñ Kô Kˆ
å& tÔ'=¸rØ07Å"Ä&ðJñ Jô Jˆ
å& tÔ'=¸rØ.2¸WðFñ Fô Fˆ
à×)Ò)¨"Ñ-Ô-ˆÝ˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°5Ð9Ñ9Ô9Ð9Ð9Ð9r&   c                 óN  — t          j        ddg¦  «        }t          | j        |d¬¦  «        }t          | j        |¦  «        }t          | j        |d¬¦  «        }|                      |¦  «        }t          ||d¬¦  «         t          ||d¬¦  «         t          ||d	¬¦  «         d S )
Nç      YÀçš™™™™™É?r+   r´   r,   çñhãˆµøä>r¶   rµ   r¹   ©r   r   r   r‹   r–   r   r»   s         r$   Útest_vector_vectorz-TestApproxDerivativesDense.test_vector_vector2  s»   € ÝŒX�v˜s�mÑ$Ô$ˆÝ& tÔ'=¸rØ.7ð9ñ 9ô 9ˆ
å& tÔ'=¸rÑBÔBˆ
Ý& tÔ'=¸rØ.2ð4ñ 4ô 4ˆ
à×)Ò)¨"Ñ-Ô-ˆÝ˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°5Ð9Ñ9Ô9Ð9Ð9Ð9r&   c                 óà   — d}t          t          t          | j        |¦  «         |                      t	          j        |¦  «        ¦  «        }t          t          t          | j        ||¬¦  «         d S )Nrš   )Úf0)Úassert_raisesÚRuntimeErrorr   r�   r   rÇ   Ú
ValueError)rB   rC   rØ   s      r$   Útest_wrong_dimensionsz0TestApproxDerivativesDense.test_wrong_dimensions>  ss   € ØˆÝ•lÕ$5ØÔ/°ñ	5ô 	5ð 	5à×&Ò&¥r¤}°RÑ'8Ô'8Ñ9Ô9ˆÝ•jÕ"3ØÔ/°¸ð	<ñ 	<ô 	<ð 	<ð 	<ð 	<r&   c                 ó  — t          j        ddg¦  «        }t          | j        |dd¬¦  «        }t          | j        |d¬¦  «        }|                      |¦  «        }t          ||d¬¦  «         t          ||d¬¦  «         d S )	NrU   rM   r+   g-Cëâ6?)r4   rÎ   )rÎ   r9   r¶   rÕ   )rB   rC   r¼   r½   r¿   s        r$   Útest_custom_rel_stepz/TestApproxDerivativesDense.test_custom_rel_stepF  s™   € ÝŒX�t˜S�kÑ"Ô"ˆÝ& tÔ'=¸rØ.7À$ðHñ Hô Hˆ
å& tÔ'=¸rØ04ð6ñ 6ô 6ˆ
à×)Ò)¨"Ñ-Ô-ˆÝ˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ð8Ð8r&   c                 óÆ  — t          j        ddg¦  «        }d}d}d}d}|                      |||¬¦  «        }t          j        ddg¦  «        }|                      |||¦  «        }t	          | j        |d|||ft          |¬¦  «        ||f¬	¦  «        }	t	          | j        ||||ft          |¬¦  «        ||f¬
¦  «        }
t          |	|d¬¦  «         t          |
|d¬¦  «         d S )Nrš   ç      ð¿rK   ç       @)rŸ   g�íµ ÷Æ°¾rË   r+   )r4   rÎ   rØ   ÚargsÚkwargsÚbounds)rÎ   rØ   râ   rã   rä   rµ   r¶   r¸   )r   r   r    r¢   r   Údictr   )rB   rC   rž   rŸ   rP   rQ   rØ   rÎ   r¿   r¼   r½   s              r$   Útest_optionsz'TestApproxDerivativesDense.test_optionsP  s  € ÝŒX�s˜C�jÑ!Ô!ˆØˆØˆØˆØˆØ×"Ò" 2 r¨bÐ"Ñ1Ô1ˆÝ”8˜U D˜MÑ*Ô*ˆØ×(Ò(¨¨R°Ñ4Ô4ˆÝ&ØÔ! 2¨iÀ(Ø˜˜¥d¨b k¡k¤k¸2¸r¸(ðDñ Dô Dˆ
õ 'ØÔ! 2°Ø˜˜¥d¨b k¡k¤k¸2¸r¸(ðDñ Dô Dˆ
õ 	˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ð8Ð8r&   c                 ó|  — t          j        d¦  «         }t          j        d¦  «        }t          j        ddg¦  «        }t          t          t
          | j        |||f¬¦  «         t          j        ddg¦  «        }t          | j        |d||f¬¦  «        }|                      |¦  «        }t          ||d	¬
¦  «         d S )Nr   g       ÀrÓ   ©rä   rà   rš   r+   ©r4   rä   rµ   r¶   )	r   rN   r   rÙ   rÛ   r   r‹   r–   r   )rB   rP   rQ   rC   Újac_diffr¿   s         r$   Útest_with_bounds_2_pointz3TestApproxDerivativesDense.test_with_bounds_2_pointb  sÉ   € ÝŒg�a‰jŒjˆ[ˆÝŒW�Q‰ZŒZˆåŒX�t˜S�kÑ"Ô"ˆÝ•jÕ"3ØÔ,¨b¸"¸b¸ð	Cñ 	Cô 	Cð 	Cõ ŒX�t˜S�kÑ"Ô"ˆÝ$ TÔ%;¸RØ,5¸rÀ2¸hðHñ Hô Hˆà×)Ò)¨"Ñ-Ô-ˆÝ˜ (°Ð6Ñ6Ô6Ð6Ð6Ð6r&   c                 ó.  — t          j        ddg¦  «        }t          j        ddg¦  «        }t          j        ddg¦  «        }|                      |¦  «        }t          | j        |¦  «        }t          ||d¬¦  «         t          | j        ||t           j        f¬¦  «        }t          ||d¬¦  «         t          | j        |t           j         |f¬¦  «        }t          ||d¬¦  «         t          | j        |||f¬¦  «        }t          ||d¬¦  «         d S )Nrš   rá   r¸   r¶   rè   )r   r   r–   r   r‹   r   r@   )rB   rP   rQ   rC   r¿   rê   s         r$   Útest_with_bounds_3_pointz3TestApproxDerivativesDense.test_with_bounds_3_pointp  s&  € ÝŒX�s˜C�jÑ!Ô!ˆÝŒX�s˜C�jÑ!Ô!ˆåŒX�s˜C�jÑ!Ô!ˆØ×)Ò)¨"Ñ-Ô-ˆå$ TÔ%;¸RÑ@Ô@ˆÝ˜ (°Ð6Ñ6Ô6Ð6å$ TÔ%;¸RØ-/µ´¨Lð:ñ :ô :ˆå˜ (°Ð6Ñ6Ô6Ð6å$ TÔ%;¸RÝ.0¬f¨W°b¨Mð;ñ ;ô ;ˆå˜ (°Ð6Ñ6Ô6Ð6å$ TÔ%;¸RØ-/°¨Hð6ñ 6ô 6ˆå˜ (°Ð6Ñ6Ô6Ð6Ð6Ð6r&   c                 óÐ  — t          j        ddg¦  «        }|dz
  }|dz   }|                      |¦  «        }t          | j        |d||f¬¦  «        }t          ||d¬¦  «         t          | j        |dd||f¬¦  «        }t          ||d¬¦  «         t          | j        |||f¬	¦  «        }t          ||d¬¦  «         t          | j        |d||f¬
¦  «        }t          ||d¬¦  «         d S )Ng      $@rÏ   g•Ö&è.!>r+   ré   rµ   r¶   ©r4   rÎ   rä   rè   ©rÎ   rä   )r   r   r–   r   r‹   r   )rB   rC   rP   rQ   r¿   rê   s         r$   rV   z,TestApproxDerivativesDense.test_tight_bounds†  s-  € ÝŒX�t˜T�lÑ#Ô#ˆØ�$‰YˆØ�$‰YˆØ×)Ò)¨"Ñ-Ô-ˆÝ$ØÔ" B¨yÀ"ÀbÀðKñ Kô Kˆå˜ (°Ð6Ñ6Ô6Ð6Ý$ØÔ" B¨yØ 2 r (ð,ñ ,ô ,ˆõ 	˜ (°Ð6Ñ6Ô6Ð6å$ØÔ" B°°B¨xð9ñ 9ô 9ˆå˜ (°Ð6Ñ6Ô6Ð6Ý$ØÔ" B°¸rÀ2¸hðHñ Hô Hˆå˜ (°Ð6Ñ6Ô6Ð6Ð6Ð6r&   c                 óÎ  — d}d}d}|                       |¦  «        }t          | j        |dd||f¬¦  «        }t          | j        |d||f¬¦  «        }t          ||d¬¦  «         t          ||d	¬¦  «         d}|                       |¦  «        }t          | j        |dd||f¬¦  «        }t          | j        |d||f¬¦  «        }t          ||d¬¦  «         t          ||d	¬¦  «         d S )
Nç:Œ0âŽyE¾r¤   rK   r+   rµ   rï   rð   r¶   r¸   )r©   r   r§   r   )rB   rP   rQ   rC   r¿   r¼   r½   s          r$   Útest_bound_switchesz.TestApproxDerivativesDense.test_bound_switchesš  s6  € ØˆØˆØˆØ×$Ò$ RÑ(Ô(ˆÝ&ØÔ˜r¨)¸dØ˜�8ðñ ô ˆ
õ 'ØÔ˜r¨D¸"¸b¸ðCñ Cô Cˆ
å˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8àˆØ×$Ò$ RÑ(Ô(ˆÝ&ØÔ˜r¨)¸dØ˜�8ðñ ô ˆ
õ 'ØÔ˜r¨D¸"¸b¸ðCñ Cô Cˆ
å˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8Ð8Ð8r&   c                 ó.  — d}|                       |¦  «        }t          | j         |d¬¦  «        }t          | j         |¦  «        }t          ||d¬¦  «         t          ||d¬¦  «         t          t          t          | j         |fi t          d¬¦  «        ¤Ž d S )Nrš   r+   r´   rµ   r¶   r¤   r,   )r²   r   r   rÙ   Ú	TypeErrorrå   )rB   rC   r¿   r¼   r½   s        r$   Útest_non_numpyz)TestApproxDerivativesDense.test_non_numpy±  s¶   € ØˆØ×%Ò% bÑ)Ô)ˆÝ& tÔ'9¸2Ø.7ð9ñ 9ô 9ˆ
å& tÔ'9¸2Ñ>Ô>ˆ
Ý˜
 H°4Ð8Ñ8Ô8Ð8Ý˜
 H°4Ð8Ñ8Ô8Ð8õ 	•iÕ!2°DÔ4FÈð 	+ð 	+Ý DÐ)Ñ)Ô)ð	+ð 	+ð 	+ð 	+ð 	+r&   c                 ój  ‡‡‡‡— t           j                             d¦  «         d„ Šˆfd„Št          j        dddt           j        ¬¦  «        Št           j                             d¦  «                             t           j        ¦  «        Št          j        ddg¦  «        }t          ‰|d‰‰f¬	¦  «        }t          ‰|                     t           j        ¦  «        d‰‰f¬	¦  «        } ‰|‰‰¦  «        j	        t           j        k    sJ ‚t          ||d
¬¦  «         ˆˆˆfd„}t          ||                     t           j        ¦  «        d¬¦  «        }t          ||d
¬¦  «         d„ }d„ }d„ }d„ }t           j        t           j        t           j        fD ] }	t          j        |	¦  «        j        }
t          j        d¦  «                             |	¦  «        }t          d | ||¦  «        d¦  «        } ||||||
¦  «        }t          ||d|¬¦  «         ||¦  «        z
  Št          ‰¦  «        |k     sJ ‚Œ¡d S )Nr   c                 ó*   — | d         | d         |z  z   S ry   rZ   )Úprb   s     r$   Úfuncz0TestApproxDerivativesDense.test_fp.<locals>.funcÃ  s   € Ø�Q”4˜!˜Aœ$ ™(‘?Ð"r&   c                 ó"   •—  ‰| |¦  «        |z
  S r^   rZ   )rù   rb   Úyrú   s      €r$   Úerrz/TestApproxDerivativesDense.test_fp.<locals>.errÆ  s   ø€ Ø�4˜˜1‘:”: ‘>Ð!r&   r   éd   ©Údtyperà   r+   )r4   râ   gü©ñÒMbP?)Úatolc                 ó†   •— | j         t          j        k    sJ ‚ ‰| ‰‰¦  «                             t          j        ¦  «        S r^   )r   r   r1   Úastype)rù   rý   rb   rü   s    €€€r$   Úerr_fp32z4TestApproxDerivativesDense.test_fp.<locals>.err_fp32Ö  s:   ø€ Ø”7�bœjÒ(Ð(Ð(Ð(Ø�3�q˜!˜Q‘<”<×&Ò&¥r¤zÑ2Ô2Ð2r&   r´   c                 ó*   — t          j        | ¦  «        S r^   ©r   r{   ©rb   s    r$   Úfz-TestApproxDerivativesDense.test_fp.<locals>.fß  ó   € Ý”6˜!‘9”9Ðr&   c                 ó*   — t          j        | ¦  «        S r^   )r   rt   r  s    r$   Úgz-TestApproxDerivativesDense.test_fp.<locals>.gá  r	  r&   c                 ó,   — t          j        | ¦  «         S r^   r  r  s    r$   Úhessz0TestApproxDerivativesDense.test_fp.<locals>.hessã  s   € Ý”F˜1‘I”I�:Ðr&   c           
      óH  — | dz  t          t          j         ||¦  «        ¦  «        t          j         ||| z   ¦  «        ¦  «        ¦  «        z  }|| z  t          t          j         ||¦  «        ¦  «        t          j         ||| z   ¦  «        ¦  «        ¦  «        z  }||z   S r€   )Úmaxr   rO   )rD   rC   r  r  r2   Út0Út1s          r$   Ú	calc_atolz5TestApproxDerivativesDense.test_fp.<locals>.calc_atolæ  s‹   € à�Q‘��RœV D D¨¡H¤HÑ-Ô-­r¬v°d°d¸2À¹6±l´lÑ/CÔ/CÑDÔDÑDˆBð �q‘�3�rœv a a¨¡e¤e™}œ}­b¬f°Q°Q°r¸A±v±Y´YÑ.?Ô.?Ñ@Ô@Ñ@ˆBØ˜‘7ˆNr&   rš   rÃ   )r   ÚrandomÚseedÚlinspacer.   r  r   r   r1   r   r   Úfloat16r-   r/   r   rO   )rB   Úp0Újac_fp64Újac_fpr  r  r  r  r  r   r2   rC   rD   r  rý   rú   rb   rü   s                 @@@@r$   Útest_fpz"TestApproxDerivativesDense.test_fp¾  sƒ  øøøø€ õ 	Œ	�Š�qÑÔÐð	#ð 	#ð 	#ð	"ð 	"ð 	"ð 	"ð 	"õ ŒK˜˜1˜c­¬Ð4Ñ4Ô4ˆÝŒI×Ò˜SÑ!Ô!×(Ò(­¬Ñ4Ô4ˆÝŒX�t˜T�lÑ#Ô#ˆå$ S¨"°YÀaÈÀVÐLÑLÔLˆõ # 3¨¯	ª	µ"´*Ñ(=Ô(=Ø*3¸1¸a¸&ðBñ Bô Bˆàˆs�2�q˜!‰}Œ}Ô"¥b¤jÒ0Ð0Ð0Ð0Ý˜ ¨tÐ4Ñ4Ô4Ð4ð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3õ # 8¨R¯YªYµr´zÑ-BÔ-BØ*3ð5ñ 5ô 5ˆå˜ ¨tÐ4Ñ4Ô4Ð4ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	õ ”j¥"¤*­b¬jÐ9ð 	#ð 	#ˆEÝ”(˜5‘/”/Ô%ˆCÝ”˜#‘”×%Ò% eÑ,Ô,ˆBÝ& t¨R°°°2±´¸	ÑBÔBˆAØ�9˜Q  A t¨SÑ1Ô1ˆDÝ# A r°)Ø-.ð0ñ 0ô 0Ø23°!°B±%´%ñ8ˆCå�s‘8”8˜d’?�?�?�?�?ð	#ð 	#r&   c                 óÎ  — t          j        ddg¦  «        }t          | j        | j        |¦  «        }t          |dk     ¦  «         t          | j        | j        |¦  «        }t          |dk     ¦  «         t          j        ddg¦  «        }t          | j        | j        |¦  «        }t          |dk    ¦  «         t          | j        | j        |¦  «        }t          |dk    ¦  «         d S )Nç      $Àé
   r¸   rµ   rK   r   )r   r   r   r‹   r–   r   r«   r­   ©rB   rC   Úaccuracys      r$   Útest_check_derivativez0TestApproxDerivativesDense.test_check_derivativeø  sî   € ÝŒX�u˜b�kÑ"Ô"ˆÝ# DÔ$:Ø$(Ô$:¸Bñ@ô @ˆå�˜4’Ñ Ô Ð Ý# DÔ$:Ø$(Ô$:¸Bñ@ô @ˆå�˜4’Ñ Ô Ð åŒX�s˜C�jÑ!Ô!ˆÝ# DÔ$:Ø$(Ô$:¸Bñ@ô @ˆå�˜A’ÑÔÐÝ# DÔ$:Ø$(Ô$:¸Bñ@ô @ˆå�˜A’ÑÔÐÐÐr&   c                 ó–   — t          j        ddg¦  «        }t          | j        | j        |ddi¬¦  «        }t          |dk     ¦  «         d S )Nr  r  r‘   r�   )rã   r¸   )r   r   r   r’   r™   r   r  s      r$   Ú!test_check_derivative_with_kwargsz<TestApproxDerivativesDense.test_check_derivative_with_kwargs	  sX   € ÝŒX�u˜b�kÑ"Ô"ˆÝ# DÔ$CØ$(Ô$CØ$&Ø,1°2¨;ð8ñ 8ô 8ˆõ 	�˜4’Ñ Ô Ð Ð Ð r&   N)rš   )rM   )&rW   rX   rY   rc   rh   rn   rv   r}   r�   r…   r‹   r’   r–   r™   r    r¢   r§   r©   r«   r­   r²   rÀ   rÅ   rÈ   rÌ   rÐ   rÖ   rÜ   rÞ   ræ   rë   rí   rV   ró   rö   r  r   r"  rZ   r&   r$   r\   r\   ™   s3  € € € € € ðð ð ðð ð ð?ð ?ð ?ðIð Ið Ið2ð 2ð 2ð6ð 6ð 6ðð ð ðð ð ðð ð ðð ð ðð ð ð@ð @ð @ð @ðð ð ð ð2ð 2ð 2ð4ð 4ð 4ð<ð <ð <ðð ð ðð ð ð
:ð 
:ð 
:ð:ð :ð :ð
:ð 
:ð 
:ð
:ð 
:ð 
:ð:ð :ð :ð
:ð 
:ð 
:ð<ð <ð <ð9ð 9ð 9ð9ð 9ð 9ð$7ð 7ð 7ð7ð 7ð 7ð,7ð 7ð 7ð(9ð 9ð 9ð.+ð +ð +ð8#ð 8#ð 8#ðtð ð ð"!ð !ð !ð !ð !r&   r\   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestApproxDerivativeSparsec                 óÔ  — t           j                             d¦  «         d| _        ddt          j        | j        ¦  «        z   z  | _        ddt          j        | j        ¦  «        z   z  | _        t          j        | j        ¦  «        | _        d| j        d d d…         z  | j        d d d…<   d| j        dd d…         z  | j        dd d…<   |  	                    | j        ¦  «        | _
        d S )Nr   é2   rU   r   rM   gËPÊÿÿï?r   )r   r  r  Únr   rP   rQ   ÚemptyrC   ÚjacÚJ_true)rB   s    r$   Úsetup_methodz'TestApproxDerivativeSparse.setup_method  sÇ   € Ý
Œ	�Š�qÑÔÐØˆŒØ˜!�bœi¨¬Ñ/Ô/Ñ/Ñ0ˆŒØ˜�RœY t¤vÑ.Ô.Ñ.Ñ/ˆŒÝ”(˜4œ6Ñ"Ô"ˆŒØ  D¤G¨C¨C¨a¨C¤LÑ0ˆŒ���!�‰Ø! T¤W¨Q¨T°¨T¤]Ñ2ˆŒ���1�‰à—h’h˜tœwÑ'Ô'ˆŒˆˆr&   c                 óž   — |dd …         dz  |d d…         dz  z
  }t          j        dd|z  f¦  «        t          j        d|z  df¦  «        z   S )Nr   r   rL   r   r   )r   Úhstack)rB   rb   Úes      r$   ÚfunzTestApproxDerivativeSparse.fun  sS   € ØˆaˆbˆbŒE�1‰H�q˜˜"˜”v˜q‘yÑ ˆÝŒy˜!˜Q ™U˜Ñ$Ô$¥r¤y°!°a±%¸°Ñ'<Ô'<Ñ<Ð<r&   c                 ó„  — |j         }t          j        ||f¦  «        }d|d         z  |d<   d|d         dz  z  |d<   t          d|dz
  ¦  «        D ]P}d||dz
           z  |||dz
  f<   d	||         dz  z  d
||         z  z
  |||f<   d||dz            dz  z  |||dz   f<   ŒQd	|d         dz  z  |d<   d|d         z  |d<   |S )Néüÿÿÿr   ©r   r   r   r   r   ©r   r   iúÿÿÿé	   r   rL   ©rL   rL   rr   ©rL   rr   )Úsizer   r<   Úrange)rB   rb   r'  ÚJÚis        r$   r)  zTestApproxDerivativeSparse.jac#  sî   € ØŒFˆÝŒH�a˜�VÑÔˆØ�q˜”t‘)ˆˆ$‰Ø�a˜”d˜A‘g‘+ˆˆ$‰Ý�q˜!˜a™%‘”ð 	(ð 	(ˆAØ˜q  1¡œv™+ˆAˆa��Q‘ˆh‰KØ˜!˜Aœ$ ™'‘k A¨¨!¬¡HÑ,ˆAˆa�ˆd‰GØ˜a  !¡œf a™i™-ˆAˆa��Q‘ˆh‰KˆKØ˜˜"œ˜q™‘Lˆˆ&‰	Ø˜˜2œ‘Jˆˆ&‰	àˆr&   c                 ó²   — t          j        ||ft          ¬¦  «        }d|d<   d|d<   t          d|dz
  ¦  «        D ]}d|||dz
  |dz   …f<   Œd|d<   d|d<   |S )Nrÿ   r   r2  r3  r   r5  r6  )r   r<   Úintr8  )rB   r'  r   r:  s       r$   r   z$TestApproxDerivativeSparse.structure1  s{   € ÝŒH�a˜�V¥3Ð'Ñ'Ô'ˆØˆˆ$‰Øˆˆ$‰Ý�q˜!˜a™%‘”ð 	#ð 	#ˆAØ!"ˆAˆa��Q‘˜˜A™�ˆoÑÐØˆˆ&‰	Øˆˆ&‰	àˆr&   c           	      ó2  — |                       | j        ¦  «        }t          j        | j        ¦  «        }t	          ||¦  «        }t          j                             |¦  «         t	          ||¦  «        }t          g d¢||gt          j         | j	        gt          j        | j
        g¦  «        D ]ê\  }}}}t          | j        | j        |||f||f¬¦  «        }	t          t          |	t           ¦  «        ¦  «         t#          |	                     ¦   «         | j        d¬¦  «         t          j        | j        d¦  «        }
|
d d d…xx         dz  cc<   t          | j        | j        ||
||f¬¦  «        }	t#          |	                     ¦   «         | j        d	¬¦  «         Œëd S )
Nr*   )r4   rä   Úsparsityrµ   r¶   r¤   r   rL   )r4   rÎ   r>  rÔ   )r   r'  r   r   r   r  Úshuffler   r@   rP   rQ   r   r/  rC   r   Ú
isinstancer   r   Útoarrayr*  Ú	full_like)rB   r   r   r"   r#   r4   r!   ÚlÚur9  rÎ   s              r$   Útest_allz#TestApproxDerivativeSparse.test_all<  s•  € Ø�NŠN˜4œ6Ñ"Ô"ˆÝ”	˜$œ&Ñ!Ô!ˆÝ   EÑ*Ô*ˆÝ
Œ	×Ò˜%Ñ Ô Ð Ý   EÑ*Ô*ˆå$+Ø,Ð,Ð,¨x¸Ð.BÝ”&�˜$œ'Ð"¥R¤V¨T¬WÐ$5ñ%7ô %7ð 	Að 	AÑ ˆF�F˜A˜qõ " $¤(¨D¬G¸FØ*+¨Q¨¸1¸f¸+ðGñ Gô GˆAå•J˜q¥*Ñ-Ô-Ñ.Ô.Ð.Ý˜AŸIšI™KœK¨¬¸4Ð@Ñ@Ô@Ð@å”| D¤G¨TÑ2Ô2ˆHØ�S�S�q�SˆMˆMŒM˜RÑˆMˆM‰MÝ! $¤(¨D¬G¸FØ+3¸qÀ&¸kðKñ Kô KˆAå˜AŸIšI™KœK¨¬¸4Ð@Ñ@Ô@Ð@Ð@ð	Að 	Ar&   c                 óÄ   — |                       | j        ¦  «        }t          | j        | j        |¬¦  «        }t          |                     ¦   «         | j        d¬¦  «         d S )N)r>  rµ   r¶   )r   r'  r   r/  rC   r   rA  r*  )rB   r   r9  s      r$   Útest_no_precomputed_groupsz5TestApproxDerivativeSparse.test_no_precomputed_groupsQ  sR   € Ø�NŠN˜4œ6Ñ"Ô"ˆÝ˜dœh¨¬¸!Ð<Ñ<Ô<ˆÝ˜Ÿ	š	™œ T¤[°tÐ<Ñ<Ô<Ð<Ð<Ð<r&   c                 óP  — t          j        | j        | j        ft          ¬¦  «        }t          j        | j        ¦  «        }dD ]b}t          | j        | j        |¬¦  «        }t          | j        | j        ||f|¬¦  «        }t          || 	                    ¦   «         dd¬¦  «         Œcd S )Nrÿ   r*   r´   )r>  r4   gVçž¯Â<g¦ÖVs†ÿ<)r·   r  )
r   rN   r'  r<  r   r   r/  rC   r   rA  )rB   r   r!   r4   ÚJ_denseÚJ_sparses         r$   Útest_equivalencez+TestApproxDerivativeSparse.test_equivalenceV  s»   € Ý”G˜TœV T¤VÐ,µCÐ8Ñ8Ô8ˆ	Ý”˜4œ6Ñ"Ô"ˆØ2ð 	4ð 	4ˆFÝ'¨¬°$´'À&ÐIÑIÔIˆGÝ(Ø”˜$œ'¨Y¸Ð,?ÈðPñ Pô PˆHå˜G X×%5Ò%5Ñ%7Ô%7Ø!&¨Uð4ñ 4ô 4ð 4ð 4ð		4ð 	4r&   c                 ó  ‡ — ˆ fd„}t          ‰ j        |‰ j        ‰ j        ‰ j        f¬¦  «        }t          |dk     ¦  «         t          ‰ j        |‰ j        ‰ j        ‰ j        f¬¦  «        }t          |dk     ¦  «         d S )Nc                 óH   •— t          ‰                     | ¦  «        ¦  «        S r^   )r   r)  )rb   rB   s    €r$   r)  z=TestApproxDerivativeSparse.test_check_derivative.<locals>.jaca  s   ø€ Ý˜dŸhšh q™kœkÑ*Ô*Ð*r&   rè   r¸   )r   r/  rC   rP   rQ   r   )rB   r)  r  s   `  r$   r   z0TestApproxDerivativeSparse.test_check_derivative`  sœ   ø€ ð	+ð 	+ð 	+ð 	+ð 	+õ $ D¤H¨c°4´7Ø,0¬G°T´WÐ+=ð?ñ ?ô ?ˆå�˜4’Ñ Ô Ð å# D¤H¨c°4´7Ø,0¬G°T´WÐ+=ð?ñ ?ô ?ˆå�˜4’Ñ Ô Ð Ð Ð r&   N)rW   rX   rY   r+  r/  r)  r   rE  rG  rK  r   rZ   r&   r$   r$  r$    s�   € € € € € ð	(ð 	(ð 	(ð=ð =ð =ðð ð ð	ð 	ð 	ðAð Að Að*=ð =ð =ð
4ð 4ð 4ð
!ð 
!ð 
!ð 
!ð 
!r&   r$  c                   ó\   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ ZdS )Ú"TestApproxDerivativeLinearOperatorc                 ó*   — t          j        |¦  «        S r^   r_   ra   s     r$   rc   z4TestApproxDerivativeLinearOperator.fun_scalar_scalaro  rd   r&   c                 ó*   — t          j        |¦  «        S r^   rf   ra   s     r$   rh   z4TestApproxDerivativeLinearOperator.jac_scalar_scalarr  rd   r&   c                 ó¢   — t          j        |d         dz  t          j        |d         ¦  «        t          j        |d         ¦  «        g¦  «        S rj   rk   ra   s     r$   rn   z4TestApproxDerivativeLinearOperator.fun_scalar_vectoru  ro   r&   c                 óÐ   — t          j        d|d         z  t          j        |d         ¦  «        dz  t          j        |d         ¦  «        g¦  «                             dd¦  «        S rq   rs   ra   s     r$   rv   z4TestApproxDerivativeLinearOperator.jac_scalar_vectorx  rw   r&   c                 ó~   — t          j        |d         |d         z  ¦  «        t          j        |d         ¦  «        z  S ry   rz   ra   s     r$   r}   z4TestApproxDerivativeLinearOperator.fun_vector_scalar|  r~   r&   c           	      óœ  — t          j        |d         t          j        |d         |d         z  ¦  «        z  t          j        |d         ¦  «        z  t          j        |d         |d         z  ¦  «        |d         z  z   |d         t          j        |d         |d         z  ¦  «        z  t          j        |d         ¦  «        z  g¦  «        S rƒ   r„   ra   s     r$   r…   z4TestApproxDerivativeLinearOperator.jac_vector_scalar  r†   r&   c                 óÞ   — t          j        |d         t          j        |d         ¦  «        z  |d         t          j        |d         ¦  «        z  |d         dz  |d         dz  z  g¦  «        S rˆ   rŠ   ra   s     r$   r‹   z4TestApproxDerivativeLinearOperator.fun_vector_vector†  rŒ   r&   c                 ó‚  — t          j        t          j        |d         ¦  «        |d         t          j        |d         ¦  «        z  g|d          t          j        |d         ¦  «        z  t          j        |d         ¦  «        gd|d         dz  z  |d         dz  z  d|d         dz  z  |d         dz  z  gg¦  «        S r”   rŠ   ra   s     r$   r–   z4TestApproxDerivativeLinearOperator.jac_vector_vector�  r—   r&   c                 óX  — d}t          | j        |dd¬¦  «        }t          | j        |d¬¦  «        }t          | j        |dd¬¦  «        }|                      |¦  «        }t          j                             d¦  «         t          d¦  «        D ]œ}t          j                             d	dd
¬¦  «        }t          | 	                    |¦  «        ||z  d¬¦  «         t          | 	                    |¦  «        ||z  d¬¦  «         t          | 	                    |¦  «        ||z  d¬¦  «         Œ�d S )Nrš   r+   T©r4   Úas_linear_operator©rZ  r,   r   r  éöÿÿÿ©r   ©r7  rÔ   r¶   çñhãˆµøÔ>)
r   rc   rh   r   r  r  r8  Úuniformr   Údot©rB   rC   r¼   r½   r¾   r¿   r:  rù   s           r$   rÀ   z5TestApproxDerivativeLinearOperator.test_scalar_scalar”  se  € ØˆÝ& tÔ'=¸rØ.7Ø:>ð@ñ @ô @ˆ
õ ' tÔ'=¸rØ:>ð@ñ @ô @ˆ
å& tÔ'=¸rØ.2Ø:>ð@ñ @ô @ˆ
ð ×)Ò)¨"Ñ-Ô-ˆÝ
Œ	�Š�qÑÔÐÝ�r‘”ð 	'ð 	'ˆAÝ”	×!Ò! # r°Ð!Ñ5Ô5ˆAÝ˜JŸNšN¨1Ñ-Ô-¨x¸©zØ!%ð'ñ 'ô 'ð 'å˜JŸNšN¨1Ñ-Ô-¨x¸©zØ!%ð'ñ 'ô 'ð 'å˜JŸNšN¨1Ñ-Ô-¨x¸©zØ!%ð'ñ 'ô 'ð 'ð 'ð	'ð 	'r&   c                 óÜ  — d}t          | j        |dd¬¦  «        }t          | j        |d¬¦  «        }t          | j        |dd¬¦  «        }|                      t          j        |¦  «        ¦  «        }t          j                             d¦  «         t          d¦  «        D ]Ì}t          j                             d	dd
¬¦  «        }t          | 
                    |¦  «        | 
                    |¦  «        d¬¦  «         t          | 
                    |¦  «        | 
                    |¦  «        d¬¦  «         t          | 
                    |¦  «        | 
                    |¦  «        d¬¦  «         ŒÍd S )Nr(   r+   TrY  r[  r,   r   r  r\  r]  r^  rÔ   r¶   r_  )r   rn   rv   r   rÇ   r  r  r8  r`  r   ra  rb  s           r$   rÈ   z5TestApproxDerivativeLinearOperator.test_scalar_vector©  s�  € ØˆÝ& tÔ'=¸rØ.7Ø:>ð@ñ @ô @ˆ
õ ' tÔ'=¸rØ:>ð@ñ @ô @ˆ
å& tÔ'=¸rØ.2Ø:>ð@ñ @ô @ˆ
ð ×)Ò)­"¬-¸Ñ*;Ô*;Ñ<Ô<ˆÝ
Œ	�Š�qÑÔÐÝ�r‘”ð 	'ð 	'ˆAÝ”	×!Ò! # r°Ð!Ñ5Ô5ˆAÝ˜JŸNšN¨1Ñ-Ô-¨x¯|ª|¸A©¬Ø!%ð'ñ 'ô 'ð 'å˜JŸNšN¨1Ñ-Ô-¨x¯|ª|¸A©¬Ø!%ð'ñ 'ô 'ð 'å˜JŸNšN¨1Ñ-Ô-¨x¯|ª|¸A©¬Ø!%ð'ñ 'ô 'ð 'ð 'ð	'ð 	'r&   c           	      óZ  — t          j        ddg¦  «        }t          | j        |dd¬¦  «        }t          | j        |d¬¦  «        }t          | j        |dd¬¦  «        }|                      |¦  «        }t           j                             d¦  «         t          d	¦  «        D �]}t           j                             d
d	|j	        ¬¦  «        }t          |                     |¦  «        t          j        |                     |¦  «        ¦  «        d¬¦  «         t          |                     |¦  «        t          j        |                     |¦  «        ¦  «        d¬¦  «         t          |                     |¦  «        t          j        |                     |¦  «        ¦  «        d¬¦  «         �Œ
d S )NrÊ   r‰   r+   TrY  r[  r,   r   r  r\  r^  rÔ   r¶   r_  rË   )r   r   r   r}   r…   r  r  r8  r`  Úshaper   ra  rÇ   rb  s           r$   rÌ   z5TestApproxDerivativeLinearOperator.test_vector_scalar¾  s¥  € ÝŒX�u˜d�mÑ$Ô$ˆÝ& tÔ'=¸rØ.7Ø:>ð@ñ @ô @ˆ
õ ' tÔ'=¸rØ:>ð@ñ @ô @ˆ
å& tÔ'=¸rØ.2Ø:>ð@ñ @ô @ˆ
ð ×)Ò)¨"Ñ-Ô-ˆÝ
Œ	�Š�qÑÔÐÝ�r‘”ð 	'ñ 	'ˆAÝ”	×!Ò! # r°´Ð!Ñ9Ô9ˆAÝ˜JŸNšN¨1Ñ-Ô-­r¬}¸X¿\º\È!¹_¼_Ñ/MÔ/MØ!%ð'ñ 'ô 'ð 'å˜JŸNšN¨1Ñ-Ô-­r¬}¸X¿\º\È!¹_¼_Ñ/MÔ/MØ!%ð'ñ 'ô 'ð 'å˜JŸNšN¨1Ñ-Ô-­r¬}¸X¿\º\È!¹_¼_Ñ/MÔ/MØ!%ð'ñ 'ô 'ð 'ñ 'ð	'ð 	'r&   c                 óê  — t          j        ddg¦  «        }t          | j        |dd¬¦  «        }t          | j        |d¬¦  «        }t          | j        |dd¬¦  «        }|                      |¦  «        }t           j                             d¦  «         t          d	¦  «        D ]Ñ}t           j                             d
d	|j	        ¬¦  «        }t          |                     |¦  «        |                     |¦  «        d¬¦  «         t          |                     |¦  «        |                     |¦  «        d¬¦  «         t          |                     |¦  «        |                     |¦  «        d¬¦  «         ŒÒd S )NrÒ   rÓ   r+   TrY  r[  r,   r   r  r\  r^  rÔ   r¶   rµ   rË   )r   r   r   r‹   r–   r  r  r8  r`  re  r   ra  rb  s           r$   rÖ   z5TestApproxDerivativeLinearOperator.test_vector_vectorÓ  sn  € ÝŒX�v˜s�mÑ$Ô$ˆÝ& tÔ'=¸rØ.7Ø:>ð@ñ @ô @ˆ
õ ' tÔ'=¸rØ:>ð@ñ @ô @ˆ
å& tÔ'=¸rØ.2Ø:>ð@ñ @ô @ˆ
ð ×)Ò)¨"Ñ-Ô-ˆÝ
Œ	�Š�qÑÔÐÝ�r‘”ð 	Kð 	KˆAÝ”	×!Ò! # r°´Ð!Ñ9Ô9ˆAÝ˜JŸNšN¨1Ñ-Ô-¨x¯|ª|¸A©¬ÀTÐJÑJÔJÐJÝ˜JŸNšN¨1Ñ-Ô-¨x¯|ª|¸A©¬ÀTÐJÑJÔJÐJÝ˜JŸNšN¨1Ñ-Ô-¨x¯|ª|¸A©¬ÀTÐJÑJÔJÐJÐJð		Kð 	Kr&   c           	      ó’   — t          j        ddg¦  «        }t          t          t          | j        |ddt           j        f¬¦  «         d S )NrÒ   rÓ   r+   r   ré   )r   r   rÙ   rÛ   r   r‹   r@   )rB   rC   s     r$   Útest_exceptionz1TestApproxDerivativeLinearOperator.test_exceptionå  sN   € ÝŒX�v˜s�mÑ$Ô$ˆÝ•jÕ"3ØÔ,¨bØ&°µ2´6¨{ð	<ñ 	<ô 	<ð 	<ð 	<ð 	<r&   N)rW   rX   rY   rc   rh   rn   rv   r}   r…   r‹   r–   rÀ   rÈ   rÌ   rÖ   rh  rZ   r&   r$   rO  rO  m  sÝ   € € € € € ðð ð ðð ð ð?ð ?ð ?ðIð Ið Ið2ð 2ð 2ðð ð ðð ð ðð ð ð'ð 'ð 'ð*'ð 'ð 'ð*'ð 'ð 'ð*Kð Kð Kð$<ð <ð <ð <ð <r&   rO  c                  óp  — d„ } t          | ddgdd¬¦  «        }t          |ddg¦  «         t          | ddgdd¬¦  «        }t          |ddg¦  «         t          | ddgdddg¬¦  «        }t          |ddg¦  «         t          | ddgdddg¬¦  «        }t          |ddg¦  «         t          | ddgdddg¬¦  «        }t          |ddg¦  «         t          | ddgddt          j         df¬	¦  «        }t          |ddg¦  «         t          | ddgdddt          j        f¬	¦  «        }t          |ddg¦  «         d S )
Nc                 óz   — t          j        | d         dz   ¦  «         t          j        | d         dz   ¦  «        z   S ry   )r   rO   r  s    r$   r  z"test_absolute_step_sign.<locals>.fõ  s4   € Ý”�q˜”t˜a‘xÑ Ô Ð ¥2¤6¨!¨A¬$°©(Ñ#3Ô#3Ñ3Ð3r&   rL   r+   r¤   rÃ   rà   rš   rò   )r4   rÄ   rä   )r   r   r   r@   )r  Úgrads     r$   Útest_absolute_step_signrl  ì  s¯  € ð4ð 4ð 4õ ˜Q  R °ÀTÐJÑJÔJ€DÝ�D˜4 ˜+Ñ&Ô&Ð&õ ˜Q  R °ÀUÐKÑKÔK€DÝ�D˜3 ˜+Ñ&Ô&Ð&õ Ø	ˆB�ˆ8˜I°°t°ðñ ô €Dõ �D˜4 ˜+Ñ&Ô&Ð&õ Ø	ˆB�ˆ8˜I°°u°ðñ ô €Dõ �D˜4 ˜,Ñ'Ô'Ð'ÝØ	ˆB�ˆ8˜I°¸°ðñ ô €Dõ �D˜3 ˜*Ñ%Ô%Ð%õ Ø	ˆB�ˆ8˜I°Ý”�˜ˆ}ðñ ô €Dõ �D˜3 ˜+Ñ&Ô&Ð&åØ	ˆB�ˆ8˜I°¸rÅ2Ä6¸lðñ ô €Dõ �D˜4 ˜+Ñ&Ô&Ð&Ð&Ð&r&   c                  óà  — g d¢} t          j        g d¢¦  «        }t          j        t           j        ¦  «        j        }|dz  |dz  |dz  dœ}t          j        d¦  «        }| D ]°}||         }t          j        ||dz  |dz  |t          j        |d         ¦  «        z  g¦  «        }t          d |||¦  «        }t          ||¦  «         | dk                         t          ¦  «        dz  d	z
  }	t          d | ||¦  «        }t          ||	|z  ¦  «         Œ±t          j        g d
¢¦  «        }t          j        |d         |d         z  |d         |d         dz  |d         t          j        |d         ¦  «        z  g¦  «        }t          |||d¦  «        }t          ||¦  «         | dk                         t          ¦  «        dz  d	z
  }	t          || |d¦  «        }t          ||	|z  ¦  «         d S )Nr*   )rÔ   r   r   g     jø@r(   r)   rš   r   r   r   r   )rM   r   r  rþ   r+   )
r   r   r-   r.   r/   rO   r   r   r  Úfloat)
ÚmethodsrC   r2   r3   rØ   r4   rÎ   Úcorrect_steprÄ   Úsign_x0s
             r$   Útest__compute_absolute_steprr  !  s  € à*Ð*Ð*€Gå	ŒÐ#Ð#Ð#Ñ	$Ô	$€Bå
Œ(•2”:Ñ
Ô
Ô
"€Cà˜‘8Ø˜‘:Ø�3‰hðð €Mõ
 
Œ�#‰Œ€Bàð :ð :ˆØ  Ô(ˆÝ”x Ø!)¨B¡Ø!)¨B¡Ø!)­B¬F°2°a´5©M¬MÑ!9ð!;ñ <ô <ˆõ
 *¨$°°B¸Ñ?Ô?ˆÝ˜ ,Ñ/Ô/Ð/à�3˜!’8×#Ò#¥EÑ*Ô*¨QÑ.°Ñ2ˆÝ)¨$°°°R¸Ñ@Ô@ˆÝ˜ '¨LÑ"8Ñ9Ô9Ð9Ð9õ ŒxÐ)Ð)Ð)Ñ*Ô*€HÝ”8˜X aœ[¨2¨a¬5Ñ0Ø*¨9Ô5Ø% aœ[¨2Ñ-Ø% aœ[­2¬6°"°Q´%©=¬=Ñ8ð:ñ ;ô ;€Lõ
 & h°°B¸	ÑBÔB€HÝ�H˜lÑ+Ô+Ð+àˆs�aŠx×Ò¥Ñ&Ô&¨Ñ*¨QÑ.€GÝ% h°°°R¸ÑCÔC€HÝ�H˜g¨Ñ4Ñ5Ô5Ð5Ð5Ð5r&   )r°   Ú	itertoolsr   Únumpyr   Únumpy.testingr   r   r   Úpytestr   rÙ   Úscipy.sparser   r	   r
   Úscipy.optimize._numdiffr   r   r   r   r   r   r%   r5   r7   r\   r$  rO  rl  rr  rZ   r&   r$   ú<module>ry     sÖ  ðØ €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø *Ð *Ð *Ð *Ð *Ð *à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ð<ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð
%ð %ð %ð8!
ð !
ð !
ðHG9ð G9ð G9ð G9ð G9ñ G9ô G9ð G9ðTv!ð v!ð v!ð v!ð v!ñ v!ô v!ð v!ðrX!ð X!ð X!ð X!ð X!ñ X!ô X!ð X!ðv|<ð |<ð |<ð |<ð |<ñ |<ô |<ð |<ð~2'ð 2'ð 2'ðj(6ð (6ð (6ð (6ð (6r&   