
    Piѧ                     $   d dl Z d dlmZ d dlmZmZmZmZmZ d dl	Z	d dl	m
Z d dlZd dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZm Z  d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4e	j5        6                    d           d!             Z7d" Z8e	j5        9                    d#          d$             Z:d% Z;e	j5        j<        e	j5        =                    d&g d'          d(                         Z>d) Z?d* Z@e	j5        =                    d+d,d-g          d.             ZAd/ ZBd0 ZCd1 ZDd2 ZEd3 ZFe	j5        6                    d           d4             ZGd5 ZHd6 ZId7 ZJd8 ZKd9 ZLd: ZMd; ZNd< ZOd= ZPd> ZQd? ZRe	j5        =                    d&g d@          dA             ZSdB ZTe	j5        =                    dCejU        ejV        g          dD             ZWe	j5        =                    d&g dE          dF             ZXe	j5        =                    d&g dE          dG             ZYe	j5        =                    d&g dE          dH             ZZe	j5        =                    d&g dE          dI             Z[dJ Z\dS )K    N)product)assert_assert_allcloseassert_array_lessassert_equalassert_no_warnings)raises)group_columns)	solve_ivpRK23RK45DOP853RadauBDFLSODA)OdeSolution)num_jacselect_initial_step)ConstantDenseOutput)
coo_matrix
csc_matrixc                 *    t          j        |          S N)np
zeros_liketys     w/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/scipy/integrate/_ivp/tests/test_ivp.pyfun_zeror       s    =    c                 r    t          j        |d          d|d         z  z
  |d         |d         z   g          S )Nr         r   arrayr   s     r   
fun_linearr'      s6    8adUQ1X%qtad{3444r!   c                  6    t          j        ddgddgg          S )Nr$   r%    r!   r   
jac_linearr,      s    8b"X1v&'''r!   c                     t          j        dt          j        d| z            z  dt          j        d| z            z  t          j        d| z            z   f          S )Nr*      )r   vstacksincosr   s    r   
sol_linearr3      sS    9b26!a%==("&Q--'"&Q--79 : : :r!   c                     t          j        |d         | z  |d         |d         d|d         z  z   dz
  z  | |d         dz
  z  z  g          S Nr$   r   r.   r%   r   s     r   fun_rationalr6   #   s[    8QqTAXqTQqTA!H_q01Q!A$(^DF G G Gr!   c                     t          j        |d         | z  |d         |d         d|d         z  z   dz
  z  | |d         dz
  z  z  f          S r5   r   r/   r   s     r   fun_rational_vectorizedr9   (   s[    9adQhdadQ1Xo12a1Q4!8nEG H H Hr!   c                     t          j        dd| z  gd|d         dz  z  | |d         dz
  dz  z  z  |d         d|d         z  z   dz
  | |d         dz
  z  z  gg          S Nr   r$   r.      r%   r   s     r   jac_rationalr>   -   sy    8	
AE
	adai1!qQ.	/
A$QqT/A
!qtax.	1	3   r!   c                     t          dd| z  gd|d         dz  z  | |d         dz
  dz  z  z  |d         d|d         z  z   dz
  | |d         dz
  z  z  gg          S r;   )r   r   s     r   jac_rational_sparser@   5   sw    	
AE
	adai1!qQ.	/
A$QqT/A
!qtax.	1	3   r!   c                 R    t          j        | | dz   z  d| z  | dz   dz  z  f          S )N
   r.   )r   asarrayr2   s    r   sol_rationalrD   =   s0    :qAF|R!Vq2v!m%;<===r!   c                 V   |j         d         dz  }d}d}| dk    rdnd}t          j        |d||d         f          }d|z  }t          j        |          dz   }d||z  dz
  dz  z  |dz  z  }||z  dz
  dz  |dz  z  }	d|z  dz   }
d|z  dz
  }d|z  }d|z  dz   }t          j        d|z            }|||
         ||         z
  z  d|z  z  |	||         d||         z  z
  ||
         z   z  |dz  z  z   |||         z  ||         z  z
  |d d d<   | ||         z  ||         z  |dd d<   |S )	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_medazkorY   A   s|   	
aAA	AAvv!!1C
	31ae$%%A	AA
	!qAQq  16)EEAI!a1f$DUQYFUQYFUF
