Ë
    âQ(hg~  ã                   óÜ   — 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y)é    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        ||«       y )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           ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test__numdiff.pyÚtest_group_columnsr%      sÂ   € âÚÚÚÚÚÚð€Iô —j‘j¤*¬j¼*ÐEò 
*ˆ	Ù�iÓ ˆÜ—	‘	˜!“ˆÜ—h‘hÒ1Ó2ˆÜ˜q %Ó(ˆÜ�V˜[Ô)â"ˆÜ—h‘hÒ1Ó2ˆÜ˜q %Ó(ˆÜ�V˜[Õ)ð
*ô ˜QÓ€HÜ˜QÓ€HÜ�˜8Õ$ó    c                  ó,  — t        j                  t         j                  «      j                  } | dz  | dz  | dz  dœ}dD ]n  }t	        t        t         j                  t         j                  |«      ||   «       t	        t        t         j                  t         j                  |«      ||   «       Œp t        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                  |«      ||   «       Œ¦ y )Nç      à?çUUUUUUÕ?©ú2-pointz3-pointÚcs)r   ÚfinfoÚfloat64Úepsr   r   Ú
complex128Úfloat32)ÚEPSÚrelative_stepÚmethods      r$   Útest_correct_fp_epsr5   +   sH  € ä
�(‰(”2—:‘:Ó
×
"Ñ
"€CØ # S¡Ø" S™zØ ™8ñ%€Mð /ò 
ˆÜÜœBŸJ™J¬¯
©
°FÓ;Ø˜&Ñ!ô	#ô 	ÜœBŸM™M¬2¯=©=¸&ÓAØ˜&Ñ!õ	
ð	
ô �(‰(”2—:‘:Ó
×
"Ñ
"€CØ # S¡Ø" S™zØ ™8ñ%€Mð /ò 
ˆÜÜœBŸJ™J¬¯
©
°FÓ;Ø˜&Ñ!ô	
ô 	ÜœBŸJ™J¬¯
©
°FÓ;Ø˜&Ñ!ô	
ô 	ÜœBŸJ™J¬¯
©
°FÓ;Ø˜&Ñ!õ	
ñ
r&   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestAdjustSchemeToBoundsc                 ó  — t        j                  d«      }t        j                  dd«      }t        j                  |«      }t        j                  |«      }|j	                  t         j
                   «       |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                  | «      «       y )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‰X�a‹[ˆÜ�G‰G�A�tÓˆÜ—M‘M "Ó%ˆ	Ü—M‘M "Ó%ˆ	Ø�‰œŸ™�wÔØ�‰”r—v‘vÔä 8Ø��1�i ¨Ió!7Ñˆ
�Iä˜
 AÔ&Ü”—‘�yÓ!Ô"ä 8Ø��1�i ¨Ió!7Ñˆ
�Iä˜
 AÔ&Ü”—‘�yÓ!Ô"ä 8Ø��1�i ¨Ió!7Ñˆ
�Iä˜
 AÔ&Ü”—‘˜	�zÓ"Ô#ä 8Ø��1�i ¨Ió!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
¢«      «       y )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   s  € Ü�X‰XÒ(Ó)ˆÜ�g‰g�a‹jˆ[ˆÜ�W‰W�Q‹ZˆÜ�H‰H’ZÓ  4Ñ'ˆä0°°Q¸¸9ÀbÈ"ÓM‰ˆ
�AÜ˜
 AÔ&ä0°°Q¸¸9ÀbÈ"ÓM‰ˆ
�AÜ˜
¤B§H¡HªZÓ$8¸4Ñ$?Ô@ä 8Ø��1�i  Ró!)Ñˆ
�Iä˜
¤B§F¡F¨1£IÔ.Ü”—‘˜	�zÓ"Ô#ä 8Ø��1�i  Ró!)Ñˆ
�Iä˜
¤B§H¡HªZÓ$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«      «       y )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‰X�u˜e�nÓ%ˆÜ�X‰X�t˜T�lÓ#ˆÜ�X‰X�s˜D�kÓ"ˆÜ�H‰H�d˜D�\Ó"ˆä0°°Q¸¸9ÀbÈ"ÓM‰ˆ
�AÜ˜
¤B§H¡H¨d°E¨]Ó$;Ô<ä0°°Q¸¸9ÀbÈ"ÓM‰ˆ
�AÜ˜
¤B§H¡H¨e°U¨^Ó$<Ô=ä 8Ø��1�i  Ró!)Ñˆ
�Iä˜
¤B§H¡H¨d°E¨]Ó$;Ô<Ü�Y¤§¡¨%°¨Ó 7Ô8ä 8Ø��1�i  Ró!)Ñˆ
�Iä˜
¤B§H¡H¨e°V¨_Ó$=Ô>Ü�Y¤§¡¨%°¨Ó 7Õ8r&   N)Ú__name__Ú
__module__Ú__qualname__rI   rS   rV   © r&   r$   r7   r7   O   s   „ ò$ò8?ó,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%y$)'ÚTestApproxDerivativesDensec                 ó,   — t        j                  |«      S ©N©r   Úsinh©rB   Úxs     r$   Úfun_scalar_scalarz,TestApproxDerivativesDense.fun_scalar_scalarš   ó   € Ü�w‰w�q‹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    ó8   € Ü�x‰x˜˜1™˜q™¤"§&¡&¨¨1©£,´·±°q¸±t³Ð=Ó>Ð>r&   c                 ó¼   — t        j                  d|d   z  t        j                  |d   «      dz  t        j                  |d   «      g«      j	                  dd«      S ©Nr   r   éþÿÿÿrL   r   ©r   r   Úcosrm   Úreshapera   s     r$   Újac_scalar_vectorz,TestApproxDerivativesDense.jac_scalar_vector£   óN   € Ü�x‰xØ��1‘‰X”r—v‘v˜a ™d“| rÑ)¬2¯6©6°!°A±$«<Ð8ó:ß:A¹'À"Àa».ð	Ir&   c                 óp   — 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‰v�a˜‘d˜Q˜q™T‘kÓ"¤R§V¡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‰x˜˜A™œrŸv™v a›y¬"¯&©&°«)Ð4Ó5Ð5r&   c           	      óf  — 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‰xØˆa‰D”2—6‘6˜!˜A™$  1¡™+Ó&Ñ&¬¯©°°!±«Ñ5Ü�F‰F�1�Q‘4˜!˜A™$‘;Ó ! A¡$Ñ&ñ'àˆa‰D”2—6‘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´   ó`   € Ü�x‰xØˆa‰D”2—6‘6˜!˜A™$“<ÑØˆa‰D”2—6‘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»   sl   € à�bŠyÐˆyÜ�x‰xØˆa‰D”2—6‘6˜!˜A™$“<ÑØˆa‰D”2—6‘6˜!˜A™$“<ÑØˆa‰D�A‰I˜˜!™ ™Ñ$ð
ó ð 	r&   c                 óP  — 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‰xÜ�V‰V�A�a‘D‹\˜1˜Q™4¤"§&¡&¨¨1©£,Ñ.Ð/Ø�‰dˆU”R—V‘V˜A˜a™D“\Ñ!¤2§6¡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Ü�x‰xÜ�V‰V�A�a‘D‹\˜1˜Q™4¤"§&¡&¨¨1©£,Ñ.Ð/Ø�‰dˆU”R—V‘V˜A˜a™D“\Ñ!¤2§6¡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Ô   s8   € Ü�x‰xœŸ™  Q q¡T¡	Ó*¬B¯F©F°2¸¸!¹±9Ó,=Ð>Ó?Ð?r&   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×   sT   € Ü�x‰xØ”"—&‘&˜˜a ™d™Ó#Ñ# QÐ'Ø�”R—V‘V˜B  1¡™IÓ&Ñ&Ð'ð
ó ð 	r&   c                 óV   — t        j                  |«      dk  r|S t         j                  S )Nç:Œ0âŽyE>©r   rO   Únanra   s     r$   Úfun_with_nanz'TestApproxDerivativesDense.fun_with_nanÝ   s    € Ü—F‘F˜1“I Ò%ˆqÐ1¬2¯6©6Ð1r&   c                 óV   — t        j                  |«      dk  rdS t         j                  S )Nr£   ç      ð?r¤   ra   s     r$   Újac_with_nanz'TestApproxDerivativesDense.jac_with_nanà   s    € Ü—f‘f˜Q“i 4Ò'ˆsÐ3¬R¯V©VÐ3r&   c                 óz   — 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ã   s7   € Ü�x‰x˜˜1™  !¡™¤b§f¡f¨Q¨q©T°A°a±D©[Ó&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æ   so   € Ü�x‰xØˆq‰T�1�Q‘4ˆLØ�‰dˆU”R—V‘V˜A˜a™D 1 Q¡4™KÓ(Ñ(¨1¨Q©4¨%´"·&±&¸¸1¹ÀÀ!Á¹Ó2EÑ*EÐFð
ó ð 	r&   c                 ór   — t        j                  |«      j                  «       }t        j                  |«      S r^   )r   r   ÚitemÚmathrm   )rB   rb   Úxps      r$   Újac_non_numpyz(TestApproxDerivativesDense.jac_non_numpyì   s(   € ô �Z‰Z˜‹]×ÑÓ!ˆÜ�x‰x˜‹|Ðr&   c                 ó
  — d}t        | j                  |d¬«      }t        | j                  |«      }t        | j                  |d¬«      }| j                  |«      }t        ||d¬«       t        ||d¬«       t        ||d¬«       y )	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ˆ
