§
    µ³Ùg#`  ã                   ó¸  — d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZmZ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mZmZmZ  G d„ d¦  «        Z G d	„ d
¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z  G d„ d¦  «        Z! G d„ d¦  «        Z" G d„ de"¦  «        Z# G d„ de"¦  «        Z$ G d„ de"¦  «        Z% G d„ de"¦  «        Z&e#e$e%e&gZ'd„ Z(d„ Z)d„ Z*d „ Z+d!„ Z,d"„ Z-d#„ Z.d$„ Z/ G d%„ d&¦  «        Z0 G d'„ d(e0¦  «        Z1 G d)„ d*e0¦  «        Z2 G d+„ d,e0¦  «        Z3 G d-„ d.e0¦  «        Z4 G d/„ d0e0¦  «        Z5d1„ Z6d2„ Z7d3„ Z8d4„ Z9d5„ Z:dS )6z"
Tests for numerical integration.
é    N)ÚarangeÚzerosÚarrayÚdotÚsqrtÚcosÚsinÚeyeÚpiÚexpÚallclose)Úassert_Úassert_array_almost_equalÚassert_allcloseÚassert_array_equalÚassert_equalÚassert_warns)Úraises)ÚodeintÚodeÚcomplex_odec                   ó   — e Zd Zd„ Zd„ ZdS )Ú
TestOdeintc                 ó€  ‡— t          d‰j        d¦  «        }t          ‰j        ‰j        |d¬¦  «        \  }}t          ‰                     ||¦  «        ¦  «         t          ˆfd„‰j        |dd¬¦  «        \  }}t          ‰                     ||¦  «        ¦  «         t          ‰d¦  «        r‘t          ‰j        ‰j        |‰j        d¬¦  «        \  }}t          ‰                     ||¦  «        ¦  «         t          ˆfd	„‰j        |ˆfd
„dd¬¦  «        \  }}t          ‰                     ||¦  «        ¦  «         d S d S )Nç        gš™™™™™©?T©Úfull_outputc                 ó0   •— ‰                      || ¦  «        S ©N©Úf©ÚtÚyÚproblems     €úZ/granary/edev/quantum/lib/python3.11/site-packages/scipy/integrate/tests/test_integrate.pyú<lambda>z(TestOdeint._do_problem.<locals>.<lambda>    s   ø€ ¨'¯)ª)°A°q©/¬/€ ó    )r   ÚtfirstÚjac)ÚDfunr   c                 ó0   •— ‰                      || ¦  «        S r   r    r"   s     €r&   r'   z(TestOdeint._do_problem.<locals>.<lambda>+   s   ø€ ¨g¯iªi¸¸1©o¬o€ r(   c                 ó0   •— ‰                      || ¦  «        S r   ©r*   r"   s     €r&   r'   z(TestOdeint._do_problem.<locals>.<lambda>,   s   ø€ °7·;²;¸qÀ!Ñ3DÔ3D€ r(   )r+   r   r)   )	r   Ústop_tr   r!   Úz0r   ÚverifyÚhasattrr*   )Úselfr%   r#   ÚzÚinfodicts    `   r&   Ú_do_problemzTestOdeint._do_problem   sd  ø€ Ý�3˜œ¨Ñ-Ô-ˆõ ˜WœY¨¬
°AÀ4ÐHÑHÔH‰ˆˆ8Ý�—’˜q !Ñ$Ô$Ñ%Ô%Ð%õ Ð9Ð9Ð9Ð9¸7¼:ÀqØ)-°dð<ñ <ô <‰ˆˆ8å�—’˜q !Ñ$Ô$Ñ%Ô%Ð%å�7˜EÑ"Ô"ð 
	*å  ¤¨G¬J¸ÀÄØ-1ð3ñ 3ô 3‰KˆAˆxå�G—N’N 1 aÑ(Ô(Ñ)Ô)Ð)õ !Ð!=Ð!=Ð!=Ð!=¸w¼zÈ1Ø&DÐ&DÐ&DÐ&DØ-1¸$ð@ñ @ô @‰KˆAˆxõ �G—N’N 1 aÑ(Ô(Ñ)Ô)Ð)Ð)Ð)ð
	*ð 
	*r(   c                 óh   — t           D ])} |¦   «         }|j        rŒ|                      |¦  «         Œ*d S r   ©ÚPROBLEMSÚcmplxr6   ©r3   Úproblem_clsr%   s      r&   Útest_odeintzTestOdeint.test_odeint0   sJ   € Ý#ð 	&ð 	&ˆKØ!�k‘m”mˆGØŒ}ð ØØ×Ò˜WÑ%Ô%Ð%Ð%ð		&ð 	&r(   N)Ú__name__Ú
__module__Ú__qualname__r6   r=   © r(   r&   r   r      s2   € € € € € ð*ð *ð *ð0&ð &ð &ð &ð &r(   r   c                   ó   — e Zd ZdZdd„ZdS )ÚTestODEClassNÚadamsc                 ó˜  ‡— ˆfd„}d }t          ‰d¦  «        rˆfd„}i }‰j        €‰j        �‰j        |d<   ‰j        |d<   |                      ||¦  «        } |j        |f‰j        dz  ‰j        dz  |dœ|¤Ž |                     ‰j        d¬	¦  «         | 	                    ‰j
        ¦  «        }t          ||j        ¦  «         t          |                     ¦   «         ‰|f¦  «         t          |                     ¦   «         d
k    ‰|f¦  «         t          ‰                     t#          |g¦  «        ‰j
        ¦  «        ‰|f¦  «         d S )Nc                 ó0   •— ‰                      || ¦  «        S r   r    ©r#   r4   r%   s     €r&   r!   z#TestODEClass._do_problem.<locals>.f?   s   ø€ Ø—9’9˜Q ‘?”?Ð"r(   r*   c                 ó0   •— ‰                      || ¦  «        S r   r.   rG   s     €r&   r*   z%TestODEClass._do_problem.<locals>.jacC   s   ø€ Ø—{’{ 1 aÑ(Ô(Ð(r(   ÚubandÚlbandé
   )ÚatolÚrtolÚmethodr   )r#   r   )r2   rJ   rI   Ú	ode_classÚset_integratorrL   rM   Úset_initial_valuer0   Ú	integrater/   r   r$   r   Ú
