Ë
    âQ(hG§  ã                   ó`  — d dl mZ d dlmZmZmZmZmZmZ d dl	Z	d dl	m
Z d dlZd dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZm 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„ Z0d„ Z1d„ Z2d„ Z3d„ Z4e	jj                  jl                  d„ «       Z7e	jj                  jl                  d „ «       Z8e	jj                  js                  d!«      d"„ «       Z:d#„ Z;e	jj                  jx                  e	jj                  j{                  d$g d%¢«      d&„ «       «       Z>d'„ Z?d(„ Z@e	jj                  j{                  d)d*d+g«      d,„ «       ZAd-„ ZBd.„ ZCd/„ ZDd0„ ZEd1„ ZFe	jj                  jl                  d2„ «       ZGd3„ ZHd4„ ZId5„ ZJd6„ ZKd7„ ZLd8„ ZMd9„ ZNd:„ ZOd;„ ZPd<„ ZQe	jj                  jl                  d=„ «       ZRe	jj                  j{                  d$g d>¢«      d?„ «       ZSd@„ ZTe	jj                  j{                  dAejª                  ej¬                  g«      dB„ «       ZWe	jj                  j{                  d$g dC¢«      dD„ «       ZXe	jj                  j{                  d$g dC¢«      dE„ «       ZYe	jj                  j{                  d$g dC¢«      dF„ «       ZZe	jj                  j{                  d$g dC¢«      dG„ «       Z[dH„ Z\y)Ié    )Úproduct)Úassert_Úassert_allcloseÚassert_array_lessÚassert_equalÚassert_no_warningsÚsuppress_warningsN)Úraises)Úgroup_columns)Ú	solve_ivpÚRK23ÚRK45ÚDOP853ÚRadauÚBDFÚLSODA)ÚOdeSolution)Únum_jacÚselect_initial_step)ÚConstantDenseOutput)Ú
coo_matrixÚ
csc_matrixc                 ó,   — t        j                  |«      S ©N)ÚnpÚ
zeros_like©ÚtÚys     úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/integrate/_ivp/tests/test_ivp.pyÚfun_zeror!      s   € Ü�=‰=˜ÓÐó    c                 ó\   — t        j                  |d    d|d   z  z
  |d   |d   z   g«      S )Nr   é   é   ©r   Úarrayr   s     r    Ú
fun_linearr(      s5   € Ü�8‰8�a˜‘d�U˜Q  1¡™XÑ% q¨¡t¨a°©d¡{Ð3Ó4Ð4r"   c                  ó8   — t        j                  ddgddgg«      S )Néÿÿÿÿéûÿÿÿr%   r&   © r"   r    Ú
jac_linearr-      s   € Ü�8‰8�b˜"�X  1˜vÐ&Ó'Ð'r"   c                 óÆ   — t        j                  dt        j                  d| z  «      z  dt        j                  d| z  «      z  t        j                  d| z  «      z   f«      S )Nr+   é   )r   ÚvstackÚsinÚcos©r   s    r    Ú
sol_linearr4      sP   € Ü�9‰9�bœ2Ÿ6™6 ! a¡%›=Ñ(Øœ"Ÿ&™&  Q¡›-Ñ'¬"¯&©&°°Q±«-Ñ7ð9ó :ð :r"   c                 ó~   — t        j                  |d   | z  |d   |d   d|d   z  z   dz
  z  | |d   dz
  z  z  g«      S ©Nr%   r   r/   r&   r   s     r    Úfun_rationalr7       sW   € Ü�8‰8�Q�q‘T˜A‘XØ�q‘T˜Q˜q™T A¨¨!©¡H™_¨qÑ0Ñ1°Q¸!¸A¹$À¹(±^ÑDðFó Gð Gr"   c                 ó~   — t        j                  |d   | z  |d   |d   d|d   z  z   dz
  z  | |d   dz
  z  z  f«      S r6   ©r   r0   r   s     r    Úfun_rational_vectorizedr:   %   sW   € Ü�9‰9�a˜‘d˜Q‘hØ˜‘d˜a ™d Q¨¨1©¡X™o°Ñ1Ñ2°a¸1¸Q¹4À!¹8±nÑEðGó Hð Hr"   c                 ó¤   — t        j                  dd| z  gd|d   dz  z  | |d   dz
  dz  z  z  |d   d|d   z  z   dz
  | |d   dz
  z  z  gg«      S ©Nr   r%   éþÿÿÿr/   é   r&   r   s     r    Újac_rationalr?   *   sv   € Ü�8‰8Ø	
ˆA�‰Eˆ
Ø	ˆa�‰d�a‰i‰˜1  !¡ q¡¨Q™Ñ.Ñ	/Ø
ˆA‰$��Q�q‘T‘‰/˜AÑ
 ! q¨¡t¨a¡x¡.Ñ	1ð	3ðó ð r"   c                 ó�   — t        dd| z  gd|d   dz  z  | |d   dz
  dz  z  z  |d   d|d   z  z   dz
  | |d   dz
  z  z  gg«      S r<   )r   r   s     r    Újac_rational_sparserA   2   sr   € ÜØ	
ˆA�‰Eˆ
Ø	ˆa�‰d�a‰i‰˜1  !¡ q¡¨Q™Ñ.Ñ	/Ø
ˆA‰$��Q�q‘T‘‰/˜AÑ
 ! q¨¡t¨a¡x¡.Ñ	1ð	3ðó ð r"   c                 óT   — t        j                  | | dz   z  d| z  | dz   dz  z  f«      S )Né
   r/   )r   Úasarrayr3   s    r    Úsol_rationalrE   :   s/   € Ü�:‰:�q˜A ™F‘| R¨!¡V¨q°2©v¸!©mÑ%;Ð<Ó=Ð=r"   c                 ó"  — |j                   d   dz  }d}d}| dk  rdnd}t        j                  |d||d   f«      }d|z  }t        j                  |«      dz   }d||z  dz
  dz  z  |dz  z  }||z  dz
  dz  |dz  z  }	d|z  dz   }
d|z  dz
  }d|z  }d|z  dz   }t        j                  d|z  «      }|||
   ||   z
  z  d|z  z  |	||   d||   z  z
  ||
   z   z  |dz  z  z   |||   z  ||   z  z
  |d d d…<   | ||   z  ||   z  |dd d…<   |S )	Nr   r/   éd   r>   r$   r=   r%   é   )Úshaper   ÚhstackÚarangeÚempty)r   r   ÚnÚkÚcÚphiÚdÚjÚalphaÚbetaÚj_2_p1Új_2_m3Új_2_m1Új_2Úfs                  r    Úfun_medazkorZ   >   sw  € Ø	�‰�‰
�a‰€AØ€AØ	€Aà�AŠv‰!˜1€CÜ
�	‰	�3˜˜1˜a ™eÐ$Ó%€Aà	ˆA‰€AÜ
�	‰	�!‹�qÑ€AØ��Q‘˜‘˜qÑ Ñ  1¨¡6Ñ)€EØ�‰E�A‰I˜!Ñ˜a 1™fÑ$€Dà�‰U�Q‰Y€FØ�‰U�Q‰Y€FØ�‰U€FØ
ˆa‰%�!‰)€Cä
�‰��Q‘‹€AØ�q˜‘y 1 V¡9Ñ,Ñ-°°Q±Ñ7Ø�a˜‘i ! a¨¡i¡-Ñ/°!°F±)Ñ;Ñ<¸qÀA¹vÑEñFà�!�F‘)‰m˜a ™fÑ$ñ%€A�cˆ€c�Fð ˆb�1�S‘6‰k˜A˜f™IÑ%€A€a€dˆ€d�Gà€Hr"   c                 óÐ  — g }g }t        j                  | «      dz  }|j                  |dd  «       |j                  |dd  dz
  «       |j                  |«       |j                  |«       |j                  |«       |j                  |dz   «       |j                  |d d «       |j                  |d d dz   «       t        j                  | «      dz  dz   }|j                  |«       |j                  |«       |j                  |«       |j                  |dz
  «       t        j                  |«      }t        j                  |«      }t	        t        j
                  |«      ||ff«      S )Nr/   r%   r*   )r   rK   ÚappendrJ   r   Ú	ones_like)rM   ÚcolsÚrowsÚis       r    Úmedazko_sparsityra   Y   s  € Ø€DØ€Dä
�	‰	�!‹�qÑ€Aà‡K�K��!�"�ÔØ‡K�K��!�"�˜‘	Ôà‡K�K�„NØ‡K�K�„Nà‡K�K�„NØ‡K�K��A‘Ôà‡K�K��#�2�ÔØ‡K�K��#�2�˜‘
Ôä
�	‰	�!‹�qÑ˜1Ñ€Aà‡K�K�„NØ‡K�K�„Nà‡K�K�„NØ‡K�K��A‘Ôä�9‰9�T‹?€DÜ�9‰9�T‹?€Dä”r—|‘| DÓ)¨D°$¨<Ð8Ó9Ð9r"   c                 ó   — | S r   r,   r   s     r    Úfun_complexrc   y   s	   € Øˆ2€Ir"   c                 óH   — t        j                  |j                  d   «       S ©Nr   )r   ÚeyerI   r   s     r    Újac_complexrg   }   s   € Ü�F‰F�1—7‘7˜1‘:ÓÐÐr"   c                 ó,   — t        t        | |«      «      S r   )r   rg   r   s     r    Újac_complex_sparseri   �   s   € Ü”k ! QÓ'Ó(Ð(r"   c                 óV   — dt        j                  |  «      z  }|j                  d«      S )Nù      à?      ð?)r%   r*   )r   ÚexpÚreshaper   s     r    Úsol_complexrn   …   s%   € Ø	”R—V‘V˜Q˜B“ZÑ€AØ�9‰9�WÓÐr"   c                 ó   — || dz
  z  S ©Nr/   r,   r   s     r    Úfun_event_dense_output_LSODArq   Š   s   € Ø��A‘‰;Ðr"   c                 ó   — | dz
  S rp   r,   r   s     r    Újac_event_dense_output_LSODArs   Ž   s   € Øˆq‰5€Lr"   c                 óv   — t        j                  | dz  dz  d| z  z
  t        j                  d«      z   dz
  «      S )Nr/   çš™™™™™©?é   )r   rl   Úlogr3   s    r    Úsol_event_dense_output_LSODArx   ’   s4   € Ü�6‰6�!�q‘&˜1‘*˜q 1™uÑ$¤r§v¡v¨d£|Ñ3°aÑ7Ó8Ð8r"   c                 óÌ   — | |z
  ||t        j                  |«      z  z   z  }t         j                  j                  |d¬«      t        j                  |j
                  d   «      z  S )Nr   )Úaxis)r   ÚabsÚlinalgÚnormÚsqrtrI   )r   Úy_trueÚrtolÚatolÚes        r    Úcompute_errorrƒ   –   sO   € Ø	
ˆV‰˜˜t¤b§f¡f¨V£nÑ4Ñ4Ñ5€AÜ�9‰9�>‰>˜! !ˆ>Ó$¤r§w¡w¨q¯w©w°q©zÓ':Ñ:Ð:r"   c                  óÚ  — d„ } d„ }d|_         d|_        t        | dt        j                  gddgd|d¬«      }t        |j                  d«      t        j                  d	d
g«      dd¬«       t        |j                  t        j                  dgg«      dd¬«       t        |j                  t        j                  ddgg«      gd¬«       |j                  sJ ‚t        |j                  d«       y )Nc                 ó   — |d   dgS )Nr%   g£’:�#Àr,   r   s     r    Úupward_cannonz0test_duplicate_timestamps.<locals>.upward_cannon›   s   € Ø�!‘�hÐÐr"   c                 ó   — |d   S re   r,   r   s     r    Ú
hit_groundz-test_duplicate_timestamps.<locals>.hit_groundž   ó   € Ø�‰tˆr"   Tr*   r   ç{®Gáz„?g/ÒŸJ�bÕ>)Úmax_stepÚeventsÚdense_outputgix«•¦”9¿g.qG¬ƒ‹¶¿çñhãˆµøä>ç:Œ0âŽyE>©r€   r�   gl á¤þ´`?ç        g{®Gáz„¿ç•Ö&è.>©r�   r%   )ÚterminalÚ	directionr   r   Úinfr   ÚsolrD   Út_eventsÚy_eventsÚsuccessr   Ústatus)r†   rˆ   r—   s      r    Útest_duplicate_timestampsrœ   š   sÇ   € ò òð €JÔØ€JÔä
�M A¤r§v¡v ;°°D°	Ø3Ø%°Dô:€Cô �C—G‘G˜D“M¤2§:¡:¨{¸KÐ.HÓ#IØ Dõ*ä�C—L‘L¤"§*¡*¨z¨l¨^Ó"<À4ÈdÕSÜ�C—L‘L¤2§:¡:°°e¨~Ð.>Ó#?Ð"@ÀtÕLØ�;Š;Ðˆ;Ü�—‘˜QÕr"   c                  óÔ  — d} d}ddg}t        ddgg d¢dd	gdd
ggd t        t        g«      D �]¬  \  }}}}|rt        }nt        }t        «       5 }|j                  t        d«       t        |||| ||d||¬«	      }	d d d «       t        	j                  d   |d   «       t        |	j                  d u «       t        |	j                  d u «       t        |	j                  «       t        |	j                  d«       |dk(  rt        |	j                   dk  «       nt        |	j                   dk  «       |dv r-t        |	j"                  d«       t        |	j$                  d«       nFt        d|	j"                  cxk  xr dk  nc «       t        d|	j$                  cxk  xr dk  nc «       t'        |	j                  «      }
t)        |	j*                  |
| |«      }t        t-        j.                  |dk  «      «       t-        j0                  |Ž }t'        |«      }|	j3                  |«      }t)        ||| |«      }t        t-        j.                  |dk  «      «       |d   |d   z   dz  }t'        |«      }|	j3                  |«      }t)        ||| |«      }t        t-        j.                  |dk  «      «       t5        |	j3                  |	j                  «      |	j*                  dd¬«       �Œ¯ y # 1 sw Y   �ŒfxY w)Nçü©ñÒMbP?ç�íµ ÷Æ°>çUUUUUUÕ?çÇqÇqÌ?FT©r   r   r   r   r   r   r$   é	   r%   úAThe following arguments have no effect for a chosen solver: `jac`)r€   r�   Úmethodr�   ÚjacÚ
vectorizedr   r   é2   é(   )r   r   r   r   rH   rC   r*   r/   çVçž¯Ò<r�   )r   r?   rA   r:   r7   r	   ÚfilterÚUserWarningr   r   r   r   r˜   r™   rš   r›   ÚnfevÚnjevÚnlurE   rƒ   r   r   ÚallÚlinspacer—   r   )r€   r�   Úy0r§   r¥   Út_spanr¦   ÚfunÚsupÚresr   r‚   ÚtcÚyc_trueÚycs                  r    Útest_integrationrº   ®   sw  € à€DØ€DØ
ˆsˆ€Bä+2Ø�DˆMÚ?Ø�ˆV�a˜�VÐØ”<Ô!4Ð5ó	,7ó 8GÑ'ˆ
�F˜F Cñ Ü)‰CäˆCäÓ ð 	< CØ�J‰J”{ð'ô(ô ˜C ¨°$Ø!%¨fÀ4Ø #°
ô<ˆC÷		<ô 	�S—U‘U˜1‘X˜v a™yÔ)Ü�—‘ Ð$Ô%Ü�—‘ Ð$Ô%Ü�—‘ÔÜ�S—Z‘Z Ô#à�XÒô �C—H‘H˜r‘MÕ"ä�C—H‘H˜r‘MÔ"àÐ8Ñ8Ü˜Ÿ™ 1Ô%Ü˜Ÿ™ !Õ$ä�A˜Ÿ™Ö$ 1Ô$Ô%Ü�A˜Ÿ™Ö$ "Ô$Ô%ä˜cŸe™eÓ$ˆÜ˜#Ÿ%™% ¨¨tÓ4ˆÜ”—‘�q˜1‘u“Ôä�[‰[˜&Ð!ˆÜ˜rÓ"ˆØ�W‰W�R‹[ˆä˜"˜g t¨TÓ2ˆÜ”—‘�q˜1‘u“Ôà�Q‰i˜& ™*Ñ$¨Ñ)ˆÜ˜rÓ"ˆØ�W‰W�R‹[ˆä˜"˜g t¨TÓ2ˆÜ”—‘�q˜1‘u“Ôä˜Ÿ™ §¡›¨¯©°EÀ×Fñq8G÷	<ñ 	<ús   Á+KËK'	c                  ó  — d} d}dg}ddg}t        j                  |d   |d   «      }t        g d¢d t        t        g«      D �]»  \  }}t        «       5 }|j                  t        d«       t        t        |||d| ||¬	«      }d d d «       t        j                  d   |d   «       t        |j                  d u «       t        |j                  d u «       t        |j                  «       t        |j                   d«       |d
k(  r|j"                  dk  sJ ‚|j"                  dk  sJ ‚|dk(  r't        |j$                  d«       |j&                  dk  s$J ‚|j$                  dk(  sJ ‚|j&                  dk(  sJ ‚t)        |j                  «      }	t+        |j,                  |	| |«      }
t        j.                  |
dk  «      sJ ‚t)        |«      }|j1                  |«      }t+        ||| |«      }
t        j.                  |
dk  «      r�Œ¼J ‚ y # 1 sw Y   �ŒƒxY w)Nrž   rŸ   rk   r   r%   )r   r   r   r   r¤   T)r¥   r�   r€   r�   r¦   r   é#   é   r   rv   r$   )r   r±   r   rg   ri   r	   r«   r¬   r   rc   r   r   r   r˜   r™   rš   r›   r­   r®   r¯   rn   rƒ   r   r°   r—   )r€   r�   r²   r³   r·   r¥   r¦   rµ   r¶   r   r‚   r¸   r¹   s                r    Útest_integration_complexr¾   ï   sß  € à€DØ€DØ
ˆ€BØ�ˆV€FÜ	�‰�V˜A‘Y  q¡	Ó	*€BÜÒ@Ø $¤kÔ3EÐFóHó #‰ˆ�äÓ ð 	N CØ�J‰J”{ð'ô(ô œK¨°¸FØ)-°D¸tÈôNˆC÷		Nô 	�S—U‘U˜1‘X˜v a™yÔ)Ü�—‘ Ð$Ô%Ü�—‘ Ð$Ô%Ü�—‘ÔÜ�S—Z‘Z Ô#à�XÒØ—8‘8˜b’=Ð �=à—8‘8˜b’=Ð �=à�UŠ?Ü˜Ÿ™ 1Ô%Ø—7‘7˜Q’;Ð�;à—8‘8˜q’=Ð �=Ø—7‘7˜a’<Ð�<ä˜SŸU™UÓ#ˆÜ˜#Ÿ%™% ¨¨tÓ4ˆÜ�v‰v�a˜!‘eŒ}Ðˆ}ä˜b“/ˆØ�W‰W�R‹[ˆÜ˜"˜g t¨TÓ2ˆä�v‰v�a˜!‘eŽ}Ðˆ}ñG#÷	Nñ 	Nús   Á.HÈH	r$   c                  ó:  — d} ddg}t        j                  d| z  «      }d|dd d…<   t        | «      }dD �]d  }t        t        ||||¬«      }t        |j                  d   |d   «       t        |j                  d u «       t        |j                  d u «       t        |j                  «       t        |j                  d«       t        |j                  d   d	d
¬«       t        |j                  d   dd¬«       t        |j                  d   dd
¬«       t        |j                  d   dd¬«       t        |j                  d   dd
¬«       t        |j                  d   dd¬«       t        |j                  d   dd¬«       t        |j                  d   dd
¬«       �Œg y )NéÈ   r   é   r/   r%   )r   r   )r¥   Újac_sparsity)éN   r*   gÒÝ¨'‰«.?rŠ   ©r€   )éO   r*   rž   r“   )é”   r*   ghe¼n�7?)é•   r*   )éÆ   r*   gŠÕŠ.ØÄ?)éÇ   r*   ggJ	T÷Ù>)éî   r*   )éï   r*   g`Pð^ÿÿï?)r   Úzerosra   r   rZ   r   r   r   r˜   r™   rš   r›   r   r   )rM   r³   r²   Úsparsityr¥   r¶   s         r    Ú"test_integration_sparse_differencerÎ     sR  € à€AØ�ˆW€FÜ	�‰�!�a‘%‹€BØ€B€q€tˆ!€t�HÜ Ó"€Hà"ó >ˆÜœ V¨R¸Ø%-ô/ˆô 	�S—U‘U˜1‘X˜v a™yÔ)Ü�—‘ Ð$Ô%Ü�—‘ Ð$Ô%Ü�—‘ÔÜ�S—Z‘Z Ô#ä˜Ÿ™˜f™ {¸Õ>Ü˜Ÿ™˜f™ q¨tÕ4Ü˜Ÿ™˜g™¨¸$Õ?Ü˜Ÿ™˜g™¨°Õ5Ü˜Ÿ™˜g™¨¸TÕBÜ˜Ÿ™˜g™¨¸4Õ@Ü˜Ÿ™˜g™¨°Õ5Ü˜Ÿ™˜g™¨	¸×=ñ#>r"   c                  óî  — d} d}ddg}ddg}t        «       }t        |«      }t        ddg||g«      D �]À  \  }}t        t        ||| ||d|¬«      }t        |j                  d   |d   «       t        |j                  d u «       t        |j                  d u «       t        |j                  «       t        |j                  d«       t        |j                  d	k  «       t        |j                  d«       t        d|j                  cxk  xr d
k  nc «       t        |j                  «      }	t!        |j"                  |	| |«      }
t        t%        j&                  |
dk  «      «       t%        j(                  |Ž }t        |«      }|j+                  |«      }t!        ||| |«      }
t        t%        j&                  |
d
k  «      «       t-        |j+                  |j                  «      |j"                  dd¬«       �ŒÃ y )Nrž   rŸ   r   r/   r   r   T)r€   r�   r¥   r�   r¦   rG   é   rC   ç›+¡†›„=r�   )r-   r   r   r   r(   r   r   r   r˜   r™   rš   r›   r­   r®   r¯   r4   rƒ   r   r   r°   r±   r—   r   )r€   r�   r²   r³   ÚJÚJ_sparser¥   r¦   r¶   r   r‚   r·   r¸   r¹   s                 r    Útest_integration_const_jacrÔ   8  s‘  € Ø€DØ€DØ
ˆQˆ€BØ�ˆV€FÜ‹€AÜ˜!‹}€Hä ¨Ð/°!°X°Ó?ó G‰ˆ�Üœ
 F¨B°TÀØ%°D¸côCˆä�S—U‘U˜1‘X˜v a™yÔ)Ü�—‘ Ð$Ô%Ü�—‘ Ð$Ô%Ü�—‘ÔÜ�S—Z‘Z Ô#ä�—‘˜3‘ÔÜ�S—X‘X˜qÔ!Ü��C—G‘GÖ ˜bÔ Ô!ä˜CŸE™EÓ"ˆÜ˜#Ÿ%™% ¨¨tÓ4ˆÜ”—‘�q˜2‘v“Ôä�[‰[˜&Ð!ˆÜ˜R“.ˆØ�W‰W�R‹[ˆä˜"˜g t¨TÓ2ˆÜ”—‘�q˜2‘v“Ôä˜Ÿ™ §¡›¨¯©°EÀ×Fñ1Gr"   r¥   )r   r   r   c                 óÈ   — d}d}g d¢}ddg}| dk(  r|dkD  rt        j                  d¬«       d	„ }t        |||||| ¬
