
    (ph#`                     P   S r SSKrSSKJrJrJrJrJrJrJ	r	J
r
JrJrJr  SSKJrJrJrJrJrJr  SSKrSSKJr  SSKJrJrJr   " S S5      r " S	 S
5      r " S S\5      r " S S\5      r " S S5      r  " S S5      r! " S S5      r" " S S\"5      r# " S S\"5      r$ " S S\"5      r% " S S\"5      r&\#\$\%\&/r'S r(S r)S r*S  r+S! r,S" r-S# r.S$ r/ " S% S&5      r0 " S' S(\05      r1 " S) S*\05      r2 " S+ S,\05      r3 " S- S.\05      r4 " S/ S0\05      r5S1 r6S2 r7S3 r8S4 r9S5 r:g)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                        \ rS rSrS rS rSrg)
TestOdeint   c           	      D  ^ [        STR                  S5      n[        TR                  TR                  USS9u  p4[        TR                  X25      5        [        U4S jTR                  USSS9u  p4[        TR                  X25      5        [        TS5      (       a  [        TR                  TR                  UTR                  SS9u  p4[        TR                  X25      5        [        U4S	 jTR                  UU4S
 jSSS9u  p4[        TR                  X25      5        g g )N        g?Tfull_outputc                 &   > TR                  X5      $ Nftyproblems     W/var/www/html/venv/lib/python3.13/site-packages/scipy/integrate/tests/test_integrate.py<lambda>(TestOdeint._do_problem.<locals>.<lambda>    s    '))A/    )r   tfirstjac)Dfunr   c                 &   > TR                  X5      $ r    r!   r#   s     r'   r(   r)   +   s    giior*   c                 &   > TR                  X5      $ r    r,   r#   s     r'   r(   r)   ,   s    7;;q3Dr*   )r-   r   r+   )	r   stop_tr   r"   z0r   verifyhasattrr,   )selfr&   r$   zinfodicts    `   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                 t    [          H.  nU" 5       nUR                  (       a  M  U R                  U5        M0     g r    PROBLEMScmplxr8   r5   problem_clsr&   s      r'   test_odeintTestOdeint.test_odeint0   s+    #K!mG}}W%	 $r*    N)__name__
__module____qualname____firstlineno__r8   r@   __static_attributes__rB   r*   r'   r   r      s    *0&r*   r   c                   "    \ rS rSrSrSS jrSrg)TestODEClass8   Nc                   ^ U4S jnS n[        TS5      (       a  U4S jn0 nTR                  c  TR                  b  TR                  US'   TR                  US'   U R                  XE5      nUR                  " U4TR
                  S-  TR                  S-  US.UD6  UR                  TR                  SS	9  UR                  TR                  5      n[        XR                  5        [        UR                  5       TU45        [        UR                  5       S
:  TU45        [        TR!                  [#        U/5      TR                  5      TU45        g )Nc                 &   > TR                  X5      $ r    r!   r$   r6   r&   s     r'   r"   #TestODEClass._do_problem.<locals>.f?   s    99Q?"r*   r,   c                 &   > TR                  X5      $ r    r0   rM   s     r'   r,   %TestODEClass._do_problem.<locals>.jacC   s    {{1((r*   ubandlband
   )atolrtolmethodr   )r$   r   )r4   rR   rQ   	ode_classset_integratorrT   rU   set_initial_valuer2   	integrater1   r   r%   r   
successfulget_return_coder3   r   )	r5   r&   
integratorrV   r"   r,   integrator_paramsigr6   s	    `       r'   r8   TestODEClass._do_problem<   s+   	#7E"") ==$(A)0g&)0g&^^A#
* 	/&||B&||B!'	/ .		/ 	WZZ3/LL(1dd#'6!23""$q(7F*;<uaSz7>>:Wf<MNr*   rB   )adams)rC   rD   rE   rF   rW   r8   rG   rB   r*   r'   rI   rI   8   s    IOr*   rI   c                   t    \ rS rSr\rS rS rS rS r	S r
\R                  R                  S 5       rS rS	rg
)TestOde[   c                     [          HT  nU" 5       nUR                  (       a  M  UR                  (       d  U R                  USS5        U R                  USS5        MV     g Nvodera   bdf)r<   r=   stiffr8   r>   s      r'   	test_vodeTestOde.test_vode_   sH    #K!mG}}==  &':Wfe4 $r*   c                     [          HA  nU" 5       nUR                  (       d  U R                  USS5        U R                  USS5        MC     g )Nzvodera   rh   r<   ri   r8   r>   s      r'   
test_zvodeTestOde.test_zvodei   s>    #K!mG==  '7;Wgu5	 $r*   c                 v    [          H/  nU" 5       nUR                  (       a  M  U R                  US5        M1     g Nlsodar;   r>   s      r'   
test_lsodaTestOde.test_lsodaq   s-    #K!mG}}Wg.	 $r*   c                     [          HU  nU" 5       nUR                  (       a  M  UR                  (       a  M0  [        US5      (       a  MC  U R	                  US5        MW     g Nr,   dopri5r<   r=   ri   r4   r8   r>   s      r'   test_dopri5TestOde.test_dopri5y   G    #K!mG}}}}w&&Wh/ $r*   c                     [          HU  nU" 5       nUR                  (       a  M  UR                  (       a  M0  [        US5      (       a  MC  U R	                  US5        MW     g Nr,   dop853ry   r>   s      r'   test_dop853TestOde.test_dop853   r|   r*   c                    S H  nS n[        U5      R                  U5      nUR                  SS5        [        U5      R                  U5      nUR                  SS5        UR                  UR                  S-   5        UR                  UR                  S-   5        [        [        UR                  UR                  S-   5        M     g )N)rg   rm   rs   c                     gN      ?rB   r$   r%   s     r'   r"   'TestOde.test_concurrent_fail.<locals>.f   s    r*   r   皙?)r   rX   rY   rZ   r$   assert_raisesRuntimeError)r5   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                 f   S n[        S5       GH  nS H  nUS;   a  US:  a  M  [        U5      R                  U5      nUR                  SS5        [        U5      R                  U5      nUR                  SS5        UR	                  UR
                  S-   5        UR	                  UR
                  S-   5        UR	                  UR
                  S-   5        [        UR                  S5        [        UR                  S5        M     S	 GH  n[        U5      R                  U5      nUR                  SS5        [        U5      R                  U5      nUR                  SS5        UR	                  UR
                  S-   5        UR	                  UR
                  S-   5        UR	                  UR
                  S-   5        UR	                  UR
                  S-   5        UR	                  UR
                  S-   5        [        UR                  S
5        [        UR                  S5        GM!     GM!     g )Nc                     gr   rB   r   s     r'   r"   %TestOde.test_concurrent_ok.<locals>.f   s    r*      )rg   rm   rs   rx   r   >   rg   rs   rm      r   r   g?rx   r   g333333?)ranger   rX   rY   rZ   r$   r   r%   )r5   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*   rB   N)rC   rD   rE   rF   r   rW   rj   ro   rt   rz   r   pytestmarkthread_unsafer   r   rG   rB   r*   r'   rc   rc   [   sE    I56/
0
0 [[@ @ #+r*   rc   c                   0    \ rS rSr\rS rS rS rS r	Sr
g)TestComplexOde   c                     [          HC  nU" 5       nUR                  (       d  U R                  USS5        M0  U R                  USS5        ME     g rf   rn   r>   s      r'   rj   TestComplexOde.test_vode   s>    #K!mG==  &':  &%8 $r*   c                 P    [          H  nU" 5       nU R                  US5        M     g rr   )r<   r8   r>   s      r'   rt   TestComplexOde.test_lsoda   s%     $K!mGWg. $r*   c                     [          HB  nU" 5       nUR                  (       a  M  [        US5      (       a  M0  U R                  US5        MD     g rw   r<   ri   r4   r8   r>   s      r'   rz   TestComplexOde.test_dopri5   =    #K!mG}}w&&Wh/ $r*   c                     [          HB  nU" 5       nUR                  (       a  M  [        US5      (       a  M0  U R                  US5        MD     g r~   r   r>   s      r'   r   TestComplexOde.test_dop853   r   r*   rB   N)rC   rD   rE   rF   r   rW   rj   rt   rz   r   rG   rB   r*   r'   r   r      s    I9/00r*   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)

TestSolout   c                 F  ^	^
 / m	/ m
SnSnSS/nU	U
4S jnS n[        U5      R                  U5      nUR                  U5        UR                  XB5        UR	                  U5      n[        T
S   U5        [        T
S   U5        [        T	S   U5        [        T	S   U5        g )	Nr         $@r          @c                 f   > TR                  U 5        TR                  UR                  5       5        g r    appendcopyr$   r%   tsyss     r'   solout+TestSolout._run_solout_test.<locals>.solout        IIaLIIaffhr*   c                 *    US   US   -   US   S-  * /$ Nr   r      rB   r   s     r'   rhs(TestSolout._run_solout_test.<locals>.rhs   #    aD1Q4K!A$'**r*   r   )r   rX   
set_soloutrY   rZ   r   r   r5   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                 8    S H  nU R                  U5        M     g Nr   r   r5   r]   s     r'   test_soloutTestSolout.test_solout      .J!!*- /r*   c                 F  ^	^
 / m	/ m
SnSnSS/nU	U
4S jnS n[        U5      R                  U5      nUR                  XB5        UR                  U5        UR	                  U5      n[        T
S   U5        [        T
S   U5        [        T	S   U5        [        T	S   U5        g )	Nr   r   r   r   c                 f   > TR                  U 5        TR                  UR                  5       5        g r    r   r   s     r'   r   9TestSolout._run_solout_after_initial_test.<locals>.solout  r   r*   c                 *    US   US   -   US   S-  * /$ r   rB   r   s     r'   r   6TestSolout._run_solout_after_initial_test.<locals>.rhs  r   r*   r   r   )r   rX   rY   r   rZ   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                 8    S H  nU R                  U5        M     g r   )r   r   s     r'   test_solout_after_initial$TestSolout.test_solout_after_initial'  s    .J//
; /r*   c                 v  ^^	^
 / m	/ m
SnSmSS/nUU	U
4S jnS n[        U5      R                  U5      nUR                  U5        UR                  X25        UR	                  T5      n[        T
S   U5        [        T
S   U5        [        T	S   U5        [        T	S   TS-  :  5        [        T	S   T:  5        g )	Nr   r   r   r   c                 z   > TR                  U 5        TR                  UR                  5       5        U TS-  :  a  gg Nr   r   r   r$   r%   r   r   r   s     r'   r   1TestSolout._run_solout_break_test.<locals>.solout3  3    IIaLIIaffh48| r*   c                 *    US   US   -   US   S-  * /$ r   rB   r   s     r'   r   .TestSolout._run_solout_break_test.<locals>.rhs9  r   r*   r   r   )r   rX   r   rY   rZ   r   r   r   r5   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                 8    S H  nU R                  U5        M     g r   r   r   s     r'   test_solout_breakTestSolout.test_solout_breakF      .J''
3 /r*   rB   N)rC   rD   rE   rF   r   r   r   r   r   r   rG   rB   r*   r'   r   r      s     #0.#0<64r*   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestComplexSoloutiK  c                 D  ^	^
 / m	/ m
SnSnS/nU	U
4S jnS n[        U5      R                  U5      nUR                  U5        UR                  XB5        UR	                  U5      n[        T
S   U5        [        T
S   U5        [        T	S   U5        [        T	S   U5        g )Nr         4@c                 f   > TR                  U 5        TR                  UR                  5       5        g r    r   r   s     r'   r   2TestComplexSolout._run_solout_test.<locals>.soloutU  r   r*   c                     SU S-
  S-
  -  /$ Nr   r                 ?rB   r   s     r'   r   /TestComplexSolout._run_solout_test.<locals>.rhsY      TB'((r*   r   r   )r   rX   r   rY   rZ   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                 8    S H  nU R                  U5        M     g r   r   r   s     r'   r   TestComplexSolout.test_soloute  r   r*   c                 t  ^^	^
 / m	/ m
SnSmS/nUU	U
4S jnS n[        U5      R                  U5      nUR                  U5        UR                  X25        UR	                  T5      n[        T
S   U5        [        T
S   U5        [        T	S   U5        [        T	S   TS-  :  5        [        T	S   T:  5        g )Nr   r   c                 z   > TR                  U 5        TR                  UR                  5       5        U TS-  :  a  gg r   r   r   s     r'   r   8TestComplexSolout._run_solout_break_test.<locals>.soloutq  r   r*   c                     SU S-
  S-
  -  /$ r   rB   r   s     r'   r   5TestComplexSolout._run_solout_break_test.<locals>.rhsw  r   r*   r   r   r   )r   rX   r   rY   rZ   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                 8    S H  nU R                  U5        M     g r   r   r   s     r'   r   #TestComplexSolout.test_solout_break  r   r*   rB   N)	rC   rD   rE   rF   r   r   r   r   rG   rB   r*   r'   r   r   K  s    #0.64r*   r   c                   8    \ rS rSrSrSrSrSr/ rSr	Sr
SrSrSrg)	ODEi  z
ODE problem
Fr   Ngư>gh㈵>rB   )rC   rD   rE   rF   __doc__ri   r=   r1   r2   rR   rQ   rT   rU   rG   rB   r*   r'   r  r    s1     EEF	BEEDDr*   r  c                   F    \ rS rSrSrSr\" SS/\5      rSr	Sr
S rS rS	rg
)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)
gq=
ףp?r   r   g      @c                 |    [        S[        5      nSUS'   U R                  * U R                  -  US'   [	        X15      $ )N)r   r   r   r   r   )r   r   )r   floatr   mr   )r5   r6   r$   tmps       r'   r"   SimpleOscillator.f  s9    FE"D	VVGdff$D	3{r*   c                    [        U R                  U R                  -  5      nU R                  S   [	        X2-  5      -  U R                  S   [        X2-  5      -  U-  -   n[        XAS S 2S4   U R                  U R                  S9$ )Nr   r   rT   rU   )	r   r   r	  r2   r   r	   r   rT   rU   )r5   zsr$   omegaus        r'   r3   SimpleOscillator.verify  sl    TVVdff_%GGAJs57|#dggajUW&=e&CCad8$))$))DDr*   rB   N)rC   rD   rE   rF   r  r1   r   r  r2   r   r	  r"   r3   rG   rB   r*   r'   r  r    s3     F	Sz5	!BAAEr*   r  c                   L    \ rS rSrSrS\-  r\" / SQ5      rSr	S r
S rS rS	rg
)
ComplexExpi  zThe equation :lm:`\dot u = i u`gGz?)r   y               @y              @y              @y              @Tc                     SU-  $ )Nr   rB   r5   r6   r$   s      r'   r"   ComplexExp.f  s    !tr*   c                     S[        S5      -  $ )Nr      )r
   r  s      r'   r,   ComplexExp.jac  s    #a&yr*   c                 v    U R                   [        SU-  5      -  n[        X1U R                  U R                  S9$ )Nr   r  )r2   r   r   rT   rU   r5   r  r$   r  s       r'   r3   ComplexExp.verify  s/    GGc"Q$iDIIDII>>r*   rB   N)rC   rD   rE   rF   r  r   r1   r   r2   r=   r"   r,   r3   rG   rB   r*   r'   r  r    s-    *"WF	!	"BE?r*   r  c                   2    \ rS rSrSrSrS/rSrS rS r	Sr
g	)
Pii  z'Integrate 1/(t + 1j) from t=-10 to t=10   r   Tc                 ,    [        SUS-
  S-   -  /5      $ )Nr   rS   r   r   r  s      r'   r"   Pi.f  s    b!b&2+&'((r*   c                     S[         R                  " S5      -  n[        X1SS S 24   U R                  U R                  S9$ )Ny              rS   r   r  )nparctanr   rT   rU   r  s       r'   r3   	Pi.verify  s3    "))B-b!e9499499EEr*   rB   N)rC   rD   rE   rF   r  r1   r2   r=   r"   r3   rG   rB   r*   r'   r  r    s!    2F
BE)Fr*   r  c                   J    \ rS rSrSrSrSr/ SQrSrSr	/ SQr
S	 rS
 rS rSrg)CoupledDecayi  zY
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                     U R                   n[        R                  " US   * US   -  US   * US   -  US   US   -  -   US   * US   -  US   US   -  -   /5      $ r   )lmbdr$  r   )r5   r6   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                   ^ ^ T R                   n[        R                  " T R                  T R                  -   S-   S4SS9mUU 4S jnU" SSUS   * 5        U" SSUS   5        U" SSUS   * 5        U" SSUS   5        U" SSUS   * 5        T$ )Nr   r   Forderc                 4   > UTTR                   U -   U-
  U4'   g r    )rQ   )ricivaljr5   s      r'   set_jCoupledDecay.jac.<locals>.set_j  s    *-Adjj2o"B&'r*   r   r   )r+  r$  r   rR   rQ   )r5   r6   r$   r+  r6  r5  s   `    @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           
          [         R                  " U R                  5      nUS   US   -
  nUS   US   -
  nUS   US   -
  n[         R                  " US   * U-  5      n[         R                  " US   * U-  5      n[         R                  " US   * U-  5      n	[         R                  " U R
                  S   U-  U R
                  S   U-  U R
                  S   US   -  U-  Xx-
  -  -   U R
                  S   U	-  U R
                  S   US   -  U-  X-
  -  -   US   US   -  U R
                  S   -  U-  SU-  Xy-
  -  SU-  X-
  -  -
  -  -   45      R                  5       n
[        XU R                  U R                  S9$ )Nr   r   r   r  )
r$  r   r+  r   vstackr2   	transposer   rT   rU   )r5   r  r$   r+  d10d21d20e0e1e2r  s              r'   r3   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*   rB   N)rC   rD   rE   rF   r  ri   r1   r2   rR   rQ   r+  r"   r,   r3   rG   rB   r*   r'   r(  r(    s6    
 EF	BEED82?r*   r(  c                     US   US   * /nU$ Nr   r   rB   )r$   xdxdts      r'   r"   r"     s    aD1Q4%=DKr*   c                 (    [        SS/SS//5      nU$ )Nr   r         r!  )r$   rE  r5  s      r'   r,   r,     s#    Szc{ 	AHr*   c                 &    X!S   -  U* US   -  /nU$ rD  rB   r$   rE  r  rF  s       r'   f1rK  %  s!    A$Jqt$DKr*   c                 *    [        SU/U* S//5      nU$ Nr   r!  r$   rE  r  r5  s       r'   jac1rO  *  s%    U|} 	AHr*   c                 &    X!S   -  U* US   -  /nU$ rD  rB   )r$   rE  omega1omega2rF  s        r'   f2rS  0  s!    Q4K&1&DKr*   c                 *    [        SU/U* S//5      nU$ rM  r!  )r$   rE  rQ  rR  r5  s        r'   jac2rU  5  s%    V}~ 	 AHr*   c                 4    US   US   -  US   * US   -  /nU$ )Nr   r   rB   rJ  s       r'   fvrW  ;  s+    !HQqTME!H9QqT>*DKr*   c                 6    [        SUS   /US   * S//5      nU$ )Nr   r   r   r!  rN  s       r'   jacvrY  @  s.    U1Xq	3! 	"AHr*   c                   |    \ rS rSrSrSrSrS rS rS r	S r
S	 rS
 r\R                  R                  S 5       rSrg)ODECheckParameterUseiF  z=Call an ode-class solver with several cases of parameter use. Fc                     [        X5      nU R                  (       a(  UR                  U R                  SSU R                  S9  U$ UR                  U R                  SSS9  U$ )Ng&.>gHz>)rT   rU   with_jacobianr  )r   solver_uses_jacrX   solver_name)r5   r"   r,   solvers       r'   _get_solver ODECheckParameterUse._get_solverO  sf    Q!!$"2"2D040D0D " F  !!$"2"2D!Ir*   c                     SS/nUR                  US5        UR                  [        5        [        UR                  SS/5        g )Nr   r   rH  )rY   rZ   r   r   r%   r5   ra  ics      r'   _check_solver"ODECheckParameterUse._check_solver[  s;    3Z  S)!&((T3K8r*   c                 Z    U R                  [        [        5      nU R                  U5        g r    )rb  r"   r,   rg  )r5   ra  s     r'   test_no_params#ODECheckParameterUse.test_no_paramsa  s"    !!!S)6"r*   c                     U R                  [        [        5      nSnUR                  U5        U R                  (       a  UR                  U5        U R                  U5        g r   )rb  rK  rO  set_f_paramsr_  set_jac_paramsrg  r5   ra  r  s      r'   test_one_scalar_param*ODECheckParameterUse.test_one_scalar_parame  sL    !!"d+E"!!%(6"r*   c                     U R                  [        [        5      nSnSnUR                  X#5        U R                  (       a  UR                  X#5        U R                  U5        g r   )rb  rS  rU  rm  r_  rn  rg  )r5   ra  rQ  rR  s       r'   test_two_scalar_params+ODECheckParameterUse.test_two_scalar_paramsm  sQ    !!"d+F+!!&16"r*   c                     U R                  [        [        5      nSS/nUR                  U5        U R                  (       a  UR                  U5        U R                  U5        g r   )rb  rW  rY  rm  r_  rn  rg  ro  s      r'   test_vector_param&ODECheckParameterUse.test_vector_paramv  sP    !!"d+c
E"!!%(6"r*   c                     U R                  [        [        5      nUR                  U R                  SS9  SS/nUR                  US5        [        [        UR                  [        5        g )Nr   )nstepsr   r   )
rb  r"   r,   rX   r`  rY   r   UserWarningrZ   r   re  s      r'   test_warns_on_failure*ODECheckParameterUse.test_warns_on_failure~  sZ     !!!S)d..q93Z  S)[&"2"2B7r*   rB   N)rC   rD   rE   rF   r  r`  r_  rb  rg  rj  rp  rs  rv  r   r   r   r{  rG   rB   r*   r'   r[  r[  F  sM    G
 KO
9#### [[8 8r*   r[  c                       \ rS rSrSrSrSrg)TestDOPRI5CheckParameterUsei  rx   FrB   NrC   rD   rE   rF   r`  r_  rG   rB   r*   r'   r~  r~        KOr*   r~  c                       \ rS rSrSrSrSrg)TestDOP853CheckParameterUsei  r   FrB   Nr  rB   r*   r'   r  r    r  r*   r  c                       \ rS rSrSrSrSrg)TestVODECheckParameterUsei  rg   TrB   Nr  rB   r*   r'   r  r    s    KOr*   r  c                       \ rS rSrSrSrSrg)TestZVODECheckParameterUsei  rm   TrB   Nr  rB   r*   r'   r  r        KOr*   r  c                       \ rS rSrSrSrSrg)TestLSODACheckParameterUsei  rs   TrB   Nr  rB   r*   r'   r  r    r  r*   r  c                  n    Sn S/n[        S XSS9u  p#[        U[        R                  " U //5      5        g )Nr   r   c                     U * $ r    rB   )r%   r$   s     r'   r(   *test_odeint_trivial_time.<locals>.<lambda>  s    1"r*   Tr   )r   r   r$  r   )r   r$   r%   infos       r'   test_odeint_trivial_timer    s7     
B	
A_b>GAq"((RD6*+r*   c                  0  ^^^ S mS mS n S mU4S jn[        / SQ/ SQ/ SQ/ S	Q/5      n[        R                  " S
5      n[        R                   " / SQ5      n[        TX4U4SSSSTS9	u  pV[        TX4U4SSSSU SS9
u  px[        TX4U4SSSSTSSS9u  p[        TX4U4SSSSUSSSS9u  p[	        XWSS9  [	        XYSSS9  [	        XSS9  [        US   US   5        [        U
S   US   5        [        U4S jX4U4SSSSU4S jSS9
u  p[	        X]SS S!9  g )"Nc                 $    UR                  U 5      $ r    )r   r%   r$   cs      r'   func)test_odeint_banded_jacobian.<locals>.func  s    uuQxr*   c                     U$ r    rB   r  s      r'   r,   (test_odeint_banded_jacobian.<locals>.jac  s    r*   c                 4    UR                   R                  SS9$ NCr/  Tr   r  s      r'   jac_transpose2test_odeint_banded_jacobian.<locals>.jac_transpose  s    ssxxcx""r*   c           
      T   [         R                  " [         R                  S[         R                  " US5      4   [         R                  " U5      [         R                  [         R                  " US5      S4   [         R                  [         R                  " US5      SS4   45      nU$ )Nr   r   r   )r$  r:  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                 D   > T" XU5      R                   R                  SS9$ r  r  )r%   r$   r  r  s      r'   	bjac_cols.test_odeint_banded_jacobian.<locals>.bjac_cols  s$    q!##((s(33r*   )i3{Gz?r   r   )r   g      g{Gz?r   )gMbP?r  g       r  )r   r   r   rH     )r   r  rS   d   TgvIh%<=gdy=i'  )argsr   rT   rU   mxstepr-   )r  r   rT   rU   r  r-   	col_derivr   r   )r  r   rT   rU   r  r-   mlmu)	r  r   rT   rU   r  r-   r  r  r  zsol1 != sol2)err_msg-q=zsol1 != sol3)rT   r  zsol3 != sol4njec                    > T" XU5      $ r    rB   )r$   r%   r  r  s      r'   r(   -test_odeint_banded_jacobian.<locals>.<lambda>  s    T!]r*   c                    > T" XU5      $ r    rB   )r$   r%   r  r,   s      r'   r(   r    s    #aA,r*   )r  r   rT   rU   r  r-   r+   zsol1 != sol1ty)rU   r  )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            	      &   S n S nS nS nS nS nS n[        [        [        USS	S
/5        [        [        [        USS	S
/5        [        [        [        U SS	S
/US9  [        [        [        U SS	S
/US9  [        [        [        USS/S	S
/US9  g )Nc                     SU -  $ NrB   rE  r$   s     r'   sys1d!test_odeint_errors.<locals>.sys1d      Avr*   c                     SS-  $ Nr   r   rB   r  s     r'   bad1 test_odeint_errors.<locals>.bad1      1ur*   c                     gNfoorB   r  s     r'   bad2 test_odeint_errors.<locals>.bad2  s    r*   c                     SS-  $ r  rB   r  s     r'   bad_jac1$test_odeint_errors.<locals>.bad_jac1  r  r*   c                 
    S//$ r  rB   r  s     r'   bad_jac2$test_odeint_errors.<locals>.bad_jac2   s    yr*   c                 "    SU S   -  SU S   -  /$ )Nr  r   皙r   rB   r  s     r'   sys2d!test_odeint_errors.<locals>.sys2d  s    QqT	4!9%%r*   c                     SS-  S/SS//$ )Nr   r   r  rB   r  s     r'   sys2d_bad_jac)test_odeint_errors.<locals>.sys2d_bad_jac  s    Q
QI&&r*   r   r   r   r-   )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            	          S n S nS nSS/SS//n[        [        [        XSS/5        SS/SS//n[        [        [        US/U5        [        [        [        U S	SS/5        [        [        [        US	S	/SS/US
9  g )Nc                 
    SS/$ )Nr   r   rB   r  s     r'   badrhs&test_odeint_bad_shapes.<locals>.badrhs  s    2wr*   c                     SU -  $ r  rB   r  s     r'   sys1$test_odeint_bad_shapes.<locals>.sys1  r  r*   c                     / SQ/$ )N)r   r   r   rB   r  s     r'   badjac&test_odeint_bad_shapes.<locals>.badjac  s
    {r*   r   r   r   r   r   rS   r  )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                     S n [         R                  " S5      n[        U S/U5      n[        U[         R                  " [        U5      S45      5        S[         R                  " S5      -  nS/S-  USU-  SU-  S	U-  /-   n[        U SS/US
S
S9n[         R                  " SS//S-  SS/SS/SS/SS//-   5      n[        X$5        [        U S// 5      n[        U[         R                  " / [         R                  S9R                  S5      5        [        [        [        U S// SQ5        [        [        [        U / SQ/ SQ5        g)zRegression test for gh-8217.c                     SU -  $ )Ng      пrB   r  s     r'   r  $test_repeated_t_values.<locals>.func1  s    Qwr*   rS   r   r   r  r   r   	   r   r  )rU   rT   r   r)  g      ?g      ?)dtyper  )r   r   r)  r   )r   r   r   )r   r   r  r   N)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   rI   rc   r   r   r   r  r  r  r  r(  r<   r"   r,   rK  rO  rS  rU  rW  rY  r[  r~  r  r  r  r  r  r  r  r  r  rB   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*   