ä& t×'=Ñ'=¸rÓBˆ
Ü& t×'=Ñ'=¸rØ.2ô4ˆ
à×)Ñ)¨"Ó-ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9r&   c                 ó  — d}t        | j                  |dd¬«      }t        | j                  |d¬«      }t        | j                  |dd¬«      }| j                  |«      }t        ||d¬«       t        ||d	¬«       t        ||d
¬«       y )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ˆ
ä& t×'=Ñ'=¸rØ07ô9ˆ
ä& t×'=Ñ'=¸rØ.2¸WôFˆ
à×)Ñ)¨"Ó-ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9r&   c                 ó0  — d}t        | j                  |d¬«      }t        | j                  |«      }t        | j                  |d¬«      }| j                  t        j                  |«      «      }t        ||d¬«       t        ||d¬«       t        ||d¬«       y )	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ˆ
ä& t×'=Ñ'=¸rÓBˆ
Ü& t×'=Ñ'=¸rØ.2ô4ˆ
à×)Ñ)¬"¯-©-¸Ó*;Ó<ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9r&   c                 ó4  — t        j                  ddg«      }t        | j                  |d¬«      }t        | j                  |«      }t        | j                  |d¬«      }| j	                  |«      }t        ||d¬«       t        ||d¬«       t        ||d	¬«       y )
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‰X�u˜d�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7ô9ˆ
ä& t×'=Ñ'=¸rÓBˆ
Ü& t×'=Ñ'=¸rØ.2ô4ˆ
à×)Ñ)¨"Ó-ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9r&   c                 óZ  — t        j                  ddg«      }t        | j                  |dd¬«      }t        | j                  |dt         j                  ¬«      }t        | j                  |dd¬«      }| j                  |«      }t        ||d¬	«       t        ||d
¬	«       t        ||d¬	«       y )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‰X�u˜d�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7À'ôKˆ
ä& t×'=Ñ'=¸rØ07Ä"Ç&Á&ôJˆ
ä& t×'=Ñ'=¸rØ.2¸WôFˆ
à×)Ñ)¨"Ó-ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9r&   c                 ó4  — t        j                  ddg«      }t        | j                  |d¬«      }t        | j                  |«      }t        | j                  |d¬«      }| j	                  |«      }t        ||d¬«       t        ||d¬«       t        ||d	¬«       y )
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‰X�v˜s�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7ô9ˆ
ä& t×'=Ñ'=¸rÓBˆ
Ü& t×'=Ñ'=¸rØ.2ô4ˆ
à×)Ñ)¨"Ó-ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9r&   c                 óÔ   — d}t        t        t        | j                  |«       | j                  t	        j
                  |«      «      }t        t        t        | j                  ||¬«       y )Nr¨   )Úf0)Úassert_raisesÚRuntimeErrorr   r�   r   rÇ   Ú