«      }|j                  dk  sJ ‚|j                  dk  sJ ‚y )NrŸ   )ç     ˆÃ@r   r   r   g    „×—Ar   r%   z)LSODA does not allow for concurrent calls©Úreasonc                 óf   — |\  }}}d|z  d|z  |z  z   d|z  d|z  |z  z
  d|z  |z  z
  d|z  |z  gS )Nç{®Gáz¤¿rÖ   ç{®Gáz¤?ç    8œ|Ar,   )r   ÚstateÚxr   Úzs        r    Úfun_robertsonz-test_integration_stiff.<locals>.fun_robertsonf  sW   € Ø‰ˆˆ1ˆaà�A‰I˜˜a™ !™Ñ#Ø�1‰H�s˜Q‘w ‘{Ñ" S¨1¡W¨q¡[Ñ0Ø�!‰G�a‰Kð
ð 	
r"   )r€   r�   r¥   iˆ  rÀ   )ÚpytestÚskipr   r­   r®   )r¥   Únum_parallel_threadsr€   r�   r²   Útspanrà   r¶   s           r    Útest_integration_stiffrå   [  sy   € ð €DØ€DÚ	€BØ�ˆH€Eà�ÒÐ1°AÒ5Ü�‰ÐFÕGò
ô �M 5¨"°4Ø fô.€Cð �8‰8�dŠ?Ðˆ?Ø�8‰8�cŠ>Ð‰>r"   c           
      ó  — d„ }d„ }d„ }d|_         dD �]|  }|dk(  r| dkD  rŒt        t        dd	gd
dg|||f¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚d|_        d|_        t        t        dd	gd
dg|||f¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚d|_        d|_        t        t        dd	gd
dg|||f¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚d|_        d|_        t        t        dd	gd
dg||||fd¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚t        t        dd	gd
dg||d¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚t        j                  |j                  d   |j                  d   «      }t        |«      }|j!                  |«      }t#        ||dd«      }	t        t        j$                  |	dk  «      «       t        j&                  t        |j
                  d   d   «      |j                  d   d   dd¬«      r�Œ}J ‚ d|_        d|_        dD �]ã  }|dk(  r| dkD  rŒt        t        d	dgddg|||f¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚d|_        d|_        t        t        d	dgddg|||f¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚d|_        d|_        t        t        d	dgddg|||f¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚d|_        d|_        t        t        d	dgddg||||fd¬«      }t        |j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        |j
                  d   j                  d«       t        d|j
                  d   d   cxk  xr dk  nc «       t        d|j
                  d   d   cxk  xr dk  nc «       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        |j                  d   j                  d«       t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚t        j                   ||j
                  d   d   |j                  d   d   «      d«      sJ ‚t        j                  |j                  d   |j                  d   «      }t        |«      }|j!                  |«      }t#        ||dd«      }	t        t        j$                  |	dk  «      «       t        j&                  t        |j
                  d   d   «      |j                  d   d   dd¬«      sJ ‚t        j&                  t        |j
                  d   d   «      |j                  d   d   dd¬«      r�ŒäJ ‚ y )Nc                 ó   — |d   |d   dz  z
  S )Nr   r%   gffffffæ?r,   r   s     r    Úevent_rational_1z%test_events.<locals>.event_rational_1w  s   € Ø�‰t�a˜‘d˜c‘kÑ!Ð!r"   c                 ó   — |d   dz  |d   z
  S )Nr%   g333333ã?r   r,   r   s     r    Úevent_rational_2z%test_events.<locals>.event_rational_2z  s   € Ø�‰t�s‰{˜Q˜q™TÑ!Ð!r"   c                 ó   — | dz
  S )Ngš™™™™™@r,   r   s     r    Úevent_rational_3z%test_events.<locals>.event_rational_3}  s   € Ø�3‰wˆr"   Tr¢   r   r%   r$   é   r    r¡   )r¥   rŒ   r   g333333@gÍÌÌÌÌÌ@g333333@gÍÌÌÌÌÌ@)r%   r/   ©r   r*   )r¥   rŒ   r�   r/   ç      @rž   rŸ   r�   gÇqÇqÜ?gX¤<ÝšÏ?)r”   r   r7   r   r›   r˜   Úsizer   r™   rI   r   Úiscloser•   r±   r   rE   r—   rƒ   r°   Úallclose)