a%!)C
QAqy1V9,-Q7ai!ai-/!F);<qAvEF!F)maf$%AcccF b1S6kAfI%AaddGHr!   c                 V   g }g }t          j        |           dz  }|                    |dd                     |                    |dd          dz
             |                    |           |                    |           |                    |           |                    |dz              |                    |d d                    |                    |d d         dz              t          j        |           dz  dz   }|                    |           |                    |           |                    |           |                    |dz
             t          j        |          }t          j        |          }t	          t          j        |          ||ff          S )Nr.   r$   r)   )r   rJ   appendrI   r   	ones_like)rL   colsrowsis       r   medazko_sparsityr`   \   sf   DD
	!qAKK!""KK!""	KKNNNKKNNNKKNNNKKAKK#2#KK#2#

	!q1AKKNNNKKNNNKKNNNKKA9T??D9T??Dr|D))D$<8999r!   c                     | S r   r+   r   s     r   fun_complexrb   |   s	    2Ir!   c                 B    t          j        |j        d                    S Nr   )r   eyerH   r   s     r   jac_complexrf      s    F171:r!   c                 <    t          t          | |                    S r   )r   rf   r   s     r   jac_complex_sparserh      s    k!Q''(((r!   c                 \    dt          j        |            z  }|                    d          S )N      ?      ?)r$   r)   )r   expreshaper   s     r   sol_complexrm      s(    	RVQBZZA99Wr!   c                     || dz
  z  S Nr.   r+   r   s     r   fun_event_dense_output_LSODArp      s    A;r!   c                     | dz
  S ro   r+   r   s     r   jac_event_dense_output_LSODArr      s    q5Lr!   c                 r    t          j        | dz  dz  d| z  z
  t          j        d          z   dz
            S )Nr.   皙?   )r   rk   logr2   s    r   sol_event_dense_output_LSODArw      s5    6!q&1*q1u$rvd||3a7888r!   c                     | |z
  ||t          j        |          z  z   z  }t           j                            |d          t          j        |j        d                   z  S )Nr   )axis)r   abslinalgnormsqrtrH   )r   y_truertolatoles        r   compute_errorr      sO    	
VtbfVnn445A9>>!!>$$rwqwqz':':::r!   c                     d } d }d|_         d|_        t          | dt          j        gddgd|d          }t          |                    d          t          j        d	d
g          dd           t          |j        t          j        dgg          dd           t          |j	        t          j        ddgg          gd           |j
        sJ t          |j        d           d S )Nc                     |d         dgS )Nr$   g:#r+   r   s     r   upward_cannonz0test_duplicate_timestamps.<locals>.upward_cannon   s    !hr!   c                     |d         S rd   r+   r   s     r   
hit_groundz-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   solrC   t_eventsy_eventssuccessr   status)r   r   r   s      r   test_duplicate_timestampsr      s           JJ
MArv;D	3%D: : :C CGGDMM2:{K.H#I#ID* * * *CL"*zl^"<"<4dSSSSCL2:e~.>#?#?"@tLLLL;;Qr!   zlsoda solver is not thread-safereasonc                  J   d} d}ddg}t          ddgg ddd	gdd
ggd t          t          g          D ]\  }}}}|rt          }nt          }t          j                    5  t          j        ddt                     t          |||| ||d||	  	        }d d d            n# 1 swxY w Y   t          |j        d         |d                    t          |j        d u            t          |j        d u            t          |j                   t          |j        d           |dk    rt          |j        dk                nt          |j        dk                |dv r+t          |j        d           t          |j        d           nDt          d|j        cxk     odk     nc            t          d|j        cxk     odk     nc            t)          |j                  }	t+          |j        |	| |          }
t          t/          j        |
dk                          t/          j        | }t)          |          }|                    |          }t+          ||| |          }
t          t/          j        |
dk                          |d         |d         z   dz  }t)          |          }|                    |          }t+          ||| |          }
t          t/          j        |
dk                          t7          |                    |j                  |j        dd           d S )NMbP?ư>UUUUUU?qq?FTr   r   r   r   r   r   r#   	   r$   ignoreAThe following arguments have no effect for a chosen solver: `jac`)r   r   methodr   jac
vectorizedr   r   2   (   )r   r   r   r   rG   rB   r)   r.   V瞯<r   )r   r>   r@   r9   r6   warningscatch_warningsfilterwarningsUserWarningr   r   r   r   r   r   r   r   nfevnjevnlurD   r   r   r   alllinspacer   r   )r   r   y0r   r   t_spanr   funresr~   r   tcyc_trueycs                 r   test_integrationr      sy   DD
sB+2DM???VaV<!45	,7 ,7 :G :G'
FFC  	)CCC$&& 	< 	<#S  
 C$!%f4 #
< < <C	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	SU1Xvay)))$%%%$%%%SZ###X CHrM""""CHrM"""8881%%%!$$$$A$$$$1$$$$%%%A$$$$"$$$$%%%ce$$#%t44q1u[&!r""WWR[["gtT22q1uQi&*$)r""WWR[["gtT22q1uEFFFFFu:G :Gs   4BB"	%B"	c                  N   d} d}dg}ddg}t          j        |d         |d                   }t          g dd t          t          g          D ]\  }}t          j                    5  t          j        ddt                     t          t          |||d	| ||
          }d d d            n# 1 swxY w Y   t          |j        d         |d                    t          |j        d u            t          |j        d u            t          |j                   t          |j        d           |dk    r|j        dk     sJ n|j        dk     sJ |dk    r#t          |j        d           |j        dk     sJ n|j        dk    sJ |j        dk    sJ t+          |j                  }t-          |j        || |          }	t          j        |	dk               sJ t+          |          }
|                    |          }t-          ||
| |          }	t          j        |	dk               sJ d S )Nr   r   rj   r   r$   )r   r   r   r   r   r   T)r   r   r   r   r   r   #      r   ru   r#   )r   r   r   rf   rh   r   r   r   r   r   rb   r   r   r   r   r   r   r   r   r   r   rm   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 H % %$&& 	N 	N#S  
 KF)-DtN N NC	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	SU1Xvay)))$%%%$%%%SZ###X8b=====8b====U??1%%%7Q;;;;;8q====7a<<<<SU###%t44va!e}}}b//WWR[["gtT22va!e}}}K% %s   %8B))B-	0B-	r#   c                  j   d} ddg}t          j        d| z            }d|dd d<   t          |           }dD ]z}t          t          ||||          }t          |j        d         |d                    t          |j        d u            t          |j	        d u            t          |j
                   t          |j        d           t          |j        d         d	d
           t          |j        d         dd           t          |j        d         dd
           t          |j        d         dd           t          |j        d         dd
           t          |j        d         dd           t          |j        d         dd           t          |j        d         dd
           |d S )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   zerosr`   r   rY   r   r   r   r   r   r   r   r   r   )rL   r   r   sparsityr   r   s         r   "test_integration_sparse_differencer   #  s   AWF	!a%BBqt!tH""H" > >VR%-/ / / 	SU1Xvay)))$%%%$%%%SZ###f{>>>>fqt4444g$????g5555gTBBBBg4@@@@g5555g	=====#> >r!   c                  $   d} d}ddg}ddg}t                      }t          |          }t          ddg||g          D ]\  }}t          t          ||| ||d|          }t          |j        d         |d                    t          |j        d u            t          |j	        d u            t          |j
                   t          |j        d           t          |j        d	k                t          |j        d           t          d|j        cxk     od