ValueError)rB   rC   rØ   s      r$   Útest_wrong_dimensionsz0TestApproxDerivativesDense.test_wrong_dimensions>  sR   € ØˆÜ”lÔ$5Ø×/Ñ/°ô	5à×&Ñ&¤r§}¡}°RÓ'8Ó9ˆÜ”jÔ"3Ø×/Ñ/°¸ö	<r&   c                 óî   — t        j                  ddg«      }t        | j                  |dd¬«      }t        | j                  |d¬«      }| j	                  |«      }t        ||d¬«       t        ||d¬«       y )	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  sm   € Ü�X‰X�t˜S�kÓ"ˆÜ& t×'=Ñ'=¸rØ.7À$ôHˆ
ä& t×'=Ñ'=¸rØ04ô6ˆ
à×)Ñ)¨"Ó-ˆÜ˜
 H°4Õ8Ü˜
 H°4Ö8r&   c                 óœ  — t        j                  ddg«      }d}d}d}d}| j                  |||¬«      }t        j                  ddg«      }| j                  |||«      }t	        | j                  |d|||ft        |¬«      ||f¬	«      }	t	        | j                  ||||ft        |¬«      ||f¬
«      }
t        |	|d¬«       t        |
|d¬«       y )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‰X�s˜C�jÓ!ˆØˆØˆØˆØˆØ×"Ñ" 2 r¨bÐ"Ó1ˆÜ—8‘8˜U D˜MÓ*ˆØ×(Ñ(¨¨R°Ó4ˆÜ&Ø×!Ñ! 2¨iÀ(Ø˜˜¤d¨b¤k¸2¸r¸(ôDˆ
ô 'Ø×!Ñ! 2°Ø˜˜¤d¨b¤k¸2¸r¸(ôDˆ
ô 	˜
 H°4Õ8Ü˜
 H°4Ö8r&   c                 ór  — 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¬«      }| j                  |«      }t        ||d	¬