rã   rè   rê   rì   r¥   r¶   r·   r¸   r¹   r‚   s
             r    Útest_eventsró   v  s“  € ò"ò"òð !%ÐÔàEó T1ˆØ�WÒÐ!5¸Ò!9Øäœ q¨! f¨s°C¨jÀØ 0Ð2BÐCôEˆä�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/ä�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Iä�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Ið &'ÐÔ"Ø%&ÐÔ"Üœ q¨! f¨u°e¨nÀVØ 0Ð2BÐCôEˆä�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�S—\‘\ !‘_×*Ñ*¨DÔ1Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Ið &(ÐÔ"Ø%'ÐÔ"Üœ q¨! f¨u°e¨nÀVØ 0Ð2BÐCôEˆä�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/Ü�S—\‘\ !‘_×*Ñ*¨DÔ1Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Ið &'ÐÔ"Ø%&ÐÔ"äœ q¨! f¨u°e¨nÀVØ 0Ð2BØ 0ð 2Ø@DôFˆô 	�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�S—\‘\ !‘_×*Ñ*¨DÔ1Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Iä�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Iô œ q¨! f¨u°e¨nÀVØ/¸dôDˆä�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/ä�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Iô �[‰[˜Ÿ™˜q™ 3§5¡5¨¡9Ó-ˆÜ˜rÓ"ˆØ�W‰W�R‹[ˆÜ˜"˜g t¨TÓ2ˆÜ”—‘�q˜1‘u“Ôô �{‰{œ<¨¯©°Q©¸Ñ(:Ó;¸S¿\¹\È!¹_ÈQÑ=OØ $¨4÷1ð 	1ð 1ðgT1ðn "#ÐÔØ!"ÐÔØEó N1ˆØ�WÒÐ!5¸Ò!9Øäœ q¨! f¨s°E¨lÀ6Ø 0Ð2BÐCôEˆä�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/ä�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Iä�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Ið &(ÐÔ"Ø%'ÐÔ"Üœ q¨! f¨s°E¨lÀ6Ø 0Ð2BÐCôEˆä�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/ä�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�S—\‘\ !‘_×*Ñ*¨DÔ1Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Ið &'ÐÔ"Ø%&ÐÔ"Üœ q¨! f¨s°E¨lÀ6Ø 0Ð2BÐCôEˆä�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/ä�S—\‘\ !‘_×*Ñ*¨DÔ1Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Ið &'ÐÔ"Ø%&ÐÔ"äœ q¨! f¨s°E¨lÀ6Ø 0Ð2BØ 0ð 2Ø@DôFˆô 	�S—Z‘Z Ô#Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü�S—\‘\ !‘_×)Ñ)¨1Ô-Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/Ü��c—l‘l 1‘o aÑ(Ö.¨3Ô.Ô/ä�S—\‘\ !‘_×*Ñ*¨DÔ1Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�S—\‘\ !‘_×*Ñ*¨FÔ3Ü�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Iä�z‰zÙ˜SŸ\™\¨!™_¨QÑ/°·±¸a±ÀÑ1CÓDÀaôIð 	Ið Iô �[‰[˜Ÿ™˜r™ C§E¡E¨!¡HÓ-ˆÜ˜rÓ"ˆØ�W‰W�R‹[ˆÜ˜"˜g t¨TÓ2ˆÜ”—‘�q˜1‘u“Ôä�{‰{œ<¨¯©°Q©¸Ñ(:Ó;¸S¿\¹\È!¹_ÈQÑ=OØ $¨4õ1ð 	1ð 1ä�{‰{œ<¨¯©°Q©¸Ñ(:Ó;¸S¿\¹\È!¹_ÈQÑ=OØ $¨4÷1ð 	1ð 1ñ[N1r"   c                  ó   — d„ } d„ }| |fS )Nc                 ó   — |d   |d    gS )Nr%   r   r,   r   s     r    rY   z#_get_harmonic_oscillator.<locals>.f-  s   € Ø�!‘�q˜‘t�eˆ}Ðr"   c                 ó   — |d   S re   r,   r   s     r    Úeventz'_get_harmonic_oscillator.<locals>.event0  r‰   r"   r,   )rY   r÷   s     r    Ú_get_harmonic_oscillatorrø   ,  s   € òòð ˆeˆ8€Or"   Ún_eventsrH   r>   c                 ó  — t        «       \  }}| |_        t        |dddg|¬«      }t        |j                  d   «      | k(  sJ ‚t        |j
                  d   «      | k(  sJ ‚t        |j
                  d   d d …df   dd¬«       y )N©r   rG   r%   r   )rŒ   rÑ   r“   )rø   r”   r   Úlenr˜   r™   r   )rù   rY   r÷   r¶   s       r    Útest_event_terminal_integerrý   6  s|   € ä'Ó)�H€A€uØ€E„NÜ