successfulÚget_return_coder1   r   )	r3   r%   Ú
integratorrN   r!   r*   Úintegrator_paramsÚigr4   s	    `       r&   r6   zTestODEClass._do_problem<   sŠ  ø€ ð	#ð 	#ð 	#ð 	#ð 	#àˆÝ�7˜EÑ"Ô"ð 	)ð)ð )ð )ð )ð )ð ÐØŒ=Ð$¨¬Ð(AØ)0¬Ð˜gÑ&Ø)0¬Ð˜gÑ&à�^Š^˜A˜sÑ#Ô#ˆØˆÔ˜*ð 	/Ø&œ|¨B™Ø&œ|¨B™Ø!'ð	/ð 	/ð .ð		/ð 	/ð 	/ð 	×Ò˜WœZ¨3ÐÑ/Ô/Ð/Ø�LŠL˜œÑ(Ô(ˆå˜1˜bœdÑ#Ô#Ð#Ý�—’‘” '¨6Ð!2Ñ3Ô3Ð3Ý�×"Ò"Ñ$Ô$ qÒ(¨7°FÐ*;Ñ<Ô<Ð<Ý�—’�u a S™zœz¨7¬>Ñ:Ô:¸WÀfÐ<MÑNÔNÐNÐNÐNr(   )rD   )r>   r?   r@   rO   r6   rA   r(   r&   rC   rC   8   s3   € € € € € à€IðOð Oð Oð Oð Oð Or(   rC   c                   ó`   — e Zd ZeZd„ Zd„ Zd„ Zd„ Zd„ Z	e
j        j        d„ ¦   «         Zd„ ZdS )	ÚTestOdec                 ó¨   — t           D ]I} |¦   «         }|j        rŒ|j        s|                      |dd¦  «         |                      |dd¦  «         ŒJd S ©NÚvoderD   Úbdf)r9   r:   Ústiffr6   r;   s      r&   Ú	test_vodezTestOde.test_vode_   sp   € å#ð 	5ð 	5ˆKØ!�k‘m”mˆGØŒ}ð ØØ”=ð ;Ø× Ò  ¨&°'Ñ:Ô:Ð:Ø×Ò˜W f¨eÑ4Ô4Ð4Ð4ð	5ð 	5r(   c                 ó˜   — t           D ]A} |¦   «         }|j        s|                      |dd¦  «         |                      |dd¦  «         ŒBd S )NÚzvoderD   r]   ©r9   r^   r6   r;   s      r&   Ú
test_zvodezTestOde.test_zvodei   sc   € å#ð 	6ð 	6ˆKØ!�k‘m”mˆGØ”=ð <Ø× Ò  ¨'°7Ñ;Ô;Ð;Ø×Ò˜W g¨uÑ5Ô5Ð5Ð5ð		6ð 	6r(   c                 ój   — t           D ]*} |¦   «         }|j        rŒ|                      |d¦  «         Œ+d S ©NÚlsodar8   r;   s      r&   Ú
test_lsodazTestOde.test_lsodaq   sL   € å#ð 	/ð 	/ˆKØ!�k‘m”mˆGØŒ}ð ØØ×Ò˜W gÑ.Ô.Ð.Ð.ð		/ð 	/r(   c                 óœ   — t           D ]C} |¦   «         }|j        rŒ|j        rŒt          |d¦  «        rŒ-|                      |d¦  «         ŒDd S ©Nr*   Údopri5©r9   r:   r^   r2   r6   r;   s      r&   Útest_dopri5zTestOde.test_dopri5y   ón   € å#ð 	0ð 	0ˆKØ!�k‘m”mˆGØŒ}ð ØØŒ}ð ØÝ�w Ñ&Ô&ð ØØ×Ò˜W hÑ/Ô/Ð/Ð/ð	0ð 	0r(   c                 óœ   — t           D ]C} |¦   «         }|j        rŒ|j        rŒt          |d¦  «        rŒ-|                      |d¦  «         ŒDd S ©Nr*   Údop853rk   r;   s      r&   Útest_dop853zTestOde.test_dop853…   rm   r(   c                 ó°  — dD ]Ò}d„ }t          |¦  «                             |¦  «        }|                     dd¦  «         t          |¦  «                             |¦  «        }|                     dd¦  «         |                     |j        dz   ¦  «         |                     |j        dz   ¦  «         t          t          |j        |j        dz   ¦  «         ŒÓd S )N)r\   ra   rf   c                 ó   — dS ©Nç      ð?rA   ©r#   r$   s     r&   r!   z'TestOde.test_concurrent_fail.<locals>.f”   s   € Ø�sr(   r   çš™™™™™¹?)r   rP   rQ   rR   r#   Úassert_raisesÚRuntimeError)r3   Úsolr!   ÚrÚr2s        r&   Útest_concurrent_failzTestOde.test_concurrent_fail‘   sÛ   € à-ð 	@ð 	@ˆCðð ð õ �A‘”×%Ò% cÑ*Ô*ˆAØ×Ò  1Ñ%Ô%Ð%å�Q‘”×&Ò& sÑ+Ô+ˆBØ× Ò   AÑ&Ô&Ð&à�KŠK˜œ˜c™	Ñ"Ô"Ð"Ø�LŠL˜œ ™Ñ$Ô$Ð$å�,¨¬°Q´S¸3±YÑ?Ô?Ð?Ð?ð	@ð 	@r(   c                 óš  — d„ }t          d¦  «        D �]6}dD ]þ}|dv r|dk    rŒt          |¦  «                             |¦  «        }|                     dd¦  «         t          |¦  «                             |¦  «        }|                     dd¦  «         |                     |j        dz   ¦  «         |                     |j        dz   ¦  «         |                     |j        dz   ¦  «         t          |j        d¦  «         t          |j        d¦  «         Œÿd	D �].}t          |¦  «                             |¦  «        }|                     dd¦  «         t          |¦  «                             |¦  «        }|                     dd¦  «         |                     |j        dz   ¦  «         |                     |j        dz   ¦  «         |                     |j        dz   ¦  «         |                     |j        dz   ¦  «         |                     |j        dz   ¦  «         t          |j        d
¦  «         t          |j        d¦  «         �Œ0�Œ8d S )Nc                 ó   — dS rt   rA   rv   s     r&   r!   z%TestOde.test_concurrent_ok.<locals>.f£   s   € Ø�3r(   é   )r\   ra   rf   rj   rp   >   r\   rf   ra   é   r   rw   gš™™™™™É?©rj   rp   g333333Ó?)Úranger   rP   rQ   rR   r#   r   r$   )r3   Únum_parallel_threadsr!   Úkrz   r{   r|   s          r&   Útest_concurrent_okzTestOde.test_concurrent_ok¢   s:  € ð	ð 	ð 	õ �q‘”ð 	+ñ 	+ˆAØEð +ð +�ØÐ4Ð4Ð4Ð9MÐPQÒ9QÐ9QØÝ˜‘F”F×)Ò)¨#Ñ.Ô.�Ø×#Ò# A qÑ)Ô)Ð)å˜‘V”V×*Ò*¨3Ñ/Ô/�Ø×$Ò$ Q¨Ñ*Ô*Ð*à—’˜AœC #™IÑ&Ô&Ð&Ø—’˜RœT C™ZÑ(Ô(Ð(Ø—’˜RœT C™ZÑ(Ô(Ð(å ¤ SÑ)Ô)Ð)Ý ¤ cÑ*Ô*Ð*Ð*à+ð +ñ +�Ý˜‘F”F×)Ò)¨#Ñ.Ô.�Ø×#Ò# A qÑ)Ô)Ð)å˜‘V”V×*Ò*¨3Ñ/Ô/�Ø×$Ò$ Q¨Ñ*Ô*Ð*à—’˜AœC #™IÑ&Ô&Ð&Ø—’˜AœC #™IÑ&Ô&Ð&Ø—’˜RœT C™ZÑ(Ô(Ð(Ø—’˜AœC #™IÑ&Ô&Ð&Ø—’˜RœT C™ZÑ(Ô(Ð(å ¤ SÑ)Ô)Ð)Ý ¤ cÑ*Ô*Ð*Ñ*ñ+ð#	+ð 	+r(   N)r>   r?   r@   r   rO   r_   rc   rg   rl   rq   ÚpytestÚmarkÚthread_unsafer}   r†   rA   r(   r&   rY   rY   [   s—   € € € € € à€Ið5ð 5ð 5ð6ð 6ð 6ð/ð /ð /ð
0ð 
0ð 
0ð
0ð 
0ð 
0ð „[Ôð@ð @ñ Ôð@ð #+ð #+ð #+ð #+ð #+r(   rY   c                   ó*   — e Zd ZeZd„ Zd„ Zd„ Zd„ ZdS )ÚTestComplexOdec                 óš   — t           D ]B} |¦   «         }|j        s|                      |dd¦  «         Œ+|                      |dd¦  «         ŒCd S r[   rb   r;   s      r&   r_   zTestComplexOde.test_vodeÌ   sf   € å#ð 	9ð 	9ˆKØ!�k‘m”mˆGØ”=ð 9Ø× Ò  ¨&°'Ñ:Ô:Ð:Ð:à× Ò  ¨&°%Ñ8Ô8Ð8Ð8ð	9ð 	9r(   c                 óZ   — t           D ]"} |¦   «         }|                      |d¦  «         Œ#d S re   )r9   r6   r;   s      r&   rg   zTestComplexOde.test_lsodaÕ   sA   € õ $ð 	/ð 	/ˆKØ!�k‘m”mˆGØ×Ò˜W gÑ.Ô.Ð.Ð.ð	/ð 	/r(   c                 óŒ   — t           D ];} |¦   «         }|j        rŒt          |d¦  «        rŒ%|                      |d¦  «         Œ<d S ri   ©r9   r^   r2   r6   r;   s      r&   rl   zTestComplexOde.test_dopri5Ü   óa   € å#ð 	0ð 	0ˆKØ!�k‘m”mˆGØŒ}ð ØÝ�w Ñ&Ô&ð ØØ×Ò˜W hÑ/Ô/Ð/Ð/ð	0ð 	0r(   c                 óŒ   — t           D ];} |¦   «         }|j        rŒt          |d¦  «        rŒ%|                      |d¦  «         Œ<d S ro   r�   r;   s      r&   rq   zTestComplexOde.test_dop853æ   r�   r(   N)	r>   r?   r@   r   rO   r_   rg   rl   rq   rA   r(   r&   r‹   r‹   È   sU   € € € € € à€Ið9ð 9ð 9ð/ð /ð /ð0ð 0ð 0ð0ð 0ð 0ð 0ð 0r(   r‹   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú
TestSoloutc                 ó¨  ‡	‡
— g Š	g Š
d}d}ddg}ˆ	ˆ
fd„}d„ }t          |¦  «                             |¦  «        }|                     |¦  «         |                     ||¦  «         |                     |¦  «        }t          ‰
d         |¦  «         t          ‰
d         |¦  «         t          ‰	d         |¦  «         t          ‰	d         |¦  «         d S )	Nr   ç      $@ru   ç       @c                 ó€   •— ‰                      | ¦  «         ‰                      |                     ¦   «         ¦  «         d S r   ©ÚappendÚcopy©r#   r$   ÚtsÚyss     €€r&   Úsoloutz+TestSolout._run_solout_test.<locals>.soloutû   ó2   ø€ Ø�IŠI�a‰LŒLˆLØ�IŠI�a—f’f‘h”hÑÔÐÐÐr(   c                 ó<   — |d         |d         z   |d         dz   gS ©Nr   r�   é   rA   rv   s     r&   Úrhsz(TestSolout._run_solout_test.<locals>.rhsÿ   ó#   € Ø�a”D˜1˜Qœ4‘K ! A¤$¨¡' Ð*Ð*r(   r   éÿÿÿÿ)r   rP   Ú
set_soloutrQ   rR   r   r   ©r3   rU   Út0ÚtendÚy0rž   r£   rW   Úretrœ   r�   s            @@r&   Ú_run_solout_testzTestSolout._run_solout_testó   sø   øø€ àˆØˆØˆØˆØ�3ˆZˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð	+ð 	+ð 	+õ �‰XŒX×$Ò$ ZÑ0Ô0ˆØ
�Š�fÑÔÐØ
×Ò˜R Ñ$Ô$Ð$Ø�lŠl˜4Ñ Ô ˆÝ˜2˜aœ5 "Ñ%Ô%Ð%Ý˜2˜bœ6 3Ñ'Ô'Ð'Ý�R˜”U˜BÑÔÐÝ�R˜”V˜TÑ"Ô"Ð"Ð"Ð"r(   c                 ó:   — dD ]}|                       |¦  «         Œd S ©Nr‚   ©r¬   ©r3   rU   s     r&   Útest_soloutzTestSolout.test_solout  ó2   € Ø.ð 	.ð 	.ˆJØ×!Ò! *Ñ-Ô-Ð-Ð-ð	.ð 	.r(   c                 ó¨  ‡	‡
— g Š	g Š
d}d}ddg}ˆ	ˆ
fd„}d„ }t          |¦  «                             |¦  «        }|                     ||¦  «         |                     |¦  «         |                     |¦  «        }t          ‰
d         |¦  «         t          ‰
d         |¦  «         t          ‰	d         |¦  «         t          ‰	d         |¦  «         d S )	Nr   r•   ru   r–   c                 ó€   •— ‰                      | ¦  «         ‰                      |                     ¦   «         ¦  «         d S r   r˜   r›   s     €€r&   rž   z9TestSolout._run_solout_after_initial_test.<locals>.solout  rŸ   r(   c                 ó<   — |d         |d         z   |d         dz   gS r¡   rA   rv   s     r&   r£   z6TestSolout._run_solout_after_initial_test.<locals>.rhs  r¤   r(   r   r¥   )r   rP   rQ   r¦   rR   r   r   r§   s            @@r&   Ú_run_solout_after_initial_testz)TestSolout._run_solout_after_initial_test  sø   øø€ àˆØˆØˆØˆØ�3ˆZˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð	+ð 	+ð 	+õ �‰XŒX×$Ò$ ZÑ0Ô0ˆØ
×Ò˜R Ñ$Ô$Ð$Ø
�Š�fÑÔÐØ�lŠl˜4Ñ Ô ˆÝ˜2˜aœ5 "Ñ%Ô%Ð%Ý˜2˜bœ6 3Ñ'Ô'Ð'Ý�R˜”U˜BÑÔÐÝ�R˜”V˜TÑ"Ô"Ð"Ð"Ð"r(   c                 ó:   — dD ]}|                       |¦  «         Œd S r®   )r¶   r°   s     r&   Útest_solout_after_initialz$TestSolout.test_solout_after_initial'  s2   € Ø.ð 	<ð 	<ˆJØ×/Ò/°
Ñ;Ô;Ð;Ð;ð	<ð 	<r(   c                 óê  ‡‡	‡
— g Š	g Š
d}dŠddg}ˆˆ	ˆ
fd„}d„ }t          |¦  «                             |¦  «        }|                     |¦  «         |                     ||¦  «         |                     ‰¦  «        }t          ‰
d         |¦  «         t          ‰
d         |¦  «         t          ‰	d         |¦  «         t          ‰	d         ‰dz  k    ¦  «         t          ‰	d         ‰k     ¦  «         d S )	Nr   r•   ru   r–   c                 ó–   •— ‰                      | ¦  «         ‰                      |                     ¦   «         ¦  «         | ‰dz  k    rdS d S ©Nr–   r¥   r˜   ©r#   r$   r©   rœ   r�   s     €€€r&   rž   z1TestSolout._run_solout_break_test.<locals>.solout3  óE   ø€ Ø�IŠI�a‰LŒLˆLØ�IŠI�a—f’f‘h”hÑÔÐØ�4˜‘8Š|ˆ|Ø�rð ˆ|r(   c                 ó<   — |d         |d         z   |d         dz   gS r¡   rA   rv   s     r&   r£   z.TestSolout._run_solout_break_test.<locals>.rhs9  r¤   r(   r   r¥   )r   rP   r¦   rQ   rR   r   r   r   ©r3   rU   r¨   rª   rž   r£   rW   r«   r©   rœ   r�   s           @@@r&   Ú_run_solout_break_testz!TestSolout._run_solout_break_test+  s  øøø€ àˆØˆØˆØˆØ�3ˆZˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð	+ð 	+ð 	+õ �‰XŒX×$Ò$ ZÑ0Ô0ˆØ
�Š�fÑÔÐØ
×Ò˜R Ñ$Ô$Ð$Ø�lŠl˜4Ñ Ô ˆÝ˜2˜aœ5 "Ñ%Ô%Ð%Ý˜2˜bœ6 3Ñ'Ô'Ð'Ý�R˜”U˜BÑÔÐÝ��2”˜˜c™Ò!Ñ"Ô"Ð"Ý��2”˜’ÑÔÐÐÐr(   c                 ó:   — dD ]}|                       |¦  «         Œd S r®   ©rÀ   r°   s     r&   Útest_solout_breakzTestSolout.test_solout_breakF  ó2   € Ø.ð 	4ð 	4ˆJØ×'Ò'¨
Ñ3Ô3Ð3Ð3ð	4ð 	4r(   N)	r>   r?   r@   r¬   r±   r¶   r¸   rÀ   rÃ   rA   r(   r&   r“   r“   ñ   sn   € € € € € ð#ð #ð #ð0.ð .ð .ð#ð #ð #ð0<ð <ð <ðð ð ð64ð 4ð 4ð 4ð 4r(   r“   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestComplexSoloutc                 ó¦  ‡	‡
— g Š	g Š
d}d}dg}ˆ	ˆ
fd„}d„ }t          |¦  «                             |¦  «        }|                     |¦  «         |                     ||¦  «         |                     |¦  «        }t          ‰
d         |¦  «         t          ‰
d         |¦  «         t          ‰	d         |¦  «         t          ‰	d         |¦  «         d S )Nr   ç      4@c                 ó€   •— ‰                      | ¦  «         ‰                      |                     ¦   «         ¦  «         d S r   r˜   r›   s     €€r&   rž   z2TestComplexSolout._run_solout_test.<locals>.soloutU  rŸ   r(   c                 ó   — d| dz
  dz
  z  gS ©Nru   r•   ù              ð?rA   rv   s     r&   r£   z/TestComplexSolout._run_solout_test.<locals>.rhsY  ó   € Ø˜˜T™ B™Ñ'Ð(Ð(r(   r   r¥   )r   rP   r¦   rQ   rR   r   r   r§   s            @@r&   r¬   z"TestComplexSolout._run_solout_testM  sø   øø€ àˆØˆØˆØˆØˆUˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð	)ð 	)ð 	)õ ˜ÑÔ×,Ò,¨ZÑ8Ô8ˆØ
�Š�fÑÔÐØ
×Ò˜R Ñ$Ô$Ð$Ø�lŠl˜4Ñ Ô ˆÝ˜2˜aœ5 "Ñ%Ô%Ð%Ý˜2˜bœ6 3Ñ'Ô'Ð'Ý�R˜”U˜BÑÔÐÝ�R˜”V˜TÑ"Ô"Ð"Ð"Ð"r(   c                 ó:   — dD ]}|                       |¦  «         Œd S r®   r¯   r°   s     r&   r±   zTestComplexSolout.test_soloute  r²   r(   c                 óè  ‡‡	‡
— g Š	g Š
d}dŠdg}ˆˆ	ˆ
fd„}d„ }t          |¦  «                             |¦  «        }|                     |¦  «         |                     ||¦  «         |                     ‰¦  «        }t          ‰
d         |¦  «         t          ‰
d         |¦  «         t          ‰	d         |¦  «         t          ‰	d         ‰dz  k    ¦  «         t          ‰	d         ‰k     ¦  «         d S )Nr   rÈ   c                 ó–   •— ‰                      | ¦  «         ‰                      |                     ¦   «         ¦  «         | ‰dz  k    rdS d S r»   r˜   r¼   s     €€€r&   rž   z8TestComplexSolout._run_solout_break_test.<locals>.soloutq  r½   r(   c                 ó   — d| dz
  dz
  z  gS rË   rA   rv   s     r&   r£   z5TestComplexSolout._run_solout_break_test.<locals>.rhsw  rÍ   r(   r   r¥   r–   )r   rP   r¦   rQ   rR   r   r   r   r¿   s           @@@r&   rÀ   z(TestComplexSolout._run_solout_break_testi  s  øøø€ àˆØˆØˆØˆØˆUˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð	)ð 	)ð 	)õ ˜ÑÔ×,Ò,¨ZÑ8Ô8ˆØ