«       y )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‰g�a‹jˆ[ˆÜ�W‰W�Q‹Zˆä�X‰X�t˜S�kÓ"ˆÜ”jÔ"3Ø×,Ñ,¨b¸"¸b¸õ	Cô �X‰X�t˜S�kÓ"ˆÜ$ T×%;Ñ%;¸RØ,5¸rÀ2¸hôHˆà×)Ñ)¨"Ó-ˆÜ˜ (°Ö6r&   c                 ó"  — t        j                  ddg«      }t        j                  ddg«      }t        j                  ddg«      }| j                  |«      }t        | j                  |«      }t        ||d¬«       t        | j                  ||t         j                  f¬«      }t        ||d¬«       t        | j                  |t         j                   |f¬«      }t        ||d¬«       t        | j                  |||f¬«      }t        ||d¬«       y )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‰X�s˜C�jÓ!ˆÜ�X‰X�s˜C�jÓ!ˆä�X‰X�s˜C�jÓ!ˆØ×)Ñ)¨"Ó-ˆä$ T×%;Ñ%;¸RÓ@ˆÜ˜ (°Õ6ä$ T×%;Ñ%;¸RØ-/´·±¨Lô:ˆä˜ (°Õ6ä$ T×%;Ñ%;¸RÜ.0¯f©f¨W°b¨Mô;ˆä˜ (°Õ6ä$ T×%;Ñ%;¸RØ-/°¨Hô6ˆä˜ (°Ö6r&   c                 ó°  — t        j                  ddg«      }|dz
  }|dz   }| j                  |«      }t        | j                  |d||f¬«      }t        ||d¬«       t        | j                  |dd||f¬«      }t        ||d¬«       t        | j                  |||f¬	«      }t        ||d¬«       t        | j                  |d||f¬
«      }t        ||d¬«       y )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‰X�t˜T�lÓ#ˆØ�$‰YˆØ�$‰YˆØ×)Ñ)¨"Ó-ˆÜ$Ø×"Ñ" B¨yÀ"ÀbÀôKˆä˜ (°Õ6Ü$Ø×"Ñ" B¨yØ 2 r (ô,ˆô 	˜ (°Õ6ä$Ø×"Ñ" B°°B¨xô9ˆä˜ (°Õ6Ü$Ø×"Ñ" B°¸rÀ2¸hôHˆä˜ (°Ö6r&   c                 ó¤  — d}d}d}| j                  |«      }t        | j                  |dd||f¬«      }t        | j                  |d||f¬«      }t        ||d¬«       t        ||d	¬«       d}| j                  |«      }t        | j                  |dd||f¬«      }t        | j                  |d||f¬«      }t        ||d¬«       t        ||d	¬«       y )
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š  sæ   € ØˆØˆØˆØ×$Ñ$ RÓ(ˆÜ&Ø×Ñ˜r¨)¸dØ˜�8ôˆ
ô 'Ø×Ñ˜r¨D¸"¸b¸ôCˆ
ä˜
 H°4Õ8Ü˜
 H°4Õ8àˆØ×$Ñ$ RÓ(ˆÜ&Ø×Ñ˜r¨)¸dØ˜�8ôˆ