�A�x ! Q °Ô
6€CÜˆs�|‰|˜A‰Ó 8Ò+Ð+Ð+Üˆs�|‰|˜A‰Ó 8Ò+Ð+Ð+Ü�C—L‘L ‘O¢A q DÑ)¨1°5Ö9r"   c                  óÀ  — t        «       \  } }| dddgf}d |_        t        |d|iŽ}d|_        t        |d|iŽ}t        |j                  |j                  «       d}d|_        t        j                  t        |¬«      5  t        |d|iŽ d d d «       d|_        t        j                  t        |¬«      5  t        |d|iŽ d d d «       y # 1 sw Y   Œ@xY w# 1 sw Y   y xY w)	Nrû   r%   r   rŒ   zThe `terminal` attribute...r*   ©Úmatchg      @)rø   r”   r   r   r˜   rá   r
   Ú
ValueError)rY   r÷   Úargsr¶   ÚrefÚmessages         r    Útest_event_terminal_ivr  @  sÔ   € Ü'Ó)�H€A€uØˆx˜!˜Q˜Ð €Dà€E„NÜ
�TÐ
( %Ñ
(€CØ€E„NÜ
�TÐ
( %Ñ
(€CÜ�C—L‘L #§,¡,Ô/à+€GØ€E„NÜ	�‰”z¨Ô	1ñ 'Ü�4Ð& Ò&÷'à€E„NÜ	�‰”z¨Ô	1ñ 'Ü�4Ð& Ò&÷'ð '÷'ð 'ú÷'ð 'ús   Á=CÂ3CÃCÃCc                 óZ  — d}d}ddg}t         t        t        t        t        t
        fD �]  }|t
        u r| dkD  rŒddgddgfD �]b  }t        t        |||d||d	¬
«      }t        |j                  d   |d   «       t        |j                  d   |d   «       t        t        j                  t        j                  t        j                  |j                  «      «      dk  «      «       t        |j                  d u «       t        |j                   «       t        |j"                  d«       t%        |j                  «      }t'        |j(                  |||«      }t        t        j                  |dk  «      «       t        j*                  |Ž }	t%        |	«      }
|j-                  |	«      }t'        ||
||«      }t        t        j                  |dk  «      «       t/        |j-                  |j                  «      |j(                  dd¬«       t1        t2        |t        |d   ||d   d¬«       |t
        us�Œí |t        |d   ||d   ||d¬«      }|j5                  «       }|j5                  «       }t        |j"                  d«       t        d|v «       t1        t6        |j4                  «       �Œe �Œ‚ y )Nrž   rŸ   r    r¡   r%   r$   r£   ç      à?T)r€   r‹   r�   r¥   r�   r   r*   g	     à?rª   r�   )r‹   g#B’¡œÇ;)r€   r�   r‹   Úfailedzstep size is less)r   r   r   r   r   r   r   r7   r   r   r   r   r°   r{   Údiffr˜   rš   r›   rE   rƒ   r   r±   r—   r   Úassert_raisesr  ÚstepÚRuntimeError)rã   r€   r�   r²   r¥   r³   r¶   r   r‚   r·   r¸   r¹   Úsolverr  s                 r    Útest_max_stepr  S  s(  € Ø€DØ€DØ
ˆsˆ€BÜœœv¤u¬c´5Ð9ó %9ˆØ”U‰?Ð3°aÒ7ØØ˜1�v  1˜vÐ&ó "	9ˆFÜœL¨&°"¸4Ø%(¨t¸FØ)-ô/ˆCô ˜Ÿ™˜q™ 6¨!¡9Ô-Ü˜Ÿ™˜r™ F¨2¡JÔ/Ü”B—F‘Fœ2Ÿ6™6¤"§'¡'¨#¯%©%£.Ó1°[Ñ@ÓAÔBÜ�C—L‘L DÐ(Ô)Ü�C—K‘KÔ Ü˜Ÿ™ QÔ'ä! #§%¡%Ó(ˆFÜ˜cŸe™e V¨T°4Ó8ˆAÜ”B—F‘F˜1˜q™5“MÔ"ä—‘˜fÐ%ˆBÜ" 2Ó&ˆGØ—‘˜“ˆBä˜b '¨4°Ó6ˆAÜ”B—F‘F˜1˜q™5“MÔ"ä˜CŸG™G C§E¡E›N¨C¯E©E¸ÀEÕJäœ* f¬l¸FÀ1¹IÀrØ  ™)¨bõ2ð œUÓ"Ù¤¨f°Q©i¸¸VÀA¹YØ%)°¸uôF�à Ÿ+™+›-�Ø Ÿ+™+›-�Ü˜VŸ]™]¨HÔ5ÜÐ+¨wÐ6Ô7Üœl¨F¯K©KÖ8òE"	9ñ%9r"   c                 ó\  — d}d}ddg}d}t         t        t        t        t        t
        fD �]þ  }|t
        u r| dkD  rŒddgddgfD �]á  }t        t        |||d	||d
|¬«	      }t        |j                  d   |d   «       t        |j                  d   |d   «       t        |t        j                  |j                  d   dz
  «      «       t        |j                  d u «       t        |j                  «       t        |j                   d«       t#        |j                  «      }t%        |j&                  |||«      }	t        t        j(                  |	dk  «      «       t        j*                  |Ž }
t#        |
«      }|j-                  |
«      }t%        ||||«      }	t        t        j(                  |	dk  «      «       t        |j-                  |j                  «      |j&                  dd¬«       t/        t0        |t        |d   ||d   d¬«       t/        t0        |t        |d   ||d   d¬«       �Œä �Œ y )Nrž   rŸ   r    r¡   çš™™™™™¹?r%   r$   r£   r  T)r€   r‹   r�   r¥   r�   Ú
first_stepr   r*   rª   r�   )r  )r   r   r   r   r   r   r   r7   r   r   r   r   r{   r   r˜   rš   r›   rE   rƒ   r   r°   r±   r—   r
  r  )rã   r€   r�   r²   r  r¥   r³   r¶   r   r‚   r·   r¸   r¹   s                r    Útest_first_stepr    sÖ  € Ø€DØ€DØ
ˆsˆ€BØ€JÜœœv¤u¬c´5Ð9ó 3ˆØ”U‰?Ð3°aÒ7ØØ˜1�v  1˜vÐ&ó 	3ˆFÜœL¨&°"¸4Ø%(¨t¸FØ)-¸*ôFˆCô ˜Ÿ™˜q™ 6¨!¡9Ô-Ü˜Ÿ™˜r™ F¨2¡JÔ/Ü˜J¬¯©¨s¯u©u°Q©x¸!©|Ó(<Ô=Ü�C—L‘L DÐ(Ô)Ü�C—K‘KÔ Ü˜Ÿ™ QÔ'ä! #§%¡%Ó(ˆFÜ˜cŸe™e V¨T°4Ó8ˆAÜ”B—F‘F˜1˜q™5“MÔ"ä—‘˜fÐ%ˆBÜ" 2Ó&ˆGØ—‘˜“ˆBä˜b '¨4°Ó6ˆAÜ”B—F‘F˜1˜q™5“MÔ"ä˜CŸG™G C§E¡E›N¨C¯E©E¸ÀEÕJäœ* f¬l¸FÀ1¹IÀrØ  ™)°õ4äœ* f¬l¸FÀ1¹IÀrØ  ™)°÷3ò7	3ñ3r"   c            
      óø  — d} d}ddg}ddgddgfD ]Ú  }t        j                  |d   |d   d	«      }t        t        ||| ||¬
«      }t	        |j
                  |«       t        |j                  d u «       t        |j                  «       t	        |j                  d«       t        |j
                  «      }t        |j                  || |«      }t        t        j                  |dk  «      «       ŒÜ g d¢}t        t        ddg|| ||¬
«      }t	        |j
                  |«       t        |j                  d u «       t        |j                  «       t	        |j                  d«       t        |j
                  «      }t        |j                  || |«      }t        t        j                  |dk  «      «       g d¢}t        t        ddg|| ||¬
«      }t	        |j
                  |«       t        |j                  d u «       t        |j                  «       t	        |j                  d«       g d¢}t        t        ddg|| ||¬
«      }t	        |j
                  |«       t        |j                  d u «       t        |j                  «       t	        |j                  d«       t        |j
                  «      }t        |j                  || |«      }t        t        j                  |dk  «      «       g d¢}t        t        ddg|| ||¬