�Š�fÑÔÐØ
×Ò˜R Ñ$Ô$Ð$Ø�lŠl˜4Ñ Ô ˆÝ˜2˜aœ5 "Ñ%Ô%Ð%Ý˜2˜bœ6 3Ñ'Ô'Ð'Ý�R˜”U˜BÑÔÐÝ��2”˜˜c™Ò!Ñ"Ô"Ð"Ý��2”˜’ÑÔÐÐÐr(   c                 ó:   — dD ]}|                       |¦  «         Œd S r®   rÂ   r°   s     r&   rÃ   z#TestComplexSolout.test_solout_break„  rÄ   r(   N)r>   r?   r@   r¬   r±   rÀ   rÃ   rA   r(   r&   rÆ   rÆ   K  sP   € € € € € ð#ð #ð #ð0.ð .ð .ðð ð ð64ð 4ð 4ð 4ð 4r(   rÆ   c                   ó2   — e Zd ZdZdZdZdZg ZdZdZ	dZ
dZdS )ÚODEz
    ODE problem
    Fr�   Ng�íµ ÷Æ°>gñhãˆµøä>)r>   r?   r@   Ú__doc__r^   r:   r/   r0   rJ   rI   rL   rM   rA   r(   r&   rÔ   rÔ   Ž  sB   € € € € € ðð ð €EØ€EØ€FØ	€Bà€EØ€Eà€DØ€D€D€Dr(   rÔ   c                   óF   — e Zd ZdZdZ eddge¦  «        ZdZdZ	d„ Z
d„ ZdS )	ÚSimpleOscillatorzÇ
    Free vibration of a simple oscillator::
        m \ddot{u} + k u = 0, u(0) = u_0 \dot{u}(0) \dot{u}_0
    Solution::
        u(t) = u_0*cos(sqrt(k/m)*t)+\dot{u}_0*sin(sqrt(k/m)*t)/sqrt(k/m)
    gq=
×£pñ?ru   rw   g      @c                 ó|   — t          dt          ¦  «        }d|d<   | j         | j        z  |d<   t	          ||¦  «        S )N)r¢   r¢   ru   ©r   r�   )r�   r   )r   Úfloatr…   Úmr   )r3   r4   r#   Útmps       r&   r!   zSimpleOscillator.f«  s<   € Ý�F�EÑ"Ô"ˆØˆˆD‰	Ø”V�G˜dœfÑ$ˆˆD‰	Ý�3˜‰{Œ{Ðr(   c                 ó  — t          | j        | j        z  ¦  «        }| j        d         t	          ||z  ¦  «        z  | j        d         t          ||z  ¦  «        z  |z  z   }t          ||d d …df         | j        | j        ¬¦  «        S )Nr   r�   ©rL   rM   )	r   r…   rÛ   r0   r   r	   r   rL   rM   )r3   Úzsr#   ÚomegaÚus        r&   r1   zSimpleOscillator.verify±  sw   € Ý�T”V˜dœf‘_Ñ%Ô%ˆØŒG�AŒJ•s˜5 ™7‘|”|Ñ# d¤g¨a¤jµ°U¸1±W±´Ñ&=¸eÑ&CÑCˆÝ˜˜2˜a˜a˜a ˜dœ8¨$¬)¸$¼)ÐDÑDÔDÐDr(   N)r>   r?   r@   rÕ   r/   r   rÚ   r0   r…   rÛ   r!   r1   rA   r(   r&   r×   r×   ž  sg   € € € € € ðð ð €FØ	ˆ��Sˆz˜5Ñ	!Ô	!€Bà€AØ€Aðð ð ðEð Eð Eð Eð Er(   r×   c                   óL   — e Zd ZdZdez  Z eg d¢¦  «        ZdZd„ Z	d„ Z
d„ ZdS )	Ú
ComplexExpzThe equation :lm:`\dot u = i u`g®Gáz®ó?)rÌ   y               @y              @y              @y              @Tc                 ó   — d|z  S )NrÌ   rA   ©r3   r4   r#   s      r&   r!   zComplexExp.f½  s   € Ø�!‰tˆr(   c                 ó&   — dt          d¦  «        z  S )NrÌ   é   )r
   rå   s      r&   r*   zComplexExp.jacÀ  s   € Ø•#�a‘&”&‰yÐr(   c                 óp   — | j         t          d|z  ¦  «        z  }t          ||| j        | j        ¬¦  «        S )NrÌ   rÞ   )r0   r   r   rL   rM   ©r3   rß   r#   rá   s       r&   r1   zComplexExp.verifyÃ  s3   € ØŒG•c˜"˜Q™$‘i”iÑˆÝ˜˜2 D¤I°D´IÐ>Ñ>Ô>Ð>r(   N)r>   r?   r@   rÕ   r   r/   r   r0   r:   r!   r*   r1   rA   r(   r&   rã   rã   ·  sk   € € € € € Ø*Ð*Ø�"‰W€FØ	ˆÐ!Ð!Ð!Ñ	"Ô	"€BØ€Eðð ð ðð ð ð?ð ?ð ?ð ?ð ?r(   rã   c                   ó,   — e Zd ZdZdZdgZdZd„ Zd„ ZdS )ÚPiz'Integrate 1/(t + 1j) from t=-10 to t=10é   r   Tc                 ó4   — t          d|dz
  dz   z  g¦  «        S )Nru   rK   rÌ   ©r   rå   s      r&   r!   zPi.fÎ  s    € Ý�b˜!˜b™& 2™+Ñ&Ð'Ñ(Ô(Ð(r(   c                 ó~   — dt          j        d¦  «        z  }t          ||dd d …f         | j        | j        ¬¦  «        S )Ny       €       ÀrK   r¥   rÞ   )ÚnpÚarctanr   rL   rM   ré   s       r&   r1   z	Pi.verifyÑ  s;   € Ø•"”)˜B‘-”-ÑˆÝ˜˜2˜b ! ! !˜eœ9¨4¬9¸4¼9ÐEÑEÔEÐEr(   N)	r>   r?   r@   rÕ   r/   r0   r:   r!   r1   rA   r(   r&   rë   rë   È  sN   € € € € € Ø2Ð2Ø€FØ
