
    doi`                     L   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  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      r/ " S' S(\/5      r0 " S) S*\/5      r1 " S+ S,\/5      r2 " S- S.\/5      r3 " S/ S0\/5      r4S1 r5S2 r6S3 r7S4 r8S5 r9g)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)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     `/var/www/html/land-ocr/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cmplxr7   r4   problem_clsr%   s      r&   test_odeintTestOdeint.test_odeint0   s+    #K!mG}}W%	 $r)    N)__name__
__module____qualname____firstlineno__r7   r?   __static_attributes__rA   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#   r5   r%   s     r&   r!   #TestODEClass._do_problem.<locals>.f?   s    99Q?"r)   r+   c                 &   > TR                  X5      $ r   r/   rL   s     r&   r+   %TestODEClass._do_problem.<locals>.jacC   s    {{1((r)   ubandlband
   )atolrtolmethodr   )r#   r   )r3   rQ   rP   	ode_classset_integratorrS   rT   set_initial_valuer1   	integrater0   r   r$   r   
successfulget_return_coder2   r   )	r4   r%   
integratorrU   r!   r+   integrator_paramsigr5   s	    `       r&   r7   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)   rA   )adams)rB   rC   rD   rE   rV   r7   rF   rA   r)   r&   rH   rH   8   s    IOr)   rH   c                   B    \ rS rSr\rS rS rS rS r	S r
S 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voder`   bdf)r;   r<   stiffr7   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zvoder`   rg   r;   rh   r7   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<   rh   r3   r7   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+   dop853rx   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        UR                  5       (       a  M   e   g )N)rf   rl   rr   c                     gN      ?rA   r#   r$   s     r&   r!   'TestOde.test_concurrent_fail.<locals>.f   s    r)   r   皙?)r   rW   rX   rY   r#   rZ   )r4   solr!   rr2s        r&   test_concurrent_failTestOde.test_concurrent_fail   s     .C A%%c*A1%Q&&s+B  A&KKc	"LL$ KKc	"<<>>!> .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   rA   r   s     r&   r!   %TestOde.test_concurrent_ok.<locals>.f   s    r)      )rf   rl   rr   rw   r~   >   rf   rr   rl      r   r   g?rw   r~   g333333?)ranger   rW   rX   rY   r#   r   r$   )r4   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)   rA   N)rB   rC   rD   rE   r   rV   ri   rn   rs   ry   r   r   r   rF   rA   r)   r&   rb   rb   [   s*    I56/
0
0"*#+r)   rb   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 re   rm   r=   s      r&   ri   TestComplexOde.test_vode   s>    #K!mG==  &':  &%8 $r)   c                 P    [          H  nU" 5       nU R                  US5        M     g rq   )r;   r7   r=   s      r&   rs   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 rv   r;   rh   r3   r7   r=   s      r&   ry   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)   rA   N)rB   rC   rD   rE   r   rV   ri   rs   ry   r   rF   rA   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      rA   r   s     r&   rhs(TestSolout._run_solout_test.<locals>.rhs  #    aD1Q4K!A$'**r)   r   )r   rW   
set_soloutrX   rY   r   r   r4   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   r4   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   rA   r   s     r&   r   6TestSolout._run_solout_after_initial_test.<locals>.rhs  r   r)   r   r   )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                 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>.solout7  3    IIaLIIaffh48| r)   c                 *    US   US   -   US   S-  * /$ r   rA   r   s     r&   r   .TestSolout._run_solout_break_test.<locals>.rhs=  r   r)   r   r   )r   rW   r   rX   rY   r   r   r   r4   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_breakJ      .J''
3 /r)   rA   N)rB   rC   rD   rE   r   r   r   r   r   r   rF   rA   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)TestComplexSoloutiO  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>.soloutY  r   r)   c                     SU S-
  S-
  -  /$ Nr   r                 ?rA   r   s     r&   r   /TestComplexSolout._run_solout_test.<locals>.rhs]      TB'((r)   r   r   )r   rW   r   rX   rY   r   r   r   s            @@r&   r   "TestComplexSolout._run_solout_testQ  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_solouti  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>.soloutu  r   r)   c                     SU S-
  S-
  -  /$ r   rA   r   s     r&   r   5TestComplexSolout._run_solout_break_test.<locals>.rhs{  r   r)   r   r   r   )r   rW   r   rX   rY   r   r   r   r   s           @@@r&   r   (TestComplexSolout._run_solout_break_testm  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)   rA   N)	rB   rC   rD   rE   r   r   r   r   rF   rA   r)   r&   r   r   O  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㈵>rA   )rB   rC   rD   rE   __doc__rh   r<   r0   r1   rQ   rP   rS   rT   rF   rA   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   )r4   r5   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   rS   rT   )	r   r   r  r1   r   r	   r   rS   rT   )r4   zsr#   omegaus        r&   r2   SimpleOscillator.verify  sl    TVVdff_%GGAJs57|#dggajUW&=e&CCad8$))$))DDr)   rA   N)rB   rC   rD   rE   r   r0   r   r  r1   r   r  r!   r2   rF   rA   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   rA   r4   r5   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  )r1   r   r   rS   rT   r4   r  r#   r
  s       r&   r2   ComplexExp.verify  s/    GGc"Q$iDIIDII>>r)   rA   N)rB   rC   rD   rE   r   r   r0   r   r1   r<   r!   r+   r2   rF   rA   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   rR   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              rR   r   r  )nparctanr   rS   rT   r  s       r&   r2   	Pi.verify  s3    "))B-b!e9499499EEr)   rA   N)rB   rC   rD   rE   r   r0   r1   r<   r!   r2   rF   rA   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   )r4   r5   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   )rP   )ricivaljr4   s      r&   set_jCoupledDecay.jac.<locals>.set_j  s    *-Adjj2o"B&'r)   r   r   )r%  r  r   rQ   rP   )r4   r5   r#   r%  r0  r/  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   vstackr1   	transposer   rS   rT   )r4   r  r#   r%  d10d21d20e0e1e2r
  s              r&   r2   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)   rA   N)rB   rC   rD   rE   r   rh   r0   r1   rQ   rP   r%  r!   r+   r2   rF   rA   r)   r&   r"  r"    s6    
 EF	BEED82?r)   r"  c                     US   US   * /nU$ Nr   r   rA   )r#   xdxdts      r&   r!   r!     s    aD1Q4%=DKr)   c                 (    [        SS/SS//5      nU$ )Nr   r         r  )r#   r?  r/  s      r&   r+   r+   #  s#    Szc{ 	AHr)   c                 &    X!S   -  U* US   -  /nU$ r>  rA   r#   r?  r	  r@  s       r&   f1rE  )  s!    A$Jqt$DKr)   c                 *    [        SU/U* S//5      nU$ Nr   r  r#   r?  r	  r/  s       r&   jac1rI  .  s%    U|} 	AHr)   c                 &    X!S   -  U* US   -  /nU$ r>  rA   )r#   r?  omega1omega2r@  s        r&   f2rM  4  s!    Q4K&1&DKr)   c                 *    [        SU/U* S//5      nU$ rG  r  )r#   r?  rK  rL  r/  s        r&   jac2rO  9  s%    V}~ 	 AHr)   c                 4    US   US   -  US   * US   -  /nU$ )Nr   r   rA   rD  s       r&   fvrQ  ?  s+    !HQqTME!H9QqT>*DKr)   c                 6    [        SUS   /US   * S//5      nU$ )Nr   r   r   r  rH  s       r&   jacvrS  D  s.    U1Xq	3! 	"AHr)   c                   J    \ rS rSrSrSrSrS rS rS r	S r
S	 rS
 rS rSrg)ODECheckParameterUseiJ  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>)rS   rT   with_jacobianr  )r   solver_uses_jacrW   solver_name)r4   r!   r+   solvers       r&   _get_solver ODECheckParameterUse._get_solverS  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   rB  )rX   rY   r   r   r$   r4   r[  ics      r&   _check_solver"ODECheckParameterUse._check_solver_  s;    3Z  S)!&((T3K8r)   c                 Z    U R                  [        [        5      nU R                  U5        g r   )r\  r!   r+   ra  )r4   r[  s     r&   test_no_params#ODECheckParameterUse.test_no_paramse  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   )r\  rE  rI  set_f_paramsrY  set_jac_paramsra  r4   r[  r	  s      r&   test_one_scalar_param*ODECheckParameterUse.test_one_scalar_parami  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   )r\  rM  rO  rg  rY  rh  ra  )r4   r[  rK  rL  s       r&   test_two_scalar_params+ODECheckParameterUse.test_two_scalar_paramsq  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   )r\  rQ  rS  rg  rY  rh  ra  ri  s      r&   test_vector_param&ODECheckParameterUse.test_vector_paramz  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        [        R                  " [        5         UR                  [        5        S S S 5        g ! , (       d  f       g = f)Nr   )nstepsr   r   )r\  r!   r+   rW   rZ  rX   pytestwarnsUserWarningrY   r   r_  s      r&   test_warns_on_failure*ODECheckParameterUse.test_warns_on_failure  sl    !!!S)d..q93Z  S)\\+&R  '&&s   %B
BrA   N)rB   rC   rD   rE   r   rZ  rY  r\  ra  rd  rj  rm  rp  rw  rF   rA   r)   r&   rU  rU  J  s4    G
 KO
9####!r)   rU  c                       \ rS rSrSrSrSrg)TestDOPRI5CheckParameterUsei  rw   FrA   NrB   rC   rD   rE   rZ  rY  rF   rA   r)   r&   rz  rz        KOr)   rz  c                       \ rS rSrSrSrSrg)TestDOP853CheckParameterUsei  r~   FrA   Nr{  rA   r)   r&   r~  r~    r|  r)   r~  c                       \ rS rSrSrSrSrg)TestVODECheckParameterUsei  rf   TrA   Nr{  rA   r)   r&   r  r    s    KOr)   r  c                       \ rS rSrSrSrSrg)TestZVODECheckParameterUsei  rl   TrA   Nr{  rA   r)   r&   r  r        KOr)   r  c                       \ rS rSrSrSrSrg)TestLSODACheckParameterUsei  rr   TrA   Nr{  rA   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   rA   )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   rA   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  r4  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   rB     )r   r  rR   d   TgvIh%<=gdy=i'  )argsr   rS   rT   mxstepr,   )r  r   rS   rT   r  r,   	col_derivr   r   )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                    > T" XU5      $ r   rA   )r#   r$   r  r  s      r&   r'   -test_odeint_banded_jacobian.<locals>.<lambda>  s    T!]r)   c                    > T" XU5      $ r   rA   )r#   r$   r  r+   s      r&   r'   r    s    #aA,r)   )r  r   rS   rT   r  r,   r*   zsol1 != sol1ty)rT   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 -  $ NrA   r?  r#   s     r&   sys1d!test_odeint_errors.<locals>.sys1d      Avr)   c                     SS-  $ Nr   r   rA   r  s     r&   bad1 test_odeint_errors.<locals>.bad1      1ur)   c                     gNfoorA   r  s     r&   bad2 test_odeint_errors.<locals>.bad2  s    r)   c                     SS-  $ r  rA   r  s     r&   bad_jac1$test_odeint_errors.<locals>.bad_jac1  r  r)   c                 
    S//$ r  rA   r  s     r&   bad_jac2$test_odeint_errors.<locals>.bad_jac2  s    yr)   c                 "    SU S   -  SU S   -  /$ )Nr  r   皙r   rA   r  s     r&   sys2d!test_odeint_errors.<locals>.sys2d  s    QqT	4!9%%r)   c                     SS-  S/SS//$ )Nr   r   r  rA   r  s     r&   sys2d_bad_jac)test_odeint_errors.<locals>.sys2d_bad_jac
  s    Q
QI&&r)   r   r   r   r,   )assert_raises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   rA   r  s     r&   badrhs&test_odeint_bad_shapes.<locals>.badrhs  s    2wr)   c                     SU -  $ r  rA   r  s     r&   sys1$test_odeint_bad_shapes.<locals>.sys1  r  r)   c                     / SQ/$ )N)r   r   r   rA   r  s     r&   badjac&test_odeint_bad_shapes.<locals>.badjac   s
    {r)   r   r   r   r   r   rR   r  )r  r  r   RuntimeError)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      пrA   r  s     r&   r  $test_repeated_t_values.<locals>.func5  s    Qwr)   rR   r   r   r  r   r   	   r   r  )rT   rS   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  2  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   rt  r   r  scipy.integrater   r   r   r   rH   rb   r   r   r   r   r   r  r  r"  r;   r!   r+   rE  rI  rM  rO  rQ  rS  rU  rz  r~  r  r  r  r  r  r  r  r  rA   r)   r&   <module>r     si      7 7  * 4 4 &  &F O  OFn+l n+b&0\ &0RW4 W4t;4 ;4F  Es E2? ?"F F<?3 <?~ j"l;




?! ?!D"6 
"6 
 4 
!5 
!5 
,FHR&@M6Gr)   