«      }t	        |j
                  |«       t        |j                  d u «       t        |j                  «       t	        |j                  d«       ddg}t        t        t        t        ddg|| ||¬
«       y )Nrž   rŸ   r    r¡   r$   r£   r%   r   rC   ©r€   r�   Út_eval)r$   ç
×£p=
@é   rí   ç…ëQ¸ @r£   )r$   çö(\�Âõ@rH   ç      ø?çš™™™™™ñ?ç)\�Âõ(ð?r%   )r  r  rí   r  )r  rH   r  r  r  r>   rv   )r   r±   r   r7   r   r   r   r˜   rš   r›   rE   rƒ   r   r°   r
  r  )r€   r�   r²   r³   r  r¶   r   r‚   s           r    Útest_t_evalr  ¦  sÉ  € Ø€DØ€DØ
ˆsˆ€BØ�q�6˜A˜q˜6Ð"ò ˆÜ—‘˜V A™Y¨¨q©	°2Ó6ˆÜœ f¨b°tÀ$Ø%ô'ˆä�S—U‘U˜FÔ#Ü�—‘ Ð$Ô%Ü�—‘ÔÜ�S—Z‘Z Ô#ä˜cŸe™eÓ$ˆÜ˜#Ÿ%™% ¨¨tÓ4ˆÜ”—‘�q˜1‘u“Õðò &€FÜ
”L 1 a &¨"°4¸dØ!ô#€Cä�—‘˜ÔÜˆC�L‰L˜DÐ Ô!ÜˆC�K‰KÔÜ�—‘˜QÔä˜#Ÿ%™%Ó €FÜ�c—e‘e˜V T¨4Ó0€AÜŒB�F‰F�1�q‘5‹MÔâ,€FÜ
”L 1 a &¨"°4¸dØ!ô#€Cä�—‘˜ÔÜˆC�L‰L˜DÐ Ô!ÜˆC�K‰KÔÜ�—‘˜QÔâ€FÜ
”L 1 a &¨"°4¸dØ!ô#€Cä�—‘˜ÔÜˆC�L‰L˜DÐ Ô!ÜˆC�K‰KÔÜ�—‘˜QÔä˜#Ÿ%™%Ó €FÜ�c—e‘e˜V T¨4Ó0€AÜŒB�F‰F�1�q‘5‹MÔâ&€FÜ
”L 1 a &¨"°4¸dØ!ô#€Cä�—‘˜ÔÜˆC�L‰L˜DÐ Ô!ÜˆC�K‰KÔÜ�—‘˜QÔà�ˆV€FÜ”*œi¬¸¸1°v¸rØ $¨vö7r"   c            	      óü  — d} d}ddg}ddg}t        j                  |d   |d   d	«      }t        t        ||| ||¬
«      }t        t        ||| ||d¬«      }t	        |j
                  |«       t        |j                  d u «       t        |j                  «       t	        |j                  d«       t	        |j
                  |j
                  «       t	        |j                  |j                  «       t        |j                  d u «       t        |j                  «       t	        |j                  d«       t        |j
                  «      }t        |j                  || |«      }t        t        j                  |dk  «      «       y )Nrž   rŸ   r    r¡   r$   r£   r   r%   rC   r  T)r€   r�   r  r�   )r   r±   r   r7   r   r   r   r˜   rš   r›   r   rE   rƒ   r°   )	r€   r�   r²   r³   r  r¶   Úres_dr   r‚   s	            r    Útest_t_eval_dense_outputr   ä  s(  € Ø€DØ€DØ
ˆsˆ€BØ�ˆV€FÜ�[‰[˜ ™ F¨1¡I¨rÓ2€FÜ
”L &¨"°4¸dØ!ô#€Cä”l F¨B°TÀØ#°$ô8€Eä�—‘˜ÔÜˆC�L‰L˜DÐ Ô!ÜˆC�K‰KÔÜ�—‘˜QÔä�—‘˜Ÿ™Ô Ü�—‘˜Ÿ™Ô ÜˆE�N‰N˜dÐ"Ô#ÜˆE�M‰MÔÜ�—‘˜qÔ!ô ˜#Ÿ%™%Ó €FÜ�c—e‘e˜V T¨4Ó0€AÜŒB�F‰F�1�q‘5‹MÕr"   c                  ó@  — d„ } d| _         d}d}ddg}ddg}t        j                  d	dd
«      }dD ]à  }t        «       5 }|j	                  t
        d«       t        t        ||||||| t        ¬«	      }d d d «       j                  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  s|j                  rJ ‚t        |j                  «      dk(  sJ ‚|j                  d   j                   dk(  sJ ‚|j                  d   d   dk(  rŒàJ ‚ y # 1 sw Y   Œ¥xY w)Nc                 ó   — | dz
  S )Nr  r,   r   s     r    Úearly_eventz,test_t_eval_early_event.<locals>.early_event  ó   € Ø�1‰uˆr"   Trž   rŸ   r    r¡   r$   r£   rï   é   r¢   r¤   )r€   r�   r¥   r  rŒ   r¦   zA termination event occurred.r%   r   r  )r”   r   r±   r	   r«   r¬   r   r7   r?   rš   r  r›   r   r   rü   r˜   rð   )	r#  r€   r�   r²   r³   r  r¥   rµ   r¶   s	            r    Útest_t_eval_early_eventr&  ÿ  s0  € òð  €KÔà€DØ€DØ
ˆsˆ€BØ�ˆV€FÜ�[‰[˜˜a Ó$€FØEò 'ˆÜÓ ð 	. CØ�J‰J”{ð'ô(ô œL¨&°"¸4ÀdØ#)°&ÀÜ ,ô.ˆC÷		.ð �{Š{Ðˆ{Ø�{‰{Ð=Ò=Ð=Ð=Ø�z‰z˜QŠÐˆØ—5’5 §¢Ð&Ð&Ü�3—<‘<Ó  AÒ%Ð%Ð%Ø�|‰|˜A‰×#Ñ# qÒ(Ð(Ð(Ø�|‰|˜A‰˜qÑ! QÓ&Ð&Ð&ñ'÷	.ð 	.ús   ½3DÄD	c                 ó  — | dkD  rt        j                  d«       d„ }d}d}dg}ddg}d}t        t        ||d	d
||d||t        ¬«      }t        |j                  d   |d   «       t        |j                  d   |d   «       t        |t        j                  |j                  d   |d   z
  «      «       |j                  sJ ‚t        |j                  d«       t        |j                  «      }t        |j                  |||«      }	t        |	d«       t        j                   |Ž }
t        |
«      }|j#                  |
«      }t        ||||«      }	t        |	d«       t        |j#                  |j                  «      |j                  dd¬«       y )Nr%   ú-LSODA does not allow for concurrent executionc                 ó   — |d   dz
  S )Nr   gOâne.õ>r,   r   s     r    Úevent_lsodaz2test_event_dense_output_LSODA.<locals>.event_lsoda   s   € Ø�‰t�g‰~Ðr"   rž   rŸ   ru   r=   r/   r   T)r¥   r�   rŒ   r  r‹   r€   r�   r¦   r   r*   r$   rª   r�   )rá   râ   r   rq   rs   r   r   r   r   r{   rš   r›   rx   rƒ   r   r   r±   r—   )rã   r*  r€   r�   r²   r³   r  r¶   r   r‚   r·   r¸   r¹   s                r    Útest_event_dense_output_LSODAr+    s]  € Ø˜aÒÜ�‰ÐCÔDòð €DØ€DØ
ˆ€BØ�!ˆW€FØ€JÜ
Ü$ØØ
ØØØØØØØÜ(ô€Cô �—‘�q‘˜6 !™9Ô%Ü�—‘�r‘˜F 2™JÔ'Ü�J¤§¡ s§u¡u¨Q¡x°&¸±)Ñ';Ó <Ô=Ø�;Š;Ðˆ;Ü�—‘˜QÔä)¨#¯%©%Ó0€FÜ�c—e‘e˜V T¨4Ó0€AÜ�a˜Ôä	�‰�fÐ	€BÜ*¨2Ó.€GØ	�‰�‹€BÜ�b˜' 4¨Ó.€AÜ�a˜Ôä�C—G‘G˜CŸE™E“N C§E¡E°¸EÖBr"   c                  ó¼   — dD ]W  } t        d„ ddgddg| d¬«      }t        |j                  d«      ddg«       t        |j                  g d¢«      g d	¢g d
¢g«       ŒY y )Nr¢   c                 ó   — | S r   r,   r   s     r    ú<lambda>z%test_no_integration.<locals>.<lambda>K  ó   €  a R€ r"   r>   r/   rH   T©r¥   r�   )r>   r$   rv   ©r/   r/   r/   )rH   rH   rH   )r   r   r—   )r¥   r—   s     r    Útest_no_integrationr2  I  s^   € ØEò AˆÜ™¨!¨Q¨°!°Q°Ø%°Dô:ˆä�S—W‘W˜Q“Z ! Q Ô(Ü�S—W‘WšYÓ'ª)²YÐ)?Õ@ñ	Ar"   c                  óD  — t         t        t        t        t        t
        fD ]ý  }  | d„ dddgd«      }|j                  «        t        |j                  d«       |j                  «       }t         |d«      ddg«       t         |g d¢«      g d¢g d¢g«        | d„ dg t        j                  «      }|j                  «        t        |j                  d«       |j                  «       }t         |d	«      g «       t         |g d¢«      t        j                  d