ˆ€BØ€Eð)ð )ð )ðFð Fð Fð Fð Fr(   rë   c                   óD   — e Zd ZdZdZdZg d¢ZdZdZg d¢Z	d„ Z
d	„ Zd
„ ZdS )ÚCoupledDecayze
    3 coupled decays suited for banded treatment
    (banded mode makes it necessary when N>>3)
    Tç      à?)g      @g      @g      *@r�   r   )gÃõ(\�ÂÅ?gq=
×£pÍ?g�Âõ(\�Ò?c                 óæ   — | j         }t          j        |d          |d         z  |d          |d         z  |d         |d         z  z   |d          |d         z  |d         |d         z  z   g¦  «        S r¡   )Úlmbdrð   r   )r3   r4   r#   rö   s       r&   r!   zCoupledDecay.fä  sv   € ØŒyˆÝŒx˜$˜qœ'˜ ! A¤$™Ø˜qœ'˜ ! A¤$™¨¨a¬°°1´©Ñ5Ø˜qœ'˜ ! A¤$™¨¨a¬°°1´©Ñ5ð7ñ 8ô 8ð 	8r(   c                 ó8  ‡ ‡— ‰ j         }t          j        ‰ j        ‰ j        z   dz   dfd¬¦  «        Šˆˆ fd„} |dd|d          ¦  «          |dd|d         ¦  «          |dd|d          ¦  «          |dd|d         ¦  «          |dd|d          ¦  «         ‰S )Nr�   r€   ÚF©Úorderc                 ó,   •— |‰‰j         | z   |z
  |f<   d S r   )rI   )ÚriÚciÚvalÚjr3   s      €€r&   Úset_jzCoupledDecay.jac.<locals>.set_jú  s#   ø€ Ø*-ˆAˆdŒj˜2‰o Ñ" BÐ&Ñ'Ð'Ð'r(   r   r¢   )rö   rð   r   rJ   rI   )r3   r4   r#   rö   r   rÿ   s   `    @r&   r*   zCoupledDecay.jacê  sÕ   øø€ ð ŒyˆÝŒH�d”j 4¤:Ñ-°Ñ1°1Ð5¸SÐAÑAÔAˆð	.ð 	.ð 	.ð 	.ð 	.ð 	.àˆˆa��T˜!”W�HÑÔÐØˆˆa��D˜”GÑÔÐØˆˆa��T˜!”W�HÑÔÐØˆˆa��D˜”GÑÔÐØˆˆa��T˜!”W�HÑÔÐØˆr(   c           
      ó$  — t          j        | j        ¦  «        }|d         |d         z
  }|d         |d         z
  }|d         |d         z
  }t          j        |d          |z  ¦  «        }t          j        |d          |z  ¦  «        }t          j        |d          |z  ¦  «        }	t          j        | j        d         |z  | j        d         |z  | j        d         |d         z  |z  ||z
  z  z   | j        d         |	z  | j        d         |d         z  |z  ||	z
  z  z   |d         |d         z  | j        d         z  |z  d|z  ||	z
  z  d|z  ||	z
  z  z
  z  z   f¦  «                             ¦   «         }
