
    UiG                     ,   d dl mZ d dlmZ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        j6        d             Z7e	j5        j6        d              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- ZBd. ZCd/ ZDd0 ZEd1 ZFe	j5        j6        d2             ZGd3 ZHd4 ZId5 ZJd6 ZKd7 ZLd8 ZMd9 ZNd: ZOd; ZPd< ZQe	j5        j6        d=             ZRe	j5        =                    d$g d>          d?             ZSd@ ZTe	j5        =                    dAejU        ejV        g          dB             ZWe	j5        =                    d$g dC          dD             ZXe	j5        =                    d$g dC          dE             ZYe	j5        =                    d$g dC          dF             ZZe	j5        =                    d$g dC          dG             Z[dH Z\dS )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                 *    t          j        |          S N)np
zeros_liketys     {/var/www/development/aibuddy-work/election-extract/venv/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_linearr4      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_rationalr7       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 r6   r   r0   r   s     r    fun_rational_vectorizedr:   %   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_sparserA   2   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   asarrayr3   s    r    sol_rationalrE   :   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_medazkorZ   >   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   rK   appendrJ   r   	ones_like)rM   colsrowsis       r    medazko_sparsityra   Y   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_complexrc   y   s	    2Ir"   c                 B    t          j        |j        d                    S Nr   )r   eyerI   r   s     r    jac_complexrg   }   s    F171:r"   c                 <    t          t          | |                    S r   )r   rg   r   s     r    jac_complex_sparseri      s    k!Q''(((r"   c                 \    dt          j        |            z  }|                    d          S )N      ?      ?)r%   r*   )r   expreshaper   s     r    sol_complexrn      s(    	RVQBZZA99Wr"   c                     || dz
  z  S Nr/   r,   r   s     r    fun_event_dense_output_LSODArq      s    A;r"   c                     | dz
  S rp   r,   r   s     r    jac_event_dense_output_LSODArs      s    q5Lr"   c                 r    t          j        | dz  dz  d| z  z
  t          j        d          z   dz
            S )Nr/   皙?   )r   rl   logr3   s    r    sol_event_dense_output_LSODArx      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sqrtrI   )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 re   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   solrD   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"   c                  @   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                      5 }|                    t          d           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                          t5          |	                    |	j
                  |	j        dd           d S )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      sr   DD
sB+2DM???VaV<!45	,7 ,7 8G 8G'
FFC  	)CCC   	<CJJ{'( ( ( 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Fq8G 8Gs   4BB	 B	c                  D   d} d}dg}ddg}t          j        |d         |d                   }t          g dd t          t          g          D ]\  }}t                      5 }|                    t          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|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   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 H # #   	NCJJ{'( ( ( 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}}G# #s    8B$$B(	+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   zerosra   r   rZ   r   r   r   r   r   r   r   r   r   )rM   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   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/!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 callsreasonc                 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_robertsonf  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   [  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_1w  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_2z  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   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 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    rY   z#_get_harmonic_oscillator.<locals>.f-  s    !qte}r"   c                     |d         S re   r,   r   s     r    eventz'_get_harmonic_oscillator.<locals>.event0  r   r"   r,   )rY   r   s     r    _get_harmonic_oscillatorr   ,  s+         e8Or"   n_eventsrH   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   rG   r%   r   )r   r   r   )r   r   r   lenr   r   r   )r   rY   r   r   s       r    test_event_terminal_integerr   6  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)rY   r   argsr   refmessages         r    test_event_terminal_ivr  @  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   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 %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   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    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   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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%   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     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                  *   d } d| _         d}d}ddg}ddg}t          j        d	dd
          }dD ]}t                      5 }|                    t
          d           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   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&"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   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   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>K      aR r"   r>   r/   rH   Tr   r   )r>   r$   rv   r/   r/   r/   )rH   rH   rH   )r   r   r   )r   r   s     r    test_no_integrationr2  I  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>S  r/  r"   r   g      $@finished)r   r%   r/   rC   rC   rC   )r   r   r   c                     | S r   r,   r   s     r    r.  z+test_no_integration_class.<locals>.<lambda>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_classr:  Q  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>.func  s    x~~r"   r   r   r   rC   Tr0  )r%   r/   rH   r9  )r   r   r   r   r   r   r   )r   r   r   r   s       r    
test_emptyr=  b  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%   r1  r9  )r   r   r'   r   rL   )r   s    r    test_ConstantDenseOutputr?  u  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   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_classesrF    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/   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>   rJ  )   r+   rC   rJ  rv   r%   r>   )r*   r%   r*   r%   r*   r%   r*   )r/   r%   r   r6  )r   r'   floatr   r   r   )tss1s2r   ss        r    test_OdeSolutionrS    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   r9   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	thresholdrY   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%   rH   r*   r/   )r   r   rI   r0   )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 )NrH  r%   )r   r   r   r%   r/   )r*   r*   )r*   r=   )r   r   intrange)rM   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   rW  r   r   toarrayuniform)r   rd  rM   r   rc  groupsrY   J_num_sparsefactor_sparseJ_num_densefactor_denser[  s               r    test_num_jac_sparserp    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omegarN   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   rt  ru  rN   rv  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,   rs  s           r    sys3_x0decreasingz$test_args.<locals>.sys3_x0decreasing+      1ar"   c                     |\  }}}|S r   r,   rs  s           r    sys3_y0increasingz$test_args.<locals>.sys3_y0increasing/  r|  r"   c                     |\  }}}||z
  S r   r,   rs  s           r    sys3_zfinalztest_args.<locals>.sys3_zfinal3  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   re  r   gvIh%,=r   )r   r   r   rl   r   r   r   pir   r   r1   r2   r   r]   )rw  ry  r{  r~  r  ru  rN   tfinalrv  z0w0tendr   
x0events_t
y0events_tzfinalevents_tr   rt  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    rY   ztest_array_rtol.<locals>.fp  s    tQqTzr"   r`        ?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  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   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    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   rl   )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   rC   rH   )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 rp   r,   r   s     r    rY   z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[    
  
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    rY   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   rY   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 )NrC   ru   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   rl   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"   rC   逖 c                     t          j        g d          }d}d}t          ||f|                                d||z
            S )N)gLOѧ`@gCYZa@r8  r   r8  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  rG   N)rC   r  )r   )r   r  r  r  s      @r     test_tbound_respected_oscillatorr    sY      + + + + + + 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%   rH   r%   r/   N)r   r'   r   error_estimator_orderr   r   r   r7   r   signr   )	r   r   r   r  rB  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"   )]	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&  r+  r2  r:  r=  r?  rF  rS  r\  rp  r  r  r  r  nanr   r  r  r  r  r  r  r,   r"   r    <module>r     s0        P P P P P P P P P P P P P P P P  * * * * * *     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; ; ;     ( =G =G =G@ ) ) )X q> > >6 G  G  GF #<#<#<==  >= 2s1 s1 s1l   aV,,: : -,:' ' '&)9 )9 )9X$3 $3 $3N;7 ;7 ;7|  6 ' ' '8*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"   