Ë
    ÏÍ:jG�  ã                   ó  — 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	Z	d dl	m
Z d dlmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZ d d	l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)Ú
MapWrapperÚ_ScalarFunctionWrapper)Ú	csr_arrayÚ	csc_arrayÚ	lil_array)Úxp_result_type)Ú_adjust_scheme_to_boundsÚapprox_derivativeÚcheck_derivativeÚgroup_columnsÚ_eps_for_methodÚ_compute_absolute_step©Úrosenc                  ó¾  — 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           úw/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/optimize/tests/test__numdiff.pyÚtest_group_columnsr*      sÂ   € âÚÚÚÚÚÚð€Iô —j‘j¤)¬Y¼	ÐBò 
*ˆ	Ù�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-pointú3-pointÚcs)r   ÚfinfoÚfloat64Úepsr   r   Ú
complex128Úfloat32)ÚEPSÚrelative_stepÚmethods      r)   Útest_correct_fp_epsr;   /   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_boundsT   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   rR   r   rA   )FTT)	r   r    Úonesr   r   Úabsr   rG   r   )rH   rI   ÚlbÚubrJ   rM   Ú_rN   s           r)   Útest_with_boundz(TestAdjustSchemeToBounds.test_with_boundp   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š™™™™™©?rQ   g¸…ëQ¸ž?çš™™™™™¹¿r   r@   g¸…ëQ¸®¿r   gš™™™™™™?rA   FTg¸…ëQ¸Ž?g¸…ëQ¸Ž¿)r   r    r   r   r   )rH   rV   rW   rI   rJ   rM   rX   rN   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__rO   rY   r\   © r+   r)   r=   r=   S   s   „ ò$ò8?ó,9r+   r=   c                   ól  — 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ej2                  j5                  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'ej2                  jQ                  d$e)jT                  e)jV                  e)jX                  f«      ej2                  jQ                  d%e)jT                  e)jV                  e)jX                  f«      ej2                  jQ                  d&d'd(g«      d)„ «       «       «       Z-d*„ Z.d+„ Z/y,)/ÚTestApproxDerivativesDensec                 ó,   — t        j                  |«      S ©N©r   Úsinh©rH   Úxs     r)   Úfun_scalar_scalarz,TestApproxDerivativesDense.fun_scalar_scalarž   ó   € Ü�w‰w�q‹zÐr+   c                 ó,   — t        j                  |«      S rd   ©r   Úcoshrg   s     r)   Újac_scalar_scalarz,TestApproxDerivativesDense.jac_scalar_scalar¡   rj   r+   c                 ó–   — t        j                  |d   dz  t        j                  |d   «      t        j                  |d   «      g«      S ©Nr   r   ©r   r    ÚtanÚexprg   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   éþÿÿÿrR   r   ©r   r    Úcosrs   Úreshaperg   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Úlogrg   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   rq   rg   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    rz   r‚   r�   rg   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�   rz   rg   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�   ©rH   rh   Ú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�   rg   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 r   ©r   r    rs   ©rH   rh   Ú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 r   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   rU   Únanrg   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ª   rg   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 r   )r   r    rz   rg   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�   rg   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 rd   )r   r   ÚitemÚmathrs   )rH   rh   Ú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®   r0   ©r:   r2   ç�íµ ÷Æ°>©Úrtolç•Ö&è.>çê-�™—q=©r   ri   rn   r   ©rH   rI   Ú
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®   r0   çÛ"•“\ÿO>©r:   Úabs_step)rÊ   r2   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                 ó€  — d}t        d«      5 }t        | j                  |d|¬«      }d d d «       t        | j                  |t        ¬«      }t        | j                  |dd ¬«      }| j	                  t        j                  |«      «      }t        |d¬«       t        ||d	¬«       t        ||d
¬«       y # 1 sw Y   Œ�xY w)Nr-   r   r0   ©r:   Úworkers)rÎ   r2   r»   r¼   r¾   r¿   )r   r   rt   Úmapr|   r   Ú
atleast_1dr   )rH   rI   ÚmapperrÂ   rÃ   rÄ   rÅ   s          r)   Útest_scalar_vectorz-TestApproxDerivativesDense.test_scalar_vector  s°   € ØˆÜ˜‹]ð 	M˜fÜ*¨4×+AÑ+AÀ2Ø2;ÀVôMˆJ÷	Mô ' t×'=Ñ'=¸rÌ3ÔOˆ
Ü& t×'=Ñ'=¸rØ.2¸DôBˆ
à×)Ñ)¬"¯-©-¸Ó*;Ó<ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9÷	Mð 	Mús   ŽB4Â4B=g      @c                 óÄ  — g d¢}t        d«      5 }t        t        |d|d¬«      \  }}t        t        ||d¬«      \  }}d d d «       t        t        |ddd¬«      \  }}t        t        «      }	t        |	|dd¬«      \  }
}t	        |d	   |	j
                  «       d