t          |
|| j        | j	        ¬¦  «        S )Nr�   r   r¢   rÞ   )
rð   r   rö   r   Úvstackr0   Ú	transposer   rL   rM   )r3   rß   r#   rö   Úd10Úd21Úd20Úe0Úe1Úe2rá   s              r&   r1   zCoupledDecay.verify  s�  € åŒx˜œ	Ñ"Ô"ˆØ�1Œg˜˜QœÑˆØ�1Œg˜˜QœÑˆØ�1Œg˜˜QœÑˆÝŒV�T˜!”W�H˜q‘LÑ!Ô!ˆÝŒV�T˜!”W�H˜q‘LÑ!Ô!ˆÝŒV�T˜!”W�H˜q‘LÑ!Ô!ˆÝŒIØŒG�AŒJ˜‰OØŒG�AŒJ˜‰O˜dœg aœj¨4°¬7Ñ2°SÑ8¸BÀ¹GÑDÑDØŒG�AŒJ˜‰O˜dœg aœj¨4°¬7Ñ2°SÑ8¸BÀ¹GÑDÑDØ�ŒG�d˜1”gÑ ¤¨¤
Ñ*¨SÑ0Ø�‰W˜˜R™Ñ  1 s¡7¨b°2©gÑ#6Ñ6ñ8ñ8ð9ñ :ô :÷
 ;Dº)¹+¼+ð 	