k     nc            t          |j                  }	t!          |j        |	| |          }
t          t%          j        |
dk                          t%          j        | }t          |          }|                    |          }t!          ||| |          }
t          t%          j        |
d
k                          t-          |                    |j                  |j        dd           d S )Nr   r   r   r.   r   r   T)r   r   r   r   r   rF      rB   +=r   )r,   r   r   r   r'   r   r   r   r   r   r   r   r   r   r   r3   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   ?  s   DD
QBVFA!}}H/!X?? G G
FBT%DcC C CSU1Xvay)))$%%%$%%%SZ###3SXq!!!CG    b    !!!CE""#%t44q2v[&!R..WWR[["gtT22q2vEFFFFF1G Gr!   r   )r   r   r   c                     d}d}g d}ddg}| dk    r|dk    rt          j        d           d	 }t          |||||| 
          }|j        dk     sJ |j        dk     sJ d S )Nr   )     @r   r   r   g    חAr   r$   z)LSODA does not allow for concurrent callsr   c                 f    |\  }}}d|z  d|z  |z  z   d|z  d|z  |z  z
  d|z  |z  z
  d|z  |z  gS )N{Gzr   {Gz?    8|Ar+   )r   statexr   zs        r   fun_robertsonz-test_integration_stiff.<locals>.fun_robertsonm  sW    1a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   b  s     DD	BHE1A55FGGGG
 
 
 M5"4f. . .C 8d????8c>>>>>>r!   c           
         d }d }d }d|_         dD ]}|dk    r| dk    rt          t          dd	gd
dg|||f          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ t          j         ||j        d         d         |j        d         d                   d          sJ d|_        d|_        t          t          dd	gd
dg|||f          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ d|_        d|_        t          t          dd	gd
dg|||f          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ d|_        d|_        t          t          dd	gd
dg||||fd          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ t          j         ||j        d         d         |j        d         d                   d          sJ t          t          dd	gd
dg||d          }t          |j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ t          j        |j        d         |j        d                   }t          |          }|                    |          }t#          ||dd          }	t          t          j        |	dk                          t          j        t          |j        d         d                   |j        d         d         dd          sJ d|_        d|_        dD ]
}|dk    r| dk    rt          t          d	dgddg|||f          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ t          j         ||j        d         d         |j        d         d                   d          sJ d|_        d|_        t          t          d	dgddg|||f          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ d|_        d|_        t          t          d	dgddg|||f          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ d|_        d|_        t          t          d	dgddg||||fd          }t          |j        d           t          |j        d         j        d           t          |j        d         j        d           t          |j        d         j        d           t          d|j        d         d         cxk     odk     nc            t          d|j        d         d         cxk     odk     nc            t          |j        d         j	        d           t          |j        d         j	        d           t          |j        d         j	        d           t          j         ||j        d         d         |j        d         d                   d          sJ t          j         ||j        d         d         |j        d         d                   d          sJ t          j        |j        d         |j        d                   }t          |          }|                    |          }t#          ||dd          }	t          t          j        |	dk                          t          j        t          |j        d         d                   |j        d         d         dd          sJ t          j        t          |j        d         d                   |j        d         d         dd          sJ d S )Nc                 *    |d         |d         dz  z
  S )Nr   r$   gffffff?r+   r   s     r   event_rational_1z%test_events.<locals>.event_rational_1~  s    tadck!!r!   c                 *    |d         dz  |d         z
  S )Nr$   g333333?r   r+   r   s     r   event_rational_2z%test_events.<locals>.event_rational_2  s    ts{QqT!!r!   c                     | dz
  S )Ng@r+   r   s     r   event_rational_3z%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   r6   r   r   r   sizer   r   rH   r   iscloser   r   r   rD   r   r   r   allclose)
