
    riѧ                        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	jj                  jm                  d       d!        Z7d" Z8e	jj                  js                  d#      d$        Z:d% Z;e	jj                  jx                  e	jj                  j{                  d&g d'      d(               Z>d) Z?d* Z@e	jj                  j{                  d+d,d-g      d.        ZAd/ ZBd0 ZCd1 ZDd2 ZEd3 ZFe	jj                  jm                  d       d4        ZGd5 ZHd6 ZId7 ZJd8 ZKd9 ZLd: ZMd; ZNd< ZOd= ZPd> ZQd? ZRe	jj                  j{                  d&g d@      dA        ZSdB ZTe	jj                  j{                  dCej                  ej                  g      dD        ZWe	jj                  j{                  d&g dE      dF        ZXe	jj                  j{                  d&g dE      dG        ZYe	jj                  j{                  d&g dE      dH        ZZe	jj                  j{                  d&g dE      dI        Z[dJ Z\y)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     a/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/scipy/integrate/_ivp/tests/test_ivp.pyfun_zeror       s    ==    c                 \    t        j                  |d    d|d   z  z
  |d   |d   z   g      S )Nr         r   arrayr   s     r   
fun_linearr'      s5    88adUQ1X%qtad{344r!   c                  8    t        j                  ddgddgg      S )Nr$   r%    r!   r   
jac_linearr,      s    88b"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      sP    99b266!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   #   sW    88QqTAXqTQqTA!H_q01Q!A$(^DF 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   (   sW    99adQhdadQ1Xo12a1Q4!8nEG 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>   -   sv    88	
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   sr    	
AE
	adai1!qQ.	/
A$QqT/A
!qtax.	1	3  r!   c                 T    t        j                  | | dz   z  d| z  | dz   dz  z  f      S )N
   r.   )r   asarrayr2   s    r   sol_rationalrD   =   s/    ::qAF|R!Vq2v!m%;<==r!   c                 "   |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   sw   	