|	_        t        |	|d¬«      \  }}t	        |d	   |	j
                  «       d
|	_        t        |	|dd¬«      \  }}t	        |d	   |	j
                  «       t	        d	   |d	   «       t	        d	   |d	   «       t	        |d	   |d	   «       t	        |
«       t	        |«       t	        ||«       y # 1 sw Y   �ŒxY w)N)r-   g      ø?ç       @r   r0   T)r:   rÎ   Úfull_output)rÎ   rÕ   r2   )r:   rÕ   Únfevr   )rÕ   )r   r   r   r	   r   rÖ   )rH   rI   rÑ   Úmd2Úmdct2Úmd3Úmdct3Úmd4Úmdct4ÚsfrÚd2Údct2Úd3Údct3Úd4Údct4s                   r)   Ú!test_workers_evaluations_and_nfevz<TestApproxDerivativesDense.test_workers_evaluations_and_nfev  sY  € ò ˆÜ˜‹]ð 	M˜fÜ*¬5°"Ø2;ÀVØ7;ô=‰JˆC�ô +¬5°"Ø39ÀtôM‰JˆC�÷		Mô '¤u¨bØ.2¸AØ37ô9‰
ˆˆUô %¤UÓ+ˆÜ$ S¨"°YÈDÔQ‰ˆˆDÜ�T˜&‘\ 3§8¡8Ô,ØˆŒÜ$ S¨"¸$Ô?‰ˆˆDÜ�T˜&‘\ 3§8¡8Ô,ØˆŒÜ$ S¨"°TÀtÔL‰ˆˆDÜ�T˜&‘\ 3§8¡8Ô,ä�U˜6‘] D¨¡LÔ1Ü�U˜6‘] D¨¡LÔ1Ü�U˜6‘] D¨¡LÔ1ä�S˜"ÔÜ�S˜"ÔÜ�S˜"Õ÷9	Mñ 	Mús   �.EÅE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�   r0   rº   r2   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�   r0   rÈ   rÉ   )rÊ   Úrel_stepr2   r»   r¼   çßA:ÜÅ)>r¿   )r   r    r   rƒ   rF   r‹   r   rÁ   s         r)   Útest_vector_scalar_abs_stepz6TestApproxDerivativesDense.test_vector_scalar_abs_stepL  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                 óv  — t        j                  ddg«      }t        | j                  |d¬«      }t        | j                  |«      }t	        d«      5 }t        | j                  |d|¬«      }d d d «       | j                  |«      }t        ||d¬	«       t        ||d
¬	«       t        |d¬	«       y # 1 sw Y   ŒExY w)Nç      YÀçš™™™™™É?r0   rº   r   r2   rÍ   çñhãˆµøä>r¼   r»   r¿   )r   r    r   r‘   r   rœ   r   )rH   rI   rÂ   rÃ   rÑ   rÄ   rÅ   s          r)   Útest_vector_vectorz-TestApproxDerivativesDense.test_vector_vectorZ  s¯   € Ü�X‰X�v˜s�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7ô9ˆ
ä& t×'=Ñ'=¸rÓBˆ
Ü˜‹]ð 	H˜fÜ*¨4×+AÑ+AÀ2Ø26ÀôHˆJ÷	Hð ×)Ñ)¨"Ó-ˆÜ˜
 H°4Õ8Ü˜
 H°4Õ8Ü˜
 H°5Ö9÷	Hð 	Hús   ÁB/Â/B8c                 óÔ   — d}t        t        t        | j                  |«       | j                  t	        j
                  |«      «      }t        t        t        | j                  ||¬«       y )Nr®   )Úf0)Úassert_raisesÚRuntimeErrorr   r‡   r   rÐ   Ú