ô 'Ø×Ñ˜r¨D¸"¸b¸ôCˆ
ä˜
 H°4Õ8Ü˜
 H°4Ö8r&   c                 ó  — d}| j                  |«      }t        | j                   |d¬«      }t        | j                   |«      }t        ||d¬«       t        ||d¬«       t        t        t        | j                   |fi t        d¬«      ¤Ž y )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Ñ'9¸2Ø.7ô9ˆ
ä& t×'9Ñ'9¸2Ó>ˆ
Ü˜
 H°4Õ8Ü˜
 H°4Õ8ô 	”iÔ!2°D×4FÑ4FÈñ 	+Ü DÔ)ó	+r&   c                 óL  ‡‡‡‡— t         j                  j                  d«       d„ Šˆfd„Št        j                  dddt         j                  ¬«      Št         j                  j                  d«      j                  t         j                  «      Št        j                  ddg«      }t        ‰|d‰‰f¬	«      }t        ‰|j                  t         j                  «      d‰‰f¬	«      } ‰|‰‰«      j                  t         j                  k(  sJ ‚t        ||d
¬«       ˆˆˆfd„}t        ||j                  t         j                  «      d¬«      }t        ||d
¬«       d„ }d„ }d„ }d„ }t         j                  t         j                  t         j                  fD ]�  }	t        j                  |	«      j                  }
t        j                  d«      j                  |	«      }t        d | ||«      d«      } ||||||
«      }t        ||d|¬«       ||«      z
  Št        ‰«      |k  rŒ�J ‚ y )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   ø€ Ù˜˜1“: ‘>Ð!r&   r   éd   ©Údtyperà   r+   )r4   râ   gü©ñÒMbP?)Úatolc                 ó�   •— | j                   t        j                  k(  sJ ‚ ‰| ‰‰«      j                  t        j                  «      S r^   )r   r   r1   Úastype)rù   rý   rb   rü   s    €€€r$   Úerr_fp32z4TestApproxDerivativesDense.test_fp.<locals>.err_fp32Ö  s6   ø€ Ø—7‘7œbŸj™jÒ(Ð(Ð(Ù�q˜!˜Q“<×&Ñ&¤r§z¡zÓ2Ð2r&   r´   c                 ó,   — t        j                  | «      S r^   ©r   r{   ©rb   s    r$   Úfz-TestApproxDerivativesDense.test_fp.<locals>.fß  ó   € Ü—6‘6˜!“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‘F˜1“I�:Ðr&   c           
      ó(  — | 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æ  sr   € à�Q‘œœRŸV™V¡D¨£HÓ-¬r¯v©v±d¸2À¹6³lÓ/CÓDÑDˆBð �q‘œ3œrŸv™v¡a¨£e›}¬b¯f©f±Q°r¸A±v³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‰K˜˜1˜c¬¯©Ô4ˆÜ�I‰I×Ñ˜SÓ!×(Ñ(¬¯©Ó4ˆÜ�X‰X�t˜T�lÓ#ˆä$ S¨"°YÀaÈÀVÔLˆô # 3¨¯	©	´"·*±*Ó(=Ø*3¸1¸a¸&ôBˆá�2�q˜!‹}×"Ñ"¤b§j¡jÒ0Ð0Ð0Ü˜ ¨tÕ4ö	3ô # 8¨R¯Y©Y´r·z±zÓ-BØ*3ô5ˆä˜ ¨tÕ4ò	ò	ò	ò	ô —j‘j¤"§*¡*¬b¯j©jÐ9ò 	#ˆEÜ—(‘(˜5“/×%Ñ%ˆCÜ—‘˜#“×%Ñ% eÓ,ˆBÜ& t¨R±°2³¸	ÓBˆAÙ˜Q  A t¨SÓ1ˆDÜ# A r°)Ø-.ô0Ù23°B³%ñ8ˆCä�s“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(  «       y )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‰X�u˜b�kÓ"ˆÜ# D×$:Ñ$:Ø$(×$:Ñ$:¸Bó@ˆä�˜4‘Ô Ü# D×$:Ñ$:Ø$(×$:Ñ$:¸Bó@ˆä�˜4‘Ô ä�X‰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  «       y )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	  sG   € Ü�X‰X�u˜b�kÓ"ˆÜ# D×$CÑ$CØ$(×$CÑ$CØ$&Ø,1°2¨;ô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\   ™   s´   „ òòò?òIò2ò6òòòòòó@óò2ò4ò<òòò
:ò:ò
:ò
:ò:ò
:ò<ò9ò9ò$7ò7ò,7ò(9ò.+ò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
y	)
ÚTestApproxDerivativeSparsec                 ó  — t         j                  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                  | j                  «      | _
        y )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™i¨¯©Ó/Ñ/Ñ0ˆŒØ˜œRŸY™Y t§v¡vÓ.Ñ.Ñ/ˆŒÜ—(‘(˜4Ÿ6™6Ó"ˆŒØ  D§G¡G©C¨a¨C¡LÑ0ˆ�‰‘�!�‰Ø! T§W¡W¨Q¨T°¨T¡]Ñ2ˆ�‰���1�‰à—h‘h˜tŸw™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  sM   € ØˆaˆbˆE�1‰H�q˜˜"�v˜q‘yÑ ˆÜ�y‰y˜!˜Q ™U˜Ó$¤r§y¡y°!°a±%¸°Ó'<Ñ<Ð<r&   c                 ó\  — |j                   }t        j                  ||f«      }d|d   z  |d<   d|d   dz  z  |d<   t        d|dz
  «      D ]D  }d||dz
     z  |||dz
  f<   d	||   dz  z  d
||   z  z
  |||f<   d||dz      dz  z  |||dz   f<   ŒF d	|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‰FˆÜ�H‰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ð	(ð ˜˜"™˜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  sr   € Ü�H‰H�a˜�V¤3Ô'ˆØˆˆ$‰Øˆˆ$‰Ü�q˜!˜a™%“ò 	#ˆAØ!"ˆAˆa��Q‘˜˜A™�ˆoÒð	#àˆˆ&‰	Øˆˆ&‰	àˆr&   c           	      óN  — | j                  | j                  «      }t        j                  | j                  «      }t	        ||«      }t        j
                  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%                  «       | j&                  d¬«       t        j(                  | j                  d«      }
|
d d d…xx   dz  cc<   t        | j                  | j                  ||
||f¬«      }	t#        |	j%                  «       | j&                  d	¬«       Œì y )
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<  sE  € Ø�N‰N˜4Ÿ6™6Ó"ˆÜ—	‘	˜$Ÿ&™&Ó!ˆÜ   EÓ*ˆÜ
�	‰	×Ñ˜%Ô Ü   EÓ*ˆä$+Ú,¨x¸Ð.BÜ—&‘&�˜$Ÿ'™'Ð"¤R§V¡V¨T¯W©WÐ$5ó%7ò 	AÑ ˆF�F˜A˜qô " $§(¡(¨D¯G©G¸FØ*+¨Q¨¸1¸f¸+ôGˆAä”J˜q¤*Ó-Ô.Ü˜AŸI™I›K¨¯©¸4Õ@ä—|‘| D§G¡G¨TÓ2ˆHØ‘S�q�S‹M˜RÑ‹MÜ! $§(¡(¨D¯G©G¸FØ+3¸qÀ&¸kôKˆAä˜AŸI™I›K¨¯©¸4Ö@ñ	Ar&   c                 óÊ   — | j                  | j                  «      }t        | j                  | j                  |¬«      }t        |j                  «       | j                  d¬«       y )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  s@   € Ø�N‰N˜4Ÿ6™6Ó"ˆÜ˜dŸh™h¨¯©¸!Ô<ˆÜ˜Ÿ	™	› T§[¡[°tÖ<r&   c                 óz  — t        j                  | j                  | j                  ft        ¬«      }t        j                  | j                  «      }dD ]f  }t        | j                  | j                  |¬«      }t        | j                  | j                  ||f|¬«      }t        ||j                  «       dd¬«       Œh y )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‘G˜TŸV™V T§V¡VÐ,´CÔ8ˆ	Ü—‘˜4Ÿ6™6Ó"ˆØ2ò 	4ˆFÜ'¨¯©°$·'±'À&ÔIˆGÜ(Ø—‘˜$Ÿ'™'¨Y¸Ð,?ÈôPˆHä˜G X×%5Ñ%5Ó%7Ø!&¨Uö4ñ		4r&   c                 ó,  ‡ — ˆ fd„}t        ‰ j                  |‰ j                  ‰ j                  ‰ j                  f¬«      }t        |dk  «       t        ‰ j                  |‰ j                  ‰ j                  ‰ j                  f¬«      }t        |dk  «       y )Nc                 ó8   •— t        ‰j                  | «      «      S r^   )r   r)  )rb   rB   s    €r$   r)  z=TestApproxDerivativeSparse.test_check_derivative.<locals>.jaca  s   ø€ Ü˜dŸh™h q›kÓ*Ð*r&   rè   r¸   )r   r/  rC   rP   rQ   r   )rB   r)  r  s   `  r$   r   z0TestApproxDerivativeSparse.test_check_derivative`  sr   ø€ ô	+ô $ D§H¡H¨c°4·7±7Ø,0¯G©G°T·W±WÐ+=ô?ˆä�˜4‘Ô ä# D§H¡H¨c°4·7±7Ø,0¯G©G°T·W±WÐ+=ô?ˆä�˜4‘Õ r&   N)rW   rX   rY   r+  r/  r)  r   rE  rG  rK  r   rZ   r&   r$   r$  r$    s+   „ ò	(ò=òò	òAò*=ò
4ó
!r&   r$  c                   óZ   — 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y)Ú"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«      j	                  dd«      S rq   rs   ra   s     r$   rv   z4TestApproxDerivativeLinearOperator.jac_scalar_vectorx  rw   r&   c                 óp   — t        j                  |d   |d   z  «      t        j                  |d   «      z  S ry   rz   ra   s     r$   r}   z4TestApproxDerivativeLinearOperator.fun_vector_scalar|  r~   r&   c           	      óf  — 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                 óP  — 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                 ó   — d}t        | j                  |dd¬«      }t        | j                  |d¬«      }t        | j                  |dd¬«      }| j                  |«      }t        j                  j                  d«       t        d«      D ]„  }t        j                  j                  d	dd
¬«      }t        |j                  |«      ||z  d¬«       t        |j                  |«      ||z  d¬«       t        |j                  |«      ||z  d¬«       Œ† y )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”  sû   € ØˆÜ& t×'=Ñ'=¸rØ.7Ø:>ô@ˆ
ô ' t×'=Ñ'=¸rØ:>ô@ˆ
ä& t×'=Ñ'=¸rØ.2Ø:>ô@ˆ
ð ×)Ñ)¨"Ó-ˆÜ
�	‰	�‰�qÔÜ�r“ò 	'ˆAÜ—	‘	×!Ñ! # r°Ð!Ó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¬«      }| j                  t        j                  |«      «      }t        j
                  j                  d«       t        d«      D ]¨  }t        j
                  j                  d	dd