«      «       Œÿ y )Nc                 ó   — | S r   r,   r   s     r    r.  z+test_no_integration_class.<locals>.<lambda>S  r/  r"   r‘   g      $@Úfinished)r   r%   r/   ©rC   rC   rC   )r   r   r   c                 ó   — | S r   r,   r   s     r    r.  z+test_no_integration_class.<locals>.<lambda>Z  r/  r"   ç      Y@©r   rH   )r   r   r   r   r   r   r  r   r›   r�   r   r–   rL   )r¥   r  r—   s      r    Útest_no_integration_classr:  Q  sÚ   € Üœœv¤u¬c´5Ð9ò 7ˆÙ™¨¨t°S¨k¸3Ó?ˆØ�‰ŒÜ�V—]‘] JÔ/Ø×!Ñ!Ó#ˆÜ‘S˜“X  c˜{Ô+Ü‘Sš“^¢l²IÐ%>Ô?á™¨¨b´"·&±&Ó9ˆØ�‰ŒÜ�V—]‘] JÔ/Ø×!Ñ!Ó#ˆÜ‘S˜“Z Ô$Ü‘Sš“^¤R§X¡X¨fÓ%5Õ6ñ7r"   c            	      ó@  — d„ } t        j                  d«      }dD ]w  }t        t        | ddg||d¬«      }t	        |j                  d«      t        j                  d«      «       t	        |j                  g d¢«      t        j                  d	«      «       Œy dD ]…  }t        t        | dt         j                  g||d¬«      }t	        |j                  d«      t        j                  d«      «       t	        |j                  g d¢«      t        j                  d	«      «       Œ‡ y )
Nc                 ó,   — t        j                  d«      S )Nrî   )r   rÌ   r   s     r    r´   ztest_empty.<locals>.func  s   € Ü�x‰x˜‹~Ðr"   rî   r¢   r   rC   Tr0  )r%   r/   rH   r9  )r   rÌ   r   r   r   r—   r–   )r´   r²   r¥   r—   s       r    Ú
test_emptyr=  b  sß   € òô 
�‰�$‹€BàEò ;ˆÜ ¤¨C°!°R°¸"Ø(.¸TôCˆä�S—W‘W˜R“[¤"§(¡(¨4£.Ô1Ü�S—W‘WšYÓ'¬¯©°&Ó)9Õ:ð	;ð Fò ;ˆÜ ¤¨C°!´R·V±V°¸bØ(.¸TôCˆä�S—W‘W˜R“[¤"§(¡(¨4£.Ô1Ü�S—W‘WšYÓ'¬¯©°&Ó)9Õ:ñ	;r"   c                  ó|  — t        ddt        j                  ddg«      «      } t         | d«      ddg«       t         | g d¢«      g d¢g d¢g«       t        ddt        j                  g «      «      } t         | d«      t        j                  d«      «       t         | g d¢«      t        j                  d«      «       y )	Nr   r%   r/   r  )r%   r  r/   )r%   r%   r%   r1  r9  )r   r   r'   r   rL   )r—   s    r    Útest_ConstantDenseOutputr?  u  s‡   € Ü
˜a ¤B§H¡H¨a°¨VÓ$4Ó
5€CÜ‘C˜“H˜q !˜fÔ%Ü‘CšÓ$¢y²)Ð&<Ô=ä
˜a ¤B§H¡H¨R£LÓ
1€CÜ‘C˜“HœbŸh™h q›kÔ*Ü‘CšÓ$¤b§h¡h¨vÓ&6Õ7r"   c            	      óô  — ddg} t         t        t        t        t        t
        fD �]Ð  } |t        d| t        j                  «      }t        |j                  d«       t        |j                  d«       t        |j                  t        j                  «       t        |j                  d«       t        |j                  d«       t        |j                  | «       t!        |j"                  d u «       |t
        urGt!        |j$                  dkD  «       t!        |j&                  dk\  «       t        |j(                  d«       nBt        |j$                  d«       t        |j&                  d«       t        |j(                  d«       t+        t,        |j.                  «       |j1                  «       }t        |j                  d«       t        |d «       t        |j                  d«       t        |j                  t        j                  «       t        |j                  d«       t!        |j                  dkD  «       t!        t        j2                  t        j4                  |j                  | «      «       «       t!        |j"                  dkD  «       t!        |j$                  dkD  «       t!        |j&                  dk\  «       t!        |j(                  dk\  «       |j/                  «       }t7         |d«      | dd¬	«       �ŒÓ y )
Nr    r¡   r$   r/   Úrunningr%   r   rª   r�   )r   r   r   r   r   r   r7   r   r–   r   rM   r›   Út_boundr•   r   r   r   Ú	step_sizer­   r®   r¯   r
  r  r�   r  r°   Úequalr   )r²   Úclsr  r  r—   s        r    Útest_classesrF    s  € Ø
�ˆ€BÜ”dœF¤E¬3´Ð6ó !8ˆÙ”\ 1 b¬"¯&©&Ó1ˆÜ�V—X‘X˜qÔ!Ü�V—]‘] IÔ.Ü�V—^‘^¤R§V¡VÔ,Ü�V×%Ñ% qÔ)Ü�V—X‘X˜qÔ!Ü�V—X‘X˜rÔ"Ü�× Ñ  DÐ(Ô)Ø”eÑÜ�F—K‘K !‘OÔ$Ü�F—K‘K 1Ñ$Ô%Ü˜Ÿ™ QÕ'ä˜Ÿ™ aÔ(Ü˜Ÿ™ aÔ(Ü˜Ÿ™ QÔ'ä”l F×$7Ñ$7Ô8à—+‘+“-ˆÜ�V—]‘] IÔ.Ü�W˜dÔ#Ü�V—X‘X˜qÔ!Ü�V—^‘^¤R§V¡VÔ,Ü�V×%Ñ% qÔ)Ü�—‘˜1‘ÔÜ”B—F‘Fœ2Ÿ8™8 F§H¡H¨bÓ1Ó2Ð2Ô3Ü�× Ñ  1Ñ$Ô%Ü�—‘˜a‘Ô Ü�—‘˜qÑ Ô!Ü�—
‘
˜a‘Ô Ø×!Ñ!Ó#ˆÜ™˜A› ¨°Q×7ñC!8r"   c                  óÂ  — t        j                  g d¢t        ¬«      } t        | d   | d   t        j                  dg«      «      }t        | d   | d   t        j                  dg«      «      }t	        | ||g«      }t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |d	«      dg«       t         |g d
¢«      t        j                  g d¢g«      «       t        j                  g d¢«      } t        | d   | d   t        j                  dg«      «      }t        | d   | d   t        j                  dg«      «      }t	        | ||g«      }t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |g d¢«      t        j                  g d¢g«      «       t        j                  ddg«      } t        ddt        j                  dg«      «      }t	        | |g«      }t         |d«      dg«       t         |d«      dg«       t         |d«      dg«       t         |g d¢«      t        j                  g d¢g«      «       y )N)r   r/   r$   ©Údtyper   r%   r*   r/   rH   r$   rv   )	r   rv   r=   r  g      @g      @r$   g      @r/   )	r*   r%   r*   r*   r%   r%   r%   r%   r*   )rC   r>   éýÿÿÿé   rC   r>   rJ  éüÿÿÿ)é   r+   rC   rJ  rv   r%   r>   )r*   r%   r*   r%   r*   r%   r*   )r/   r%   r   r6  )r   r'   Úfloatr   r   r   )ÚtsÚs1Ús2r—   Úss        r    Útest_OdeSolutionrS  ¥  sU  € Ü	�‰’)¤5Ô	)€BÜ	˜R ™U B q¡E¬2¯8©8°R°D«>Ó	:€BÜ	˜R ™U B q¡E¬2¯8©8°Q°C«=Ó	9€Bä
�b˜2˜r˜(Ó
#€Cä‘�R“˜2˜$ÔÜ‘�Q“˜"˜ÔÜ‘�Q“˜"˜ÔÜ‘�Q“˜!˜ÔÜ‘�Q“˜!˜ÔÜ‘�Q“˜!˜Ôä‘Ò9Ó:Ü—‘Ò:Ð;Ó<ô>ô 
�‰’+Ó	€BÜ	˜R ™U B q¡E¬2¯8©8°R°D«>Ó	:€BÜ	˜R ™U B q¡E¬2¯8©8°Q°C«=Ó	9€Bä
�b˜2˜r˜(Ó
#€CÜ‘�R“˜2˜$ÔÜ‘�R“˜2˜$ÔÜ‘�Q“˜"˜ÔÜ‘�Q“˜"˜ÔÜ‘�Q“˜!˜ÔÜ‘�R“˜1˜#ÔÜ‘�R“˜1˜#Ôä‘Ò.Ó/Ü—‘Ò4Ð5Ó6ô8ô 
�‰�1�a�&Ó	€BÜ˜A˜q¤"§(¡(¨B¨4£.Ó1€AÜ
�b˜1˜#Ó
€CÜ‘�Q“˜"˜ÔÜ‘�Q“˜"˜ÔÜ‘�Q“˜"˜Ôä‘’Y“¤§¡ª<¨.Ó!9Õ:r"   c                  ó  — d„ } d„ }d}t        j                  g d¢«      } |||«      }d} | ||«      j                  «       }t        | ||||d «      \  }}t	        ||dd¬«       t        | |||||«      \  }}t	        ||dd¬«       y )Nc                 ó°   — t        j                  d|d   z  d|d   z  |d   z  z   d|d   z  d|d   z  |d   z  z
  d|d   dz  z  z
  d|d   dz  z  g«      S )NrÚ   r   rÖ   r%   r/   rÛ   rÜ   r9   r   s     r    r´   ztest_num_jac.<locals>.funÑ  sz   € Ü�y‰yØ�A�a‘D‰L˜3  1¡™:¨¨!©Ñ,Ñ,Ø�1�Q‘4‰K˜#  !¡™* q¨¡tÑ+Ñ+¨c°A°a±D¸A±I©oÑ=Ø�!�A‘$˜!‘)‰Oð
ó ð 	r"   c                 ó’   — t        j                  dd|d   z  d|d   z  gdd|d   z  d|d   z  z
  d|d   z  gdd|d   z  dgg«      S )	NrÚ   rÖ   r/   r%   rÛ   g     ˆÃÀg    8œŒAr   r&   r   s     r    r¦   ztest_num_jac.<locals>.jacØ  sk   € Ü�x‰xØ�C˜!˜A™$‘J  a¨¡d¡
Ð+Ø�4˜!˜A™$‘;  q¨¡t¡Ñ+¨T°A°a±D©[Ð9Ø��a˜‘d‘
˜AÐð
ó ð 	r"   r%   )r%   r   r   rŽ   r�   )r   r'   Úravelr   r   )	r´   r¦   r   r   ÚJ_trueÚ	thresholdrY   ÚJ_numÚfactors	            r    Útest_num_jacr\  Ð  s�   € òòð 	
€AÜ
�‰’Ó€AÙ��A‹Y€FØ€IÙˆAˆq‹	�‰Ó€Aä˜C  A q¨)°TÓ:�M€Eˆ6Ü�E˜6¨°4Õ8ä˜C  A q¨)°VÓ<�M€Eˆ6Ü�E˜6¨°4Ö8r"   c            
      óþ  — d„ } d„ }t         j                  j                  d«       d}t         j                  j                  |«      } ||«      }t	        |«      } | d|d d …d f   «      j                  «       }t        | d|j                  «       |dd ||f¬«      \  }}t        | d|j                  «       |dd «      \  }	}