ValueError)rH   rI   ró   s      r)   Útest_wrong_dimensionsz0TestApproxDerivativesDense.test_wrong_dimensionsg  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 )	Nr[   rS   r0   g-Cëâ6?)r:   rê   )rê   r?   r¼   )r   r    r   r‘   rœ   r   )rH   rI   rÂ   rÃ   rÅ   s        r)   Útest_custom_rel_stepz/TestApproxDerivativesDense.test_custom_rel_stepo  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®   ç      ð¿rQ   rÔ   )r¤   g�íµ ÷Æ°¾rç   r0   )r:   rê   ró   ÚargsÚkwargsÚbounds)rê   ró   rü   rý   rþ   r»   r¼   r¾   )r   r    r¥   r§   r   Údictr   )rH   rI   r£   r¤   rV   rW   ró   rê   rÅ   rÂ   rÃ   s              r)   Útest_optionsz'TestApproxDerivativesDense.test_optionsy  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®   r0   ©r:   rþ   r»   r¼   )	r   rT   r    rô   rö   r   r‘   rœ   r   )rH   rV   rW   rI   Újac_diffrÅ   s         r)   Útest_with_bounds_2_pointz3TestApproxDerivativesDense.test_with_bounds_2_point‹  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   rF   )rH   rV   rW   rI   rÅ   r  s         r)   Útest_with_bounds_3_pointz3TestApproxDerivativesDense.test_with_bounds_3_point™  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•Ö&è.!>r0   r  r»   r¼   ©r:   rê   rþ   r  ©rê   rþ   )r   r    rœ   r   r‘   r   )rH   rI   rV   rW   rÅ   r  s         r)   r\   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©   rQ   r0   r»   r	  r
  r¼   r¾   )r¯   r   r¬   r   )rH   rV   rW   rI   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®   r0   rº   r»   r¼   r©   r2   )r¸   r   r   rô   Ú	TypeErrorrÿ   )rH   rI   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                 óT  ‡‡‡‡— t         j                  j                  d«      }d„ Šˆfd„Št        j                  dddt         j                  ¬«      Š|j                  d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¬«       |j                  t         j                  k(  sJ ‚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 r   r`   )Úprh   s     r)   Úfuncz0TestApproxDerivativesDense.test_fp.<locals>.funcì  s   € Ø�Q‘4˜!˜A™$ ™(‘?Ð"r+   c                 ó   •—  ‰| |«      |z
  S rd   r`   )r  rh   Úyr  s      €r)   Úerrz/TestApproxDerivativesDense.test_fp.<locals>.errï  s   ø€ Ù˜˜1“: ‘>Ð!r+   r   éd   ©Údtype)Úsizer  rû   r0   )r:   rü   çü©ñÒMbP?)Úatolc                 ó�   •— | j                   t        j                  k(  sJ ‚ ‰| ‰‰«      j                  t        j                  «      S rd   )r  r   r7   Úastype)r  r  rh   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 rd   ©r   r�   ©rh   s    r)   Úfz-TestApproxDerivativesDense.test_fp.<locals>.f	  ó   € Ü—6‘6˜!“9Ðr+   c                 ó,   — t        j                  | «      S rd   )r   rz   r#  s    r)   Úgz-TestApproxDerivativesDense.test_fp.<locals>.g  r%  r+   c                 ó.   — t        j                  | «       S rd   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   rU   )rJ   rI   r$  r)  r8   Ú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Údefault_rngÚlinspacer4   r    r   r  r7   r  r   Úfloat16r3   r5   r   rU   )rH   ÚrngÚp0Újac_fp64Újac_fpr   r$  r'  r)  r.  r  r8   rI   rJ   r  r  r  rh   r  s                  @@@@r)   Útest_fpz"TestApproxDerivativesDense.test_fpç  sË  û€ ô �i‰i×#Ñ# AÓ&ˆò	#ô	"ô �K‰K˜˜1˜c¬¯©Ô4ˆØ�J‰J˜C¤r§z¡zˆJÓ2ˆÜ�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Ø�|‰|œrŸz™zÒ)Ð)Ð)ò	ò	ò	ò	ô —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+   Úx0_dtypeÚf0_dtyper:   r0   r1   c                 ó~  ‡— t        j                  g d¢|¬«      }ˆfd„}t        | ||«      dt         ¬«      }t        |||¬«      }|j                  |k(  sJ ‚t        ||t        j
                  d«      |¬«      }|j                  |k(  sJ ‚t        ||t        j
                  d«      |¬	«      }|j                  |k(  sJ ‚y )
