+
    ,i#`                     R   R t ^ RIt^ RIHtHtHtHtHtHtH	t	H
t
HtHtHt ^ RIHtHtHtHtHtHt ^ RIt^ RIHt ^ RIHtHtHt  ! R R4      t ! R R	4      t ! R
 R]4      t ! R R]4      t ! R R4      t  ! R R4      t! ! R R4      t" ! R R]"4      t# ! R R]"4      t$ ! R R]"4      t% ! R R]"4      t&]#]$]%]&.t'R t(R t)R t*R t+R  t,R! t-R" t.R# t/ ! R$ R%4      t0 ! R& R']04      t1 ! R( R)]04      t2 ! R* R+]04      t3 ! R, R-]04      t4 ! R. R/]04      t5R0 t6R1 t7R2 t8R3 t9R4 t:R# )5z"
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                   ,   a  ] tR t^t o R tR tRtV tR# )
TestOdeintc           	     b  a \        R SP                  R4      p\        SP                  SP                  VRR7      w  r4\        SP                  W24      4       \        V3R lSP                  VRRR7      w  r4\        SP                  W24      4       \        SR4      '       d   \        SP                  SP                  VSP                  RR7      w  r4\        SP                  W24      4       \        V3R lSP                  VV3R	 lRRR
7      w  r4\        SP                  W24      4       R# R# )        g?Tfull_outputc                 &   < SP                  W4      # Nftyproblems   &&F/usr/lib/python3/dist-packages/scipy/integrate/tests/test_integrate.py<lambda>(TestOdeint._do_problem.<locals>.<lambda>    s    '))A/    )r   tfirstjac)Dfunr   c                 &   < SP                  W4      # r   r   r!   s   &&r%   r&   r'   +   s    giior(   c                 &   < SP                  W4      # r   r*   r!   s   &&r%   r&   r'   ,   s    7;;q3Dr(   )r+   r   r)   N)	r   stop_tr   r    z0r   verifyhasattrr*   )selfr$   r"   zinfodicts   &f   r%   _do_problemTestOdeint._do_problem   s    3- WYY

A4Hq$% 97::q)-d<q$%7E"" GJJ-13KAGNN1() !!=wzz1&D-1$@KA GNN1() #r(   c                x    \          F/  pV! 4       pVP                  '       d   K  V P                  V4       K1  	  R # r   PROBLEMScmplxr6   r3   problem_clsr$   s   &  r%   test_odeintTestOdeint.test_odeint0   s-    #K!mG}}}W%	 $r(    N)__name__
__module____qualname____firstlineno__r6   r>   __static_attributes____classdictcell____classdict__s   @r%   r   r      s     *0& &r(   r   c                   .   a  ] tR t^8t o RtRR ltRtV tR# )TestODEClassNc           	       a V3R  lpRp\        SR4      '       d   V3R lp/ pSP                  f   SP                  e   SP                  VR&   SP                  VR&   V P                  WE4      pVP                  ! V3RSP
                  ^