r   r   r   r   r   r   r   r   r   r   s
             r   test_eventsr   }  s{   " " "" " "   !%E T1 T1W!5!9!9q!fsCj 02BCE E ESZ###S\!_)1---S\!_)1---cl1oa(....3....///cl1oa(....3....///S\!_*F333S\!_*F333zS\!_Q/a1CDDaI I 	I 	I IzS\!_Q/a1CDDaI I 	I 	I I &'"%&"q!fuenV 02BCE E ESZ###S\!_)1---S\!_)1---cl1oa(....3....///S\!_*F333S\!_*D111zS\!_Q/a1CDDaI I 	I 	I I &("%'"q!fuenV 02BCE E ESZ###S\!_)1---S\!_)1---cl1oa(....3....///S\!_*D111S\!_*F333zS\!_Q/a1CDDaI I 	I 	I I &'"%&"q!fuenV 02B 0 2@DF F F 	SZ###S\!_)1---S\!_)1---S\!_)1---cl1oa(....3....///cl1oa(....3....///S\!_*F333S\!_*D111S\!_*F333zS\!_Q/a1CDDaI I 	I 	I IzS\!_Q/a1CDDaI I 	I 	I I q!fuenV/dD D DSZ###S\!_)1---cl1oa(....3....///S\!_*F333zS\!_Q/a1CDDaI I 	I 	I I [q359--r""WWR[["gtT22q1u {<Q(:;;S\!_Q=O $41 1 1 	1 	1 1 	1 "#!"E N1 N1W!5!9!9q!fsEl6 02BCE E ESZ###S\!_)1---S\!_)1---cl1oa(....3....///cl1oa(....3....///S\!_*F333S\!_*F333zS\!_Q/a1CDDaI I 	I 	I IzS\!_Q/a1CDDaI I 	I 	I I &("%'"q!fsEl6 02BCE E ESZ###S\!_)1---S\!_)1---cl1oa(....3....///S\!_*F333S\!_*D111zS\!_Q/a1CDDaI I 	I 	I I &'"%&"q!fsEl6 02BCE E ESZ###S\!_)1---S\!_)1---cl1oa(....3....///S\!_*D111S\!_*F333zS\!_Q/a1CDDaI I 	I 	I I &'"%&"q!fsEl6 02B 0 2@DF F F 	SZ###S\!_)1---S\!_)1---S\!_)1---cl1oa(....3....///cl1oa(....3....///S\!_*D111S\!_*F333S\!_*F333zS\!_Q/a1CDDaI I 	I 	I IzS\!_Q/a1CDDaI I 	I 	I I [rCE!H--r""WWR[["gtT22q1u{<Q(:;;S\!_Q=O $41 1 1 	1 	1 1{<Q(:;;S\!_Q=O $41 1 1 	1 	1 1 	1[N1 N1r!   c                      d } d }| |fS )Nc                 $    |d         |d          gS )Nr$   r   r+   r   s     r   rX   z#_get_harmonic_oscillator.<locals>.f4  s    !qte}r!   c                     |d         S rd   r+   r   s     r   eventz'_get_harmonic_oscillator.<locals>.event7  r   r!   r+   )rX   r   s     r   _get_harmonic_oscillatorr   3  s+         e8Or!   n_eventsrG   r=   c                 .   t                      \  }}| |_        t          |dddg|          }t          |j        d                   | k    sJ t          |j        d                   | k    sJ t          |j        d         d d df         dd           d S )Nr   rF   r$   r   )r   r   r   )r   r   r   lenr   r   r   )r   rX   r   r   s       r   test_event_terminal_integerr   =  s    '))HAuEN
Ax!Q
6
6
6Cs|A8++++s|A8++++CLOAAAqD)15999999r!   c                     t                      \  } }| dddgf}d |_        t          |d|i}d|_        t          |d|i}t          |j        |j                   d}d|_        t          j        t          |          5  t          |d|i d d d            n# 1 swxY w Y   d|_        t          j        t          |          5  t          |d|i d d d            d S # 1 swxY w Y   d S )	Nr   r$   r   r   zThe `terminal` attribute...r)   matchg      @)r   r   r   r   r   r   r	   
ValueError)rX   r   argsr   refmessages         r   test_event_terminal_ivr  G  s   '))HAux!Q DEN
T
(%
(
(CEN
T
(%
(
(CCL#,///+GEN	z	1	1	1 ' '4&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'EN	z	1	1	1 ' '4&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's$   =BBBCC!$C!c                    d}d}ddg}t           t          t          t          t          t
          fD ]}|t
          u r| dk    rddgddgfD ]}t          t          |||d||d	
          }t          |j	        d         |d                    t          |j	        d         |d                    t          t          j        t          j        t          j        |j	                            dk                         t          |j        d u            t          |j                   t          |j        d           t%          |j	                  }t'          |j        |||          }t          t          j        |dk                          t          j        | }	t%          |	          }
|                    |	          }t'          ||
||          }t          t          j        |dk                          t/          |                    |j	                  |j        dd           t1          t2          |t          |d         ||d         d           |t
          ur |t          |d         ||d         ||d          }|                                }|                                }t          |j        d           t          d|v            t1          t6          |j                   d S )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   r6   r   r   r   r   r   rz   diffr   r   r   rD   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  Z  s   DD
sBvuc59 %9 %9U??3a771v1v& "	9 "	9FL&"4%(tF)-/ / /C q6!9---rF2J///BF26"'#%..11[@AABBBCLD()))CK   Q'''!#%((FceVT488ABF1q5MM"""f%B"2&&GBb'466ABF1q5MM"""CGGCENNCEEJJJJ*flF1Ir )b2 2 2 2 U""fQiVAY%)uF F F ++-- ++--V]H555+w6777lFK888E"	9%9 %9r!   c                    d}d}ddg}d}t           t          t          t          t          t
          fD ]/}|t
          u r| dk    rddgddgfD ]}t          t          |||d	||d
|	  	        }t          |j	        d         |d                    t          |j	        d         |d                    t          |t          j        |j	        d         dz
                       t          |j        d u            t          |j                   t          |j        d           t#          |j	                  }t%          |j        |||          }	t          t          j        |	dk                          t          j        | }
t#          |
          }|                    |
          }t%          ||||          }	t          t          j        |	dk                          t          |                    |j	                  |j        dd           t/          t0          |t          |d         ||d         d           t/          t0          |t          |d         ||d         d           1d S )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   r6   r   r   r   r   rz   r   r   r   r   rD   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    sM   DD
sBJvuc59 3 3U??3a771v1v& 	3 	3FL&"4%(tF)-*F F FC q6!9---rF2J///JsuQx!|(<(<===CLD()))CK   Q'''!#%((FceVT488ABF1q5MM"""f%B"2&&GBb'466ABF1q5MM"""CGGCENNCEEJJJJ*flF1Ir )4 4 4 4*flF1Ir )3 3 3 3 37	33 3r!   c            
      $   d} d}ddg}ddgddgfD ]}t          j        |d         |d         d	          }t          t          ||| ||
          }t	          |j        |           t          |j        d u            t          |j                   t	          |j	        d           t          |j                  }t          |j        || |          }t          t          j        |dk                          g d}t          t          ddg|| ||
          }t	          |j        |           t          |j        d u            t          |j                   t	          |j	        d           t          |j                  }t          |j        || |          }t          t          j        |dk                          g d}t          t          ddg|| ||
          }t	          |j        |           t          |j        d u            t          |j                   t	          |j	        d           g d}t          t          ddg|| ||
          }t	          |j        |           t          |j        d u            t          |j                   t	          |j	        d           t          |j                  }t          |j        || |          }t          t          j        |dk                          g d}t          t          ddg|| ||
          }t	          |j        |           t          |j        d u            t          |j                   t	          |j	        d           ddg}t          t          t          t          ddg|| ||
           d S )Nr   r   r   r   r#   r   r$   r   rB   r   r   t_eval)r#   