N)rÔ   g      @g      @r  c                 ó&   •—  ‰t        | «      «      S rd   r   )rh   r9  s    €r)   r$  z6TestApproxDerivativesDense.test_check_dtype.<locals>.f-  s   ø€ ÙœE !›HÓ%Ð%r+   T)Úforce_floatingr·   rº   rS   )rê   r:   )rÊ   r:   )r   r    r   r   r  r2  )rH   r8  r9  r:   rh   r$  Úpromoted_typer'  s     `     r)   Útest_check_dtypez+TestApproxDerivativesDense.test_check_dtype#  s®   ø€ ô �H‰H’_¨HÔ5ˆô	&ô 'Ø	Ùˆa‹DØÜô	
ˆô ˜a ¨6Ô2ˆØ�w‰w˜-Ò'Ð'Ð'ô ˜a ¬R¯Z©Z¸«_ÀVÔLˆØ�w‰w˜-Ò'Ð'Ð'ä˜a ¬R¯Z©Z¸«_ÀVÔLˆØ�w‰w˜-Ò'Ð'Ñ'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»   rQ   r   )r   r    r   r‘   rœ   r   r±   r³   ©rH   rI   Ú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@  rA  r—   r•   )rý   r¾   )r   r    r   r˜   rŸ   r   rB  s      r)   Ú!test_check_derivative_with_kwargsz<TestApproxDerivativesDense.test_check_derivative_with_kwargsQ  sG   € Ü�X‰X�u˜b�kÓ"ˆÜ# D×$CÑ$CØ$(×$CÑ$CØ$&Ø,1°2¨;ô8ˆô 	�˜4‘Õ r+   N)r®   )rS   )0r]   r^   r_   ri   rn   rt   r|   rƒ   r‡   r‹   r‘   r˜   rœ   rŸ   r¥   r§   r¬   r¯   r±   r³   r¸   rÆ   rË   rÒ   ÚpytestÚmarkÚ	fail_slowrä   rè   rì   rñ   r÷   rù   r   r  r  r\   r  r  r7  Úparametrizer   r2  r7   r4   r>  rD  rF  r`   r+   r)   rb   rb   �   s\  „ òòò?òIò2ò6òòòòòó@óò2ò4ò<òòò
:ò:ò:ð ‡[�[×Ñ˜3Óñ ó  ð òD
:ò:ò:ò<ò9ò9ò$7ò7ò,7ò(9ò.+ò9#ðx ‡[�[×Ñ˜Z¨"¯*©*°b·j±jÀ"Ç*Á*Ð)MÓNØ‡[�[×Ñ˜Z¨"¯*©*°b·j±jÀ"Ç*Á*Ð)MÓNØ‡[�[×Ñ˜X¨	°9Ð'=Ó>ñ(ó ?ó Oó Oð(ò4ó"!r+   rb   c                   óx   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  d«      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 )Ni‚´7é2   r[   r   rS   gËPÊÿÿï?r   )r   r/  r0  r3  Únr   rV   rW   ÚemptyrI   ÚjacÚJ_true)rH   s    r)   Úsetup_methodz'TestApproxDerivativeSparse.setup_method\  sË   € Ü—9‘9×(Ñ(¨Ó3ˆŒØˆŒØ˜!œ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   rR   r   r   )r   Úhstack)rH   rh   Úes      r)   ÚfunzTestApproxDerivativeSparse.fung  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   rR   ©rR   rR   rx   ©rR   rx   )r  r   rB   Úrange)rH   rh   rO  ÚJÚis        r)   rQ  zTestApproxDerivativeSparse.jack  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   rZ  r[  r   r]  r^  )r   rB   Úintr_  )rH   rO  r#   ra  s       r)   r!   z$TestApproxDerivativeSparse.structurey  sr   € Ü�H‰H�a˜�V¤3Ô'ˆØˆˆ$‰Øˆˆ$‰Ü�q˜!˜a™%“ò 	#ˆAØ!"ˆAˆa��Q‘˜˜A™�ˆoÒð	#àˆˆ&‰	Øˆˆ&‰	àˆr+   r   c           
      óœ  — | j                  | j                  «      }t        j                  | j                  «      }t	        ||«      }| j
                  j                  |«       t	        ||«      }t        d«      5 }t        g d¢||gt        j                   | j                  gt        j                  | j                  gt        |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	¬«       Œï 	 d d d «       y # 1 sw Y   y xY w)