,          RSP                  ^
,          RV/VB  VP                  SP                  R	R
7       VP                  SP                  4      p\        WP                  4       \        VP                  4       SV34       \        VP                  4       ^ 8  SV34       \        SP!                  \#        V.4      SP                  4      SV34       R# )c                 &   < SP                  W4      # r   r   r"   r4   r$   s   &&r%   r    #TestODEClass._do_problem.<locals>.f?   s    99Q?"r(   Nr*   c                 &   < SP                  W4      # r   r.   rM   s   &&r%   r*   %TestODEClass._do_problem.<locals>.jacC   s    {{1((r(   ubandlbandatolrtolmethodr   )r"   )r2   rR   rQ   	ode_classset_integratorrS   rT   set_initial_valuer0   	integrater/   r   r#   r   
successfulget_return_coder1   r   )	r3   r$   
integratorrU   r    r*   integrator_paramsigr4   s	   &f&&     r%   r6   TestODEClass._do_problem<   s7   	#7E"") ==$(A)0g&)0g&^^A#
* 	/&||B	/&||B	/ "(	/ .		/ 	WZZ3/LL(1dd#'6!23""$q(7F*;<uaSz7>>:Wf<MNr(   r@   )adams)rA   rB   rC   rD   rV   r6   rE   rF   rG   s   @r%   rJ   rJ   8   s     IO Or(   rJ   c                      a  ] tR t^[t o ]tR tR tR tR t	R t
]P                  P                  R 4       tR tRtV tR	# )
TestOdec                    \          FV  pV! 4       pVP                  '       d   K  VP                  '       g   V P                  VR R4       V P                  VR R4       KX  	  R# voder`   bdfN)r:   r;   stiffr6   r<   s   &  r%   	test_vodeTestOde.test_vode_   sL    #K!mG}}}===  &':Wfe4 $r(   c                    \          FB  pV! 4       pVP                  '       g   V P                  VR R4       V P                  VR R4       KD  	  R# )zvoder`   rf   Nr:   rg   r6   r<   s   &  r%   
test_zvodeTestOde.test_zvodei   s@    #K!mG===  '7;Wgu5	 $r(   c                z    \          F0  pV! 4       pVP                  '       d   K  V P                  VR 4       K2  	  R# lsodaNr9   r<   s   &  r%   
test_lsodaTestOde.test_lsodaq   s/    #K!mG}}}Wg.	 $r(   c                    \          FX  pV! 4       pVP                  '       d   K  VP                  '       d   K2  \        VR 4      '       d   KF  V P	                  VR4       KZ  	  R# r*   dopri5Nr:   r;   rg   r2   r6   r<   s   &  r%   test_dopri5TestOde.test_dopri5y   K    #K!mG}}}}}}w&&Wh/ $r(   c                    \          FX  pV! 4       pVP                  '       d   K  VP                  '       d   K2  \        VR 4      '       d   KF  V P	                  VR4       KZ  	  R# r*   dop853Nrw   r<   s   &  r%   test_dop853TestOde.test_dop853   rz   r(   c                   R F  pR p\        V4      P                  V4      pVP                  ^ ^ 4       \        V4      P                  V4      pVP                  ^ ^ 4       VP                  VP                  R,           4       VP                  VP                  R,           4       \        \        VP                  VP                  R,           4       K  	  R# )re   c                     R #       ?r@   r"   r#   s   &&r%   r    'TestOde.test_concurrent_fail.<locals>.f   s    r(   皙?N)re   rk   rq   )r   rW   rX   rY   r"   assert_raisesRuntimeError)r3   solr    rr2s   &    r%   test_concurrent_failTestOde.test_concurrent_fail   s    -C A%%c*A1%Q&&s+B  A&KKc	"LL$,QSS3Y? .r(   c                   R  p\        ^4       EF@  pR F  pVR9   d
   V^8  d   K  \        V4      P                  V4      pVP                  ^ ^ 4       \        V4      P                  V4      pVP                  ^ ^ 4       VP	                  VP
                  R,           4       VP	                  VP
                  R,           4       VP	                  VP
                  R,           4       \        VP                  R4       \        VP                  R4       K  	  R EF2  p\        V4      P                  V4      pVP                  ^ ^ 4       \        V4      P                  V4      pVP                  ^ ^ 4       VP	                  VP
                  R,           4       VP	                  VP
                  R,           4       VP	                  VP
                  R,           4       VP	                  VP
                  R,           4       VP	                  VP
                  R,           4       \        VP                  R4       \        VP                  R4       EK5  	  EKC  	  R# )c                     R # r   r@   r   s   &&r%   r    %TestOde.test_concurrent_ok.<locals>.f   s    r(   r   g?g333333?N)re   rk   rq   rv   r}   >   re   rq   rk   rv   r}   )ranger   rW   rX   rY   r"   r   r#   )r3   num_parallel_threadsr    kr   r   r   s   &&     r%   test_concurrent_okTestOde.test_concurrent_ok   s   	 qAE449MPQ9QF))#.##Aq)V**3/$$Q*ACC#I&RTTCZ(RTTCZ(S)c* F  ,F))#.##Aq)V**3/$$Q*ACC#I&ACC#I&RTTCZ(ACC#I&RTTCZ(S)c* ,# r(   r@   N)rA   rB   rC   rD   r   rV   rh   rm   rr   rx   r~   pytestmarkthread_unsafer   r   rE   rF   rG   s   @r%   rb   rb   [   sM     I56/