ףp=
@   r   Q @r   )r#   (\@rG         ?皙?)\(?r$   )r  r  r   r  )r  rG   r  r  r  r=   ru   )r   r   r   r6   r   r   r   r   r   r   rD   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6fbt$%' ' 'SUF###$%%%SZ###ce$$#%t44q1u%%%F
L1a&"4d!# # #CCLD !!!CKQ#%  FceVT400ABF1q5MM,,,F
L1a&"4d!# # #CCLD !!!CKQF
L1a&"4d!# # #CCLD !!!CKQ#%  FceVT400ABF1q5MM&&&F
L1a&"4d!# # #CCLD !!!CKQVF*i1vr$v7 7 7 7 7 7r!   c            	         d} d}ddg}ddg}t          j        |d         |d         d	          }t          t          ||| ||
          }t          t          ||| ||d          }t	          |j        |           t          |j        d u            t          |j                   t	          |j	        d           t	          |j        |j                   t	          |j
        |j
                   t          |j        d u            t          |j                   t	          |j	        d           t          |j                  }t          |j
        || |          }t          t          j        |dk                          d S )Nr   r   r   r   r#   r   r   r$   rB   r  T)r   r   r  r   )r   r   r   r6   r   r   r   r   r   r   r   rD   r   r   )	r   r   r   r   r  r   res_dr~   r   s	            r   test_t_eval_dense_outputr!    sk   DD
sBVF[F1Ir22F
L&"4d!# # #ClFBT#$8 8 8ECLD !!!CKQ      ENd"###EMq!!! #%  FceVT400ABF1q5MMr!   c                  4   d } d| _         d}d}ddg}ddg}t          j        d	dd
          }dD ]}t          j                    5  t          j        ddt                     t          t          ||||||| t          	  	        }d d d            n# 1 swxY w Y   |j
        sJ |j        dk    sJ |j        dk    sJ |j        s|j        rJ t          |j                  dk    sJ |j        d         j        dk    sJ |j        d         d         dk    sJ d S )Nc                     | dz
  S )Nr  r+   r   s     r   early_eventz,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   r   zA termination event occurred.r$   r   r  )r   r   r   r   r   r   r   r   r6   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 ' '$&& 	. 	.#S  
 L&"4d#)& ,. . .C	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. {{{=====zQ5&&&&3<  A%%%%|A#q((((|Aq!Q&&&&&!' 's   >BB	B	c                 L   | dk    rt          j        d           d }d}d}dg}ddg}d}t          t          ||d	d
||d||t                    }t          |j        d         |d                    t          |j        d         |d                    t          |t          j	        |j        d         |d         z
                       |j
        sJ t          |j        d           t          |j                  }t          |j        |||          }	t          |	d           t          j        | }
t          |
          }|                    |
          }t          ||||          }	t          |	d           t          |                    |j                  |j        dd           d S )Nr$   -LSODA does not allow for concurrent executionc                     |d         dz
  S )Nr   gOne.>r+   r   s     r   event_lsodaz2test_event_dense_output_LSODA.<locals>.event_lsoda)  s    tg~r!   r   r   rt   r<   r.   r   T)r   r   r   r  r   r   r   r   r   r)   r#   r   r   )r   r   r   rp   rr   r   r   r   r   rz   r   r   rw   r   r   r   r   r   )r   r+  r   r   r   r   r  r   r~   r   r   r   r   s                r   test_event_dense_output_LSODAr,  %  s   aCDDD   DD