õ ˜˜2 D¤I°D´IÐ>Ñ>Ô>Ð>r(   N)r>   r?   r@   rÕ   r^   r/   r0   rJ   rI   rö   r!   r*   r1   rA   r(   r&   ró   ró   Ö  sw   € € € € € ðð ð
 €EØ€FØ	Ð	Ð	€BØ€EØ€EàÐÐ€Dð8ð 8ð 8ðð ð ð2?ð ?ð ?ð ?ð ?r(   ró   c                 ó(   — |d         |d          g}|S ©Nr�   r   rA   )r#   ÚxÚdxdts      r&   r!   r!     s   € ØˆaŒD�1�Q”4�%ˆ=€DØ€Kr(   c                 ó0   — t          ddgddgg¦  «        }|S )Nr   ru   ç      ð¿rî   )r#   r  rÿ   s      r&   r*   r*     s(   € Ý��SˆzØ�cˆ{ðñ 	ô 	€Aà€Hr(   c                 ó4   — ||d         z  | |d         z  g}|S r  rA   ©r#   r  rà   r  s       r&   Úf1r  %  s#   € Ø�!�A”$‰J˜˜˜q œt™Ð$€DØ€Kr(   c                 ó2   — t          d|g| dgg¦  «        }|S ©Nr   rî   ©r#   r  rà   rÿ   s       r&   Újac1r  *  s*   € Ý��Uˆ|Ø�˜ˆ}ðñ 	ô 	€Aà€Hr(   c                 ó4   — ||d         z  | |d         z  g}|S r  rA   )r#   r  Úomega1Úomega2r  s        r&   Úf2r  0  s#   € Ø�1�Q”4‰K˜&˜  1¤™Ð&€DØ€Kr(   c                 ó2   — t          d|g| dgg¦  «        }|S r  rî   )r#   r  r  r  rÿ   s        r&   Újac2r  5  s*   € Ý��Vˆ}Ø�˜ˆ~ðñ 	 ô 	 €Aà€Hr(   c                 óL   — |d         |d         z  |d          |d         z  g}|S )Nr   r�   rA   r  s       r&   Úfvr  ;  s+   € Ø�!ŒH�Q�q”T‰M˜E !œH˜9 Q q¤T™>Ð*€DØ€Kr(   c                 óJ   — t          d|d         g|d          dgg¦  «        }|S )Nr   r   r�   rî   r  s       r&   Újacvr   @  s3   € Ý��U˜1”XˆØ�q”�	˜3Ðð!ñ 	"ô 	"€Aà€Hr(   c                   óh   — e Zd ZdZdZdZd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zej        j        d
„ ¦   «         ZdS )ÚODECheckParameterUsez=Call an ode-class solver with several cases of parameter use.Ú Fc                 ó¶   — t          ||¦  «        }| j        r$|                     | j        dd| j        ¬¦  «         n|                     | j        dd¬¦  «         |S )Ng•Ö&è.>gH¯¼šò×z>)rL   rM   Úwith_jacobianrÞ   )r   Úsolver_uses_jacrP   Úsolver_name)r3   r!   r*   Úsolvers       r&   Ú_get_solverz ODECheckParameterUse._get_solverO  su   € Ý�Q˜‘”ˆØÔð 	JØ×!Ò! $Ô"2¸ÀDØ04Ô0Dð "ñ Fô Fð Fð Fð ×!Ò! $Ô"2¸ÀDÐ!ÑIÔIÐIØˆr(   c                 óœ   — ddg}|                      |d¦  «         |                     t          ¦  «         t          |j        ddg¦  «         d S )Nru   r   r  )rQ   rR   r   r   r$   ©r3   r(  Úics      r&   Ú_check_solverz"ODECheckParameterUse._check_solver[  sQ   € Ø�3ˆZˆØ× Ò   SÑ)Ô)Ð)Ø×Ò�ÑÔÐÝ! &¤(¨T°3¨KÑ8Ô8Ð8Ð8Ð8r(   c                 óp   — |                       t          t          ¦  «        }|                      |¦  «         d S r   )r)  r!   r*   r-  )r3   r(  s     r&   Útest_no_paramsz#ODECheckParameterUse.test_no_paramsa  s1   € Ø×!Ò!¥!¥SÑ)Ô)ˆØ×Ò˜6Ñ"Ô"Ð"Ð"Ð"r(   c                 óÖ   — |                       t          t          ¦  «        }d}|                     |¦  «         | j        r|                     |¦  «         |                      |¦  «         d S rt   )r)  r  r  Úset_f_paramsr&  Úset_jac_paramsr-  ©r3   r(  rà   s      r&   Útest_one_scalar_paramz*ODECheckParameterUse.test_one_scalar_parame  si   € Ø×!Ò!¥"¥dÑ+Ô+ˆØˆØ×Ò˜EÑ"Ô"Ð"ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ø×Ò˜6Ñ"Ô"Ð"Ð"Ð"r(   c                 óÞ   — |                       t          t          ¦  «        }d}d}|                     ||¦  «         | j        r|                     ||¦  «         |                      |¦  «         d S rt   )r)  r  r  r1  r&  r2  r-  )r3   r(  r  r  s       r&   Útest_two_scalar_paramsz+ODECheckParameterUse.test_two_scalar_paramsm  sr   € Ø×!Ò!¥"¥dÑ+Ô+ˆØˆØˆØ×Ò˜F FÑ+Ô+Ð+ØÔð 	2Ø×!Ò! &¨&Ñ1Ô1Ð1Ø×Ò˜6Ñ"Ô"Ð"Ð"Ð"r(   c                 óÚ   — |                       t          t          ¦  «        }ddg}|                     |¦  «         | j        r|                     |¦  «         |                      |¦  «         d S rt   )r)  r  r   r1  r&  r2  r-  r3  s      r&   Útest_vector_paramz&ODECheckParameterUse.test_vector_paramv  sm   € Ø×!Ò!¥"¥dÑ+Ô+ˆØ�c�
ˆØ×Ò˜EÑ"Ô"Ð"ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ø×Ò˜6Ñ"Ô"Ð"Ð"Ð"r(   c                 óò   — |                       t          t          ¦  «        }|                     | j        d¬¦  «         ddg}|                     |d¦  «         t          t          |j        t          ¦  «         d S )Nr�   )Únstepsru   r   )
r)  r!   r*   rP   r'  rQ   r   ÚUserWarningrR   r   r+  s      r&   Útest_warns_on_failurez*ODECheckParameterUse.test_warns_on_failure~  so   € ð ×!Ò!¥!¥SÑ)Ô)ˆØ×Ò˜dÔ.°qÐÑ9Ô9Ð9Ø�3ˆZˆØ× Ò   SÑ)Ô)Ð)Ý•[ &Ô"2µBÑ7Ô7Ð7Ð7Ð7r(   N)r>   r?   r@   rÕ   r'  r&  r)  r-  r/  r4  r6  r8  r‡   rˆ   r‰   r<  rA   r(   r&   r"  r"  F  s¡   € € € € € ØGÐGð
 €KØ€Oð
ð 
ð 
ð9ð 9ð 9ð#ð #ð #ð#ð #ð #ð#ð #ð #ð#ð #ð #ð „[Ôð8ð 8ñ Ôð8ð 8ð 8r(   r"  c                   ó   — e Zd ZdZdZdS )ÚTestDOPRI5CheckParameterUserj   FN©r>   r?   r@   r'  r&  rA   r(   r&   r>  r>  ˆ  ó   € € € € € Ø€KØ€O€O€Or(   r>  c                   ó   — e Zd ZdZdZdS )ÚTestDOP853CheckParameterUserp   FNr?  rA   r(   r&   rB  rB  �  r@  r(   rB  c                   ó   — e Zd ZdZdZdS )ÚTestVODECheckParameterUser\   TNr?  rA   r(   r&   rD  rD  ’  s   € € € € € Ø€KØ€O€O€Or(   rD  c                   ó   — e Zd ZdZdZdS )ÚTestZVODECheckParameterUsera   TNr?  rA   r(   r&   rF  rF  —  ó   € € € € € Ø€KØ€O€O€Or(   rF  c                   ó   — e Zd ZdZdZdS )ÚTestLSODACheckParameterUserf   TNr?  rA   r(   r&   rI  rI  œ  rG  r(   rI  c                  ó†   — d} dg}t          d„ | |d¬¦  «        \  }}t          |t          j        | gg¦  «        ¦  «         d S )Nr�   r   c                 ó   — |  S r   rA   )r$   r#   s     r&   r'   z*test_odeint_trivial_time.<locals>.<lambda>¦  s   €  1 "€ r(   Tr   )r   r   rð   r   )rª   r#   r$   Úinfos       r&   Útest_odeint_trivial_timerM  ¡  sP   € ð 
€BØ	
ˆ€AÝ�_�_ b¨!¸Ð>Ñ>Ô>�G€A€tÝ�q�"œ( R D 6Ñ*Ô*Ñ+Ô+Ð+Ð+Ð+r(   c                  óî  ‡‡‡— d„ Šd„ Šd„ } d„ Šˆfd„}t          g d¢g d¢g d¢g d	¢g¦  «        }t          j        d
¦  «        }t          j         g d¢¦  «        }t          ‰|||fdddd‰¬¦	  «	        \  }}t          ‰|||fdddd| d¬¦
  «
        \  }}t          ‰|||fdddd‰dd¬¦  «        \  }	}