t        |	|j                  «       dd¬	«       t        |
|dd¬	«       t         j                  j                  dd|¬
«      }t        | d|j                  «       |d|||f¬«      \  }}t        | d|j                  «       |d|«      \  }	}
t        |	|j                  «       dd¬	«       t        |
|dd¬	«       y )Nc                 óÒ   — |dd  dz  |d d dz  z
  }t        j                  |j                  d   «      }t        j                  |d|z  f«      t        j                  d|z  |f«      z   S )Nr%   rH   r*   r/   )r   rÌ   rI   r0   )r   r   r‚   rß   s       r    r´   z test_num_jac_sparse.<locals>.funí  sc   € ØˆaˆbˆE�1‰H�q˜˜"�v˜q‘yÑ ˆÜ�H‰H�Q—W‘W˜Q‘ZÓ ˆÜ�y‰y˜!˜Q ™U˜Ó$¤r§y¡y°!°a±%¸°Ó'<Ñ<Ð<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 )NrH  r%   )r   r   ©r   r%   r/   )r*   r*   )r*   r=   )r   rÌ   ÚintÚrange)rM   ÚAr`   s      r    Ú	structurez&test_num_jac_sparse.<locals>.structureò  sr   € Ü�H‰H�a˜�V¤3Ô'ˆØˆˆ$‰Øˆˆ$‰Ü�q˜!˜a™%“ò 	#ˆAØ!"ˆAˆa��Q‘˜˜A™�ˆoÒð	#àˆˆ&‰	Øˆˆ&‰	àˆr"   r   rÁ   r�   )rÍ   çê-�™—q=rÑ   r�   )rð   )
r   ÚrandomÚseedÚrandnr   rW  r   r   ÚtoarrayÚuniform)r´   rd  rM   r   rc  ÚgroupsrY   ÚJ_num_sparseÚfactor_sparseÚJ_num_denseÚfactor_denser[  s               r    Útest_num_jac_sparserp  ì  sd  € ò=ò
	ô ‡I�I‡N�N�1ÔØ
€AÜ
�	‰	�‰˜Ó€AÙ�!‹€AÜ˜1Ó€FáˆAˆq’�D�‰zÓ× Ñ Ó"€Aô #*¨#¨q°!·'±'³)¸QÀÀdØ45°v°;ô#@Ñ€L�-ä '¨¨Q°·±³	¸1¸dÀDÓ IÑ€K�Ü�K ×!5Ñ!5Ó!7Ø Uõ,ä�L -°eÀ%ÕHô �Y‰Y×Ñ˜q %¨aÐÓ0€FÜ")¨#¨q°!·'±'³)¸QÀÀfØ45°v°;ô#@Ñ€L�-ä '¨¨Q°·±³	¸1¸dÀFÓ KÑ€K�ä�K ×!5Ñ!5Ó!7Ø Uõ,ä�L -°eÀ%ÖHr"   c                  ót  — d„ } d„ }d„ }d„ }d„ }d|_         d|_         d|_        d	}d
}d}d}t        j                  | |z  «      d|z
  |z  t        j                  | |z  «      z   z  }	dd|	g}
d	|z  }t	        | d|g|
|||gd|||fd|dd¬«
      }|j
                  d   }|j
                  d   }|j
                  d	   }t        |dt        j                  z  dt        j                  z  g«       t        |dt        j                  z  dt        j                  z  g«       t        ||g«       t        j                  d|d   d«      }|j                  |«      }t        |d   t        j                  ||z  «      dd¬«       t        |d   t        j                  ||z  «       dd¬«       t        |d	   dd|	z
  |	z  t        j                  | |z  «      z  dz   z  dd¬«       |j                  |«      }|j                  |«      }|j                  |«      }t        |d   t        j                  |d   «      d¬«       t        |d   t        j                  |d   «      «       t        |d   t        j                  |d   «      «       t        |d   t        j                  |d   «      d¬«       t        |d	   |g«       y )Nc                 ó8   — |\  }}}| |z  ||z  ||z  d|z
  z  gS )Nr%   r,   ©r   ÚwÚomegarN   ÚzfinalrÞ   r   rß   s           r    Úsys3ztest_args.<locals>.sys3   s0   € Ø‰ˆˆ1ˆaØ��q‘˜% ™' 1 Q¡3¨¨A©¡;Ð/Ð/r"   c           
      óh   — |\  }}}t        j                  d| dg|ddgdd|dd|z  z
  z  gg«      }|S )Nr   r%   r/   r&   )	r   rt  ru  rN   rv  rÞ   r   rß   rÒ   s	            r    Úsys3_jacztest_args.<locals>.sys3_jac$  sP   € Ø‰ˆˆ1ˆaÜ�H‰H�q˜5˜& !�nØ˜a �mØ˜!˜Q  A a¡C¡™[Ð)ð+ó ,ˆð ˆr"   c                 ó   — |\  }}}|S r   r,   rs  s           r    Úsys3_x0decreasingz$test_args.<locals>.sys3_x0decreasing+  ó   € Ø‰ˆˆ1ˆaØˆr"   c                 ó   — |\  }}}|S r   r,   rs  s           r    Úsys3_y0increasingz$test_args.<locals>.sys3_y0increasing/  r|  r"   c                 ó   — |\  }}}||z
  S r   r,   rs  s           r    Úsys3_zfinalztest_args.<locals>.sys3_zfinal3  s   € Ø‰ˆˆ1ˆaØ�6‰zÐr"   r*   r%   Tr/   r>   r$   g®Gáz®ï?r   r   g»½×Ùß|Û=g‚vIhÂ%<=)rŒ   r�   r  r¥   r¦   r€   r�   r  r  g      Ð?g      ô?éú   r’   re  r�   g‚vIhÂ%,=r“   )r•   r”   r   rl   r   r˜   r   Úpir±   r—   r1   r2   r   r]   )rw  ry  r{  r~  r€  ru  rN   Útfinalrv  Úz0Úw0Útendr—   Ú
x0events_tÚ
y0events_tÚzfinalevents_tr   rt  Úx0eventsÚy0eventsÚzfinaleventss                        r    Ú	test_argsr�    sŒ  € ò0òòòòð
 #%ÐÔØ"#ÐÔØ€KÔà€EØ	€Aà€FØ€Fô 
�‰���6‘	Ó	˜Q ™Z¨Ñ/´"·&±&¸!¸¸F¹Ó2CÑCÑ	D€Bà
ˆR�ˆ€Bð
 ˆV‰8€DÜ
�D˜1˜d˜) RØ-Ð/@À+ÐNØ!%¨U°A°vÐ,>Ø"¨Ø Uô	,€Cð —‘˜a‘€JØ—‘˜a‘€JØ—\‘\ !‘_€NÜ�J ¤R§U¡U¡¨C´·±©IÐ 6Ô7Ü�J ¤b§e¡e¡¨T´"·%±%©ZÐ 8Ô9Ü�N V HÔ-ô 	�‰�A�~ aÑ(¨#Ó.€AØ�‰�‹
€AÜ�A�a‘Dœ"Ÿ&™&  q¡›/°¸5ÕAÜ�A�a‘Dœ2Ÿ6™6 %¨¡'›?Ð*°¸EÕBÜ�A�a‘D˜!˜q 2™v r™k¬2¯6©6°1°"°Q±$«<Ñ7¸!Ñ;Ñ<Ø Eõ+ð �w‰w�zÓ"€HØ�w‰w�zÓ"€HØ—7‘7˜>Ó*€LÜ�H˜Q‘K¤§¡¨x¸©{Ó!;À%ÕHÜ�H˜Q‘K¤§¡¨h°q©kÓ!:Ô;Ü�H˜Q‘K¤§¡¨h°q©kÓ!:Ô;Ü�H˜Q‘K¤§¡¨x¸©{Ó!;À%ÕHÜ�L ‘O f XÕ.r"   c            	      ó(  — d„ } t        | dddgddg¬«      }t        j                  t        j                  j	                  |j
                  d d …df   t        j                  d«      z
  «      «      }t        j                  t        d¬	«      5  t        | dddgdd
g¬«      }t        j                  t        j                  j	                  |j
                  d d …df   t        j                  d«      z
  «      «      }d d d «       |k  sJ ‚y # 1 sw Y   ŒxY w)Nc                 ó   — |d   |d   fS )Nr   r%   r,   r   s     r    rY   ztest_array_rtol.<locals>.fp  s   € Ø�‰t�Q�q‘TˆzÐr"   r`  ç      ð?r  rÄ   r*   r%   zAt least one element...rÿ   g¼‰Ø—²Òœ<)
r   r   r{   r|   r}   r   rl   rá   Úwarnsr¬   )rY   r—   Úerr1Úerr2s       r    Útest_array_rtolr”  l  sÙ   € òô �A�v  B˜x¨t°T¨lÔ
;€CÜ�6‰6”"—)‘)—.‘. §¡¢q¨" u¡´·±°q³	Ñ!9Ó:Ó;€Dô 
�‰”kÐ)BÔ	Cñ @Ü˜˜6 B¨ 8°4¸°-Ô@ˆÜ�v‰v”b—i‘i—n‘n S§U¡Uª1¨b¨5¡\´B·F±F¸1³IÑ%=Ó>Ó?ˆ÷@ð
 �$Š;Ð‰;÷@ð @ús   ÂA-DÄDr¢   c                 ó  — | dk(  r|dkD  rt        j                  d¬«       t        t        ddgt	        j
                  d«      | ¬«      }t        |j                  «       t        |j                  d«       t        |j                  d	d
¬«       y )Nr   r%   r(  r×   r   rC   rH   ©r¥   r�  rª   rÄ   )rá   râ   r   r!   r   Úonesr   rš   r   r›   r   r   )r¥   rã   Úresults      r    Útest_integration_zero_rhsr™  €  se   € à�ÒÐ1°AÒ5Ü�‰ÐJÕKä”x ! R ¬"¯'©'°!«*¸VÔD€FÜˆF�N‰NÔÜ�—‘ Ô"Ü�F—H‘H˜c¨Ö.r"   c                  ó  — d„ } d}t        j                  t        |¬«      5  t        | ddgd¬«       d d d «       t        | ddgd¬«      }t	        |j
                  d	   t        j                  d