Nr   r/   )r:   rþ   ÚsparsityrÎ   r»   r¼   r©   rR   )r:   rê   re  rÎ   rð   )r!   rO  r   r   r   r3  Úshuffler   r   rF   rV   rW   rÏ   r   rW  rI   r   Ú
isinstancer
   r   ÚtoarrayrR  Ú	full_like)rH   r#   r$   r'   r(   rÑ   r:   r&   ÚlÚuÚmfr`  rê   s                r)   Útest_allz#TestApproxDerivativeSparse.test_all„  sx  € à�N‰N˜4Ÿ6™6Ó"ˆÜ—	‘	˜$Ÿ&™&Ó!ˆÜ   EÓ*ˆØ�‰×Ñ˜ÔÜ   EÓ*ˆä˜‹]ð 	E˜fÜ,3Ú0°8¸XÐ2FÜ—f‘f�W˜dŸg™gÐ&¬¯©°·±Ð(9¼CÀ¸=ó-Jò EÑ(�˜  1 bô & d§h¡h°·±ÀØ./°¨V¸qÀ&¸kØ.0ô2�ô œ
 1¤iÓ0Ô1Ü §	¡	£¨T¯[©[¸tÕDäŸ<™<¨¯©°Ó6�Ø™˜1˜“ Ñ#“Ü% d§h¡h°·±ÀØ/7À1ÀfÀ+Ø.0ô2�ô   §	¡	£¨T¯[©[¸tÖDñE÷	E÷ 	Eñ 	Eús   Á9D?GÇGc                 óÊ   — | j                  | j                  «      }t        | j                  | j                  |¬«      }t        |j                  «       | j                  d¬«       y )N)re  r»   r¼   )r!   rO  r   rW  rI   r   rh  rR  )rH   r#   r`  s      r)   Útest_no_precomputed_groupsz5TestApproxDerivativeSparse.test_no_precomputed_groups�  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º   )re  r:   gVçž¯Â<g¦ÖVs†ÿ<)r½   r  )
r   rT   rO  rc  r   r   rW  rI   r   rh  )rH   r!   r&   r:   ÚJ_denseÚJ_sparses         r)   Útest_equivalencez+TestApproxDerivativeSparse.test_equivalence¢  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 rd   )r
   rQ  )rh   rH   s    €r)   rQ  z=TestApproxDerivativeSparse.test_check_derivative.<locals>.jac­  s   ø€ Ü˜TŸX™X a›[Ó)Ð)r+   r  r¾   )r   rW  rI   rV   rW   r   )rH   rQ  rC  s   `  r)   rD  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)r]   r^   r_   rS  rW  rQ  r!   rG  rH  rI  rm  ro  rs  rD  r`   r+   r)   rL  rL  Z  sJ   „ ò	(ò=òò	ð ‡[�[×Ñ˜1ÓñEó ðEò0=ò
4ó
!r+   rL  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 rd   re   rg   s     r)   ri   z4TestApproxDerivativeLinearOperator.fun_scalar_scalar»  rj   r+   c                 ó,   — t        j                  |«      S rd   rl   rg   s     r)   rn   z4TestApproxDerivativeLinearOperator.jac_scalar_scalar¾  rj   r+   c                 ó–   — t        j                  |d   dz  t        j                  |d   «      t        j                  |d   «      g«      S rp   rq   rg   s     r)   rt   z4TestApproxDerivativeLinearOperator.fun_scalar_vectorÁ  ru   r+   c                 ó¼   — t        j                  d|d   z  t        j                  |d   «      dz  t        j                  |d   «      g«      j	                  dd«      S rw   ry   rg   s     r)   r|   z4TestApproxDerivativeLinearOperator.jac_scalar_vectorÄ  r}   r+   c                 óp   — t        j                  |d   |d   z  «      t        j                  |d   «      z  S r   r€   rg   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Š   rg   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�   rg   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�   rg   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 ]v  }|j                  d	dd
¬«      }t        |j                  |«      ||z  d¬«       t        |j                  |«      ||z  d¬«       t        |j                  |«      ||z  d¬«       Œx y )Nr®   r0   T©r:   Úas_linear_operator©r‚  r2   ì   nÊV)rA  éöÿÿÿ©r   ©r  rð   r¼   çñhãˆµøÔ>)
r   ri   rn   r   r/  r0  r_  Úuniformr   Údot©	rH   rI   rÂ   rÃ   rÄ   rÅ   r3  ra  r  s	            r)   rÆ   z5TestApproxDerivativeLinearOperator.test_scalar_scalarà  sø   € ØˆÜ& t×'=Ñ'=¸rØ.7Ø:>ô@ˆ
ô ' t×'=Ñ'=¸rØ:>ô@ˆ
ä& t×'=Ñ'=¸rØ.2Ø:>ô@ˆ
ð ×)Ñ)¨"Ó-ˆÜ�i‰i×#Ñ# NÓ3ˆÜ�r“ò 	'ˆAØ—‘˜C ¨$�Ó/ˆAÜ˜JŸN™N¨1Ó-¨x¸©zØ!%õ'ä˜JŸN™N¨1Ó-¨x¸©zØ!%õ'ä˜JŸN™N¨1Ó-¨x¸©zØ!%ö'ñ	'r+   c                 ór  — d}t        | j                  |dd¬«      }t        | j                  |d¬«      }t        | j                  |dd¬«      }| j                  t        j                  |«      «      }t        j
                  j                  d«      }t        d«      D ]š  }|j                  d	dd