aAA	AAv!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$%AccF b1S6kAfI%AaddGHr!   c                    g }g }t        j                  |       dz  }|j                  |dd         |j                  |dd  dz
         |j                  |       |j                  |       |j                  |       |j                  |dz          |j                  |d d        |j                  |d d dz          t        j                  |       dz  dz   }|j                  |       |j                  |       |j                  |       |j                  |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`   \   s   DD
		!qAKK!"KK!"	KKNKKNKKNKKAKK#2KK#2

		!q1AKKNKKNKKNKKA99T?D99T?Dr||D)D$<899r!   c                     | S r   r+   r   s     r   fun_complexrb   |   s	    2Ir!   c                 H    t        j                  |j                  d          S Nr   )r   eyerH   r   s     r   jac_complexrf      s    FF1771:r!   c                 ,    t        t        | |            S r   )r   rf   r   s     r   jac_complex_sparserh      s    k!Q'((r!   c                 V    dt        j                  |        z  }|j                  d      S )N      ?      ?)r$   r)   )r   expreshaper   s     r   sol_complexrm      s%    	RVVQBZ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                 v    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      s4    66!q&1*q1u$rvvd|3a788r!   c                     | |z
  ||t        j                  |      z  z   z  }t         j                  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tbffVn445A99>>!!>$rwwqwwqz':::r!   c                     d } d }d|_         d|_        t        | dt        j                  gddgd|d      }t        |j                  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       y )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
MArvv;D	3%D:C CGGDM2::{K.H#ID*CLL"**zl^"<4dSCLL2::e~.>#?"@tL;;;Qr!   zlsoda solver is not thread-safereasonc                     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        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       nFt        d|j$                  cxk  xr dk  nc        t        d|j&                  cxk  xr dk  nc        t)        |j                        }	t+        |j,                  |	| |      }
t        t/        j0                  |
dk               t/        j2                  | }t)        |      }|j5                  |      }t+        ||| |      }
t        t/        j0                  |
dk               |d   |d   z   dz  }t)        |      }|j5                  |      }t+        ||| |      }
t        t/        j0                  |
dk               t7        |j5                  |j                        |j,                  dd        y # 1 sw Y   fxY w)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      s   DD
sB+2DM?VaV<!45	,7 :G'
FFC )CC$$& 	<##S
 C$!%f4 #
<C	< 	SUU1Xvay)$%$%SZZ#X CHHrM"CHHrM"881%!$A$1$%A$"$%cee$#%%t4q1u[[&!r"WWR["gtT2q1uQi&*$)r"WWR["gtT2q1uEFu:G	< 	<s   0K,,K6	c                  :   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        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 |j$                  dk  sJ |dk(  r't        |j&                  d       |j(                  dk  s$J |j&                  dk(  sJ |j(                  dk(  sJ t+        |j                        }t-        |j.                  || |      }	t        j0                  |	dk        sJ t+        |      }
|j3                  |      }t-        ||
| |      }	t        j0                  |	dk        rJ  y # 1 sw Y   xY w)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 %$$& 	N##S
 KF)-DtNC	N 	SUU1Xvay)$%$%SZZ#X88b= =88b= =U?1%77Q;;88q= =77a<<SUU##%%t4vva!e}}b/WWR["gtT2vva!e}}K%	N 	Ns   3HH	r#   c                  :   d} ddg}t        j                  d| z        }d|dd d<   t        |       }dD ]d  }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
       g y )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   #  sR   AWF	!a%BBqt!tH"H" >VR%-/ 	SUU1Xvay)$%$%SZZ#f{>fqt4g$?g5gTBg4@g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  xr d
k  nc        t        |j                        }	t!        |j"                  |	| |      }
t        t%        j&                  |
dk               t%        j(                  | }t        |      }|j+                  |      }t!        ||| |      }
t        t%        j&                  |
d
k               t-        |j+                  |j                        |j"                  dd        y )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
FBT%DcCSUU1Xvay)$%$%SZZ#3SXXq!CGG b !CEE"#%%t4q2v[[&!R.WWR["gtT2q2vEF1Gr!   r   )r   r   r   c                     d}d}g d}ddg}| dk(  r|dkD  rt        j                  d       d	 }t        |||||| 
      }|j                  dk  sJ |j                  dk  sJ y )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  sy     DD	BHE1A5FG
 M5"4f.C 88d??88c>>r!   c           
         d }d }d }d|_         dD ]|  }|dk(  r| dkD  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  xr dk  nc        t        d|j
                  d   d   cxk  xr 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  xr 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  xr 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  xr dk  nc        t        d|j
                  d   d   cxk  xr 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  xr 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        |      }|j!                  |      }t#        ||dd      }	t        t        j$                  |	dk               t        j&                  t        |j
                  d   d         |j                  d   d   dd      r}J  d|_        d|_        dD ]  }|dk(  r| dkD  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  xr dk  nc        t        d|j
                  d   d   cxk  xr 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  xr 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  xr 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  xr dk  nc        t        d|j
                  d   d   cxk  xr 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        |      }|j!                  |      }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      rJ  y )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W!5!9q!fsCj 02BCESZZ#S\\!_))1-S\\!_))1-cll1oa(.3./cll1oa(.3./S\\!_**F3S\\!_**F3zzS\\!_Q/a1CDaI 	I IzzS\\!_Q/a1CDaI 	I I &'"%&"q!fuenV 02BCESZZ#S\\!_))1-S\\!_))1-cll1oa(.3./S\\!_**F3S\\!_**D1zzS\\!_Q/a1CDaI 	I I &("%'"q!fuenV 02BCESZZ#S\\!_))1-S\\!_))1-cll1oa(.3./S\\!_**D1S\\!_**F3zzS\\!_Q/a1CDaI 	I I &'"%&"q!fuenV 02B 0 2@DF 	SZZ#S\\!_))1-S\\!_))1-S\\!_))1-cll1oa(.3./cll1oa(.3./S\\!_**F3S\\!_**D1S\\!_**F3zzS\\!_Q/a1CDaI 	I IzzS\\!_Q/a1CDaI 	I I q!fuenV/dDSZZ#S\\!_))1-cll1oa(.3./S\\!_**F3zzS\\!_Q/a1CDaI 	I I [[q3559-r"WWR["gtT2q1u {{<Q(:;S\\!_Q=O $41 	1 1gT1n "#!"E N1W!5!9q!fsEl6 02BCESZZ#S\\!_))1-S\\!_))1-cll1oa(.3./cll1oa(.3./S\\!_**F3S\\!_**F3zzS\\!_Q/a1CDaI 	I IzzS\\!_Q/a1CDaI 	I I &("%'"q!fsEl6 02BCESZZ#S\\!_))1-S\\!_))1-cll1oa(.3./S\\!_**F3S\\!_**D1zzS\\!_Q/a1CDaI 	I I &'"%&"q!fsEl6 02BCESZZ#S\\!_))1-S\\!_))1-cll1oa(.3./S\\!_**D1S\\!_**F3zzS\\!_Q/a1CDaI 	I I &'"%&"q!fsEl6 02B 0 2@DF 	SZZ#S\\!_))1-S\\!_))1-S\\!_))1-cll1oa(.3./cll1oa(.3./S\\!_**D1S\\!_**F3S\\!_**F3zzS\\!_Q/a1CDaI 	I IzzS\\!_Q/a1CDaI 	I I [[rCEE!H-r"WWR["gtT2q1u{{<Q(:;S\\!_Q=O $41 	1 1{{<Q(:;S\\!_Q=O $41 	1 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       y )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
6Cs||A8+++s||A8+++CLLOAqD)15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        d|_        t        j                  t        |      5  t        |d|i d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)	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CLL#,,/+GEN	z	1 '4&&'EN	z	1 '4&&' '' '' 's   =C3CCCc                 Z   d}d}ddg}t         t        t        t        t        t
        fD ]  }|t
        u r| dkD  rddgddgfD ]b  }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%        |	      }
|j-                  |	      }t'        ||
||      }t        t        j                  |dk               t/        |j-                  |j                        |j(                  dd       t1        t2        |t        |d   ||d   d       |t
        us |t        |d   ||d   ||d      }|j5                         }|j5                         }t        |j"                  d       t        d|v        t1        t6        |j4                         e  y )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U?3a71v1v& "	9FL&"4%(tF)-/C q6!9-rF2J/BFF266"''#%%.1[@ABCLLD()CKK Q'!#%%(FceeVT48ABFF1q5M"f%B"2&GBb'46ABFF1q5M"CGGCEENCEEEJ*flF1Ir )b2 U"fQiVAY%)uF ++- ++-V]]H5+w67lFKK8E"	9%9r!   c                 \   d}d}ddg}d}t         t        t        t        t        t
        fD ]  }|t
        u r| dkD  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#        |
      }|j-                  |
      }t%        ||||      }	t        t        j(                  |	dk               t        |j-                  |j                        |j&                  dd       t/        t0        |t        |d   ||d   d       t/        t0        |t        |d   ||d   d         y )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    s   DD
sBJvuc59 3U?3a71v1v& 	3FL&"4%(tF)-*FC q6!9-rF2J/JsuuQx!|(<=CLLD()CKK Q'!#%%(FceeVT48ABFF1q5M"f%B"2&GBb'46ABFF1q5M"CGGCEENCEEEJ*flF1Ir )4*flF1Ir )37	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|| ||
       y )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fbt$%'SUUF#$%SZZ#cee$#%%t4q1u &F
L1a&"4d!#CCLLD !CKKQ#%% FceeVT40ABFF1q5M,F
L1a&"4d!#CCLLD !CKKQF
L1a&"4d!#CCLLD !CKKQ#%% FceeVT40ABFF1q5M&F
L1a&"4d!#CCLLD !CKKQVF*i1vr$v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               y )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!    s(   DD
sBVF[[F1Ir2F
L&"4d!#ClFBT#$8ECLLD !CKKQ  ENNd"#EMMq! #%% FceeVT40ABFF1q5Mr!   c                  ^   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        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(  rJ  y # 1 sw Y   xY w)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'    s8     KDD
sBVF[[a$FE '$$& 	.##S
 L&"4d#)& ,.C	. {{{{{====zzQ55&&3<< A%%%||A##q(((||Aq!Q&&&!'	. 	.s   8D##D,	c                    | dkD  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        |
      }|j#                  |
      }t        ||||      }	t        |	d       t        |j#                  |j                        |j                  dd       y )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
B!WFJ
$
(C q6!9%rF2J'JsuuQx&)'; <=;;;Q)#%%0FceeVT40Aa	f	B*2.G	Bb'4.AaCGGCEENCEEEBr!   c                      dD ]W  } t        d ddgddg| d      }t        |j                  d      ddg       t        |j                  g d      g d	g d
g       Y y )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!Q!Q%D:SWWQZ!Q(SWWY')Y)?@	Ar!   c                  D   t         t        t        t        t        t
        fD ]  }  | d dddgd      }|j                          t        |j                  d       |j                         }t         |d      ddg       t         |g d      g dg dg        | d dg t        j                        }|j                          t        |j                  d       |j                         }t         |d	      g        t         |g d      t        j                  d
              y )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  s    vuc59 7tSk3?V]]J/!!#SXc{+S^lI%>?b"&&9V]]J/!!#SZ$S^RXXf%567r!   c            	      @   d } t        j                  d      }dD ]w  }t        t        | ddg||d      }t	        |j                  d      t        j                  d             t	        |j                  g d      t        j                  d	             y dD ]  }t        t        | dt         j                  g||d      }t	        |j                  d      t        j                  d             t	        |j                  g d      t        j                  d	              y )
Nc                 ,    t        j                  d      S )Nr   )r   r   r   s     r   r   ztest_empty.<locals>.funl  s    xx~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  s     
$BE ; C!R"(.TCSWWR["((4.1SWWY'&)9:	; F ; C!RVVb(.TCSWWR["((4.1SWWY'&)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             y )	Nr   r$   r.   r  )r$   r  r.   )r$   r$   r$   r2  r:  )r   r   r&   r   rK   )r   s    r   test_ConstantDenseOutputr@  ~  s    
aBHHaV$4
5CCHq!f%C$y)&<=
aBHHRL
1CCHbhhqk*C$bhhv&6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rGt!        |j$                  dkD         t!        |j&                  dk\         t        |j(                  d       nBt        |j$                  d       t        |j&                  d       t        |j(                  d       t+        t,        |j.                         |j1                         }t        |j                  d       t        |d        t        |j                  d       t        |j                  t        j                         t        |j                  d       t!        |j                  dkD         t!        t        j2                  t        j4                  |j                  |                     t!        |j"                  dkD         t!        |j$                  dkD         t!        |j&                  dk\         t!        |j(                  dk\         |j/                         }t7         |d      | dd	        y )
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\1b"&&1VXXq!V]]I.V^^RVV,V%%q)VXXq!VXXr"  D()eFKK!O$FKK1$%Q'a(a(Q'lF$7$78++-V]]I.Wd#VXXq!V^^RVV,V%%q)1BFF288FHHb1223  1$%a q !

a !!#AQ7C!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             y )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    sU   	)5	)B	RUBqE288RD>	:B	RUBqE288QC=	9B
b2r(
#CR2$Q"Q"Q!Q!Q!9::;<> 
+	B	RUBqE288RD>	:B	RUBqE288QC=	9B
b2r(
#CR2$R2$Q"Q"Q!R1#R1#./4568 
1a&	BAq"((B4.1A
b1#
CQ"Q"Q"Y<.!9:r!   c                     d } d }d}t        j                  g d      } |||      }d} | ||      j                         }t        | ||||d       \  }}t	        ||dd       t        | |||||      \  }}t	        ||dd       y )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  sz    yy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  sk    xxC!A$Jad
+4!A$;qt+TAaD[9ad
A
  	r!   r$   )r$   r   r   r   r   )r   r&   ravelr   r   )	r   r   r   r   J_true	thresholdrX   J_numfactors	            r   test_num_jacr]    s     	
A
AAYFIAq	ACAq)T:ME6E648CAq)V<ME6E648r!   c            
         d } d }t         j                  j                  d       d}t         j                  j                  |      } ||      }t	        |      } | d|d d d f         j                         }t        | d|j                         |dd ||f      \  }}t        | d|j                         |dd       \  }	}
t        |	|j                         dd	       t        |
|dd	       t         j                  j                  dd|
      }t        | d|j                         |d|||f      \  }}t        | d|j                         |d|      \  }	}
t        |	|j                         dd	       t        |
|dd	       y )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  sc    abE1Hq"vqy HHQWWQZ yy!QU$ryy!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  sr    HHa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    sd   =
	 IINN1
A
		A!A1FAqDz  "A #*#q!'')Qd45v;#@L- 'Q	1dD IKK!5!5!7U,L-e%H YYq%a0F")#q!'')Qf45v;#@L- 'Q	1dF KKK!5!5!7U,L-e%Hr!   c                  t   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      }|j                  |      }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       |j                  |      }|j                  |      }|j                  |      }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       y )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           
      h    |\  }}}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-  sP    1aHHq5&!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
 #%"#KE	AFF 
6		QZ/"&&!F2CC	DB
RB
 V8D
D1d)R-/@+N!%UAv,>"U	,C aJaJ\\!_NJRUUCI 67JbeeT"%%Z 89NVH- 	A~a(#.A
AAaD"&&q/5AAaD266%'?*EBAaD!q2vrk2661"Q$<7!;<E+ wwz"Hwwz"H77>*LHQKx{!;%HHQKhqk!:;HQKhqk!:;HQKx{!;%HLOfX.r!   c            	      (   d } t        | dddgddg      }t        j                  t        j                  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	                  |j
                  d d df   t        j                  d      z
              }d d d        |k  sJ y # 1 sw Y   xY w)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  s     AvBxtTl
;C66"))..q"uq	!9:;D 
k)B	C @6B84-@vvbiinnSUU1b5\BFF1I%=>?@
 $;;@ @s   A-DDr   c                    | dk(  r|dkD  rt        j                  d       t        t        ddgt	        j
                  d      |       }t        |j                         t        |j                  d       t        |j                  d	d
       y )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    se    1A5JKx!R"''!*VDFFNN"FHHc.r!   c                     d } d}t        j                  t        |      5  t        | ddgd       d d d        t        | ddgd      }t	        |j
                  d	   t        j                  d
             y # 1 sw Y   FxY w)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    so     4G	y	0 8,1#B78 L(QCe
<CCEE%L"&&,/	8 8s   A77B f0_fillc           	          d}t        j                  t        |      5  t        t        ddgt        j                  d|              d d d        y # 1 sw Y   y xY w)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    sH     EC	z	- :(QGRWWQ%89: : :s   (AA)r   r   r   r   r   c                     d }t        |dt        j                  dg      |       }|j                  sJ t	        |j
                  d   d       y )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    s?    

Az288SE?6
BC;;;CEE%L#&r!   c                 z    dfd}t        |dft        j                  dg      |       }|j                  sJ y)zRegression test for gh-17341g-C6?c                 .    | kD  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    u9F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|RXXqc]6
BC;;;r!   c           
          d fd}t        |dt        j                  ddg      dddd	d
      }|j                  sJ y)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kD  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    s7a!eFGGaDaDFF1I1uaxD1Q4K1,q1uqy89xx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    sK    .& t((As8, $"'"  "F >>>r!   c                 H    d dfd	} |ddd      }|j                   sJ y)zRegression test for gh-9198c                 T    | dkD  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  s/    G677 + , r!   c                     t        j                  g d      }d}d}t        ||f|j                         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  sF    XXDE
b#*&*"$r'	+ 	+r!   i  rF   N)rB   i )r   )r   r  r  r  s      @r    test_tbound_respected_oscillatorr    s)    + dC%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        ||         y	)
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W!77 66"88	 	2L .lBG,.FF,8B,?,.GGGbL,A,8,0$8K #1}H/b"g,4,8R,@,.GGGbL,A,8,0$8M =1'	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 L L L ' D 9 /5(:
G
H
>6:@)
9; * "CD?G E?GD+\ q> >6 GF #<= > 2s1l aV,: -:'&)9X$3N;7|6 "CD' E'<*CZA7";&8#8L(;V98*IZP/f& #VW/ X/	0 RVVRVV$45: 6: #MN' O' #MN O #MN O4 #MN O02r!   