t          ‰|||fdddd|ddd¬¦  «        \  }}t	          ||d¬¦  «         t	          ||	dd¬¦  «         t	          |	|d¬¦  «         t          |d         |d         ¦  «         t          |
d         |d         ¦  «         t          ˆfd„|||fddddˆfd„d¬¦
  «
        \  }}t	          ||dd ¬!¦  «         d S )"Nc                 ó,   — |                      | ¦  «        S r   )r   ©r$   r#   Úcs      r&   Úfuncz)test_odeint_banded_jacobian.<locals>.func­  s   € Ø�uŠu�Q‰xŒxˆr(   c                 ó   — |S r   rA   rP  s      r&   r*   z(test_odeint_banded_jacobian.<locals>.jac°  s   € Øˆr(   c                 ó8   — |j                              d¬¦  «        S ©NÚCrù   ©ÚTrš   rP  s      r&   Újac_transposez2test_odeint_banded_jacobian.<locals>.jac_transpose³  s   € ØŒs�xŠx˜cˆxÑ"Ô"Ð"r(   c           
      ó:  — t          j        t           j        dt          j        |d¦  «        f         t          j        |¦  «        t           j        t          j        |d¦  «        df         t           j        t          j        |d¦  «        ddf         f¦  «        }|S )Nr   r�   r¥   éþÿÿÿ)rð   r  Úr_Údiag)r$   r#   rQ  r*   s       r&   Ú	bjac_rowsz.test_odeint_banded_jacobian.<locals>.bjac_rows¶  sv   € ÝŒi�œ˜q¥"¤'¨!¨Q¡-¤-Ð/Ô0ÝœG A™JœJÝœE¥"¤'¨!¨R¡.¤.°!Ð"3Ô4ÝœE¥"¤'¨!¨R¡.¤.°!°QÐ"6Ô7ð9ñ :ô :ˆð ˆ
r(   c                 óP   •—  ‰| ||¦  «        j                              d¬¦  «        S rU  rW  )r$   r#   rQ  r^  s      €r&   Ú	bjac_colsz.test_odeint_banded_jacobian.<locals>.bjac_cols½  s+   ø€ Øˆy˜˜A˜qÑ!Ô!Ô#×(Ò(¨sÐ(Ñ3Ô3Ð3r(   )i3ÿÿÿç{®Gáz„?r   r   )rw   g      Àg{®Gáz”?r   )gü©ñÒMbP?ra  g       Àra  )r   r   rw   r  é   )r   rç   rK   éd   Tg‚vIhÂ%<=g•dyáý¥=i'  )Úargsr   rL   rM   Úmxstepr+   )rd  r   rL   rM   re  r+   Ú	col_derivr¢   r�   )rd  r   rL   rM   re  r+   ÚmlÚmu)	rd  r   rL   rM   re  r+   rg  rh  rf  zsol1 != sol2)Úerr_msgçê-�™—q=zsol1 != sol3)rL   ri  zsol3 != sol4Únjec                 ó   •—  ‰|| |¦  «        S r   rA   )r#   r$   rQ  rR  s      €r&   r'   z-test_odeint_banded_jacobian.<locals>.<lambda>é  s   ø€ ¨T¨T°!°Q¸©]¬]€ r(   c                 ó   •—  ‰|| |¦  «        S r   rA   )r#   r$   rQ  r*   s      €r&   r'   z-test_odeint_banded_jacobian.<locals>.<lambda>ì  s   ø€ °#°#°a¸¸A±,´,€ r(   )rd  r   rL   rM   re  r+   r)   zsol1 != sol1ty)rM   ri  )r   rð   Úonesr   r   r   )rY  r`  rQ  rª   r#   Úsol1Úinfo1Úsol2Úinfo2Úsol3Úinfo3Úsol4Úinfo4Úsol1tyÚinfo1tyr^  rR  r*   s                  @@@r&   Útest_odeint_banded_jacobianry  ª  sc  øøø€ ðð ð ðð ð ð#ð #ð #ðð ð ð4ð 4ð 4ð 4ð 4õ 	Ð&Ð&Ð&Ø&Ð&Ð&Ø'Ð'Ð'Ø&Ð&Ð&ð(ñ 	)ô 	)€Aõ
 
Œ�‰Œ€BÝ
Œ���Ñ!Ô!€Aõ ˜˜r 1¨A¨4¸TØ#¨%¸Ø!ð#ñ #ô #�K€Dˆ%õ
 ˜˜r 1¨A¨4¸TØ#¨%¸Ø+°tð=ñ =ô =�K€Dˆ%õ
 ˜˜r 1¨A¨4¸TØ#¨%¸Ø'¨A°!ð5ñ 5ô 5�K€Dˆ%õ
 ˜˜r 1¨A¨4¸TØ#¨%¸Ø'¨A°!¸tðEñ Eô E�K€Dˆ%õ �D˜$¨Ð7Ñ7Ô7Ð7Ý�D˜$ U°NÐCÑCÔCÐCÝ�D˜$¨Ð7Ñ7Ô7Ð7õ �u˜U”| U¨5¤\Ñ2Ô2Ð2Ý�u˜U”| U¨5¤\Ñ2Ô2Ð2õ Ð:Ð:Ð:Ð:¸BÀÈÈØ)-°EÀØ$)Ø">Ð">Ð">Ð">ÀtðMñ Mô M�O€FˆGõ �D˜& uÐ6FÐGÑGÔGÐGÐGÐGr(   c                  óv  — d„ } d„ }d„ }d„ }d„ }d„ }d„ }t          t          t          |dd	d