B!WFJ
$
(  C q6!9%%%rF2J'''JsuQx&)'; < <===;;Q)#%00FceVT400Aa	f	B*2..G	Bb'4..AaCGGCENNCEEBBBBBBr!   c                      dD ]k} t          d ddgddg| d          }t          |                    d          ddg           t          |                    g d          g d	g d
g           ld S )Nr   c                     | S r   r+   r   s     r   <lambda>z%test_no_integration.<locals>.<lambda>T      aR r!   r=   r.   rG   Tr   r   )r=   r#   ru   r.   r.   r.   )rG   rG   rG   )r   r   r   )r   r   s     r   test_no_integrationr3  R  s    E A A!Q!Q%D: : :SWWQZZ!Q(((SWWYYY'')))YYY)?@@@@	A Ar!   c                     t           t          t          t          t          t
          fD ])}  | d dddgd          }|                                 t          |j        d           |	                                }t           |d          ddg           t           |g d          g dg dg            | d dg t          j                  }|                                 t          |j        d           |	                                }t           |d	          g            t           |g d          t          j        d
                     +d S )Nc                     | S r   r+   r   s     r   r/  z+test_no_integration_class.<locals>.<lambda>\  r0  r!   r   g      $@finished)r   r$   r.   rB   rB   rB   )r   r   r   c                     | S r   r+   r   s     r   r/  z+test_no_integration_class.<locals>.<lambda>c  r0  r!         Y@r   rG   )r   r   r   r   r   r   r  r   r   r   r   r   rK   )r   r  r   s      r   test_no_integration_classr;  Z  sB   vuc59 7 7tSk3??V]J///!!##SSXXc{+++SS^^lllIII%>???b"&99V]J///!!##SSZZ$$$SS^^RXf%5%566667 7r!   c            	      |   d } t          j        d          }dD ]}t          t          | ddg||d          }t	          |                    d          t          j        d                     t	          |                    g d          t          j        d	                     dD ]}t          t          | dt           j        g||d          }t	          |                    d          t          j        d                     t	          |                    g d          t          j        d	                     d S )
Nc                 *    t          j        d          S )Nr   )r   r   r   s     r   r   ztest_empty.<locals>.funl  s    x~~r!   r   r   r   rB   Tr1  )r$   r.   rG   r:  )r   r   r   r   r   r   r   )r   r   r   r   s       r   
test_emptyr>  k  s8      
$BE ; ; C!R"(.TC C CSWWR[["(4..111SWWYYY''&)9)9::::E ; ; C!RVb(.TC C CSWWR[["(4..111SWWYYY''&)9)9::::	; ;r!   c                     t          ddt          j        ddg                    } t           | d          ddg           t           | g d          g dg dg           t          ddt          j        g                     } t           | d          t          j        d                     t           | g d          t          j        d                     d S )	Nr   r$   r.   r  )r$   r  r.   )r$   r$   r$   r2  r:  )r   r   r&   r   rK   )r   s    r   test_ConstantDenseOutputr@  ~  s    
aBHaV$4$4
5
5CCCHHq!f%%%CC$$yyy)))&<===
aBHRLL
1
1CCCHHbhqkk***CC$$bhv&6&677777r!   c            	         ddg} t           t          t          t          t          t
          fD ]} |t          d| t          j                  }t          |j
        d           t          |j        d           t          |j        t          j                   t          |j        d           t          |j        d           t          |j        |            t!          |j        d u            |t
          urFt!          |j        dk               t!          |j        dk               t          |j        d           n?t          |j        d           t          |j        d           t          |j        d           t+          t,          |j                   |                                }t          |j        d           t          |d            t          |j
        d           t          |j        t          j                   t          |j        d           t!          |j        dk               t!          t          j        t          j        |j        |                                 t!          |j        dk               t!          |j        dk               t!          |j        dk               t!          |j        dk               |                                }t7           |d          | dd	           d S )
Nr   r   r#   r.   runningr$   r   r   r   )r   r   r   r   r   r   r6   r   r   r   rL   r   t_boundr   r   r   r   	step_sizer   r   r   r  r  r   r  r   equalr   )r   clsr  r  r   s        r   test_classesrG    s   
BdFE36 !8 !8\1b"&11VXq!!!V]I...V^RV,,,V%q)))VXq!!!VXr""" D()))eFK!O$$$FK1$%%%Q''''a(((a(((Q'''lF$7888++--V]I...Wd###VXq!!!V^RV,,,V%q)))1BF28FHb11222333 1$%%%a   q !!!
a   !!##AQ77777C!8 !8r!   c                  *   t          j        g dt                    } t          | d         | d         t          j        dg                    }t          | d         | d         t          j        dg                    }t	          | ||g          }t           |d          dg           t           |d          dg           t           |d          dg           t           |d          dg           t           |d          dg           t           |d	          dg           t           |g d
          t          j        g dg                     t          j        g d          } t          | d         | d         t          j        dg                    }t          | d         | d         t          j        dg                    }t	          | ||g          }t           |d          dg           t           |d          dg           t           |d          dg           t           |d          dg           t           |d          dg           t           |d          dg           t           |d          dg           t           |g d          t          j        g dg                     t          j        ddg          } t          ddt          j        dg                    }t	          | |g          }t           |d          dg           t           |d          dg           t           |d          dg           t           |g d          t          j        g dg                     d S )N)r   r.   r#   dtyper   r$   r)   r.   rG   r#   ru   )	r   ru   r<   r  g      @g      @r#   g      @r.   )	r)   r$   r)   r)   r$   r$   r$   r$   r)   )rB   r=      rB   r=   rK  )   r*   rB   rK  ru   r$   r=   )r)   r$   r)   r$   r)   r$   r)   )r.   r$   r   r7  )r   r&   floatr   r   r   )tss1s2r   ss        r   test_OdeSolutionrT    sl   	)))5	)	)	)B	RUBqE28RD>>	:	:B	RUBqE28QC==	9	9B
b2r(
#
#CR2$Q"Q"Q!Q!Q!999:::::;<<> > > 
+++		B	RUBqE28RD>>	:	:B	RUBqE28QC==	9	9B
b2r(
#
#CR2$R2$Q"Q"Q!R1#R1#...//4445668 8 8 
1a&		BAq"(B4..11A
b1#

CQ"Q"Q"YYY<<<.!9!9:::::r!   c                  B   d } d }d}t          j        g d          } |||          }d} | ||                                          }t          | ||||d           \  }}t	          ||dd           t          | |||||          \  }}t	          ||dd           d S )Nc                     t          j        d|d         z  d|d         z  |d         z  z   d|d         z  d|d         z  |d         z  z
  d|d         dz  z  z
  d|d         dz  z  g          S )Nr   r   r   r$   r.   r   r   r8   r   s     r   r   ztest_num_jac.<locals>.fun  s}    yAaDL31:!,,1Q4K#!*qt++cAaDAIo=!A$!)O
   	r!   c                     t          j        dd|d         z  d|d         z  gdd|d         z  d|d         z  z
  d|d         z  gdd|d         z  dgg          S )	Nr   r   r.   r$   r   g     g    8Ar   r%   r   s     r   r   ztest_num_jac.<locals>.jac  sn    x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	thresholdrX   J_numfactors	            r   test_num_jacr]    s         	
A
ASAYYFIAq		ACAq)T::ME6E648888CAq)V<<ME6E64888888r!   c            
         d } d }t           j                            d           d}t           j                            |          } ||          }t	          |          } | d|d d d f                                                   }t          | d|                                |dd ||f          \  }}t          | d|                                |dd           \  }	}
t          |	|                                dd	           t          |
|dd	           t           j        	                    dd|
          }t          | d|                                |d|||f          \  }}t          | d|                                |d|          \  }	}