¬«      }t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       Œª y )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ˆAÜ˜JŸN™N¨1Ó-¨x¯|©|¸A«Ø!%õ'ä˜JŸN™N¨1Ó-¨x¯|©|¸A«Ø!%õ'ä˜JŸN™N¨1Ó-¨x¯|©|¸A«Ø!%ö'ñ	'r&   c           	      ó  — t        j                  ddg«      }t        | j                  |dd¬«      }t        | j                  |d¬«      }t        | j                  |dd¬«      }| j	                  |«      }t         j
                  j                  d«       t        d	«      D ]ë  }t         j
                  j                  d
d	|j                  ¬«      }t        |j                  |«      t        j                  |j                  |«      «      d¬«       t        |j                  |«      t        j                  |j                  |«      «      d¬«       t        |j                  |«      t        j                  |j                  |«      «      d¬«       Œí y )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¾  s3  € Ü�X‰X�u˜d�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7Ø:>ô@ˆ
ô ' t×'=Ñ'=¸rØ:>ô@ˆ
ä& t×'=Ñ'=¸rØ.2Ø:>ô@ˆ
ð ×)Ñ)¨"Ó-ˆÜ
�	‰	�‰�qÔÜ�r“ò 	'ˆAÜ—	‘	×!Ñ! # r°·±Ð!Ó9ˆAÜ˜JŸN™N¨1Ó-¬r¯}©}¸X¿\¹\È!»_Ó/MØ!%õ'ä˜JŸN™N¨1Ó-¬r¯}©}¸X¿\¹\È!»_Ó/MØ!%õ'ä˜JŸN™N¨1Ó-¬r¯}©}¸X¿\¹\È!»_Ó/MØ!%ö'ñ	'r&   c                 ó¦  — t        j                  ddg«      }t        | j                  |dd¬«      }t        | j                  |d¬«      }t        | j                  |dd¬«      }| j	                  |«      }t         j
                  j                  d«       t        d	«      D ]²  }t         j
                  j                  d
