
    -iG                     `   S SK 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rS SKJr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJrJr  S S	KJr  S S
KJr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-S r.S r/S r0S r1S r2S r3S r4\	Rj                  Rl                  S 5       r7\	Rj                  Rl                  S  5       r8\	Rj                  Rs                  S!5      S" 5       r:S# r;\	Rj                  Rx                  \	Rj                  R{                  S$/ S%Q5      S& 5       5       r>S' r?S( r@\	Rj                  R{                  S)S*S+/5      S, 5       rAS- rBS. rCS/ rDS0 rES1 rF\	Rj                  Rl                  S2 5       rGS3 rHS4 rIS5 rJS6 rKS7 rLS8 rMS9 rNS: rOS; rPS< rQ\	Rj                  Rl                  S= 5       rR\	Rj                  R{                  S$/ S>Q5      S? 5       rSS@ rT\	Rj                  R{                  SA\R                  \R                  /5      SB 5       rW\	Rj                  R{                  S$/ SCQ5      SD 5       rX\	Rj                  R{                  S$/ SCQ5      SE 5       rY\	Rj                  R{                  S$/ SCQ5      SF 5       rZ\	Rj                  R{                  S$/ SCQ5      SG 5       r[SH r\g)I    )product)assert_assert_allcloseassert_array_lessassert_equalassert_no_warningssuppress_warningsN)raises)group_columns)	solve_ivpRK23RK45DOP853RadauBDFLSODA)OdeSolution)num_jacselect_initial_step)ConstantDenseOutput)
coo_matrix
csc_matrixc                 .    [         R                  " U5      $ N)np
zeros_liketys     V/var/www/html/venv/lib/python3.13/site-packages/scipy/integrate/_ivp/tests/test_ivp.pyfun_zeror!      s    ==    c                 ^    [         R                  " US   * SUS   -  -
  US   US   -   /5      $ )Nr         r   arrayr   s     r    
fun_linearr(      s5    88adUQ1X%qtad{344r"   c                  :    [         R                  " SS/SS//5      $ )Nr%   r&    r"   r    
jac_linearr-      s    88b"X1v&''r"   c                     [         R                  " S[         R                  " SU -  5      -  S[         R                  " SU -  5      -  [         R                  " SU -  5      -   45      $ )Nr+      )r   vstacksincosr   s    r    
sol_linearr4      sP    99b266!a%=("&&Q-'"&&Q-79 : :r"   c                 ~    [         R                  " US   U -  US   US   SUS   -  -   S-
  -  XS   S-
  -  -  /5      $ Nr%   r   r/   r&   r   s     r    fun_rationalr7       sU    88QqTAXqTQqTA!H_q01QA$(^DF G Gr"   c                 ~    [         R                  " US   U -  US   US   SUS   -  -   S-
  -  XS   S-
  -  -  45      $ r6   r   r0   r   s     r    fun_rational_vectorizedr:   %   sU    99adQhdadQ1Xo12aQ4!8nEG H Hr"   c                     [         R                  " SSU -  /SUS   S-  -  XS   S-
  S-  -  -  US   SUS   -  -   S-
  XS   S-
  -  -  //5      $ Nr   r%   r/      r&   r   s     r    jac_rationalr?   *   sr    88	
AE
	adai1!qQ.	/
A$QqT/A
!tax.	1	3  r"   c                     [        SSU -  /SUS   S-  -  XS   S-
  S-  -  -  US   SUS   -  -   S-
  XS   S-
  -  -  //5      $ r<   )r   r   s     r    jac_rational_sparserA   2   sn    	
AE
	adai1!qQ.	/
A$QqT/A
!tax.	1	3  r"   c                 T    [         R                  " X S-   -  SU -  U S-   S-  -  45      $ )N
   r/   )r   asarrayr3   s    r    sol_rationalrE   :   s-    ::qF|R!Vq2v!m%;<==r"   c                    UR                   S   S-  nSnSnU S::  a  SOSn[        R                  " USXS   45      nSU-  n[        R                  " U5      S-   nSXv-  S-
  S-  -  US-  -  nXv-  S-
  S-  US-  -  n	SU-  S-   n
SU-  S-
  nSU-  nSU-  S-   n[        R                  " SU-  5      nXU
   X   -
  -  SU-  -  XU   SX   -  -
  X   -   -  US-  -  -   X1U   -  X   -  -
  US S S2'   U* X   -  X   -  USS S2'   U$ )	Nr   r/   d   r>   r$   r=   r%      )shaper   hstackarangeempty)r   r   nkcphidjalphabetaj_2_p1j_2_m3j_2_m1j_2fs                  r    fun_medazkorZ   >   s_   	
aAA	AAv!1C
		31e$%A	AA
		!qAq  16)EEAI!a1f$DUQYFUQYFUF
a%!)C
QAy19,-Q7i!ai-/!);<qAvEFF)maf$%AccF b16kAI%AaddGHr"   c                    / n/ n[         R                  " U 5      S-  nUR                  USS  5        UR                  USS  S-
  5        UR                  U5        UR                  U5        UR                  U5        UR                  US-   5        UR                  US S 5        UR                  US S S-   5        [         R                  " U 5      S-  S-   nUR                  U5        UR                  U5        UR                  U5        UR                  US-
  5        [         R                  " U5      n[         R                  " U5      n[	        [         R
                  " U5      X445      $ )Nr/   r%   r*   )r   rK   appendrJ   r   	ones_like)rM   colsrowsis       r    medazko_sparsityra   Y   s   DD
		!qAKK!"KK!"	KKNKKNKKNKKAKK#2KK#2

		!q1AKKNKKNKKNKKA99T?D99T?Dr||D)D<899r"   c                     U* $ r   r,   r   s     r    fun_complexrc   y   s	    2Ir"   c                 J    [         R                  " UR                  S   5      * $ Nr   )r   eyerI   r   s     r    jac_complexrg   }   s    FF1771:r"   c                 *    [        [        X5      5      $ r   )r   rg   r   s     r    jac_complex_sparseri      s    k!'((r"   c                 X    S[         R                  " U * 5      -  nUR                  S5      $ )N      ?      ?)r%   r*   )r   expreshaper   s     r    sol_complexrn      s%    	RVVQBZA99Wr"   c                     XS-
  -  $ Nr/   r,   r   s     r    fun_event_dense_output_LSODArq      s    A;r"   c                     U S-
  $ rp   r,   r   s     r    jac_event_dense_output_LSODArs      s    q5Lr"   c                 z    [         R                  " U S-  S-  SU -  -
  [         R                  " S5      -   S-
  5      $ )Nr/   皙?   )r   rl   logr3   s    r    sol_event_dense_output_LSODArx      s4    66!q&1*q1u$rvvd|3a788r"   c                     X-
  X2[         R                  " U5      -  -   -  n[         R                  R                  USS9[         R                  " UR
                  S   5      -  $ )Nr   )axis)r   abslinalgnormsqrtrI   )r   y_truertolatoles        r    compute_errorr      sK    	
bffVn445A99>>!!>$rwwqwwqz':::r"   c            	         S n S nSUl         SUl        [        U S[        R                  /SS/SUSS9n[        UR                  S5      [        R                  " S	S
/5      SSS9  [        UR                  [        R                  " S//5      SSS9  [        UR                  [        R                  " SS//5      /SS9  UR                  (       d   e[        UR                  S5        g )Nc                     US   S/$ )Nr%   g:#r,   r   s     r    upward_cannon0test_duplicate_timestamps.<locals>.upward_cannon   s    !hr"   c                     US   $ re   r,   r   s     r    
hit_ground-test_duplicate_timestamps.<locals>.hit_ground       tr"   Tr*   r   {Gz?g/ҟJb>)max_stepeventsdense_outputgix9g.qGh㈵>:0yE>r   r   gl `?        g{Gz&.>r   r%   )terminal	directionr   r   infr   solrD   t_eventsy_eventssuccessr   status)r   r   r   s      r    test_duplicate_timestampsr      s      JJ
MArvv;D	3%D:C CGGDM2::{K.H#ID*CLL"**zl^"<4dSCLL2::e~.>#?"@tL;;;Qr"   c                     Sn SnSS/n[        SS// SQSS	/SS
//S [        [        /5       GH  u  p4pVU(       a  [        nO[        n[        5        nUR                  [        S5        [        XuX XSXcS9	n	S S S 5        [        W	R                  S   US   5        [        U	R                  S L 5        [        U	R                  S L 5        [        U	R                  5        [        U	R                  S5        US:X  a  [        U	R                   S:  5        O[        U	R                   S:  5        US;   a-  [        U	R"                  S5        [        U	R$                  S5        OP[        SU	R"                  s=:  =(       a    S:  Os  5        [        SU	R$                  s=:  =(       a    S:  Os  5        ['        U	R                  5      n
[)        U	R*                  XU5      n[        [,        R.                  " US:  5      5        [,        R0                  " U6 n['        U5      nU	R3                  U5      n[)        XX5      n[        [,        R.                  " US:  5      5        US   US   -   S-  n['        U5      nU	R3                  U5      n[)        XX5      n[        [,        R.                  " US:  5      5        [5        U	R3                  U	R                  5      U	R*                  SSS9  GM     g ! , (       d  f       GNv= f)NMbP?ư>UUUUUU?qq?FTr   r   r   r   r   r   r$   	   r%   AThe following arguments have no effect for a chosen solver: `jac`)r   r   methodr   jac
vectorizedr   r   2   (   )r   r   r   r   rH   rC   r*   r/   V瞯<r   )r   r?   rA   r:   r7   r	   filterUserWarningr   r   r   r   r   r   r   r   nfevnjevnlurE   r   r   r   alllinspacer   r   )r   r   y0r   r   t_spanr   funsupresr   r   tcyc_trueycs                  r    test_integrationr      sY   DD
sB+2DM?VaV<!45	,7'
F )CC CJJ{'( C!%4 #<C	 ! 	SUU1Xvay)$%$%SZZ#X CHHrM"CHHrM"881%!$A$$1$%A$$"$%cee$#%%t4q1u[[&!r"WWR["t2q1uQi&*$)r"WWR["t2q1uEFq,7 ! s   $K$$
K3	c                  D   Sn SnS/nSS/n[         R                  " US   US   5      n[        / SQS [        [        /5       GH  u  pV[        5        nUR                  [        S5        [        [        X2USXUS	9nS S S 5        [        WR                  S   US   5        [        UR                  S L 5        [        UR                  S L 5        [        UR                  5        [        UR                   S5        US
:X  a  UR"                  S:  d   eOUR"                  S:  d   eUS:X  a)  [        UR$                  S5        UR&                  S:  d   eO$UR$                  S:X  d   eUR&                  S:X  d   e[)        UR                  5      n	[+        UR,                  XU5      n
[         R.                  " U
S:  5      (       d   e[)        U5      nUR1                  U5      n[+        XX5      n
[         R.                  " U
S:  5      (       a  GM   e   g ! , (       d  f       GN= f)Nr   r   rk   r   r%   )r   r   r   r   r   T)r   r   r   r   r   r   #      r   rv   r$   )r   r   r   rg   ri   r	   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   rn   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   s                r    test_integration_complexr      s   DD
BVF	VAYq		*B@ $k3EFH CJJ{'( KF)-DNC	 ! 	SUU1Xvay)$%$%SZZ#X88b= =88b= =U?1%77Q;;88q= =77a<<SUU##%%t4vva!e}}}b/WWR["t2vva!e}}}GH  s   )H
H	r$   c            	         Sn SS/n[         R                  " SU -  5      nSUSS S2'   [        U 5      nS GHI  n[        [        XUUS9n[        UR                  S   US   5        [        UR                  S L 5        [        UR                  S L 5        [        UR                  5        [        UR                  S5        [        UR                  S   S	S
S9  [        UR                  S   SSS9  [        UR                  S   SS
S9  [        UR                  S   SSS9  [        UR                  S   SS
S9  [        UR                  S   SSS9  [        UR                  S   SSS9  [        UR                  S   SS
S9  GML     g )N   r      r/   r%   )r   r   )r   jac_sparsity)N   r*   gݨ'.?r   r   )O   r*   r   r   )   r*   ghen7?)   r*   )   r*   gՊ.?)   r*   ggJ	T>)   r*   )   r*   g`P^?)r   zerosra   r   rZ   r   r   r   r   r   r   r   r   r   )rM   r   r   sparsityr   r   s         r    "test_integration_sparse_differencer     sK   AWF	!a%BBqt!tH"H"V%-/ 	SUU1Xvay)$%$%SZZ#f{>fqt4g$?g5gTBg4@g5g	=# #r"   c                     Sn SnSS/nSS/n[        5       n[        U5      n[        SS/XE/5       GH  u  pg[        [        X2XUSUS9n[        UR                  S   US   5        [        UR                  S L 5        [        UR                  S L 5        [        UR                  5        [        UR                  S5        [        UR                  S	:  5        [        UR                  S5        [        SUR                  s=:  =(       a    S
:  Os  5        [        UR                  5      n	[!        UR"                  XU5      n
[        [$        R&                  " U
S:  5      5        [$        R(                  " U6 n[        U5      nUR+                  U5      n[!        XX5      n
[        [$        R&                  " U
S
:  5      5        [-        UR+                  UR                  5      UR"                  SSS9  GM     g )Nr   r   r   r/   r   r   T)r   r   r   r   r   rG      rC   +=r   )r-   r   r   r   r(   r   r   r   r   r   r   r   r   r   r   r4   r   r   r   r   r   r   r   )r   r   r   r   JJ_sparser   r   r   r   r   r   r   r   s                 r    test_integration_const_jacr   8  s   DD
QBVFA!}H/!?
FT%DcCSUU1Xvay)$%$%SZZ#3SXXq!CGG  b !CEE"#%%t4q2v[[&!R.WWR["t2q2vEF1 @r"   r   )r   r   r   c           	          SnSn/ SQnSS/nU S:X  a  US:  a  [         R                  " SS9  S	 n[        XeXBX0S
9nUR                  S:  d   eUR                  S:  d   eg )Nr   )     @r   r   r   g    חAr   r%   z)LSODA does not allow for concurrent callsreasonc                 d    Uu  p#nSU-  SU-  U-  -   SU-  SU-  U-  -
  SU-  U-  -
  SU-  U-  /$ )N{Gzr   {Gz?    8|Ar,   )r   statexr   zs        r    fun_robertson-test_integration_stiff.<locals>.fun_robertsonf  sU    aAIa!#1HsQw{"S1Wq[0!GaK
 	
r"   )r   r   r   i  r   )pytestskipr   r   r   )r   num_parallel_threadsr   r   r   tspanr   r   s           r    test_integration_stiffr   [  ss     DD	BHE1A5FG
 M".C 88d??88c>>r"   c           
         S nS nS nSUl         S GH  nUS:X  a  U S:  a  M  [        [        SS	/S
S/UX4S9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   e[        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   eSUl        SUl        [        [        SS	/S
S/UX4S9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   eSUl        SUl        [        [        SS	/S
S/UX4S9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   eSUl        SUl        [        [        SS	/S
S/UXU4SS9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   e[        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   e[        [        SS	/S
S/UUSS9n[        UR                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   e[        R                  " UR                  S   UR                  S   5      n[        U5      nUR!                  U5      n[#        XSS5      n	[        [        R$                  " U	S:  5      5        [        R&                  " [        UR
                  S   S   5      UR                  S   S   SSS9(       a  GM   e   SUl        SUl        S GH   nUS:X  a  U S:  a  M  [        [        S	S/SS/UX4S9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   e[        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   eSUl        SUl        [        [        S	S/SS/UX4S9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   eSUl        SUl        [        [        S	S/SS/UX4S9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   eSUl        SUl        [        [        S	S/SS/UXU4SS9n[        UR                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        UR
                  S   R                  S5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        SUR
                  S   S   s=:  =(       a    S:  Os  5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        UR                  S   R                  S5        [        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   e[        R                  " U" UR
                  S   S   UR                  S   S   5      S5      (       d   e[        R                  " UR                  S   UR                  S   5      n[        U5      nUR!                  U5      n[#        XSS5      n	[        [        R$                  " U	S:  5      5        [        R&                  " [        UR
                  S   S   5      UR                  S   S   SSS9(       d   e[        R&                  " [        UR
                  S   S   5      UR                  S   S   SSS9(       a  GM!   e   g )Nc                     US   US   S-  -
  $ )Nr   r%   gffffff?r,   r   s     r    event_rational_1%test_events.<locals>.event_rational_1w  s    tadck!!r"   c                     US   S-  US   -
  $ )Nr%   g333333?r   r,   r   s     r    event_rational_2%test_events.<locals>.event_rational_2z  s    ts{QqT!!r"   c                     U S-
  $ )Ng@r,   r   s     r    event_rational_3%test_events.<locals>.event_rational_3}  s    3wr"   Tr   r   r%   r$      r   r   )r   r   r   g333333@g@g333333@g@)r%   r/   r   r*   )r   r   r   r/         @r   r   r   gqq?gX<ݚ?)r   r   r7   r   r   r   sizer   r   rI   r   iscloser   r   r   rE   r   r   r   allclose)
r   r   r   r   r   r   r   r   r   r   s
             r    test_eventsr   v  s   "" !%EW!5!9q!fsCj 0CESZZ#S\\!_))1-S\\!_))1-cll1oa(..3./cll1oa(..3./S\\!_**F3S\\!_**F3zzS\\!_Q/a1CDaI I 	I IzzS\\!_Q/a1CDaI I 	I I &'"%&"q!fuenV 0CESZZ#S\\!_))1-S\\!_))1-cll1oa(..3./S\\!_**F3S\\!_**D1zzS\\!_Q/a1CDaI I 	I I &("%'"q!fuenV 0CESZZ#S\\!_))1-S\\!_))1-cll1oa(..3./S\\!_**D1S\\!_**F3zzS\\!_Q/a1CDaI I 	I I &'"%&"q!fuenV 0 0 2@DF 	SZZ#S\\!_))1-S\\!_))1-S\\!_))1-cll1oa(..3./cll1oa(..3./S\\!_**F3S\\!_**D1S\\!_**F3zzS\\!_Q/a1CDaI I 	I IzzS\\!_Q/a1CDaI I 	I I q!fuenV/dDSZZ#S\\!_))1-cll1oa(..3./S\\!_**F3zzS\\!_Q/a1CDaI I 	I I [[q3559-r"WWR["tT2q1u {{<Q(:;S\\!_Q=O $41 1 	1 1g Fn "#!"EW!5!9q!fsEl6 0CESZZ#S\\!_))1-S\\!_))1-cll1oa(..3./cll1oa(..3./S\\!_**F3S\\!_**F3zzS\\!_Q/a1CDaI I 	I IzzS\\!_Q/a1CDaI I 	I I &("%'"q!fsEl6 0CESZZ#S\\!_))1-S\\!_))1-cll1oa(..3./S\\!_**F3S\\!_**D1zzS\\!_Q/a1CDaI I 	I I &'"%&"q!fsEl6 0CESZZ#S\\!_))1-S\\!_))1-cll1oa(..3./S\\!_**D1S\\!_**F3zzS\\!_Q/a1CDaI I 	I I &'"%&"q!fsEl6 0 0 2@DF 	SZZ#S\\!_))1-S\\!_))1-S\\!_))1-cll1oa(..3./cll1oa(..3./S\\!_**D1S\\!_**F3S\\!_**F3zzS\\!_Q/a1CDaI I 	I IzzS\\!_Q/a1CDaI I 	I I [[rCEE!H-r"WWR["tT2q1u{{<Q(:;S\\!_Q=O $41 	1 1{{<Q(:;S\\!_Q=O $41 1 	1 1[ Fr"   c                      S n S nX4$ )Nc                     US   US   * /$ )Nr%   r   r,   r   s     r    rY   #_get_harmonic_oscillator.<locals>.f-  s    !qte}r"   c                     US   $ re   r,   r   s     r    event'_get_harmonic_oscillator.<locals>.event0  r   r"   r,   )rY   r   s     r    _get_harmonic_oscillatorr   ,  s     8Or"   n_eventsrH   r>   c                     [        5       u  pXl        [        USSS/US9n[        UR                  S   5      U :X  d   e[        UR
                  S   5      U :X  d   e[        UR
                  S   S S 2S4   SSS9  g )Nr   rG   r%   r   )r   r   r   )r   r   r   lenr   r   r   )r  rY   r   r   s       r    test_event_terminal_integerr  6  sx    ')HAN
Ax!Q
6Cs||A8+++s||A8+++CLLOAqD)159r"   c                     [        5       u  pU SSS/4nS Ul        [        USU06nSUl        [        USU06n[        UR                  UR                  5        SnSUl        [
        R                  " [        US9   [        USU06  S S S 5        SUl        [
        R                  " [        US9   [        USU06  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)	Nr  r%   r   r   zThe `terminal` attribute...r*   matchg      @)r   r   r   r   r   r   r
   
ValueError)rY   r   argsr   refmessages         r    test_event_terminal_ivr  @  s    ')HAx!Q DEN
T
(%
(CEN
T
(%
(CCLL#,,/+GEN	z	14&& 
2EN	z	14&& 
2	1 
2	1 
2	1s   :C.C
C
C"c                 T   SnSnSS/n[         [        [        [        [        [
        4 GH{  nU[
        L a  U S:  a  M  SS/SS/4 GHY  n[        [        XSUSX$S	S
9n[        UR                  S   US   5        [        UR                  S   US   5        [        [        R                  " [        R                  " [        R                  " UR                  5      5      S:*  5      5        [        UR                  S L 5        [        UR                   5        [        UR"                  S5        [%        UR                  5      n['        UR(                  XqU5      n[        [        R                  " US:  5      5        [        R*                  " U6 n	[%        U	5      n
UR-                  U	5      n['        XX5      n[        [        R                  " US:  5      5        [/        UR-                  UR                  5      UR(                  SSS9  [1        [2        U[        US   UUS   SS9  U[
        Ld  GM  U" [        US   X5S   XSS9nUR5                  5       nUR5                  5       n[        UR"                  S5        [        SU;   5        [1        [6        UR4                  5        GM\     GM~     g )Nr   r   r   r   r%   r$   r         ?T)r   r   r   r   r   r   r*   g	     ?r   r   )r   g#B;)r   r   r   failedzstep size is less)r   r   r   r   r   r   r   r7   r   r   r   r   r   r{   diffr   r   r   rE   r   r   r   r   r   assert_raisesr	  stepRuntimeError)r   r   r   r   r   r   r   r   r   r   r   r   solverr  s                 r    test_max_stepr  S  s   DD
sBvuc59U?3a71v1v&FL&4%(t)-/C q6!9-rF2J/BFF266"''#%%.1[@ABCLLD()CKK Q'!#%%(FceeV48ABFF1q5M"f%B"2&GBb46ABFF1q5M"CGGCEENCEEEJ*flF1Ir )b2 U"fQiAY%)uF ++- ++-V]]H5+w67lFKK8E ' :r"   c                 P   SnSnSS/nSn[         [        [        [        [        [
        4 GH  nU[
        L a  U S:  a  M  SS/SS/4 GH  n[        [        XcUS	X%S
US9	n[        UR                  S   US   5        [        UR                  S   US   5        [        U[        R                  " UR                  S   S-
  5      5        [        UR                  S L 5        [        UR                  5        [        UR                   S5        [#        UR                  5      n[%        UR&                  XU5      n	[        [        R(                  " U	S:  5      5        [        R*                  " U6 n
[#        U
5      nUR-                  U
5      n[%        XX5      n	[        [        R(                  " U	S:  5      5        [        UR-                  UR                  5      UR&                  SSS9  [/        [0        U[        US   UUS   SS9  [/        [0        U[        US   UUS   SS9  GM     GM     g )Nr   r   r   r   皙?r%   r$   r   r  T)r   r   r   r   r   
first_stepr   r*   r   r   )r  )r   r   r   r   r   r   r   r7   r   r   r   r   r{   r   r   r   r   rE   r   r   r   r   r   r  r	  )r   r   r   r   r  r   r   r   r   r   r   r   r   s                r    test_first_stepr    s   DD
sBJvuc59U?3a71v1v&FL&4%(t)-*FC q6!9-rF2J/JsuuQx!|(<=CLLD()CKK Q'!#%%(FceeV48ABFF1q5M"f%B"2&GBb46ABFF1q5M"CGGCEENCEEEJ*flF1Ir )4*flF1Ir )37 ' :r"   c                     Sn SnSS/nSS/SS/4 H  n[         R                  " US   US   S	5      n[        [        X2XUS
9n[	        UR
                  U5        [        UR                  S L 5        [        UR                  5        [	        UR                  S5        [        UR
                  5      n[        UR                  X`U5      n[        [         R                  " US:  5      5        M     / SQn[        [        SS/X UUS
9n[	        UR
                  U5        [        UR                  S L 5        [        UR                  5        [	        UR                  S5        [        UR
                  5      n[        UR                  X`U5      n[        [         R                  " US:  5      5        / SQn[        [        SS/X UUS
9n[	        UR
                  U5        [        UR                  S L 5        [        UR                  5        [	        UR                  S5        / SQn[        [        SS/X UUS
9n[	        UR
                  U5        [        UR                  S L 5        [        UR                  5        [	        UR                  S5        [        UR
                  5      n[        UR                  X`U5      n[        [         R                  " US:  5      5        / SQn[        [        SS/X UUS
9n[	        UR
                  U5        [        UR                  S L 5        [        UR                  5        [	        UR                  S5        SS/n[        [        [        [        SS/UXUS
9  g )Nr   r   r   r   r$   r   r%   r   rC   r   r   t_eval)r$   
ףp=
@   r   Q @r   )r$   (\@rH         ?皙?)\(?r%   )r  r  r   r   )r!  rH   r"  r#  r$  r>   rv   )r   r   r   r7   r   r   r   r   r   r   rE   r   r   r   r  r	  )r   r   r   r   r  r   r   r   s           r    test_t_evalr%    s   DD
sBq6Aq6"VAYq	26ft%'SUUF#$%SZZ#cee$#%%t4q1u # &F
L1a&"d!#CCLLD !CKKQ#%% FceeV40ABFF1q5M,F
L1a&"d!#CCLLD !CKKQF
L1a&"d!#CCLLD !CKKQ#%% FceeV40ABFF1q5M&F
L1a&"d!#CCLLD !CKKQVF*i1vrv7r"   c            
         Sn SnSS/nSS/n[         R                  " US   US   S	5      n[        [        X2XUS
9n[        [        X2XUSS9n[	        UR
                  U5        [        UR                  S L 5        [        UR                  5        [	        UR                  S5        [	        UR
                  UR
                  5        [	        UR                  UR                  5        [        UR                  S L 5        [        UR                  5        [	        UR                  S5        [        UR
                  5      n[        UR                  XpU5      n[        [         R                  " US:  5      5        g )Nr   r   r   r   r$   r   r   r%   rC   r  T)r   r   r  r   )r   r   r   r7   r   r   r   r   r   r   r   rE   r   r   )	r   r   r   r   r  r   res_dr   r   s	            r    test_t_eval_dense_outputr(    s   DD
sBVF[[F1Ir2F
L&4!#ClFT#$8ECLLD !CKKQ  ENNd"#EMMq! #%% FceeV40ABFF1q5Mr"   c                  l   S n SU l         SnSnSS/nSS/n[        R                  " S	SS
5      nS H  n[        5        nUR	                  [
        S5        [        [        XCXXeU [        S9	nS S S 5        WR                  (       d   eUR                  S:X  d   eUR                  S:X  d   eUR                  (       d  UR                  (       a   e[        UR                  5      S:X  d   eUR                  S   R                   S:X  d   eUR                  S   S   S:X  a  M   e   g ! , (       d  f       N= f)Nc                     U S-
  $ )Nr  r,   r   s     r    early_event,test_t_eval_early_event.<locals>.early_event      1ur"   Tr   r   r   r   r$   r   r      r   r   )r   r   r   r  r   r   zA termination event occurred.r%   r   r  )r   r   r   r	   r   r   r   r7   r?   r   r  r   r   r   r  r   r   )	r+  r   r   r   r   r  r   r   r   s	            r    test_t_eval_early_eventr/    s     KDD
sBVF[[a$FE CJJ{'( L&4#) ,.C	 ! {{{{{====zzQ55&&3<< A%%%||A##q(((||Aq!Q&&& F  s   -D%%
D3	c                    U S:  a  [         R                  " S5        S nSnSnS/nSS/nSn[        [        UUS	S
UUSUU[        S9n[        UR                  S   US   5        [        UR                  S   US   5        [        U[        R                  " UR                  S   US   -
  5      5        UR                  (       d   e[        UR                  S5        [        UR                  5      n[        UR                  XU5      n	[        U	S5        [        R                   " U6 n
[        U
5      nUR#                  U
5      n[        XX#5      n	[        U	S5        [        UR#                  UR                  5      UR                  SSS9  g )Nr%   -LSODA does not allow for concurrent executionc                     US   S-
  $ )Nr   gOne.>r,   r   s     r    event_lsoda2test_event_dense_output_LSODA.<locals>.event_lsoda   s    tg~r"   r   r   ru   r=   r/   r   T)r   r   r   r  r   r   r   r   r   r*   r$   r   r   )r   r   r   rq   rs   r   r   r   r   r{   r   r   rx   r   r   r   r   r   )r   r3  r   r   r   r   r  r   r   r   r   r   r   s                r    test_event_dense_output_LSODAr5    sW   aCD DD
B!WFJ
$
(C q6!9%rF2J'JsuuQx&)'; <=;;;Q)#%%0FceeV40Aa	f	B*2.G	Bb4.AaCGGCEENCEEEBr"   c            	          S HU  n [        S SS/SS/U SS9n[        UR                  S5      SS/5        [        UR                  / SQ5      / S	Q/ S
Q/5        MW     g )Nr   c                     U* $ r   r,   r   s     r    <lambda>%test_no_integration.<locals>.<lambda>K      aRr"   r>   r/   rH   Tr   r   )r>   r$   rv   r/   r/   r/   )rH   rH   rH   )r   r   r   )r   r   s     r    test_no_integrationr=  I  sX    E!Q!Q%D:SWWQZ!Q(SWWY')Y)?@	 Fr"   c                  N   [         [        [        [        [        [
        4 GH   n U " S SSS/S5      nUR                  5         [        UR                  S5        UR                  5       n[        U" S5      SS/5        [        U" / SQ5      / SQ/ SQ/5        U " S S/ [        R                  5      nUR                  5         [        UR                  S5        UR                  5       n[        U" S	5      / 5        [        U" / SQ5      [        R                  " S
5      5        GM     g )Nc                     U* $ r   r,   r   s     r    r8  +test_no_integration_class.<locals>.<lambda>S  r:  r"   r   g      $@finished)r   r%   r/   rC   rC   rC   )r   r   r   c                     U* $ r   r,   r   s     r    r8  r@  Z  r:  r"         Y@r   rH   )r   r   r   r   r   r   r  r   r   r   r   r   rL   )r   r  r   s      r    test_no_integration_classrF  Q  s    vuc59tSk3?V]]J/!!#SXc{+S^lI%>?b"&&9V]]J/!!#SZ$S^RXXf%56 :r"   c            
      F   S n [         R                  " S5      nS Hw  n[        [        U SS/UUSS9n[	        UR                  S5      [         R                  " S5      5        [	        UR                  / SQ5      [         R                  " S	5      5        My     S H  n[        [        U S[         R                  /UUSS9n[	        UR                  S5      [         R                  " S5      5        [	        UR                  / SQ5      [         R                  " S	5      5        M     g )
Nc                 .    [         R                  " S5      $ )Nr   )r   r   r   s     r    r   test_empty.<locals>.func  s    xx~r"   r   r   r   rC   Tr;  )r%   r/   rH   rE  )r   r   r   r   r   r   r   )r   r   r   r   s       r    
test_emptyrJ  b  s     
$BE C!R"(.TCSWWR["((4.1SWWY'&)9:	 F F C!RVVb(.TCSWWR["((4.1SWWY'&)9:	 Fr"   c                     [        SS[        R                  " SS/5      5      n [        U " S5      SS/5        [        U " / SQ5      / SQ/ SQ/5        [        SS[        R                  " / 5      5      n [        U " S5      [        R                  " S5      5        [        U " / SQ5      [        R                  " S5      5        g )	Nr   r%   r/   r"  )r%   r"  r/   )r%   r%   r%   r<  rE  )r   r   r'   r   rL   )r   s    r    test_ConstantDenseOutputrL  u  s    
aBHHaV$4
5CCHq!f%C$y)&<=
aBHHRL
1CCHbhhqk*C$bhhv&67r"   c            	          SS/n [         [        [        [        [        [
        4 GH  nU" [        SU [        R                  5      n[        UR                  S5        [        UR                  S5        [        UR                  [        R                  5        [        UR                  S5        [        UR                  S5        [        UR                  U 5        [!        UR"                  S L 5        U[
        LaG  [!        UR$                  S:  5        [!        UR&                  S:  5        [        UR(                  S5        OB[        UR$                  S5        [        UR&                  S5        [        UR(                  S5        [+        [,        UR.                  5        UR1                  5       n[        UR                  S5        [        US 5        [        UR                  S5        [        UR                  [        R                  5        [        UR                  S5        [!        UR                  S:  5        [!        [        R2                  " [        R4                  " UR                  U 5      5      (       + 5        [!        UR"                  S:  5        [!        UR$                  S:  5        [!        UR&                  S:  5        [!        UR(                  S:  5        UR/                  5       n[7        U" S5      U SSS	9  GM     g )
Nr   r   r$   r/   runningr%   r   r   r   )r   r   r   r   r   r   r7   r   r   r   rM   r   t_boundr   r   r   r   	step_sizer   r   r   r  r  r   r  r   equalr   )r   clsr  r  r   s        r    test_classesrS    s   
BdFE36\1b"&&1VXXq!V]]I.V^^RVV,V%%q)VXXq!VXXr"  D()eFKK!O$FKK1$%Q'a(a(Q'lF$7$78++-V]]I.Wd#VXXq!V^^RVV,V%%q)1BFF288FHHb1223  1$%a q !

a !!#AQ7C 7r"   c                     [         R                  " / SQ[        S9n [        U S   U S   [         R                  " S/5      5      n[        U S   U S   [         R                  " S/5      5      n[	        XU/5      n[        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" S	5      S/5        [        U" / S
Q5      [         R                  " / SQ/5      5        [         R                  " / SQ5      n [        U S   U S   [         R                  " S/5      5      n[        U S   U S   [         R                  " S/5      5      n[	        XU/5      n[        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" / SQ5      [         R                  " / SQ/5      5        [         R                  " SS/5      n [        SS[         R                  " S/5      5      n[	        X/5      n[        U" S5      S/5        [        U" S5      S/5        [        U" S5      S/5        [        U" / SQ5      [         R                  " / SQ/5      5        g )N)r   r/   r$   dtyper   r%   r*   r/   rH   r$   rv   )	r   rv   r=   r"  g      @g      @r$   g      @r/   )	r*   r%   r*   r*   r%   r%   r%   r%   r*   )rC   r>      rC   r>   rW  )   r+   rC   rW  rv   r%   r>   )r*   r%   r*   r%   r*   r%   r*   )r/   r%   r   rB  )r   r'   floatr   r   r   )tss1s2r   ss        r    test_OdeSolutionr`    sO   	)5	)B	RUBqE288RD>	:B	RUBqE288QC=	9B
br(
#CR2$Q"Q"Q!Q!Q!9::;<> 
+	B	RUBqE288RD>	:B	RUBqE288QC=	9B
br(
#CR2$R2$Q"Q"Q!R1#R1#./4568 
1a&	BAq"((B4.1A
b#
CQ"Q"Q"Y<.!9:r"   c                      S n S nSn[         R                  " / SQ5      nU" X#5      nSnU " X#5      R                  5       n[        XX6US 5      u  px[	        XtSSS9  [        XX6XX5      u  px[	        XtSSS9  g )Nc                     [         R                  " SUS   -  SUS   -  US   -  -   SUS   -  SUS   -  US   -  -
  SUS   S-  -  -
  SUS   S-  -  /5      $ )Nr   r   r   r%   r/   r   r   r9   r   s     r    r   test_num_jac.<locals>.fun  sz    yyAaDL31:!,,1Q4K#!*qt++cAaDAIo=!A$!)O
  	r"   c                     [         R                  " SSUS   -  SUS   -  /SSUS   -  SUS   -  -
  SUS   -  /SSUS   -  S//5      $ )	Nr   r   r/   r%   r   g     g    8Ar   r&   r   s     r    r   test_num_jac.<locals>.jac  sk    xxC!A$Jad
+4!A$;qt+TAaD[9ad
A
  	r"   r%   )r%   r   r   r   r   )r   r'   ravelr   r   )	r   r   r   r   J_true	thresholdrY   J_numfactors	            r    test_num_jacrk    sy     	
A
AYFIA	ACA)T:MEE48CA)<MEE48r"   c            
         S n S n[         R                  R                  S5        Sn[         R                  R                  U5      nU" U5      n[	        U5      nU " SUS S 2S 4   5      R                  5       n[        U SUR                  5       USS XE4S9u  px[        U SUR                  5       USS 5      u  p[        XR                  5       SSS	9  [        XSSS	9  [         R                  R                  SSUS
9n[        U SUR                  5       USUXE4S9u  px[        U SUR                  5       USU5      u  p[        XR                  5       SSS	9  [        XSSS	9  g )Nc                     USS  S-  US S S-  -
  n[         R                  " UR                  S   5      n[         R                  " USU-  45      [         R                  " SU-  U45      -   $ )Nr%   rH   r*   r/   )r   r   rI   r0   )r   r   r   r   s       r    r    test_num_jac_sparse.<locals>.fun  sc    abE1Hq"vqy HHQWWQZ yy!QU$ryy!a%'<<<r"   c                     [         R                  " X 4[        S9nSUS'   SUS'   [        SU S-
  5       H  nSXUS-
  US-   24'   M     SUS'   SUS'   U$ )NrU  r%   )r   r   r   r%   r/   )r*   r*   )r*   r=   )r   r   intrange)rM   Ar`   s      r    	structure&test_num_jac_sparse.<locals>.structure  si    HHaV3'$$q!a%A!"AQAo !&	&	r"   r   r   r   )r   -q=r   r   )r   )
r   randomseedrandnr   rf  r   r   toarrayuniform)r   rt  rM   r   rs  groupsrY   J_num_sparsefactor_sparseJ_num_densefactor_denserj  s               r    test_num_jac_sparser    sP   =
	 IINN1
A
		A!A1FAqDz  "A #*#q!'')Qd45;#@L 'Q	1dD IKK!5!5!7U,Le%H YYq%a0F")#q!'')Qf45;#@L 'Q	1dF KKK!5!5!7U,Le%Hr"   c                  ^   S n S nS nS nS nSUl         SUl         SUl        S	nS
nSnSn[        R                  " U* U-  5      SU-
  U-  [        R                  " U* U-  5      -   -  n	SSU	/n
S	U-  n[	        U SU/U
X#U/SXVU4SUSSS9
nUR
                  S   nUR
                  S   nUR
                  S	   n[        US[        R                  -  S[        R                  -  /5        [        US[        R                  -  S[        R                  -  /5        [        X/5        [        R                  " SUS   S5      nUR                  U5      n[        US   [        R                  " UU-  5      SSS9  [        US   [        R                  " UU-  5      * SSS9  [        US	   SSU	-
  U	-  [        R                  " U* U-  5      -  S-   -  SSS9  UR                  U5      nUR                  U5      nUR                  U5      n[        US   [        R                  " US   5      SS9  [        US   [        R                  " US   5      5        [        US   [        R                  " US   5      5        [        US   [        R                  " US   5      SS9  [        US	   U/5        g )Nc                 2    Uu  pVnU* U-  X%-  X7-  SU-
  -  /$ )Nr%   r,   r   womegarN   zfinalr   r   r   s           r    sys3test_args.<locals>.sys3   s*    aq%'13A;//r"   c           
      h    Uu  pVn[         R                  " SU* S/USS/SSUSSU-  -
  -  //5      nU$ )Nr   r%   r/   r&   )	r   r  r  rN   r  r   r   r   r   s	            r    sys3_jactest_args.<locals>.sys3_jac$  sN    aHHq5&!nam!QAaC[)+ , r"   c                     Uu  pVnU$ r   r,   r  s           r    sys3_x0decreasing$test_args.<locals>.sys3_x0decreasing+      ar"   c                     Uu  pVnU$ r   r,   r  s           r    sys3_y0increasing$test_args.<locals>.sys3_y0increasing/  r  r"   c                     Uu  pVnXt-
  $ r   r,   r  s           r    sys3_zfinaltest_args.<locals>.sys3_zfinal3  s    azr"   r*   r%   Tr/   r>   r$   gGz?r   r   g|=gvIh%<=)r   r   r
  r   r   r   r   r  r"  g      ?g      ?   r   rv  r   gvIh%,=r   )r   r   r   rl   r   r   r   pir   r   r1   r2   r   r]   )r  r  r  r  r  r  rN   tfinalr  z0w0tendr   
x0events_t
y0events_tzfinalevents_tr   r  x0eventsy0eventszfinaleventss                        r    	test_argsr    s   0
 #%"#KE	AFF 
6		QZ/"&&!F2CC	DB
RB
 V8D
D1d)R-+N!%Uv,>"U	,C aJaJ\\!_NJRUUCI 67JbeeT"%%Z 89NH- 	A~a(#.A
AAaD"&&q/5AAaD266%'?*EBAaD!q2vrk2661"Q$<7!;<E+ wwz"Hwwz"H77>*LHQKx{!;%HHQKhqk!:;HQKhqk!:;HQKx{!;%HLOfX.r"   c            	      ,   S n [        U SSS/SS/S9n[        R                  " [        R                  R	                  UR
                  S S 2S4   [        R                  " S5      -
  5      5      n[        R                  " [        SS	9   [        U SSS/SS
/S9n[        R                  " [        R                  R	                  UR
                  S S 2S4   [        R                  " S5      -
  5      5      nS S S 5        WU:  d   eg ! , (       d  f       N= f)Nc                     US   US   4$ )Nr   r%   r,   r   s     r    rY   test_array_rtol.<locals>.fp  s    tQqTzr"   rp        ?r  r   r*   r%   zAt least one element...r  gؗҜ<)
r   r   r{   r|   r}   r   rl   r   warnsr   )rY   r   err1err2s       r    test_array_rtolr  l  s     AvBxtTl
;C66"))..q"uq	!9:;D 
k)B	C6B84-@vvbiinnSUU1b5\BFF1I%=>? 
D
 $;; 
D	Cs   A,D
Dr   c                    U S:X  a  US:  a  [         R                  " SS9  [        [        SS/[        R
                  " S5      U S9n[        UR                  5        [        UR                  S5        [        UR                  S	S
S9  g )Nr   r%   r1  r   r   rC   rH   r   r  r   r   )r   r   r   r!   r   onesr   r   r   r   r   r   )r   r   results      r    test_integration_zero_rhsr    se    1A5JKx!R"''!*VDFFNN"FHHc.r"   c                     S n Sn[         R                  " [        US9   [        U SS/SS9  S S S 5        [        U SS/SS9n[	        UR
                  S	   [        R                  " S
5      5        g ! , (       d  f       NI= f)Nc                 
    X!-  $ r   r,   )r   r   as      r    fun_with_arg,test_args_single_value.<locals>.fun_with_arg  s	    s
r"   z#Supplied 'args' cannot be unpacked.r  )r   r  r%   r*   )r
  )r*   r   r*   g)r   r
   	TypeErrorr   r   r   r   rl   )r  r  r   s      r    test_args_single_valuer    sh     4G	y	0,1#B7 
1 L(QCe
<CCEE%L"&&,/	 
1	0s   A00
A>f0_fillc           	          Sn[         R                  " [        US9   [        [        SS/[
        R                  " SU 5      5        S S S 5        g ! , (       d  f       g = f)Nz8All components of the initial state `y0` must be finite.r  r   rC   rH   )r   r
   r	  r   r!   r   full)r  msgs     r    test_initial_state_finitenessr    s?     EC	z	-(QGRWWQ%89 
.	-	-s   )A
A)r   r   r   r   r   c                     S n[        US[        R                  " S/5      U S9nUR                  (       d   e[	        UR
                  S   S5        g )Nc                     SU-  $ rp   r,   r   s     r    rY   test_zero_interval.<locals>.f  r-  r"   )r   r   r  r  r  )r   r   r'   r   r   r   )r   rY   r   s      r    test_zero_intervalr    s?    

Az288SE?6
BC;;;CEE%L#&r"   c                    ^ SmU4S jn[        UST4[        R                  " S/5      U S9nUR                  (       d   eg)zRegression test for gh-17341g-C6?c                 0   > U T:  a  [        S5      eSU-  $ )N'Function was evaluated outside intervalr/   )r	  )r   r   SMALLs     r    rY   /test_tbound_respected_small_interval.<locals>.f  s    u9FGG1ur"   r   r%   r  Nr   r   r'   r   )r   rY   r   r  s      @r    $test_tbound_respected_small_intervalr    s;     E AU|RXXqc]6
BC;;;r"   c                    ^ S mU4S jn[        US[        R                  " SS/5      SSSS	S
S9nUR                  (       d   eg)zRegression test for gh-8848c                 *    SU -  SU -  SU S-  -   -  -   $ )NrC   ru   r/   r,   )rs    r    V0test_tbound_respected_larger_interval.<locals>.V  s"    1urAv1---r"   c                    > U S:  d  U S:  a  [        S5      eUS   nUS   n[        R                  " U 5      nXC-  nSU-  ST" U5      -
  U-  SU-  U-  -   -  n[        R                  " XV/5      $ )Nr/   r  r   r%   g       gɿ)r	  r   rl   r'   )r   pPQr  dPdrdQdrr  s          r    func3test_tbound_respected_larger_interval.<locals>.func  s{    s7a!eFGGaDaDFF1IuaxD1Q4K1,q1uqy89xx%%r"   )r  r/   r%   r  gQ?FNr   r   )r   r   r   r  r   r   r  )r   r  r  r  s      @r    %test_tbound_respected_larger_intervalr    sK    .& t((As8, $"'"  "F >>>r"   c                 V   ^ S mSU4S jjnU" SSS5      nUR                   (       d   eg)zRegression test for gh-9198c                 X    U S:  a  [        S5      e[        R                  " / SQ5      nU$ )N   zCalled outside interval)ges='?gRr<>r   r   )r	  r   r'   )r   r   yprimes      r    reactions_func8test_tbound_respected_oscillator.<locals>.reactions_func  s/    G677 + , r"   c                 x   > [         R                  " / SQ5      nSnSn[        TXE4UR                  5       SXT-
  S9$ )N)gLOѧ`@gCYZa@rD  r   rD  g      i@T)r   r   )r   r'   r   copy)t_endn_timepointsshortest_delay_line
init_statet0t1r  s         r    run_sim22test_tbound_respected_oscillator.<locals>.run_sim2  sB    XXDE
#*&*"$'	+ 	+r"   i  rG   N)rC   i )r   )r   r  r  r  s      @r     test_tbound_respected_oscillatorr    s)    + dC%F>>>r"   c                     Sn Sn[         R                  " SS/5      nS H  u  p4[        R                  [        R                  [
        R                  SS4 H  n[        [        X2U[         R                  [        X25      [         R                  " XC-
  5      UX5
      nUS-  n[        [        X2UU[        X25      [         R                  " XC-
  5      UX5
      n[        Xx5        M     M     g	)
z0Verify that select_inital_step respects max_stepr   r   r   r   ))r$   r   )r$   r%   rH   r%   r/   N)r   r'   r   error_estimator_orderr   r   r   r7   r   signr   )	r   r   r   r  rO  method_orderstep_no_maxr   step_with_maxs	            r    test_inital_maxstepr    s    DD	3*	B)!77 66"88	L .lBG,.FF,8,?,.GGGL,A,8,08K #1}H/bg,4,8,@,.GGGL,A,8,08M 1' *r"   )]	itertoolsr   numpy.testingr   r   r   r   r   r	   r   r
   r  numpyr   scipy.optimize._numdiffr   scipy.integrater   r   r   r   r   r   r   r   scipy.integrate._ivp.commonr   r   scipy.integrate._ivp.baser   scipy.sparser   r   r!   r(   r-   r4   r7   r:   r?   rA   rE   rZ   ra   rc   rg   ri   rn   rq   rs   rx   r   r   markthread_unsafer   r   	fail_slowr   r   slowparametrizer   r   r   r  r  r  r  r%  r(  r/  r5  r=  rF  rJ  rL  rS  r`  rk  r  r  r  r  r  nanr   r  r  r  r  r  r  r,   r"   r    <module>r     s   P P  *  1 L L L ' D 9 /5(:
G
H
>6:@)
9; ( =G =G@ ) )X q> >6 GF #<= > 2s1l aV,: -:'&)9X$3N;7|6 ' '8*CZA7";&8#8L(;V98*IZP/f  & #VW/ X/	0 RVVRVV$45: 6: #MN' O' #MN O #MN O4 #MN O02r"   