t          |	|                                dd	           t          |
|dd	           d S )Nc                     |dd          dz  |d d         dz  z
  }t          j        |j        d                   }t          j        |d|z  f          t          j        d|z  |f          z   S )Nr$   rG   r)   r.   )r   r   rH   r/   )r   r   r   r   s       r   r   z test_num_jac_sparse.<locals>.fun  sh    abbE1Hq"vqy HQWQZ  y!QU$$ry!a%'<'<<<r!   c                     t          j        | | ft                    }d|d<   d|d<   t          d| dz
            D ]}d|||dz
  |dz   f<   d|d<   d|d<   |S )NrI  r$   )r   r   r   r$   r.   )r)   r)   )r)   r<   )r   r   intrange)rL   Ar_   s      r   	structurez&test_num_jac_sparse.<locals>.structure  s{    HaV3'''$$q!a% 	# 	#A!"AaQAo&	&	r!   r   r   r   )r   -q=r   r   )r   )
r   randomseedrandnr
   rX  r   r   toarrayuniform)r   re  rL   r   rd  groupsrX   J_num_sparsefactor_sparseJ_num_densefactor_denser\  s               r   test_num_jac_sparserq    s   = = =
	 	 	 INN1
A
	A	!A1FAqDz  ""A #*#q!''))Qd45v;#@ #@ #@L- 'Q		1dD I IKK!5!5!7!7U, , , ,L-e%HHHH Yq%a00F")#q!''))Qf45v;#@ #@ #@L- 'Q		1dF K KKK!5!5!7!7U, , , ,L-e%HHHHHHr!   c                     d } d }d }d }d }d|_         d|_         d|_        d	}d
}d}d}t          j        | |z            d|z
  |z  t          j        | |z            z   z  }	dd|	g}
d	|z  }t	          | d|g|
|||gd|||fd|dd
  
        }|j        d         }|j        d         }|j        d	         }t          |dt          j        z  dt          j        z  g           t          |dt          j        z  dt          j        z  g           t          ||g           t          j        d|d         d          }|	                    |          }t          |d         t          j
        ||z            dd           t          |d         t          j        ||z             dd           t          |d	         dd|	z
  |	z  t          j        | |z            z  dz   z  dd           |	                    |          }|	                    |          }|	                    |          }t          |d         t          j        |d                   d           t          |d         t          j        |d                              t          |d         t          j        |d                              t          |d         t          j        |d                   d           t          |d	         |g           d S )Nc                 8    |\  }}}| |z  ||z  ||z  d|z
  z  gS )Nr$   r+   r   womegarM   zfinalr   r   r   s           r   sys3ztest_args.<locals>.sys3)  s0    1aq%'1Q3A;//r!   c           
      f    |\  }}}t          j        d| dg|ddgdd|dd|z  z
  z  gg          }|S )Nr   r$   r.   r%   )	r   ru  rv  rM   rw  r   r   r   r   s	            r   sys3_jacztest_args.<locals>.sys3_jac-  sS    1aHq5&!nam!QAaC[)+ , , r!   c                     |\  }}}|S r   r+   rt  s           r   sys3_x0decreasingz$test_args.<locals>.sys3_x0decreasing4      1ar!   c                     |\  }}}|S r   r+   rt  s           r   sys3_y0increasingz$test_args.<locals>.sys3_y0increasing8  r}  r!   c                     |\  }}}||z
  S r   r+   rt  s           r   sys3_zfinalztest_args.<locals>.sys3_zfinal<  s    1a6zr!   r)   r$   Tr.   r=   r#   gGz?r   r   g|=gvIh%<=)r   r   r  r   r   r   r   r  r  g      ?g      ?   r   rf  r   gvIh%,=r   )r   r   r   rk   r   r   r   pir   r   r0   r1   r   r\   )rx  rz  r|  r  r  rv  rM   tfinalrw  z0w0tendr   
x0events_t
y0events_tzfinalevents_tr   ru  x0eventsy0eventszfinaleventss                        r   	test_argsr  "  s)   0 0 0        
 #%"#KE	AFF 
6			QZ/"&!F2C2CC	DB
RB
 V8D
D1d)R-/@+N!%UAv,>"U	, , ,C aJaJ\!_NJRUCI 6777JbeT"%Z 8999NVH--- 	A~a(#..A

AAaD"&q//5AAAAAaD26%'??*EBBBBAaD!q2vrk261"Q$<<7!;<E+ + + + wwz""Hwwz""H77>**LHQKx{!;!;%HHHHHQKhqk!:!:;;;HQKhqk!:!:;;;HQKx{!;!;%HHHHLOfX.....r!   c            	      2   d } t          | dddgddg          }t          j        t          j                            |j        d d df         t          j        d          z
                      }t          j        t          d	          5  t          | dddgdd
g          }t          j        t          j                            |j        d d df         t          j        d          z
                      }d d d            n# 1 swxY w Y   ||k     sJ d S )Nc                 "    |d         |d         fS )Nr   r$   r+   r   s     r   rX   ztest_array_rtol.<locals>.fx  s    tQqTzr!   ra        ?r  r   r)   r$   zAt least one element...r   gؗҜ<)
r   r   rz   r{   r|   r   rk   r   warnsr   )rX   r   err1err2s       r   test_array_rtolr  u  sP      AvBxtTl
;
;
;C6")..qqq"uq		!9::;;D 
k)B	C	C	C @ @6B84-@@@vbinnSU111b5\BF1II%=>>??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 $;;;;;;s   A-DDDr   c                     | dk    r|dk    rt          j        d           t          t          ddgt	          j        d          |           }t          |j                   t          |j	        d           t          |j        d	d
           d S )Nr   r$   r)  r   r   rB   rG   r   r  r   r   )r   r   r   r    r   onesr   r   r   r   r   r   )r   r   results      r   test_integration_zero_rhsr    s    1A55JKKKKx!R"'!**VDDDFFN"""FHc......r!   c                      d } d}t          j        t          |          5  t          | ddgd           d d d            n# 1 swxY w Y   t          | ddgd          }t	          |j        d	         t          j        d
                     d S )Nc                     ||z  S r   r+   )r   r   as      r   fun_with_argz,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   rk   )r  r  r   s      r   test_args_single_valuer    s       4G	y	0	0	0 8 8,1#B77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 L(QCe
<
<
<CCE%L"&,,/////s   AA	Af0_fillc           	          d}t          j        t          |          5  t          t          ddgt          j        d|                      d d d            d S # 1 swxY w Y   d S )Nz8All components of the initial state `y0` must be finite.r   r   rB   rG   )r   r	   r  r   r    r   full)r  msgs     r   test_initial_state_finitenessr    s     EC	z	-	-	- : :(QGRWQ%8%8999: : : : : : : : : : : : : : : : : :s   ,AAA)r   r   r   r   r   c                     d }t          |dt          j        dg          |           }|j        sJ t	          |j        d         d           d S )Nc                     d|z  S ro   r+   r   s     r   rX   ztest_zero_interval.<locals>.f  r%  r!   )r   r   r  r  r  )r   r   r&   r   r   r   )r   rX   r   s      r   test_zero_intervalr    sZ    
  
Az28SE??6
B
B
BC;;CE%L#&&&&&r!   c                 x    dfd}t          |dft          j        dg          |           }|j        sJ dS )zRegression test for gh-17341g-C6?c                 8    | k    rt          d          d|z  S )N'Function was evaluated outside intervalr.   )r  )r   r   SMALLs     r   rX   z/test_tbound_respected_small_interval.<locals>.f  s$    u99FGGG1ur!   r   r$   r  Nr   r   r&   r   )r   rX   r   r  s      @r   $test_tbound_respected_small_intervalr    s\     E     AU|RXqc]]6
B
B
BC;;r!   c           
          d fd}t          |dt          j        ddg          dddd	d
          }|j        sJ dS )zRegression test for gh-8848c                 *    d| z  d| z  d| dz  z   z  z   S )NrB   rt   r.   r+   )rs    r   Vz0test_tbound_respected_larger_interval.<locals>.V  s"    1urAv1---r!   c                     | dk     s| dk    rt          d          |d         }|d         }t          j        |           }||z  }d|z  d |          z
  |z  d|z  |z  z   z  }t          j        ||g          S )Nr.   r  r   r$   g       gɿ)r  r   rk   r&   )r   pPQr  dPdrdQdrr  s          r   funcz3test_tbound_respected_larger_interval.<locals>.func  s    s77a!eeFGGGaDaDF1II1uaxD11Q44K1,q1uqy89xt%%%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    s{    . . .& & & & & t(As8,, $"'"  " " "F >>r!   c                 F    d dfd	} |ddd          }|j         sJ dS )	zRegression test for gh-9198c                 \    | dk    rt          d          t          j        g d          }|S )N   zCalled outside interval)ges='?gRr<>r   r   )r  r   r&   )r   r   yprimes      r   reactions_funcz8test_tbound_respected_oscillator.<locals>.reactions_func  sA    GG6777 + + + , , r!   rB   逖 c                     t          j        g d          }d}d}t          ||f|                                d||z
            S )N)gLOѧ`@gCYZa@r9  r   r9  g      i@T)r   r   )r   r&   r   copy)t_endn_timepointsshortest_delay_line
init_statet0t1r  s         r   run_sim2z2test_tbound_respected_oscillator.<locals>.run_sim2  sZ    XDDDEE
b#**&*"$r'	+ + + 	+r!   i  rF   N)rB   r  )r   )r   r  r  r  s      @r    test_tbound_respected_oscillatorr    sX      + + + + + + XdC%%F>>r!   c                     d} d}t          j        ddg          }dD ]\  }}t          j        t          j        t
          j        ddfD ]}t          t          |||t           j        t          ||          t          j	        ||z
            || |
  
        }|dz  }t          t          ||||t          ||          t          j	        ||z
            || |
  
        }t          ||           d	S )
z0Verify that select_inital_step respects max_stepr   r   r   r   ))r#   r   )r#   r$   rG   r$   r.   N)r   r&   r   error_estimator_orderr   r   r   r6   r   signr   )	r   r   r   r  rC  method_orderstep_no_maxr   step_with_maxs	            r   test_inital_maxstepr    s   DD	3*		B) 2 2W!7 6"8	 	2 	2L .lBG,.F,8B,?,?,.GGbL,A,A,8,0$8 8K #1}H/b"g,4,8R,@,@,.GGbL,A,A,8,0$8 8M =1111'	22 2r!   )]r   	itertoolsr   numpy.testingr   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,   r3   r6   r9   r>   r@   rD   rY   r`   rb   rf   rh   rm   rp   rr   rw   r   r   markthread_unsafer   r   	fail_slowr   r   slowparametrizer   r   r   r   r  r  r  r  r!  r'  r,  r3  r;  r>  r@  rG  rT  r]  rq  r  r  r  r  nanr   r  r  r  r  r  r  r+   r!   r   <module>r     s         = = = = = = = = = = = = = =  * * * * * *     1 1 1 1 1 1 L L L L L L L L L L L L L L L L L L ' ' ' ' ' ' D D D D D D D D 9 9 9 9 9 9 / / / / / / / /  5 5 5( ( (: : :
G G G
H H H
    > > >  6: : :@    ) ) )  
    9 9 9; ; ;     * "CDD?G ?G ED?GD+ + +\ q> > >6 G  G  GF #<#<#<==  >= 2s1 s1 s1l   aV,,: : -,:' ' '&)9 )9 )9X$3 $3 $3N;7 ;7 ;7|  6 "CDD' ' ED'<*C *C *CZA A A7 7 7"; ; ;&8 8 8#8 #8 #8L(; (; (;V9 9 98*I *I *IZP/ P/ P/f  & #V#V#VWW/ / XW/	0 	0 	0 RVRV$455: : 65: #M#M#MNN' ' ON' #M#M#MNN  ON #M#M#MNN  ON4 #M#M#MNN  ON02 2 2 2 2r!   