d	|j                  ¬«      }t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       Œ´ y )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Ó  s  € Ü�X‰X�v˜s�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7Ø:>ô@ˆ
ô ' t×'=Ñ'=¸rØ:>ô@ˆ
ä& t×'=Ñ'=¸rØ.2Ø:>ô@ˆ
ð ×)Ñ)¨"Ó-ˆÜ
�	‰	�‰�qÔÜ�r“ò 	KˆAÜ—	‘	×!Ñ! # r°·±Ð!Ó9ˆAÜ˜JŸN™N¨1Ó-¨x¯|©|¸A«ÀTÕJÜ˜JŸN™N¨1Ó-¨x¯|©|¸A«ÀTÕJÜ˜JŸN™N¨1Ó-¨x¯|©|¸A«ÀTÖJñ		Kr&   c           	      ó˜   — t        j                  ddg«      }t        t        t        | j
                  |ddt         j                  f¬«       y )NrÒ   rÓ   r+   r   ré   )r   r   rÙ   rÛ   r   r‹   r@   )rB   rC   s     r$   Útest_exceptionz1TestApproxDerivativeLinearOperator.test_exceptionå  s9   € Ü�X‰X�v˜s�mÓ$ˆÜ”jÔ"3Ø×,Ñ,¨bØ&°´2·6±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  sE   „ òòò?òIò2òòòò'ò*'ò*'ò*Kó$<r&   rO  c                  ó  — 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«       y )