g¦  «         t          t          t          |dd	d
g¦  «         t          t          t          | dd	d
g|¬¦  «         t          t          t          | dd	d
g|¬¦  «         t          t          t          |ddgd	d
g|¬¦  «         d S )Nc                 ó   — d| z  S ©NéœÿÿÿrA   ©r  r#   s     r&   Úsys1dz!test_odeint_errors.<locals>.sys1dô  ó   € Ø�A‰vˆr(   c                 ó   — ddz  S ©Nru   r   rA   r~  s     r&   Úbad1z test_odeint_errors.<locals>.bad1÷  ó   € Ø�1‰uˆr(   c                 ó   — dS ©NÚfoorA   r~  s     r&   Úbad2z test_odeint_errors.<locals>.bad2ú  s   € Øˆur(   c                 ó   — ddz  S r‚  rA   r~  s     r&   Úbad_jac1z$test_odeint_errors.<locals>.bad_jac1ý  r„  r(   c                 ó
   — dggS r†  rA   r~  s     r&   Úbad_jac2z$test_odeint_errors.<locals>.bad_jac2   s   € Ø�ˆyÐr(   c                 ó.   — d| d         z  d| d         z  gS )Nr}  r   çš™™™™™¹¿r�   rA   r~  s     r&   Úsys2dz!test_odeint_errors.<locals>.sys2d  s   € Ø�Q�q”T‘	˜4  !¤™9Ð%Ð%r(   c                 ó   — ddz  dgddggS )Nru   r   rŽ  rA   r~  s     r&   Úsys2d_bad_jacz)test_odeint_errors.<locals>.sys2d_bad_jac  s   € Ø�Q‘˜�
˜Q ˜IÐ&Ð&r(   ru   r   r�   ©r+   )rx   ÚZeroDivisionErrorr   Ú
ValueError)r  rƒ  rˆ  rŠ  rŒ  r�  r‘  s          r&   Útest_odeint_errorsr•  ó  s  € ðð ð ðð ð ðð ð ðð ð ðð ð ð&ð &ð &ð'ð 'ð 'õ Õ#¥V¨T°3¸¸A¸Ñ?Ô?Ð?Ý•*�f d¨C°!°Q°Ñ8Ô8Ð8åÕ#¥V¨U°C¸!¸Q¸ÀhÐOÑOÔOÐOÝ•*�f e¨S°1°a°&¸xÐHÑHÔHÐHåÕ#¥V¨U°S¸#°JÀÀAÀØ$ð&ñ &ô &ð &ð &ð &r(   c                  ó6  — d„ } d„ }d„ }ddgddgg}t          t          t          ||ddg¦  «         ddgddgg}t          t          t          |dg|¦  «         t          t          t          | d	ddg¦  «         t          t          t          |d	d	gddg|¬
¦  «         d S )Nc                 ó
   — ddgS )Nr�   r¥   rA   r~  s     r&   Úbadrhsz&test_odeint_bad_shapes.<locals>.badrhs  s   € Ø�2ˆwˆr(   c                 ó   — d| z  S r|  rA   r~  s     r&   Úsys1z$test_odeint_bad_shapes.<locals>.sys1  r€  r(   c                 ó   — g d¢gS )N)r   r   r   rA   r~  s     r&   Úbadjacz&test_odeint_bad_shapes.<locals>.badjac  s   € Ø�	�	ˆ{Ðr(   r   r�   r¢   r€   r•   rK   r’  )rx   r”  r   ry   )r˜  rš  rœ  Úbad_y0Úbad_ts        r&   Útest_odeint_bad_shapesrŸ    sÐ   € ðð ð ðð ð ðð ð ð �!ˆf�q˜!�fÐ€FÝ•*�f d¨F°Q¸°FÑ;Ô;Ð;ð �ˆV�a˜�VÐ€EÝ•*�f d¨T¨F°EÑ:Ô:Ð:õ •,¥¨°°Q¸°FÑ;Ô;Ð;õ •,¥¨¨r°2¨h¸¸A¸ÀVÐLÑLÔLÐLÐLÐLr(   c                  óÚ  — d„ } t          j        d¦  «        }t          | dg|¦  «        }t          |t          j        t          |¦  «        df¦  «        ¦  «         dt          j        d¦  «        z  }dgdz  |d|z  d|z  d	|z  gz   }t          | ddg|d
d
¬¦  «        }t          j        ddggdz  ddgddgddgddggz   ¦  «        }t          ||¦  «         t          | dgg ¦  «        }t          |t          j        g t           j	        ¬¦  «         
                    d¦  «        ¦  «         t          t          t          | dgg d¢¦  «         t          t          t          | g d¢g d¢¦  «         dS )zRegression test for gh-8217.c                 ó   — d| z  S )Ng      Ð¿rA   r~  s     r&   rR  z$test_repeated_t_values.<locals>.func1  s   € Ø�Q‰wˆr(   rK   ru   r�   rb  r¢   r   é	   r€   rj  )rM   rL   r–   rô   g      Ð?g      À?)ÚdtyperÙ   )r   r�   rô   r   )r�   r¢   r€   )r   r¥   r[  r€   N)rð   r   r   r   rn  ÚlenÚlogr   r   Úfloat64Úreshaperx   r”  )rR  r#   rz   ÚtauÚexpected_sols        r&   Útest_repeated_t_valuesrª  .  s„  € ðð ð õ 	Œ�‰Œ€AÝ
�˜�t˜QÑ
Ô
€CÝ�s�BœG¥S¨¡V¤V¨Q KÑ0Ô0Ñ1Ô1Ð1à
�BŒF�1‰IŒI‰+€CØ	
ˆˆA‰��a˜‘e˜Q˜s™U A c¡EÐ*Ñ*€AÝ
�˜˜1�v˜q u°5Ð
9Ñ
9Ô
9€CÝ”8˜c 3˜Z˜L¨™NØ! 3˜ZØ" C˜[Ø" C˜[Ø# T˜]ð,ñ,ñ -ô -€Lõ
 �C˜Ñ&Ô&Ð&õ �˜�t˜RÑ
 Ô
 €CÝ�s�BœH R­r¬zÐ:Ñ:Ô:×BÒBÀ6ÑJÔJÑKÔKÐKõ •*�f d¨R¨D°.°.°.ÑAÔAÐAÝ•*�f d¨I¨I¨I°~°~°~ÑFÔFÐFÐFÐFr(   );rÕ   Únumpyrð   r   r   r   r   r   r   r	   r
   r   r   r   Únumpy.testingr   r   r   r   r   r   r‡   r   rx   Úscipy.integrater   r   r   r   rC   rY   r‹   r“   rÆ   rÔ   r×   rã   rë   ró   r9   r!   r*   r  r  r  r  r  r   r"  r>  rB  rD  rF  rI  rM  ry  r•  rŸ  rª  rA   r(   r&   ú<module>r®     s  ððð ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðEð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð &ð  &ð  &ð  &ð  &ñ  &ô  &ð  &ðF Oð  Oð  Oð  Oð  Oñ  Oô  Oð  OðFj+ð j+ð j+ð j+ð j+ˆlñ j+ô j+ð j+ðZ&0ð &0ð &0ð &0ð &0�\ñ &0ô &0ð &0ðRW4ð W4ð W4ð W4ð W4ñ W4ô W4ð W4ðt;4ð ;4ð ;4ð ;4ð ;4ñ ;4ô ;4ð ;4ðFð ð ð ð ñ ô ð ð Eð Eð Eð Eð E�sñ Eô Eð Eð2?ð ?ð ?ð ?ð ?�ñ ?ô ?ð ?ð"Fð Fð Fð Fð Fˆñ Fô Fð Fð<?ð <?ð <?ð <?ð <?�3ñ <?ô <?ð <?ð~ ˜j¨"¨lÐ;€ð
ð ð ð
ð ð ðð ð ð
ð ð ðð ð ð
ð ð ðð ð ð
ð ð ð?8ð ?8ð ?8ð ?8ð ?8ñ ?8ô ?8ð ?8ðDð ð ð ð Ð"6ñ ô ð ð
ð ð ð ð Ð"6ñ ô ð ð
ð ð ð ð Ð 4ñ ô ð ð
ð ð ð ð Ð!5ñ ô ð ð
ð ð ð ð Ð!5ñ ô ð ð
,ð ,ð ,ðFHð FHð FHðR&ð &ð &ð@Mð Mð Mð6Gð Gð Gð Gð Gr(   