0
0 [[@ @ #+ #+r(   rb   c                   <   a  ] tR t^t o ]tR tR tR tR t	Rt
V tR# )TestComplexOdec                    \          FD  pV! 4       pVP                  '       g   V P                  VR R4       K1  V P                  VR R4       KF  	  R# rd   rl   r<   s   &  r%   rh   TestComplexOde.test_vode   s@    #K!mG===  &':  &%8 $r(   c                R    \          F  pV! 4       pV P                  VR 4       K  	  R# rp   )r:   r6   r<   s   &  r%   rr   TestComplexOde.test_lsoda   s%     $K!mGWg. $r(   c                    \          FD  pV! 4       pVP                  '       d   K  \        VR 4      '       d   K2  V P                  VR4       KF  	  R# ru   r:   rg   r2   r6   r<   s   &  r%   rx   TestComplexOde.test_dopri5   ?    #K!mG}}}w&&Wh/ $r(   c                    \          FD  pV! 4       pVP                  '       d   K  \        VR 4      '       d   K2  V P                  VR4       KF  	  R# r|   r   r<   s   &  r%   r~   TestComplexOde.test_dop853   r   r(   r@   N)rA   rB   rC   rD   r   rV   rh   rr   rx   r~   rE   rF   rG   s   @r%   r   r      s#     I9/00 0r(   r   c                   D   a  ] tR t^t o R tR tR tR tR tR t	Rt
V tR# )	
TestSoloutc                h  a	a
 . o	. o
R pRpRR.pV	V
3R lpR p\        V4      P                  V4      pVP                  V4       VP                  WB4       VP	                  V4      p\        S
^ ,          V4       \        S
R,          V4       \        S	^ ,          V4       \        S	R,          V4       R# )r         $@r          @c                 h   < SP                  V 4       SP                  VP                  4       4       R # r   appendcopyr"   r#   tsyss   &&r%   solout+TestSolout._run_solout_test.<locals>.solout        IIaLIIaffhr(   c                 R    V^ ,          V^,          ,           V^,          ^,          ) .#     r@   r   s   &&r%   rhs(TestSolout._run_solout_test.<locals>.rhs   #    aD1Q4K!A$'**r(   N)r   rW   
set_soloutrX   rY   r   r   r3   r\   t0tendy0r   r   r^   retr   r   s   &&       @@r%   _run_solout_testTestSolout._run_solout_test   s    3Z	 	+ X$$Z0
f
R$ll4 2a5"%2b63'RUBRVT"r(   c                :    R F  pV P                  V4       K  	  R# rv   Nr   r   r3   r\   s   & r%   test_soloutTestSolout.test_solout      .J!!*- /r(   c                h  a	a
 . o	. o
R pRpRR.pV	V
3R lpR p\        V4      P                  V4      pVP                  WB4       VP                  V4       VP	                  V4      p\        S
^ ,          V4       \        S
R,          V4       \        S	^ ,          V4       \        S	R,          V4       R# )r   r   r   r   c                 h   < SP                  V 4       SP                  VP                  4       4       R # r   r   r   s   &&r%   r   9TestSolout._run_solout_after_initial_test.<locals>.solout  r   r(   c                 R    V^ ,          V^,          ,           V^,          ^,          ) .# r   r@   r   s   &&r%   r   6TestSolout._run_solout_after_initial_test.<locals>.rhs  r   r(   Nr   )r   rW   rX   r   rY   r   r   r   s   &&       @@r%   _run_solout_after_initial_test)TestSolout._run_solout_after_initial_test  s    3Z	 	+ X$$Z0
R$
fll4 2a5"%2b63'RUBRVT"r(   c                :    R F  pV P                  V4       K  	  R# r   )r   r   s   & r%   test_solout_after_initial$TestSolout.test_solout_after_initial'  s    .J//
; /r(   c                  aa	a
 . o	. o
R pRoRR.pVV	V
3R lpR p\        V4      P                  V4      pVP                  V4       VP                  W24       VP	                  S4      p\        S
^ ,          V4       \        S
R,          V4       \        S	^ ,          V4       \        S	R,          SR,          8  4       \        S	R,          S8  4       R# )r   r   r   r   c                    < SP                  V 4       SP                  VP                  4       4       V SR ,          8  d   R# R# r   Nr   r   r"   r#   r   r   r   s   &&r%   r   1TestSolout._run_solout_break_test.<locals>.solout3  5    IIaLIIaffh48|	 r(   c                 R    V^ ,          V^,          ,           V^,          ^,          ) .# r   r@   r   s   &&r%   r   .TestSolout._run_solout_break_test.<locals>.rhs9  r   r(   Nr   )r   rW   r   rX   rY   r   r   r   r3   r\   r   r   r   r   r^   r   r   r   r   s   &&      @@@r%   _run_solout_break_test!TestSolout._run_solout_break_test+  s    3Z		+ X$$Z0
f
R$ll4 2a5"%2b63'RUB2c!"2r(   c                :    R F  pV P                  V4       K  	  R# r   r   r   s   & r%   test_solout_breakTestSolout.test_solout_breakF      .J''
3 /r(   r@   N)rA   rB   rC   rD   r   r   r   r   r   r   rE   rF   rG   s   @r%   r   r      s(     #0.#0<64 4r(   r   c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestComplexSoloutiK  c                f  a	a
 . o	. o
R pRpR .pV	V
3R lpR p\        V4      P                  V4      pVP                  V4       VP                  WB4       VP	                  V4      p\        S
^ ,          V4       \        S
R,          V4       \        S	^ ,          V4       \        S	R,          V4       R# )r         4@c                 h   < SP                  V 4       SP                  VP                  4       4       R # r   r   r   s   &&r%   r   2TestComplexSolout._run_solout_test.<locals>.soloutU  r   r(   c                 2    R V R,
          R,
          ,          .# r   r                 ?r@   r   s   &&r%   r   /TestComplexSolout._run_solout_test.<locals>.rhsY      TB'((r(   Nr   )r   rW   r   rX   rY   r   r   r   s   &&       @@r%   r   "TestComplexSolout._run_solout_testM  s    U	 	) ,,Z8
f
R$ll4 2a5"%2b63'RUBRVT"r(   c                :    R F  pV P                  V4       K  	  R# r   r   r   s   & r%   r   TestComplexSolout.test_soloute  r   r(   c                  aa	a
 . o	. o
R pRoR .pVV	V
3R lpR p\        V4      P                  V4      pVP                  V4       VP                  W24       VP	                  S4      p\        S
^ ,          V4       \        S
R,          V4       \        S	^ ,          V4       \        S	R,          SR,          8  4       \        S	R,          S8  4       R# )r   r   c                    < SP                  V 4       SP                  VP                  4       4       V SR ,          8  d   R# R# r   r   r   s   &&r%   r   8TestComplexSolout._run_solout_break_test.<locals>.soloutq  r   r(   c                 2    R V R,
          R,
          ,          .# r   r@   r   s   &&r%   r   5TestComplexSolout._run_solout_break_test.<locals>.rhsw  r   r(   r   Nr   )r   rW   r   rX   rY   r   r   r   r   s   &&      @@@r%   r   (TestComplexSolout._run_solout_break_testi  s    U		) ,,Z8
f
R$ll4 2a5"%2b63'RUB2c!"2r(   c                :    R F  pV P                  V4       K  	  R# r   r   r   s   & r%   r   #TestComplexSolout.test_solout_break  r   r(   r@   N)
rA   rB   rC   rD   r   r   r   r   rE   rF   rG   s   @r%   r   r   K  s     #0.64 4r(   r   c                   :    ] tR tRtRtRtRt^t. tRt	Rt
RtRtRtR# )ODEi  z
ODE problem
FNgư>gh㈵>r@   )rA   rB   rC   rD   __doc__rg   r;   r/   r0   rR   rQ   rS   rT   rE   r@   r(   r%   r   r     s1     EEF	BEEDDr(   r   c                   R   a  ] tR tRt o RtR
t]! RR.]4      tRt	Rt
R tR tRtV tR	# )SimpleOscillatori  z
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)
r   r   g      @c                    \        R\        4      pRVR&   V P                  ) V P                  ,          VR&   \	        W14      # )   r   )r  r  r      )r  r   )r   floatr   mr   )r3   r4   r"   tmps   &&& r%   r    SimpleOscillator.f  s9    FE"D	VVGdff$D	3{r(   c                \   \        V P                  V P                  ,          4      pV P                  ^ ,          \	        W2,          4      ,          V P                  ^,          \        W2,          4      ,          V,          ,           p\        WAR,          V P                  V P                  R7      # )r   rS   rT   )NNNr   )	r   r   r  r0   r   r   r   rS   rT   )r3   zsr"   omegaus   &&&  r%   r1   SimpleOscillator.verify  sh    TVVdff_%GGAJs57|#dggajUW&=e&CCd8$))$))DDr(   r@   Ngq=
ףp?)rA   rB   rC   rD   r   r/   r   r  r0   r   r  r    r1   rE   rF   rG   s   @r%   r   r     s<      F	Sz5	!BAAE Er(   r   c                   `   a  ] tR tRt o RtR],          t]! . R
O4      tRt	R t
R tR tRtV tR	# )
ComplexExpi  zThe equation :lm:`\dot u = i u`gGz?Tc                    R V,          # r   r@   r3   r4   r"   s   &&&r%   r    ComplexExp.f  s    !tr(   c                &    R \        ^4      ,          # r  )r	   r  s   &&&r%   r*   ComplexExp.jac  s    #a&yr(   c                    V P                   \        R V,          4      ,          p\        W1V P                  V P                  R7      # )r   r	  )r0   r   r   rS   rT   r3   r  r"   r  s   &&& r%   r1   ComplexExp.verify  s/    GGc"Q$iDIIDII>>r(   r@   N)r                  @y              @y              @y              @)rA   rB   rC   rD   r   r
   r/   r   r0   r;   r    r*   r1   rE   rF   rG   s   @r%   r  r    s5     *"WF	!	"BE? ?r(   r  c                   >   a  ] tR tRt o Rt^t^ .tRtR tR t	Rt
V tR# )Pii  z'Integrate 1/(t + 1j) from t=-10 to t=10Tc                D    \        R V^
,
          R,           ,          .4      # )r   r   r   r  s   &&&r%   r    Pi.f  s    b!b&2+&'((r(   c                    R\         P                  ! ^
4      ,          p\        W1R,          V P                  V P                  R7      # )r  r	  y              )r   r
  )nparctanr   rS   rT   r  s   &&& r%   r1   	Pi.verify  s/    "))B-e9499499EEr(   r@   N)rA   rB   rC   rD   r   r/   r0   r;   r    r1   rE   rF   rG   s   @r%   r  r    s*     2F
BE)F Fr(   r  c                   V   a  ] tR tRt o RtRtRt. R
Ot^t^ t	. ROt
R tR tR tRtV tR	# )CoupledDecayi  zY
3 coupled decays suited for banded treatment
(banded mode makes it necessary when N>>3)
T      ?c                @   V P                   p\        P                  ! V^ ,          ) V^ ,          ,          V^,          ) V^,          ,          V^ ,          V^ ,          ,          ,           V^,          ) V^,          ,          V^,          V^,          ,          ,           .4      # r   )lmbdr!  r   )r3   r4   r"   r(  s   &&& r%   r    CoupledDecay.f  su    yyxx$q'!A$q'!A$a15q'!A$a157 8 	8r(   c                X  a a S P                   p\        P                  ! S P                  S P                  ,           ^,           ^3RR7      oVV 3R lpV! ^ ^ V^ ,          ) 4       V! ^^ V^ ,          4       V! ^^V^,          ) 4       V! ^^V^,          4       V! ^^V^,          ) 4       S# )r  Forderc                 F   < VSSP                   V ,           V,
          V3&   R # r   )rQ   )ricivaljr3   s   &&&r%   set_jCoupledDecay.jac.<locals>.set_j  s    *-Adjj2o"B&'r(   )r(  r!  r   rR   rQ   )r3   r4   r"   r(  r3  r2  s   f&&  @r%   r*   CoupledDecay.jac  s     yyHHdjj4::-115SA	.aT!WHaDGaT!WHaDGaT!WHr(   c           
        \         P                  ! V P                  4      pV^,          V^ ,          ,
          pV^,          V^,          ,
          pV^,          V^ ,          ,
          p\         P                  ! V^ ,          ) V,          4      p\         P                  ! V^,          ) V,          4      p\         P                  ! V^,          ) V,          4      p	\         P                  ! V P
                  ^ ,          V,          V P
                  ^,          V,          V P
                  ^ ,          V^ ,          ,          V,          Wx,
          ,          ,           V P
                  ^,          V	,          V P
                  ^,          V^,          ,          V,          W,
          ,          ,           V^,          V^ ,          ,          V P
                  ^ ,          ,          V,          ^V,          Wy,
          ,          ^V,          W,
          ,          ,
          ,          ,           34      P                  4       p
\        WV P                  V P                  R7      # )r  r	  )
r!  r   r(  r   vstackr0   	transposer   rS   rT   )r3   r  r"   r(  d10d21d20e0e1e2r  s   &&&        r%   r1   CoupledDecay.verify  s   xx		"1gQ1gQ1gQVVT!WHqL!VVT!WHqL!VVT!WHqL!IIGGAJOGGAJOdggaj472S8BGDDGGAJOdggaj472S8BGDDGd1g
*S0W 1s7bg#66889 :
 ;D)+ 	
 DIIDII>>r(   r@   N)g      @g      @g      *@)g(\?gq=
ףp?g(\?)rA   rB   rC   rD   r   rg   r/   r0   rR   rQ   r(  r    r*   r1   rE   rF   rG   s   @r%   r%  r%    s>     
 EF	BEED82? ?r(   r%  c                 ,    V^,          V^ ,          ) .pV# r  r@   )r"   xdxdts   && r%   r    r      s    aD1Q4%=DKr(   c                 (    \        R R.RR ..4      pV# )r   r         r  )r"   rB  r2  s   && r%   r*   r*     s#    Szc{ 	AHr(   c                 F    W!^,          ,          V) V^ ,          ,          .pV# rA  r@   r"   rB  r  rC  s   &&& r%   f1rH  %  s!    A$Jqt$DKr(   c                 *    \        R V.V) R ..4      pV# r   r  r"   rB  r  r2  s   &&& r%   jac1rL  *  s%    U|} 	AHr(   c                 F    W!^,          ,          V) V^ ,          ,          .pV# rA  r@   )r"   rB  omega1omega2rC  s   &&&& r%   f2rP  0  s!    Q4K&1&DKr(   c                 *    \        R V.V) R ..4      pV# rJ  r  )r"   rB  rN  rO  r2  s   &&&& r%   jac2rR  5  s%    V}~ 	 AHr(   c                 d    V^ ,          V^,          ,          V^,          ) V^ ,          ,          .pV# r   r@   rG  s   &&& r%   fvrT  ;  s+    !HQqTME!H9QqT>*DKr(   c                 F    \        R V^ ,          .V^,          ) R ..4      pV# rJ  r  rK  s   &&& r%   jacvrV  @  s.    U1Xq	3! 	"AHr(   c                      a  ] tR tRt o RtRtRtR tR tR t	R t
R	 tR
 t]P                  P                  R 4       tRtV tR# )ODECheckParameterUseiF  z=Call an ode-class solver with several cases of parameter use. Fc                    \        W4      pV P                  '       d,   VP                  V P                  R RV P                  R7       V# VP                  V P                  R RR7       V# )g&.>gHz>)rS   rT   with_jacobianr	  )r   solver_uses_jacrW   solver_name)r3   r    r*   solvers   &&& r%   _get_solver ODECheckParameterUse._get_solverO  si    Q!!$"2"2D040D0D " F  !!$"2"2D!Ir(   c                    R R.pVP                  VR4       VP                  \        4       \        VP                  RR.4       R# )r   r   NrE  )rX   rY   r
   r   r#   r3   r^  ics   && r%   _check_solver"ODECheckParameterUse._check_solver[  s;    3Z  S)!&((T3K8r(   c                \    V P                  \        \        4      pV P                  V4       R # r   )r_  r    r*   rd  )r3   r^  s   & r%   test_no_params#ODECheckParameterUse.test_no_paramsa  s"    !!!S)6"r(   c                    V P                  \        \        4      pR pVP                  V4       V P                  '       d   VP                  V4       V P                  V4       R# r   N)r_  rH  rL  set_f_paramsr\  set_jac_paramsrd  r3   r^  r  s   &  r%   test_one_scalar_param*ODECheckParameterUse.test_one_scalar_parame  sO    !!"d+E"!!%(6"r(   c                    V P                  \        \        4      pR pR pVP                  W#4       V P                  '       d   VP                  W#4       V P                  V4       R# rj  )r_  rP  rR  rk  r\  rl  rd  )r3   r^  rN  rO  s   &   r%   test_two_scalar_params+ODECheckParameterUse.test_two_scalar_paramsm  sT    !!"d+F+!!&16"r(   c                    V P                  \        \        4      pR R .pVP                  V4       V P                  '       d   VP                  V4       V P                  V4       R# rj  )r_  rT  rV  rk  r\  rl  rd  rm  s   &  r%   test_vector_param&ODECheckParameterUse.test_vector_paramv  sS    !!"d+c
E"!!%(6"r(   c                    V P                  \        \        4      pVP                  V P                  ^R7       RR.pVP                  VR4       \        \        VP                  \        4       R# )r  )nstepsr   r   N)
r_  r    r*   rW   r]  rX   r   UserWarningrY   r
   rb  s   &  r%   test_warns_on_failure*ODECheckParameterUse.test_warns_on_failure~  sZ     !!!S)d..q93Z  S)[&"2"2B7r(   r@   N)rA   rB   rC   rD   r   r]  r\  r_  rd  rg  rn  rq  rt  r   r   r   ry  rE   rF   rG   s   @r%   rX  rX  F  sP     G
 KO
9#### [[8 8r(   rX  c                       ] tR tRtRtRtRtR# )TestDOPRI5CheckParameterUsei  rv   Fr@   NrA   rB   rC   rD   r]  r\  rE   r@   r(   r%   r|  r|        KOr(   r|  c                       ] tR tRtRtRtRtR# )TestDOP853CheckParameterUsei  r}   Fr@   Nr}  r@   r(   r%   r  r    r~  r(   r  c                       ] tR tRtRtRtRtR# )TestVODECheckParameterUsei  re   Tr@   Nr}  r@   r(   r%   r  r    s    KOr(   r  c                       ] tR tRtRtRtRtR# )TestZVODECheckParameterUsei  rk   Tr@   Nr}  r@   r(   r%   r  r        KOr(   r  c                       ] tR tRtRtRtRtR# )TestLSODACheckParameterUsei  rq   Tr@   Nr}  r@   r(   r%   r  r    r  r(   r  c                  v    ^p ^ .p\        R WRR7      w  r#\        V\        P                  ! V ..4      4       R# )r  c                     V ) # r   r@   )r#   r"   s   &&r%   r&   *test_odeint_trivial_time.<locals>.<lambda>  s    1"r(   Tr   N)r   r   r!  r   )r   r"   r#   infos       r%   test_odeint_trivial_timer    s7     
B	
A_b>GAq"((RD6*+r(   c                    aaa R  oR oR p R oV3R lp\        . RO. RO. RO. RO.4      p\        P                  ! ^4      p\        P                   ! . RO4      p\        SW4V3RRRRSR	7	      w  rV\        SW4V3RRRRV RR
7
      w  rx\        SW4V3RRRRS^^R7      w  r\        SW4V3RRRRV^^RR7      w  r\	        WWRR7       \	        WYRRR7       \	        WRR7       \        VR,          VR,          4       \        V
R,          VR,          4       \        V3R lW4V3RRRRV3R lRR7
      w  r\	        W]RRR7       R# )c                 $    VP                  V 4      # r   )r   r#   r"   cs   &&&r%   func)test_odeint_banded_jacobian.<locals>.func  s    uuQxr(   c                     V# r   r@   r  s   &&&r%   r*   (test_odeint_banded_jacobian.<locals>.jac  s    r(   c                 :    VP                   P                  R R7      # Cr,  Tr   r  s   &&&r%   jac_transpose2test_odeint_banded_jacobian.<locals>.jac_transpose  s    ssxxcx""r(   c           
      l   \         P                  ! \         P                  ^ \         P                  ! V^4      3,          \         P                  ! V4      \         P                  \         P                  ! VR4      ^ 3,          \         P                  \         P                  ! VR4      ^ ^ 3,          34      pV# )r   r   )r!  r7  r_diag)r#   r"   r  r*   s   &&& r%   	bjac_rows.test_odeint_banded_jacobian.<locals>.bjac_rows  sy    iiq"''!Q-/0GGAJEE"''!R.!"34EE"''!R.!Q"679 : 
r(   c                 J   < S! WV4      P                   P                  R R7      # r  r  )r#   r"   r  r  s   &&&r%   	bjac_cols.test_odeint_banded_jacobian.<locals>.bjac_cols  s$    q!##((s(33r(   TgvIh%<=gdy=i'  )argsr   rS   rT   mxstepr+   )r  r   rS   rT   r  r+   	col_deriv)r  r   rS   rT   r  r+   mlmu)	r  r   rS   rT   r  r+   r  r  r  zsol1 != sol2)err_msg-q=zsol1 != sol3)rS   r  zsol3 != sol4njec                    < S! WV4      # r   r@   )r"   r#   r  r  s   &&&r%   r&   -test_odeint_banded_jacobian.<locals>.<lambda>  s    T!]r(   c                    < S! WV4      # r   r@   )r"   r#   r  r*   s   &&&r%   r&   r    s    #aA,r(   )r  r   rS   rT   r  r+   r)   zsol1 != sol1ty)rT   r  N)i3{Gz?r   r   )r   g      g{Gz?r   )gMbP?r  g       r  )r   r   r   rE  )r      
   d   )r   r!  onesr   r   r   )r  r  r  r   r"   sol1info1sol2info2sol3info3sol4info4sol1tyinfo1tyr  r  r*   s                  @@@r%   test_odeint_banded_jacobianr    si   #4 	&&'&( 	)A
 
B
!A rA4T#%!#KD
 rA4T#%+t=KD
 rA4T#%'A!5KD
 rA4T#%'A!tEKD D7DUNCD7 uU|U5\2uU|U5\2 :B)-E$)">tMOF Du6FGr(   c            	      :   R  p R pR pR pR pR pR p\        \        \        VR^ ^.4       \        \        \        VR^ ^.4       \        \        \        V R^ ^.VR7       \        \        \        V R^ ^.VR7       \        \        \        VRR.^ ^.VR7       R	# )
c                     RV ,          # r  r@   rB  r"   s   &&r%   sys1d!test_odeint_errors.<locals>.sys1d      Avr(   c                     R ^ ,          # r   r@   r  s   &&r%   bad1 test_odeint_errors.<locals>.bad1      1ur(   c                     R # foor@   r  s   &&r%   bad2 test_odeint_errors.<locals>.bad2  s    r(   c                     R ^ ,          # r   r@   r  s   &&r%   bad_jac1$test_odeint_errors.<locals>.bad_jac1  r  r(   c                 
    R ..# r  r@   r  s   &&r%   bad_jac2$test_odeint_errors.<locals>.bad_jac2   s    yr(   c                 B    RV ^ ,          ,          RV ^,          ,          .# )r  r  皙r@   r  s   &&r%   sys2d!test_odeint_errors.<locals>.sys2d  s    QqT	4!9%%r(   c                      R ^ ,          ^ .^ R..# )r   r  r@   r  s   &&r%   sys2d_bad_jac)test_odeint_errors.<locals>.sys2d_bad_jac  s    Q
QI&&r(   r   r+   N)r   ZeroDivisionErrorr   
ValueError)r  r  r  r  r  r  r  s          r%   test_odeint_errorsr    s    &' #VT3A?*fdC!Q8#VUC!QhO*feS1a&xH#VUS#JA$&r(   c            	         R  p R pR p^ ^ .^ ^ ..p\        \        \        W^ ^.4       ^ ^.^^..p\        \        \        VR.V4       \        \        \        V ^
^ ^.4       \        \        \        V^
^
.^ ^.VR7       R# )c                 
    ^R.# )r  r   r@   r  s   &&r%   badrhs&test_odeint_bad_shapes.<locals>.badrhs  s    2wr(   c                     RV ,          # r  r@   r  s   &&r%   sys1$test_odeint_bad_shapes.<locals>.sys1  r  r(   c                     . RO.# )r   )r   r   r   r@   r  s   &&r%   badjac&test_odeint_bad_shapes.<locals>.badjac  s
    {r(   r   r  N)r   r  r   r   )r  r  r  bad_y0bad_ts        r%   test_odeint_bad_shapesr    s     !fq!fF*fdQF; VaVE*fdTFE: ,QF; ,r2hAVLr(   c                    R p \         P                  ! ^
4      p\        V R.V4      p\        V\         P                  ! \        V4      ^34      4       ^\         P                  ! ^4      ,          p^ .^	,          V^V,          ^V,          ^V,          .,           p\        V ^^.VRRR7      p\         P                  ! RR..^	,          RR.RR.RR.RR..,           4      p\        W$4       \        V R.. 4      p\        V\         P                  ! . \         P                  R	7      P                  R4      4       \        \        \        V R.. RO4       \        \        \        V . RO. RO4       R
# )zRegression test for gh-8217.c                     RV ,          # )      ?g      пr@   r  s   &&r%   r  $test_repeated_t_values.<locals>.func1  s    Qwr(   r   r  )rT   rS   r   r&  r  g      ?)dtypeNr  )r   r  r&  r   )r  r     )r   r   r  r  )r!  r   r   r   r  lenlogr   r   float64reshaper   r  )r  r"   r   tauexpected_sols        r%   test_repeated_t_valuesr  .  s1    	A
tQ
CsBGGSVQK01
BFF1I+C	
AaeQsUAcE**A
1vqu5
9C88c3ZLN!3Z"C["C[#T],, -L
 C& tR
 CsBHHRrzz:BB6JK *fdRD.A*fdI~Fr(   );r   numpyr!  r   r   r   r   r   r   r   r	   r
   r   r   numpy.testingr   r   r   r   r   r   r   r   r   scipy.integrater   r   r   r   rJ   rb   r   r   r   r   r   r  r  r%  r:   r    r*   rH  rL  rP  rR  rT  rV  rX  r|  r  r  r  r  r  r  r  r  r  r@   r(   r%   <module>r     sk      E E  * 4 4 &  &F O  OFj+l j+Z&0\ &0RW4 W4t;4 ;4F  Es E2? ?"F F<?3 <?~ j"l;




?8 ?8D"6 
"6 
 4 
!5 
!5 
,FHR&@M6Gr(   