Nc                 ór   — 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õ  s2   € Ü—‘�q˜‘t˜a‘xÓ Ð ¤2§6¡6¨!¨A©$°©(Ó#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ô ˜Q  R °ÀTÔJ€DÜ�D˜4 ˜+Ô&ô ˜Q  R °ÀUÔ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Á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\  j                  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\  j                  t        «      dz  d	z
  }	t        || |d«      }t        ||	|z  «       y )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‘x Ø!)¨B¡Ø!)¨B¡Ø!)¬B¯F©F°2°a±5«MÑ!9ð!;ó <ˆô
 *¨$°°B¸Ó?ˆÜ˜ ,Ô/à�3˜!‘8×#Ñ#¤EÓ*¨QÑ.°Ñ2ˆÜ)¨$°°°R¸Ó@ˆÜ˜ '¨LÑ"8Õ9ð:ô �x‰xÒ)Ó*€HÜ—8‘8˜X a™[¨2¨a©5Ñ0Ø*¨9Ñ5Ø% a™[¨2Ñ-Ø% a™[¬2¯6©6°"°Q±%«=Ñ8ð:ó ;€Lô
 & h°°B¸	ÓB€HÜ�H˜lÔ+àˆs�a‰x×Ñ¤Ó&¨Ñ*¨QÑ.€GÜ% h°°°R¸ÓC€HÜ�H˜g¨Ñ4Õ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     sq   ðÛ Ý ã ß @Ñ @Ý *ç ;Ñ ;÷<÷ <ò
%ò8!
÷HG9ñ G9÷Tv!ñ v!÷rX!ñ X!÷v|<ñ |<ò~2'ój(6r&   