«      «       y # 1 sw Y   ŒFxY w)Nc                 ó   — ||z  S r   r,   )r   r   Úas      r    Úfun_with_argz,test_args_single_value.<locals>.fun_with_argŒ  s   € Ø�‰sˆ
r"   z#Supplied 'args' cannot be unpacked.rÿ   )r   r  r%   r*   )r  )r*   ©r   r*   gš™™™™™¹¿)rá   r
   Ú	TypeErrorr   r   r   r   rl   )r�  r  r—   s      r    Útest_args_single_valuer   ‹  so   € òð 4€GÜ	�‰”y¨Ô	0ñ 8Ü�, ¨1¨#°BÕ7÷8ô �L (¨Q¨C°eÔ
<€CÜ�C—E‘E˜%‘L¤"§&¡&¨£,Õ/÷	8ð 8ús   ¡A7Á7B Úf0_fillc           	      ó¶   — d}t        j                  t        |¬«      5  t        t        ddgt        j                  d| «      «       d d d «       y # 1 sw Y   y xY w)Nz8All components of the initial state `y0` must be finite.rÿ   r   rC   rH   )rá   r
   r  r   r!   r   Úfull)r¡  Úmsgs     r    Útest_initial_state_finitenessr¥  —  sH   € ð E€CÜ	�‰”z¨Ô	-ñ :Ü”(˜Q ˜G¤R§W¡W¨Q°Ó%8Ô9÷:÷ :ñ :ús   ž(AÁA)r   r   r   r   r   c                 óž   — d„ }t        |dt        j                  dg«      | ¬«      }|j                  sJ ‚t	        |j
                  d   d«       y )Nc                 ó   — d|z  S rp   r,   r   s     r    rY   ztest_zero_interval.<locals>.f¤  r$  r"   )r‘   r‘   r�  r–  rž  )r   r   r'   rš   r   r   )r¥   rY   r¶   s      r    Útest_zero_intervalr¨  Ÿ  s?   € ò
ä
�A�z¤2§8¡8¨S¨E£?¸6Ô
B€CØ�;Š;Ðˆ;Ü�C—E‘E˜%‘L #Õ&r"   c                 óz   ‡— dŠˆfd„}t        |d‰ft        j                  dg«      | ¬«      }|j                  sJ ‚y)zRegression test for gh-17341g-Cëâ6?c                 ó.   •— | ‰kD  rt        d«      ‚d|z  S )Nú'Function was evaluated outside intervalr/   )r  )r   r   ÚSMALLs     €r    rY   z/test_tbound_respected_small_interval.<locals>.f²  s   ø€ ØˆuŠ9ÜÐFÓGÐGØ�1‰uˆr"   r‘   r%   r–  N©r   r   r'   rš   )r¥   rY   r¶   r¬  s      @r    Ú$test_tbound_respected_small_intervalr®  «  s;   ø€ ð €Eôô �A˜˜U�|¤R§X¡X¨q¨c£]¸6Ô
B€CØ�;Š;Ð‰;r"   c           
      ó‚   ‡— d„ Šˆfd„}t        |dt        j                  ddg«      dddd	d
¬«      }|j                  sJ ‚y)zRegression test for gh-8848c                 ó*   — d| z  d| z  d| dz  z   z  z   S )NéõÿÿÿrC   ru   r/   r,   )Úrs    r    ÚVz0test_tbound_respected_larger_interval.<locals>.V½  s"   € Ø�1‰u�r˜A‘v ¨¨1©¡Ñ-Ñ-Ð-r"   c                 óÞ   •— | dk  s| dkD  rt        d«      ‚|d   }|d   }t        j                  | «      }||z  }d|z  d ‰|«      z
  |z  d|z  |z  z   z  }t        j                  ||g«      S )Néïÿÿÿr/   r«  r   r%   g       Àgš™™™™™É¿)r  r   rl   r'   )r   ÚpÚPÚQr²  ÚdPdrÚdQdrr³  s          €r    Úfuncz3test_tbound_respected_larger_interval.<locals>.funcÀ  s   ø€ ØˆsŠ7�a˜!’eÜÐFÓGÐGØˆa‰DˆØˆa‰DˆÜ�F‰F�1‹IˆØ�1‰uˆØ�a‰x˜D¡1 Q£4™K¨1Ñ,¨q°1©u°q©yÑ8Ñ9ˆÜ�x‰x˜˜t˜Ó%Ð%r"   )rµ  r/   r%   r±  g¸…ëQ¸ž?FNr�   rŽ   )r²   r‹   r§   r  r�   r€   r­  )r¥   r»  r˜  r³  s      @r    Ú%test_tbound_respected_larger_intervalr¼  º  sK   ø€ ò.ô&ô �tØÜŸ(™( A s 8Ó,Ø $Ø"'Ø"Ø Ø ô"€Fð �>Š>Ð‰>r"   c                 óH   ‡— d„ Šdˆfd„	} |ddd«      }|j                   sJ ‚y)zRegression test for gh-9198c                 óT   — | dkD  rt        d«      ‚t        j                  g d¢«      }|S )NéÍ   zCalled outside interval)ge¸s='¿‘?gR›ìr <Û>r‘   r‘   )r  r   r'   )r   r   Úyprimes      r    Úreactions_funcz8test_tbound_respected_oscillator.<locals>.reactions_funcØ  s/   € Ø�ŠGÜÐ6Ó7Ð7Ü—‘ò +ó ,ˆð ˆr"   c                 ó€   •— t        j                  g d¢«      }d}d}t        ‰||f|j                  «       d||z
  ¬«      S )N)gLéOÑ§Â`@g…C�ÿYZa@r8  r‘   r8  g      i@T)r�   r‹   )r   r'   r   Úcopy)Út_endÚn_timepointsÚshortest_delay_lineÚ
init_stateÚt0Út1rÁ  s         €r    Úrun_sim2z2test_tbound_respected_oscillator.<locals>.run_sim2á  sF   ø€ Ü—X‘XÒDÓEˆ
ØˆØˆÜ˜Ø˜b˜Ø#Ÿ™Ó*Ø&*Ø"$ r¡'ô	+ð 	+r"   iè  rG   N)rC   i€–˜ )rš   )r¥   rÊ  r˜  rÁ  s      @r    Ú test_tbound_respected_oscillatorrË  Õ  s)   ø€ òõ+ñ �d˜C Ó%€FØ�>Š>Ð‰>r"   c                  óØ  — d} d}t        j                  ddg«      }dD ]Ê  \  }}t        j                  t        j                  t
        j                  ddfD ]‘  }t        t        |||t         j                  t        ||«      t        j                  ||z
  «      || |«
      }|dz  }t        t        ||||t        ||«      t        j                  ||z
  «      || |«
      }t        ||«       Œ“ ŒÌ y	)
z0Verify that select_inital_step respects max_steprž   rŸ   r    r¡   ))r$   r£   )r$   r%   rH   r%   r/   N)r   r'   r   Úerror_estimator_orderr   r   r   r7   r–   Úsignr   )	r€   r�   r²   rÈ  rB  Úmethod_orderÚstep_no_maxr‹   Ústep_with_maxs	            r    Útest_inital_maxsteprÒ  î  sî   € à€DØ€DÜ	�‰�3˜�*Ó	€BØ)ò 2‰ˆˆWÜ!×7Ñ7Ü ×6Ñ6Ü"×8Ñ8ØØð	ò 	2ˆLô .¬l¸BÀÀGÜ,.¯F©FÜ,8¸¸BÓ,?Ü,.¯G©G°G¸b±LÓ,AØ,8Ø,0°$ó8ˆKð # 1‘}ˆHÜ/´¸bÀ"ÀgØ,4Ü,8¸¸RÓ,@Ü,.¯G©G°G¸b±LÓ,AØ,8Ø,0°$ó8ˆMô ˜ =Õ1ñ'	2ñ2r"   )]Ú	itertoolsr   Únumpy.testingr   r   r   r   r   r	   rá   r
   r
  Únumpyr   Úscipy.optimize._numdiffr   Úscipy.integrater   r   r   r   r   r   r   r   Úscipy.integrate._ivp.commonr   r   Úscipy.integrate._ivp.baser   Úscipy.sparser   r   r!   r(   r-   r4   r7   r:   r?   rA   rE   rZ   ra   rc   rg   ri   rn   rq   rs   rx   rƒ   rœ   ÚmarkÚthread_unsaferº   r¾   Ú	fail_slowrÎ   rÔ   ÚslowÚparametrizerå   ró   rø   rý   r  r  r  r  r   r&  r+  r2  r:  r=  r?  rF  rS  r\  rp  r�  r”  r™  r   Únanr–   r¥  r¨  r®  r¼  rË  rÒ  r,   r"   r    ú<module>rá     s  ðÝ ÷P÷ Pã Ý *Û Ý 1ß L× LÑ LÝ 'ß DÝ 9ß /òò5ò(ò:ò
Gò
Hò
òò>òò6:ò@òò)òò
òò9ò;ò ð( ‡�×Ññ=Gó ð=Gð@ ‡�×Ññ)ó ð)ðX ‡�×Ñ�qÓñ>ó ð>ò6 GðF ‡�×ÑØ‡�×Ñ˜Ò#<Ó=ñó >ó ðò2s1òlð ‡�×Ñ˜ a¨ VÓ,ñ:ó -ð:ò'ò&)9òX$3òN;7ò|ð6 ‡�×Ññ'ó ð'ò8*CòZAò7ò";ò&8ò#8òL(;òV9ò8*IòZP/ðf ‡�×Ññó ðð& ‡�×Ñ˜Ò#VÓWñ/ó Xð/ò	0ð ‡�×Ñ˜ R§V¡V¨R¯V©VÐ$4Ó5ñ:ó 6ð:ð ‡�×Ñ˜Ò#MÓNñ'ó Oð'ð ‡�×Ñ˜Ò#MÓNñó Oðð ‡�×Ñ˜Ò#MÓNñó Oðð4 ‡�×Ñ˜Ò#MÓNñó Oðó02r"   