¬«      }t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       Œœ y )Nr-   r0   Tr�  rƒ  r2   r„  rA  r…  r†  r‡  rð   r¼   rˆ  )r   rt   r|   r   rÐ   r/  r0  r_  r‰  r   rŠ  r‹  s	            r)   rÒ   z5TestApproxDerivativeLinearOperator.test_scalar_vectorõ  s  € ØˆÜ& t×'=Ñ'=¸rØ.7Ø:>ô@ˆ
ô ' t×'=Ñ'=¸rØ:>ô@ˆ
ä& t×'=Ñ'=¸rØ.2Ø:>ô@ˆ
ð ×)Ñ)¬"¯-©-¸Ó*;Ó<ˆÜ�i‰i×#Ñ# NÓ3ˆÜ�r“ò 	'ˆAØ—‘˜C ¨$�Ó/ˆ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 ]Ý  }|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�   r0   Tr�  rƒ  r2   r„  rA  r…  r‡  rð   r¼   rˆ  rç   )r   r    r   rƒ   r‹   r/  r0  r_  r‰  Úshaper   rŠ  rÐ   r‹  s	            r)   rè   z5TestApproxDerivativeLinearOperator.test_vector_scalar
  s0  € Ü�X‰X�u˜d�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7Ø:>ô@ˆ
ô ' t×'=Ñ'=¸rØ:>ô@ˆ
ä& t×'=Ñ'=¸rØ.2Ø:>ô@ˆ
ð ×)Ñ)¨"Ó-ˆÜ�i‰i×#Ñ# NÓ3ˆÜ�r“ò 	'ˆAØ—‘˜C ¨"¯(©(�Ó3ˆ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 ]¤  }|j                  d
d	|j                  ¬«      }t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       t        |j                  |«      |j                  |«      d¬«       Œ¦ y )Nrî   rï   r0   Tr�  rƒ  r2   r„  rA  r…  r‡  rð   r¼   r»   rç   )r   r    r   r‘   rœ   r/  r0  r_  r‰  rŽ  r   rŠ  r‹  s	            r)   rñ   z5TestApproxDerivativeLinearOperator.test_vector_vector  s  € Ü�X‰X�v˜s�mÓ$ˆÜ& t×'=Ñ'=¸rØ.7Ø:>ô@ˆ
ô ' t×'=Ñ'=¸rØ:>ô@ˆ
ä& t×'=Ñ'=¸rØ.2Ø:>ô@ˆ
ð ×)Ñ)¨"Ó-ˆÜ�i‰i×#Ñ# NÓ3ˆÜ�r“ò 	KˆAØ—‘˜C ¨"¯(©(�Ó3ˆ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ï   r0   r   r  )r   r    rô   rö   r   r‘   rF   )rH   rI   s     r)   Útest_exceptionz1TestApproxDerivativeLinearOperator.test_exception1  s9   € Ü�X‰X�v˜s�mÓ$ˆÜ”jÔ"3Ø×,Ñ,¨bØ&°´2·6±6¨{ö	<r+   N)r]   r^   r_   ri   rn   rt   r|   rƒ   r‹   r‘   rœ   rÆ   rÒ   rè   rñ   r‘  r`   r+   r)   rw  rw  ¹  sE   „ òòò?òIò2òòòò'ò*'ò*'ò*Kó$<r+   rw  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 r   )r   rU   r#  s    r)   r$  z"test_absolute_step_sign.<locals>.fA  s2   € Ü—‘�q˜‘t˜a‘xÓ Ð ¤2§6¡6¨!¨A©$°©(Ó#3Ñ3Ð3r+   rR   r0   r©   rÉ   rû   r®   r  )r:   rÊ   rþ   )r   r   r   rF   )r$  Úgrads     r)   Útest_absolute_step_signr•  8  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  «       t        j                  g d¢t         j                  ¬«      }t        d ||d«      }|j                  t         j                  k(  sJ ‚t        d ||d«      }|j                  t         j                  k(  sJ ‚t        j                  g d¢t         j                  ¬«      }t        d ||d«      }|j                  t         j                  k(  sJ ‚t        d ||d«      }|j                  t         j                  k(  sJ ‚t        j                  g d¢t         j                  ¬«      }t        j                  dt         j                  ¬«      }t        |||d«      }|j                  t         j                  k(  sJ ‚t        j                  g d¢t         j                  ¬«      }t        |||d«      }|j                  t         j                  k(  sJ ‚t        j                  g d¢t         j                  ¬«      }t        |||d«      }|j                  t         j                  k(  sJ ‚y )Nr/   )rð   r   r   g     jø@r-   r.   r®   r   r   r   r   )rS   r   rA  r  r0   r  r1   )rS   r   r   rN  )r  r   r   rA  )r   r    r3   r4   r5   rU   r   r   r  Úfloatr7   r  r2  )
ÚmethodsrI   r8   r9   ró   r:   rê   Úcorrect_steprÊ   Úsign_x0s
             r)   Útest__compute_absolute_stepr›  m  sJ  € â*€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Ô5ô 
�‰Ò#¬2¯:©:Ô	6€BÜ% d¨B°°IÓ>€HØ�>‰>œRŸZ™ZÒ'Ð'Ð'Ü% d¨B°°IÓ>€HØ�>‰>œRŸZ™ZÒ'Ð'Ð'ä	�‰’/¬¯©Ô	4€BÜ% d¨B°°IÓ>€HØ�>‰>œRŸZ™ZÒ'Ð'Ð'Ü% d¨B°°IÓ>€HØ�>‰>œRŸZ™ZÒ'Ð'Ð'ä	�‰Ò"¬"¯*©*Ô	5€BÜ	�‰�#œRŸZ™ZÔ	(€BÜ% h°°B¸	ÓB€HØ�>‰>œRŸZ™ZÒ'Ð'Ð'ä	�‰Ò#¬2¯:©:Ô	6€BÜ% h°°B¸	ÓB€HØ�>‰>œRŸZ™ZÒ'Ð'Ð'ä	�‰Ò"¬"¯*©*Ô	5€BÜ% h°°B¸	ÓB€HØ�>‰>œRŸZ™ZÒ'Ð'Ñ'r+   )&r¶   Ú	itertoolsr   Únumpyr   Únumpy.testingr   r   r   rG  r   rô   Úscipy._lib._utilr   r	   Úscipy.sparser
   r   r   Úscipy._lib._array_apir   Úscipy.optimize._numdiffr   r   r   r   r   r   Úscipy.optimizer   r*   r;   r=   rb   rL  rw  r•  r›  r`   r+   r)   ú<module>r¤     s€   ðÛ Ý ã ß @Ñ @Û Ý *ç ?ß 8Ñ 8Ý 0÷<÷ <õ !ò%ò8!
÷HG9ñ G9÷Tz!ñ z!÷z\!ñ \!÷~|<ñ |<ò~2'ójC(r+   