
    wg?                       d dl mZmZmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZmZm Z m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d dlm8Z8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z?m@Z@mAZAmBZB  ed      \  ZCZDZEZFZGZHZIZJZKZLZM ed      ZN ed      ZO ed      ZP ed      ZQd ZRd ZSd ZTd ZUd ZVe@d        ZWd  ZXd! ZYe@d"        ZZd# Z[d$ Z\e@d%        Z]d& Z^d' Z_e@d(        Z`d) Zad* Zbd+ Zce@d,        Zde@d-        ZeeAd.        Zfe@d/        Zgd0 Zhe@d1        Zie@d2        Zjd3 Zkd4 Zle@d5        ZmeAeBd6               ZneAd7        ZoeAd8        Zpd9 Zqd: Zre@d;        Zsd< ZteAeBd=               ZueBd>        ZveAeBd?               ZweBd@        ZxdA ZydB Zze@dC        Z{dD Z|dE Z}yF)G    )
DerivativeFunctiondiff)Mul)IRationalpi)Eq)S)Symbolsymbols)sinh)sqrt)Matrix)Tuple)expcossinlogCiSierferfi)dotprodsimpNonSquareMatrixError)dsolve)constant_renumber)checksysodesol)_classify_linear_systemlinear_ode_to_matrixODEOrderErrorODENonlinearError_simpsol_is_commutative_anti_derivativelinodesolvecanonical_odesdsolve_system_component_division	_eqs2dict_dict2graph)airyaiairybi)Integral)ratsimp)raisesslowtooslowXFAILzC0:11xfghc            	      j   t        dt              \  } }}t        d       |        |       |      g |       j                        } |      j                        } |      j                        } |       j                  d      } |      j                  d      } |      j                  d      }t	        | |            t	        | |             g}	t        ddgddgg      t        ddgddgg      gt        dgdgg      f}
t        |	d d d      |
k(  sJ t	        | |       d |      z  z         t	        | |            t	        | |       |      z    |       z         g}t        g dg d	g d
g      t        g dg d
g dg      gt        dgdgdgg      f}t        |d      |k(  sJ t	        d|z  d|z  z    |        |      z         t	        d|z  d|z  z    |        |      z         t	        d|z  d|z  z    |       |      z         g}t        g dg dg dg      t        g dg dg dg      gt        dgdgdgg      f}t        |d      |k(  sJ t	        | |      z   | |      z         t	        d|z  |z   |z    |      z   d      t	        d|z  d      g}t        g dg dg dg      t        g dg dg dg      t        g dg dg dg      gt        dgdgdgg      f}t        |d      |k(  sJ t	        | |            t	        ||z    |             gt        t        fd       t	        | |       dz        t	        | |        |      z         gt        t        fd       y )Nf, g, hclst      r   )r=   r   r   )r   r=   r   )r   r   r=   )r=   r<   r   )r=   r=   r=            )r<   r   r?   )r   rA   r@   )rA   r@   r   )r=   r=   r   )r=   r   r=   )r   r=   r=   )r   r=   r<   r   r   r   )r   r>   r   )r   r   )r   r=   r>   c                  &    t         d d d      S Nr>   r=   r    )eqs_5funcsr;   s   i/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/solvers/ode/tests/test_systems.py<lambda>z+test_linear_ode_to_matrix.<locals>.<lambda>A   s    "6ueCRj!Q"O     c                  &    t         d d d      S rE   rF   )eqs_6rH   r;   s   rI   rJ   z+test_linear_ode_to_matrix.<locals>.<lambda>D   s    &:5%*aQR&S rK   )
r   r   r   r   r
   r   r    r/   r!   r"   )r4   r5   r6   f1g1h1f2g2h2eqs_1sol_1eqs_2sol_2eqs_3sol_3eqs_4sol_4rG   rM   rH   r;   s                    @@@@rI   test_linear_ode_to_matrixr\   "   s   iX.GAq!sAqT1Q41E	
11B	
11B	
11B	
11aB	
11aB	
11aBAaD\2b!A$<(Eq!fq!f%&!Q!a/A(BCVaSRSQTIEVWEuSbz1a8EAAAAaD1QqT6M"Br1Q4L"R1!qt9K2LMEiI67[Zc@d9efaS1#sO$&Eua3u<<<"qtQqTAaD[)2adQrTk1Q4!A$;+GAbDSTUWSWKYZ[\Y]`abc`dYdIefEiI67ZYb@c9deaS1#sO$&Eua3u<<<QqT	2!9%r!B$)b.1Q4*?'CR"a[QEiI67JXb@c9dj+y9:<=CaS1#PQsO=TVEua3u<<<AaD\2b2gqt,-E
=OPAaD!G_bQqTAaD[12E
STrK   c                  X  89: t        dt              \  } }}}t        d      \  :}}t         | :      :      }t         |:      :      }t         |:      :      }t         |:      :      }	t         | :      ::      }
t         |:      ::      } | :       |:      g99 |:       |:      gz   }d|z  d | :      z  z   d |:      z  z
  d|z  d:z   | :      z  z
  d	 |:      z  z   :z   f}t        |9:      J d|dz  z  d | :      z  z   d |:      z  z
  d|z  d:z   | :      z  z
  d	 |:      z  z   :z   f}d
t	        t         | :      :      t        d | :      z  dz  d |:      z  dz  z                t	        t         |:      :      d:z   | :      z  dz  :dz  z
  d	 |:      z  dz  z
        gt	        t         | :      :      t        d | :      z  dz  d |:      z  dz  z               t	        t         |:      :      d:z   | :      z  dz  :dz  z
  d	 |:      z  dz  z
        ggd}t        |9:      |k(  sJ t	        t         | :      :      t        d | :      z  dz  d |:      z  dz  z                t	        t         |:      :      d:z   | :      z  dz  :dz  z
  d	 |:      z  dz  z
        g}t        |9:      J t	        t         | :      :      t        d | :      z  dz  d |:      z  dz  z               t	        t         |:      :      d:z   | :      z  dz  :dz  z
  d	 |:      z  dz  z
        g}t        |9:      J d|z  d | :      z  z   d |:      z  z
  d|z  d | :      z  z
  d	 |:      z  z   d|	z   |:      z   | |:      z   f}dd | :      z  d |:      z  z
  dt         | :      :      z  z   d | :      z  d	 |:      z  z   dt         |:      :      z  z    |:      dt         |:      :      z  z    |:      t         |:      :      z   f | :       |:       |:       |:      g | :      d |:      d |:      d |:      did
d
d
t        t        dd      t        dd      ddgt        dd      t        d	d      ddgg dddt        dd      dgg       dd
d
}t        ||:      |k(  sJ d|z  d | :      z  z   d |:      z  z
  d|z  d | :      z  z
  d	 |:      z  z   | |:      z
  |	 |:      z
  f}dd | :      z  d |:      z  z
  dt         | :      :      z  z   d | :      z  d	 |:      z  z   dt         |:      :      z  z    |:       t         |:      :      z    |:       t         |:      :      z   f | :       |:       |:       |:      g | :      d |:      d |:      d |:      did
d
d
t        t        dd      t        dd      ddgt        dd      t        d	d      ddgg dg dg       dd
d
}t        ||:      |k(  sJ d|z  d | :      z  z   d |:      z  z
  |
z   d|z  d | :      z  z
  d	 |:      z  z   | |:      z
  |	 |:      z
  f}dd | :      z  d |:      z  z
  dt         | :      :      z  z   t         | :      :df      z   d | :      z  d	 |:      z  z   dt         |:      :      z  z    |:       t         |:      :      z    |:       t         |:      :      z   f | :       |:       |:       |:      g | :      d |:      d |:      d |:      did
d
d
dd
d	}t        ||:      |k(  sJ t	        |d	 |:      z  d |:      z  z
        t	        |d |:      z  d	 | :      z  z
        t	        |d | :      z  d |:      z  z
        f}d	t	        t         | :      :      d	 |:      z  d |:      z  z
        t	        t         |:      :      d | :      z  d |:      z  z         t	        t         |:      :      d | :      z  d |:      z  z
        f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        g dg dg dg       dd
d
}t        ||d d :      |k(  sJ t	        | |:            t	        | | :            f}dt	        t         | :      :       |:            t	        t         |:      :       | :            f | :       |:      g | :      d |:      did
d
d
t        ddgddgg       dd
d
}t        |9:      |k(  sJ t	        |d | :      z        t	        |d  | :      z  d	 |:      z  z         t	        |d | :      z  d |:      z  z   d! |:      z  z         f}d	t	        t         | :      :      d | :      z        t	        t         |:      :      d  | :      z  d	 |:      z  z         t	        t         |:      :      d | :      z  d |:      z  z   d! |:      z  z         f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        g d"g d#g d$g       dd
d
}t        ||d d :      |k(  sJ t	        |d | :      z  d |:      z  z   d |:      z  z         t	        | | :      d% |:      z  z   d! |:      z  z         t	        |d& | :      z  d' |:      z  z   d |:      z  z         f}d	t	        t         | :      :      d | :      z  d |:      z  z   d |:      z  z         t	        t         |:      :       | :      d% |:      z  z   d! |:      z  z         t	        t         |:      :      d& | :      z  d' |:      z  z   d |:      z  z         f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        g d(g d)g d*g       dd
d
}t        ||d d :      |k(  sJ t	        d	|z  d+ |:       |:      z
  z        t	        d|z  d, |:       | :      z
  z        t	        d|z  d | :       |:      z
  z        f} d	t	        d	t         | :      :      z  d+ |:      z  d+ |:      z  z
        t	        dt         |:      :      z  d- | :      z  d, |:      z  z         t	        dt         |:      :      z  d | :      z  d |:      z  z
        f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        dt        d.d	      t        d+d	      gt        d,d      dt        d-d      gt        dd      t        dd      dgg       dd
d
}!t        | |d d :      |!k(  sJ t	        |d	 |:      z  d |:      z  z
        t	        |d |:      z  d	 | :      z  z
        t	        |d | :      z  d |:      z  z
        f}"d	t	        t         | :      :      d	 |:      z  d |:      z  z
        t	        t         |:      :      d | :      z  d |:      z  z         t	        t         |:      :      d | :      z  d |:      z  z
        f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        g dg dg dg       dd
d
}#t        |"|d d :      |#k(  sJ t	        t         | :      :       |:            t	        t         |:      :       | :            f}$dt	        t         | :      :       |:            t	        t         |:      :       | :            f | :       |:      g | :      d |:      did
d
d
t        ddgddgg       dd
d
}%t        |$ | :       |:      g:      |%k(  sJ t	        t         | :      :      d | :      z        t	        t         |:      :      d  | :      z  d	 |:      z  z         t	        t         |:      :      d | :      z  d |:      z  z   d! |:      z  z         f}&d	t	        t         | :      :      d | :      z        t	        t         |:      :      d  | :      z  d	 |:      z  z         t	        t         |:      :      d | :      z  d |:      z  z   d! |:      z  z         f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        g d"g d#g d$g       dd
d
}'t        |& | :       |:       |:      g:      |'k(  sJ t	        t         | :      :      d | :      z  d |:      z  z   d |:      z  z         t	        t         |:      :       | :      d% |:      z  z   d! |:      z  z         t	        t         |:      :      d& | :      z  d' |:      z  z   d |:      z  z         f}(d	t	        t         | :      :      d | :      z  d |:      z  z   d |:      z  z         t	        t         |:      :       | :      d% |:      z  z   d! |:      z  z         t	        t         |:      :      d& | :      z  d' |:      z  z   d |:      z  z         f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        g d(g d)g d*g       dd
d
})t        |( | :       |:       |:      g:      |)k(  sJ t	        d	t         | :      :      z  d+ |:      z  d+ |:      z  z
        t	        dt         |:      :      z  d- | :      z  d, |:      z  z         t	        dt         |:      :      z  d | :      z  d |:      z  z
        f}*d	t	        d	t         | :      :      z  d+ |:      z  d+ |:      z  z
        t	        dt         |:      :      z  d- | :      z  d, |:      z  z         t	        dt         |:      :      z  d | :      z  d |:      z  z
        f | :       |:       |:      g | :      d |:      d |:      did
d
d
t        dt        d.d	      t        d+d	      gt        d,d      dt        d-d      gt        dd      t        dd      dgg       dd
d
}+t        |* | :       |:       |:      g:      |+k(  sJ t	        t         | :      :       | :       |:      z   d!z         t	        t         |:      :      d | :      z  d |:      z  z   d/z         f8dt	        t         | :      :       | :       |:      z   d!z         t	        t         |:      :      d | :      z  d |:      z  z   d/z         f | :       |:      g | :      d |:      did
d
d0d
t        ddgd1d2gg       t        d!gd/gg      d3d4},t        89:      |,k(  sJ t	        t         | :      :      d:z   | :      z  d |:      z  z         t	        t         |:      :      d | :      z  d:z   |:      z  z         f8dt	        t         | :      :      d:z   | :      z  d |:      z  z         t	        t         |:      :      d:z   |:      z  d | :      z  z         f | :       |:      g | :      d |:      did
d0d
t        d2:z  d1gd1d2:z  gg       t        d:dz  z  dz  d:z  gd:z  d:dz  z  dz  gg      d5d
d6},t        89:      |,k(  sJ t	        | | :      : |:      z  z   :z         t	        |: | :      z   |:      z         g8dt	        t         | :      :      : |:      z  :z    | :      z         t	        t         |:      :      : | :      z   |:      z         g | :       |:      g | :      d |:      did
d0d0d
t        d: g: dgg       t        ::dz  dz  g:dz  dz  :gg      t        :gdgg      d7d8},t        89:      |,k(  sJ t	        |: | :      z  : |:      z  z   :z         t	        |: | :      z  : |:      z  z   t        :      z         g}-dt	        t         | :      :      : | :      z  : |:      z  z   :z         t	        t         |:      :      : | :      z  : |:      z  z   t        :      z         g | :       |:      g | :      d |:      did
d0d
t        :gt        :      gg      t        ::g::gg      d0d7t        :dz  dz  :dz  dz  g:dz  dz  :dz  dz  gg      d9}t        |-9:      |k(  sJ t	        |: | :       |:      z    |:      z   dz   z        t	        |: | :       |:      z    |:      z   z        t	        |: | :       |:      z    |:      z   z        g}.d	t	        t         | :      :      : | :       |:      z    |:      z   dz   z        t	        t         |:      :      : | :       |:      z    |:      z   z        t	        t         |:      :      : | :       |:      z    |:      z   z        g | :       |:       |:      g | :      d |:      d |:      did
d0d0d
t        : : : g: : : g: : : gg       t        :dz  dz  :dz  dz  :dz  dz  g:dz  dz  :dz  dz  :dz  dz  g:dz  dz  :dz  dz  :dz  dz  gg      t        :gdgdgg      d7d8}/t        |.|d d :      |/k(  sJ t	        | | :       |:      z   : |:      z  z   dz         t	        | | :      : |:      z  z    |:      z   d:z         t	        |: | :      z   |:      z    |:      z   :z         g}0d	t	        t         | :      :      : |:      z   | :      z    |:      z   dz         t	        t         |:      :      : |:      z   | :      z    |:      z   d:z         t	        t         |:      :      : | :      z  :z    |:      z    |:      z         g | :       |:       |:      g | :      d |:      d |:      did
d0d0d
t        dd: gd: dg: ddgg       t        :::dz  dz  g::dz  dz  :g:dz  dz  ::gg      t        dgd:g:gg      d7d8}1t        |0|d d :      |1k(  sJ : | :       |:      z    |:      z    |:      z   z  }2t	        ||2      t	        ||2      t	        ||2dz         t	        |	|2      g}3dt	        t         | :      :      : |:       | :      z    |:      z    |:      z   z        t	        t         |:      :      : |:       | :      z    |:      z    |:      z   z        t	        t         |:      :      : |:       | :      z    |:      z    |:      z   z  dz         t	        t         |:      :      : |:       | :      z    |:      z    |:      z   z        g | :       |:       |:       |:      g | :      d |:      d |:      d |:      did
d0d0d
t        : : : : g: : : : g: : : : g: : : : gg       t        :dz  dz  :dz  dz  :dz  dz  :dz  dz  g:dz  dz  :dz  dz  :dz  dz  :dz  dz  g:dz  dz  :dz  dz  :dz  dz  :dz  dz  g:dz  dz  :dz  dz  :dz  dz  :dz  dz  gg      t        dgdgdgdgg      d7d8}4t        |3|:      |4k(  sJ t        d;      }5t	        d! | :      z  d |:      z  z   dt         | :      :      z  z   t         | :      :df      z   d	t         |:      :      z  z   dt        t        :z        z        t	        d	 | :      z  d |:      z  z   dt         | :      :      z  z   d<t         |:      :      z  z   t         |:      :df      z   dt        t        :z        z        f8dt	        d! | :      z  d |:      z  z   dt         | :      :      z  z   t         | :      :df      z   d	t         |:      :      z  z   dt        t        :z        z        t	        d	 | :      z  d |:      z  z   dt         | :      :      z  z   d<t         |:      :      z  z   t         |:      :df      z   dt        t        :z        z        f | :       |:      g | :      d |:      did
d0d
t        dt        t        :z        z  gdt        t        :z        z  gg      dd
d
d=},t        89:      |,k(  sJ t	        d:dz  z  d:z  z   dz   dz  t         | :      :df      z  d | :      z  d> |:      z  z         t	        d:dz  z  d:z  z   dz   dz  t         |:      :df      z   | :      d! |:      z  z         f}-dt	        d:dz  z  d:z  z   dz   dz  t         | :      :df      z  d | :      z  d> |:      z  z         t	        d:dz  z  d:z  z   dz   dz  t         |:      :df      z   | :      d! |:      z  z         f | :       |:      g | :      d |:      did
d
d
d3t        t        d?d      d>gdt        d@d      gg      t        d:dz  z  d:z  z   dz         t        dA      t        :t        dA      d<z  z
  t        dd<      z         z  dAz  t        dA      t        :t        dA      d<z  z   t        dd<      z         z  dAz  z
  d
|5d
d
dB}t        |-9:      |k(  sJ :t         | :      :      z   | :      z
  t        :      z  :t         |:      :      z   |:      z
  t        :      z  z   t         | :      :df      z   :dz  :t         | :      :      z   | :      z
  z  ::t         |:      :      z   |:      z
  z  z   t         |:      :df      z   f}.d:t         | :      :      z   | :      z
  t        :      z  :t         |:      :      z   |:      z
  t        :      z  z   t         | :      :df      z   :dz  :t         | :      :      z   | :      z
  z  ::t         |:      :      z   |:      z
  z  z   t         |:      :df      z   f | :       |:      g | :      d |:      did
d
d
dt        : t        :      z  : t        :      z  g:d	z   :dz   gg      d
d
dC}/t        |.9:      |/k(  sJ t	        |
| | :      z  ||z  z
        t	        |||z  | |:      z  z         f}0dt	        t         | :      :df      | | :      z  |t         |:      :      z  z
        t	        t         |:      :df      | |:      z  |t         | :      :      z  z         f | :       |:      g | :      d |:      did
d
d
dd
d
dD
}1t        |09:      |1k(  sJ t        dEt              \  }6}7t        dF      \  }}5 |6:       |7:      g9t	        t         |6:      :      dz  dt         |6:      :      z  z
  dz   d      t	        |  |6:      z  t         |7:      :      z   d      g8d
t	        t         |6:      :      d      t	        t         |7:      :      | |6:      z        gt	        t         |6:      :      d	      t	        t         |7:      :      | |6:      z        ggd},t        89:      |,k(  sJ t        t        89:fdG       t	        t         |6:      :      d |6:      z   |7:      z   dz   :z        t	        t         |7:      :       |6:      d |7:      z  z   :z        g}-dt	        t         |6:      :      d |6:      z   |7:      z   dz   :z        t	        t         |7:      :       |6:      d |7:      z  z   :z        g |6:       |7:      g |6:      d |7:      did
d0d
t        dgdgg      t        ddgddgg      d0dH|5t        :      t        dt        :      z  t        :      gt        :      dt        :      z  gg      dI}t        |-9:      |k(  sJ t	        t         |6:      :      d |6:      z   |7:      z   :z        t	        t         |7:      :       |6:      d |7:      z  z   :z        g}.dt	        t         |6:      :      d |6:      z   |7:      z   :z        t	        t         |7:      :       |6:      d |7:      z  z   :z        g |6:       |7:      g |6:      d |7:      did
d
d
t        ddgddgg      d0dJ|5t        dgdgg      t        :      t        dt        :      z  t        :      gt        :      dt        :      z  gg      dK}/t        |.9:      |/k(  sJ y )LNz
x, y, z, wr9   zt k lrA         r<      r?   Ti)is_implicit	canon_eqsr@   r=   r   r   r   r   r=   type1)
no_of_equationeqfuncorder	is_linearis_constantis_homogeneous
func_coefftype_of_equation
is_general)r   r   r   r>   r   r   r>   r   type0)	rg   rh   ri   rj   rk   rm   rp   ro   is_higher_order   rC   )r   rC   r`   )r?   r   )rc   rt   r   r>         	   )r   r   )irC   r   )ru          )   )rz   )r>   ir{   )iirc         i   Fr   rz   type2)rg   rh   ri   rj   rk   rl   rm   rp   rn   rhsro   type3)rg   rh   ri   rj   rk   rl   rm   rn   commutative_antiderivativero   rp   type4)rg   rh   ri   rj   rk   rl   rm   rp   rn   r   r   ro   )rg   rh   ri   rj   rk   rm   rp   r   rn   rl   ro   r   
   t_   )rg   rh   ri   rj   rk   rm   rp   r   ro   is_second_orderrs   #   5   E   !   )rg   rh   ri   rj   rk   rm   rp   ro   A0zg(t)tauis_transformedr   r   rs   )rg   rh   ri   rj   rk   rm   rp   ro   A1r   rs   )
rg   rh   ri   rj   rk   rm   rp   ro   r   rs   f gzy t_c                  $    t         d d       S Nr=   )r   )eq1rH   r;   s   rI   rJ   z.test__classify_linear_system.<locals>.<lambda>x  s    6sE"1IqI rK   type6)rg   rh   ri   rj   rk   rm   rp   r   rn   rl   ro   r   r   r   type5)rg   rh   ri   rj   rk   rm   rp   rn   rl   ro   r   r   r   r   )r   r   r   r   r
   r   r   r   r   r   r   r   r   r/   
ValueError);r3   yzwklx1y1z1w1x2y2funcs_2rT   rV   sol2eqs_2_1eqs_2_2rX   answer_3rZ   answer_4rG   answer_5rM   answer_6eqs_7answer_7eqs_8answer_8eqs_9answer_9eqs_10	answer_10eq11sol11eq12sol12eq13sol13eq14sol14eq15sol15sol1eq2eq3sol3eq4sol4	sum_termseq5sol5r   r4   r5   r   rH   r;   s;                                                           @@@rI   test__classify_linear_systemr   G   s2   84JAq!QgGAq!	adAB	adAB	adAB	adAB	adAq	B	adAq	BqT1Q4LEqtQqTl"GVb1Q4i!qt*,q2vQ1/EAaD/PST/TVE"5%3;;;"a%[2!9$qAaDz1AFR!Vad]4JQQRSTQUX4UXY4Y[Ej1q1DQqT!a!fQh9N4O3OPz!A$"BqD1IaK!A#$5!A$q$@AC
1Q4#T#ad(1*q1vax*?%@Az!A$"BqD1IaK!A#$5!A$q$@ACDED
 #5%3t;;;*QqT1%S1XaZ!AaD&(-B(C'CDz!A$"BqD1IaK!A#$5!A$q$@ACG"7E15===*QqT1%tC!HQJ1Q4,A'BCz!A$"BqD1IaK!A#$5!A$q$@ACG"7E15===Vb1Q4i!qt*,q2vQqT	/AA!H/LPQTVPVYZ[\Y]P]acfghifjajlE"#qtGa!fqAaD!!444	!A$h1Q4!JqtQ///dQz!A$"""dZ!a  " dAaD!A$!%tQ!a1q!A$2r1oxA1-sA!Q1a0HQNA	  ! !
 !!H" #5'15AAAVb1Q4i!qt*,q2vQqT	/AA!H/LPRUVWXUYPY]_bcdebf]fhE"#1IAaD 1z!A$':#::!A$JQqT!A
1Q4(;$;;qTEJqtQ''qTEJqtQ'') dAaD!A$!%tQ!a1q!A$2
2q/8B?Aq	1
3
HQNAq	1			  
 !!H" #5'15AAArTBqtG^a1h&+adR!Wnq1v.EaPQdVX[\]^[_V_aE"#BqtGa!f,<qAaDRSAT?T,TWabcdebfijlmhnWo,oAaD1QqT6!Aj1q&9$99AaD5:aPQdTUCV;VYZ[\Y]X]`jklmnkoa Y,dAaD!A$!51q!A$PQSTUVSWYZ\]^_\`bc@dDV]rvxH #5'15AAAAadFR!W$%r"a!fq1vo'>2r!A$wQRSTUVSWQWGW@XYE"#Bz!A$/BAadFRPQRSPTWDT,UWYZdefgheiklZmoqrsturvovyz{|}~{yo  XAz!A$"BqtGa!f$45,7AB1qtQqT@R^_`a^bdeghijgkmnpqrsptvw]xdd!&&&#( ) ) !(t=H #5'#2,:hFFFAaD\2b!A$<(E"#Bz!A$/BAaD,I2jYZ[\Y]_`NacdefcgKh+i1qt!a1q/APTei"&v:;R9;a?B 8C 7C %,4AH #5%3x???BqtG_bR!Wq1v%562q1v!A$QRSTUVSWQW?W8XYE"#Bz!A$/BBqtG,LbQ[\]^_\`bcQdfhijklimfmpqrsturvpvfvNwz!A$"AadFQqtVOa!f$<=,?IJ1qQRtUVWXUYHZfghifjlmopqrosuvxyz{x|~  fAdd!)))#+ , , !(t=H #5'#2,:hFFFAadFQqtVOa!f,-r"adR!Wnq1v6M/NPRSUWYZ[\]Z^W^acdefgdhahWhkmnopqnrkrWrPstE"#Bz!A$/BAadFQqQRtVOVWXYZ[X\V\D\,]:adA&!r!A$w1Q4(?@"ZPQRSPTVWEXZ\]^_`]aZadfghijgkdkZknpqrstqunuZuBv,x1qtQqT*adAqtQ!a5P_c#t%+++'-  . . %,4AH #5'#2,:hFFF2sAaD1Q4K()2adC1!4E+F1R4QTVWXYVZ]^_`]aVaQbHcdF#$R*QqT12E0Er!A$wQSTUVWTXQXGX-Y1Z!a((#ad(R!W*<=r!JqQRtUVDWBWY[\]^_\`Y`cefghifjcjYj?k-m1qtQqT*adAqtQ!a5P_c#t%#$hsA&6"a I!)"aa#q9I J!)#q!18B?Q G'I  J J %,4AI #673B<;yHHHr1QqT6BqtG#$bQqtVa!f_&=r"b1gPQRSTURVPVFV?WXD JqtQ,?1Q4"QqT'AQ)RTVWabcdebfhiWjlnopqroslsvwxyz{x|v|l|T}z!A$"BqtGa!f$45)7AB1qtQqT@R^_`a^bdeghijgkmnpqrsptvw]xdd[a=-c9 \: [:OVfjlE #4"q9UBBBz!A$"AaD)2j1q.A1Q4+HID JqtQ,?1)F:VWXYVZ\]K^`abc`dHe(fdAaD\QqT1adA,>Tbf#FGG< 5 4+2$	HE
 #4!A$!q9UBBBz!A$"BqtG,bAaD!1Db1gPQRSTURVPVFV.Wz!A$"AadFQqtVOa!f$<=?D z!A$B1I&:adA+>QqT	APQRSPTH@T(Uz!A$A!Hq1Q4x/!ad(:;)=GHtQqTSTUVSWFXtQ!a1q1UYmq"$     6=DRE #4!A$!ad);Q?5HHH 	:adA!A$1Q4!AaD& 892j1q>QSTUVSWZ\]^_`]aZaSadefghifjdjSj;k
:adA1Q4"QqT' 1BqtG ;<>D  !z!A$A!Hq1Q4x/!ad(:;R
1Q4QR@SUVWXUY\^abcdae\eUehilmnolphpUp=qz!A$B1IQqT	1B1I=>)@JKA$PQRSPTVWXYVZI[tQ!a1q1UYmq" $" # # 9@tUE #4!A$!ad);Q?5HHHqAaD!$$b1g1Q4&78"Qz!A$PQ?R=RTWXYZ[X\T\_abcdebf_fTf:gqAaD!$$b1g1Q4&78:D q:adAQqT	B1I 561z!A$PQ?R;RTWZ[\]Z^T^acfghifjajTj8kq:adAQqT	B1I 56)8BCA$!aPQdAStQ!a1q1UYmq"Xc1%xA72q/1hsA&673"HROQ7$9 : : PWfjlE #4!A$!ad);Q?5HHH d1Q4mQqTAaD[1_-r$qtQ-1Q4!AaD&SUAU/V
WC:adA+>!qta(P
:adA!A$1Q4" 45(7AB1qtA$1Q4#$t_dtxBx"b233FaD2$<<PfmoD #3q1T999 d1Q4mQqS1X!A$./D1qM1QqT6AaCPQRSPTHCT1U
VC:adA+>!AaD1QqT6@Q(RTVWabcdebfhiWjlmnolopqrsptltwxyz{|y}w}l}T~'qT1Q4LAaD!QqT1+=Daf"6RTRLRQSTUQU,:W3X2Xx~q!tVAXAaC !Qq!tVAX"6@8 y9NUeikD #3q1T999 b!A$1Q4-!#$bQqtVad]&;
<C:adA+>!A$
QqT@Q(RTVWabcdebfhiWjadFQqTMU (&'dAaD\QqT1adA<N]a E^dhjmnlngoRHf _ ^6<Q1Q?ORSUVRVWXRX_`Qa=b6caS1#;W	>D
 #3q1T999b!AaD&1QqT6/A%&2q1v!A$Q/G(H
IC:adA+>!A$1Q4RS@S(TVXYcdefgdhjkYladFQqtVOc!f$W& ('121qt!aQRSTQUWXGYhl#4qTWXYTZS[G\@]aVaV$%eQX*0AqDFAqDF3Cad1faQRdSTfEU1V*W	YD
 #3q1T999b!QqTAaD[1Q4'!+,-r"a1!qt9K6L/MrRTVWYZ[\Y]`abc`dYdghijgkYkVlOm
nC:adA+>1Q4!A$;QRSTQUCUXYCY@Z([z!A$"Aqtad{QqT'9$:;R
1Q4QR@SUVXYZ[X\_`ab_cXcfghifjXjUk=l(nqT1Q41&!A$1Q4AaD!1L[_U$vZ[Y[^_]_bcacXdhigilmkmBg"qb1"W P  O ?EAaQRTUQUVWQWYZ\]Y]^_Y_H`cdfgcghiciqDFAqDFcd1fad1fad1f5G7 @8@F!qcTUSVGW@XD #3a8D@@@b!A$1+!A$&*+RAaD1QqT6MAaD4H24M-NPRSUWXYZ[\Y]W]`abc`dWdghijgkWknoWoPp
qC:adA+>!A$1PQRSPT@TWX@X(Y[]^hijklim_!A$1!$r)\+,.z!A$/BAadFQJQRSTQUDUXYZ[X\D\,](_ijklimaD!A$i#$Q4AaD!QqT1"=Daf#4RTVX[\Z\Q]`befdfhj_kopnpn P I H5;AAqRStTUv>V^_abdeaefgagYAaaa(=* 6+39aD2$!:M3NdkmD #3a8D@@@1Q4!A$;1%!,-Ib)bY/B	A1F2yHY
ZC:adA+>1Q4!A$;QRSTQUCUXYZ[X\C\@](^z!A$"Aqtad{QqT'9AaD'@$ABBzRSTURVXYGZ\]_`ab_cfghifj_jaD`Q4` ]] E!*QqT1"5q!A$1+!:LqQRt:S7TU(WabcdaeghijgkaD!A$a#$Q4AaD!QqT1adA"FUYjo#4STRTWXVX[\Z\_`^`QaefdfijhjmnlnBd"qb1"qb!QBQB#3P5 I6 H6U[_`bc_cde_eghjkgklmgmqDFAqDF_d1fad1fad1fad1f=1Q1QPQSTPTUVPVXY[\X\]^X^?_bcefbfghbhqDFAqDFAqDFb$]% V&.4sQC!qc5J.KahjD #33t;;; 
Ba!fq1vo*QqT1"5 55
1Q4!Q8PPSTU_`abc`dfgUhShhjlmpqrstqtmujuva!fr!A$w:adA#6!66:adA;N9NNQ[\]^_\`cdfgbhQiiklmpqrstqtmukuvxC1QqT6AadF?Qz!A$PQ?R=R+RU_`abc`dghjkflUm+mj1q!!,"#%c!A#h;)013AadFR!W4DqTUVWTXZ[I\G\4\j1q!!5"$.qtaV$<5=>?AaCj2J(KUVWXUY[\]^[_T`qT1adATUZ^gmAaC[MQs1Q3xZ=o* h+@G\`#%D #3q1T999qAv!|a!#JqtaV$<<a!fr!A$w>NOqAv!|a!#JqtaV$<<adQqtVmLNCAadFQqSL1,<q+@AaDSTVWRXAY+Y[\]^_`]a[adfghijgkdk[k(l!Q$1q 1$Z!q!f%==qta!f}M(OYZ[\Y]_`ab_cXdqT1adATTY] 'v"aB8OUVX`acefXgQh6i/jtxyz{|~{y  CD  EF  CF  zFz ub#a$r(1*nx1~&E"FFrIDQSHUXYZ]abd]efg]gYgjrstvwjxYxUyLyz|L||""Z^`D #3q1T999j1q!!AaD(#a&0Aj1q6I4IAaD4PRUVWRX3XX[efghifjmnpqlr[ssqD!JqtQ''!A$./!Qz!A$7J5JQqT5Q2RRU_`abc`dghjkflUmmoC:adA+>)>1)Es1v(MQRS]^_`a^bdeSfQfaDRa&Q )%adQF3)456T1Z!a=P;PSTUVSW;W5X[\^_`jklmnkoa _1_ \ 6#AaD1a&162(3=>qT1Q4LTUVWTXZ[]^_`]acdSeT_fqbQi!CF+1a4%adU-CDEZ^#%D #3q1T999b!AaD&1R4- "R2!A$"7
8C:adQF+CQqtVaPZ[\]^[_abPcNcEc(dz!A$A'1Q4!JqtQ4G2G)GH(JTUVWTXZ[\]Z^S_klmnkoqtQk&*dRVGD #3q1T999
 5h'DAqFOEArqT1Q4LEj1q!1$qAaD!)<'<<q@!Dr!A$wAaD!,,a02Cz!A$2B7JqtQ<OQRSTUVSWQW9XY*QqT1%q)2j1q.A1QqT6+JKMND #3q1T999
:IJj1q!AadFQqTMA$5q#892j1q>QTUVWTX[\]^_`]a[aTacdSd;e
fC:adA+>1Q4!A$QRARTU@U(VXZ[efghifjlm[nqTAadF]AY ( *+A$!1q!A$PQ@Rae#4!qc{@ScimnmAk d).GSU^abc^d*0Ac!fHA3GCPQFTUVYZ[V\T\I]1^*_	aD
 #3q1T999j1q!AadFQqTM1#45r*QqT1:MPQRSPTWXYZ[\Y]W]P]_`O`7a
bC:adA+>1Q4!A$PQ@Q(RTVWabcdebfhiWjqTAadF]AU ( *+A$!1q!A$PQ@Rae"$fPQSTvXY[\W]M^F_wb1#PQsAT]`ab]c*0Ac!fHA3GCPQFTUVYZ[V\T\I]1^*_	aD
 #3q1T999rK   c                    	 ddl m} m}m} ddlm t        d      	t        dd      D ]  }  ||      	       ||      k(  rJ  t        dd      D ],  } ||      }t        	       ||      z  } |	      |k(  r,J  t        dd      D ](  } | ||d       } | ||	fd      } |	      |k(  r(J   | ddgd	dgg      } | t        	      t        	      gt        	       t        	      gg      } |	      |k(  sJ  | d
dgd
dgg      } | dt        	       z  t        	      z  t        	       t        	      z  z   dt        	       z  t        	      z  gd
t        	       z  t        	      z  dt        	       z  t        	      z  t        	       t        	      z  z   gg      } |	      |k(  sJ  | g dg dg dg      } | d
	z  t        d	z        z  dt        d	z        z  dz  z   t        d	z        dz  z
  d
	z  t        d	z        z  dt        d	z        z  dz  z   dt        d	z        z  dz  z
  t        d	z        d
z  t        d	z        d
z  z
  gd	z  t        d	z        z  t        d	z        dz  z
  t        d	z        dz  z   d	z  t        d	z        z  t        d	z        dz  z
  dt        d	z        z  dz  z   t        d	z         d
z  t        d	z        d
z  z   gd	z  t        d	z        z  d	z  t        d	z        z  t        d	z        gg      } |	      |k(  sJ  | g dg ddddt        d       dz  gddt        d      d
z  t        d      d
z  gg      } | t        	      	t        	      z  d	z  t        d	z  dz        z  d	z  t        	      z  z   dt        d	z  dz        z  z   dt        	      z  z
  d	z  t        d	z  dz        z  d
	z  t        	      z  z
  dt        d	z  dz        z  z
  dt        	      z  z   gdt        	      	 t        d	z  dz        z  dt        d	z  dz        z  z
  dt        	      z  z   	t        d	z  dz        z  d
z  d
t        d	z  dz        z  z   d
t        	      z  z
  gdd	t        d	z  dz        z  dz  t        d	z  dz        z   	 t        d	z  dz        z  dz  gdd	t        d	z  dz        z  d
z  	 t        d	z  dz        z  dz  t        d	z  dz        z   gg      } |	      |k(  sJ  | g dg dg dg dg      } | t        	      t        	      ddgt        	       t        	      ddgddt        	      t        	      gddt        	       t        	      gg      } |	      |k(  sJ  | g dg dg dg dg      } | t        	      t        	      	t        	      z  	t        	      z  gt        	       t        	      	 t        	      z  	t        	      z  gddt        	      t        	      gddt        	       t        	      gg      } |	      |k(  sJ  | dt        gt        dgg      } | t        t        	z        d
z  t        t         	z        d
z  z   t        t        	z        d
z  t        t         	z        d
z  z
  gt        t        	z        d
z  t        t         	z        d
z  z
  t        t        	z        d
z  t        t         	z        d
z  z   gg      } |	      |k(  sJ  | g dg d g d!g       | 	dgddgg      t        t        	fd"       t        t        	fd#       t        t        	fd$       t        t        	fd%       y )&Nr   )r   eyezeros)
matrix_expr;   r=   rt   c                     | |k(  r| dz   S dS Nr=   r    )ijs     rI   rJ   z!test_matrix_exp.<locals>.<lambda>  s    AqDQqS a rK   c                 4    | |k(  rt        | dz   z        S dS r   )r   )r   r   r;   s     rI   rJ   z!test_matrix_exp.<locals>.<lambda>  s    Aac1W 1 rK   r>   r<   rz   r   r?   rC   )rv   rw   r_   )rz   r>   rd   )r@   r@      r   rA   r@   r   )r=   r=   r   r   )r   r=   r=   r   r   0   )r   r=   r   r   )r>   r   r   r   re   rq   )r>   r   r   r=   )r=   r<   r?   )r@   rA   r_   )rt   rt   rt   c                  (      d d d df         S Nr<   r   Mr   r;   s   rI   rJ   z!test_matrix_exp.<locals>.<lambda>  s    z!ArrE(A6 rK   c                  (      d dd d f         S r   r   r   s   rI   rJ   z!test_matrix_exp.<locals>.<lambda>  s    z!BQBE(A6 rK   c                              S Nr   M1r   r;   s   rI   rJ   z!test_matrix_exp.<locals>.<lambda>  s    z"a0 rK   c                  (      d dd df         S r   r   r   s   rI   rJ   z!test_matrix_exp.<locals>.<lambda>  s    z"RaR!V*a8 rK   )sympy.matrices.denser   r   r   sympy.solvers.ode.systemsr   r   ranger   r   r   r   r   r/   r   )
r   r   r   nAexpAtr   r   r   r;   s
         @@@@rI   test_matrix_expr     s`   774sA1c] 1%(A&#a&0001 1c] )FAQ!Q5((()
 1c] )1a78q!DE!Q5((()
 	AQ !ASVSV$AwA&789Eau$$$B!R!"AsA2wYs1vQBA.3r7
3q60ABsA2wYs1vr#qb'z#a&03r73q6>AB E au$$$\:67A 	
1SAY3r!t9Q	&QqS!	3QqSRT]Qs2a4y[QR]5RUVWZ[\]^[^W_U_`aUa5adghjklhldmnodoruvwxyvyrz{|r|d|}
Q$s2a4y.3r!t9Q;
&QqS!
3bd3r!t9ns2a4yQR{6RUVWZ[\]^[^W_U_`aUa6adghjklhldmcmnocoruvwxyvyrz{|r|c|}&'c#bd)mTUVWTWX[\^_`\`XaTasvwyz{w{s|}
 E
 au$$$Aq1Q4%'"AqtAvqtAv&( 	)A 	Q3q61Q3s1Q3q5z>AaCAJ6C!AJFCPQFRqDQqSUOac#a&j82c!A#a%j=H2cRSf9T	V	
CFQBs1Q3q5zMAc!A#a%jL01SV8;Qs1Q3q5z\!^aPSTUVWTWXYTYPZl=Z]^_bcd_e]e=ef	
AqQqSU|A~AaCE
*QBs1Q3q5zM!O<	
AqQqSU|A~r#ac!e*}QQqSU;<
 E au$$$	 	A 	!fc!fa*	!fWc!fa*1Q3q6*1Q3q6*	, -E
 au$$$	 	A 	!fc!fqQx3q6*	!fWc!fqbQi3q6*1Q3q6*1Q3q6*	, -E
 au$$$ 	AA A1XaZ#qbd)A+s1Q3xzC1IaK781XaZ#qbd)A+s1Q3xzC1IaK78: ;E au$$$ 		9i01A	!Q!Q 	!B
:67
:67
:01
:89rK   c                  h   t        dt              \  } }}t        d      } | |       ||       ||      g}t         | |      j                  ||       | |      d ||      z  z         t         ||      dz    ||      j                  |       | |      z         g}t        t	         | |      |df       | |      d ||      z  z         t        t	         ||      |       | |        ||      z   dz         gg}t        ||d d |      |k(  sJ t         | |      j                  |       ||      j                  |       | |      z         t         ||      j                  |      dz   | |       ||      z         t         ||      j                  |       | |            g}t        t	         | |      |      d | |      z        t        t	         ||      |      t         | |       ||      z                t        t	         ||      |       | |            gt        t	         | |      |      d | |      z        t        t	         ||      |      t         | |       ||      z               t        t	         ||      |       | |            gg}t        |||      |k(  sJ y )Nf g hr9   r3   r<   r=   )r   r   r
   r   r   r&   r   )	r4   r5   r6   r3   rH   eqs1r   eqs2r   s	            rI   test_canonical_odesr     st   g8,GAq!AqT1Q41EqtyyA!q1v.1Q4!8QqTYYq\AaD=P0QRD
1Q4!Q(!A$1Q4-8"Z!a=PSTUVSWRWZ[\]Z^R^abRb:cdeD$bq	1-555qtyy|QqTYYq\AaD012adiilAoqtaPQd{3SUWXYZ[X\XaXabcXdfghifjUklD
1Q4#QqtV,bAaD!1DtAaDSTUVSWKGXFX.Y[]^hijklimop^qstuvsw[xy
1Q4#QqtV,bAaD!1Dd1Q4RSTURV;FW.XZ\]ghijkhlno]prsturvZwxzD$q)T111rK   c                  )   t        dt              \  } }}}}t        d      \  }}}}t        t         ||      |       ||            t        t         ||      |       ||            g}	t         ||      t        t        |      z        t         ||      t        t        |      z        g}
t        |	      |
k(  sJ t        |	|
      dddgfk(  sJ t        t         ||      |      d ||      z        t        t         ||      |      d ||      z        g}t         ||      t        t        d|z        z        t         ||      t        t        d|z        z        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |      | ||      z        t        t         ||      |      | ||      z        g}t         ||      t        t        ||z        z        t         ||      t        t        ||z        z        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |      | ||      z        t        t         ||      |      | ||      z        g}t         ||      t        t        ||z        z        t         ||      t        t        ||z        z        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |       ||             t        t         ||      |       ||            g}t         ||      t         t        |      z  t        t        |      z  z
        t         ||      t        t        |      z  t        t        |      z  z
        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |      d ||      z        t        t         ||      |      d ||      z        g}t         ||      t         t        d|z        z  t        t        d|z        z  z
        t         ||      t        t        d|z        z  t        t        d|z        z  z
        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |      t         ||      z        t        t         ||      |      t         ||      z        g}t         ||      t         t        t         |z        z  t        t        t        |z        z  z         t         ||      t        t        t         |z        z  t        t        t        |z        z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |      |  ||      z        t        t         ||      |      | ||      z        g}t         ||      t         t        z  t        t         |z  |z        z  t        t        z  t        t        |z  |z        z  z         t         ||      t        t        t         |z  |z        z  t        t        t        |z  |z        z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |       ||       ||      z         t        t         ||      |       ||       ||      z
        g}t         ||      t        d	t        d      z
  z  t        t        d       |z        z  t        d	t        d      z   z  t        t        d      |z        z  z         t         ||      t        t        t        d       |z        z  t        t        t        d      |z        z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |       ||       ||      z         t        t         ||      |       ||       ||      z         g}t         ||      t         t        t        d|z        z  z         t         ||      t        t        t        d|z        z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |      d ||      z   ||      z         t        t         ||      |       ||       d ||      z  z         g}t         ||      t        t        d|z        z  t        |      z  t        t        d|z        z  t        |      z  z         t         ||      t        t        d|z        z  t        |      z  t        t        d|z        z  t        |      z  z
        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |       ||      d ||      z  z         t        t         ||      |      d ||      z   ||      z         g}t         ||      t         t        |       z  t        t        d|z        z  z         t         ||      t        t        |       z  t        t        d|z        z  z         g} t        |      | k(  sJ t        ||       dddgfk(  sJ t        t         ||      |      d
 ||      z   ||      z         t        t         ||      |       ||       d ||      z  z         g}!t         ||      t        |z  t        d|z        z  t        t        z   t        d|z        z  z         t         ||      t         t        d|z        z  t        |z  t        d|z        z  z
        g}"t        |!      |"k(  sJ t        |!|"      dddgfk(  sJ t        t         ||      |      | ||      z        t        t         ||      |      | ||      z        g}#t         ||      t         t        | |z        z  t        t        ||z        z  z         t         ||      t        t        | |z        z  t        t        ||z        z  z         g}$t        |#      |$k(  sJ t        |#|$      dddgfk(  sJ t        t         ||      |      | ||      z        t        t         ||      |      | ||      z        g}%t         ||      t         |z  t        | t        ||z        z        z  t        ||z        z  t        |z  t        |t        ||z        z        z  t        ||z        z  z         t         ||      t        t        | t        ||z        z        z  t        t        |t        ||z        z        z  z         g}&t        |%      |&k(  sJ t        |%|&      dddgfk(  sJ t        t         ||      |      | ||      z  | ||      z  z         t        t         ||      |      | ||      z        g}'t         ||      dt        z  |z  t        ||t        |dz  d
|z  |z  z         z   z  dz        z  |t        |dz  d
|z  |z  z         z
  z  dt        z  |z  t        ||t        |dz  d
|z  |z  z         z
  z  dz        z  |t        |dz  d
|z  |z  z         z   z  z
        t         ||      t        t        ||t        |dz  d
|z  |z  z         z   z  dz        z  t        t        ||t        |dz  d
|z  |z  z         z
  z  dz        z  z         g}(t        |'      |(k(  sJ t        |'|(      dddgfk(  sJ t        t         ||      |      | ||      z   ||      z         t        t         ||      |      | ||      z   ||      z
        g})t         ||      t        |z  t        |t        |dz  d	z         z        z  t        |dz  d	z         d	z
  z  t        |z  t        | t        |dz  d	z         z        z  t        |dz  d	z         d	z   z  z
        t         ||      t        t        |t        |dz  d	z         z        z  t        t        | t        |dz  d	z         z        z  z         g}*t        |)      |*k(  sJ t        |)|*      dddgfk(  sJ t        t         ||      |      d      t        t         ||      |      d      g}+t         ||      t              t         ||      t              g},t        |+      |,k(  sJ t        |+|,      dddgfk(  sJ t        t         ||      |      d ||      z   ||      z
        t        t         ||      |       ||            g}-t         ||      t        |z  t        |      z  t        t        z   t        |      z  z         t         ||      t        t        |      z  t        |z  t        |      z  z         g}.t        |-      |.k(  sJ t        |-|.      dddgfk(  sJ t        t         ||      |       ||            t        t         ||      |       ||       ||      z         g}/t         ||      t        t        |      z        t         ||      t        |z  t        |      z  t        t        |      z  z         g}0t        |/      |0k(  sJ t        |/|0      dddgfk(  sJ t        t         ||      |      d ||      z        t        t         ||      |       ||       ||      z         g}1t         ||      dt        z  t        d|z        z        t         ||      t        t        d|z        z  t        t        |      z  z         g}2t        |1      |2k(  sJ t        |1|2      dddgfk(  sJ t        t         ||      |      d ||      z        t        t         ||      |       ||            g}3t         ||      t        t        d|z        z        t         ||      t        t        |      z        g}4t        |3      |4k(  sJ t        |3|4      dddgfk(  sJ y )Nz	f g x y hr9   za b c tTr   r<   r?   r   r=   r@   )r   r   r
   r   C1r   C2r   r   r   r   r   r   )5r4   r5   r3   r   r6   abcr;   r   r   r   r   eqs3r   eqs4r   eqs5r   eqs6sol6eqs7sol7eqs8sol8eqs9sol9eqs10sol10eqs11r   eqs12r   eqs13r   eqs14r   eqs15r   eqs16sol16eqs17sol17eqs18sol18eqs19sol19eqs20sol20eqs21sol21eqs22sol22s5                                                        rI   #test_sysode_linear_neq_order1_type1r    s[   KX6MAq!Q#JAq!Qz!A$"AaD)z!A$"AaD)+DqtRAYqtRAY!D$<4$%$A777z!A$"AadF+z!A$"AadF+-DqtRAaC[!qtRAaC[!#D$<4$%$A777z!A$"AadF+z!A$"AadF+-DqtRAaC[!qtRAaC[!#D$<4$%$A777 z!A$"AadF+z!A$"AadF+-DqtRAaC[!qtRAaC[!#D$<4$%$A777z!A$"QqTE*z!A$"AaD)+DqtbSQZ"SV)+,qtRAYCF*+-D$<4$%$A777z!A$"BqtG,z!A$"AadF+-DqtbSQqS\Bs1Q3xK/0qtRAaC[2c!A#h;./1D$<4$%$A777z!A$"AadF+z!A$"AadF+-DqtbSaRT]RAaC[01qtRQBqD	\Bs1Q3xK/02D$<4$%$A777z!A$"QBqtG,z!A$"AadF+-DqtaRU3r!tAv;&2c!A#a%j89qtRQBqDF^bQqSUm346D$<4$%$A777z!A$"AaD1Q4K0z!A$"AaD1Q4K02DqtRT!W%c47(1*o5AQK8HTRSWUVY8WWXqtRT!WHQJ'"Sa^*;;<>D$<4$%$A777
1Q4#QqTAaD[1
1Q4#QqTAaD[13E!rcBs1Q3xK'(!b2c!A#h;&')E%=E!!!%'D1a&>999
1Q4#QqtVad]3
1Q4#adUQqtV^46E!bQqSk#a&(2c!A#h;s1v+==>!bQqSk#a&(2c!A#h;s1v+==>@E%=E!!!%'D1a&>999
1Q4#QqTAadF]3
1Q4#QqtVad]35E!rc#qb'kBs1Q3xK/0!baRj2c!A#h;./1E%=E!!!%'D1a&>999
1Q4#QqtVad]3
1Q4#adUQqtV^46E!bd3qs8mrBwAaC&889!rc#ac(lRT#ac(]235E%=E!!!%'D1a&>999
1Q4#QqtV,
1Q4#QqtV,.E!rc#qbd)mbQqSk12!baRTlRAaC[013E%=E!!!%'D1a&>999
1Q4#QqtV,
1Q4#QqtV,.E!rc!eC4!9--d1Q3i7"Q$s1T!A#Y;?O:OPTUVWXUXPY:YYZ!baRQqS	\**RAd1Q3iK0@-@@ACE%=E!!!%'D1a&>999
1Q4#QqtVa!f_5
1Q4#QqtV,.E!beAgc!QadQqSUl);%;"<Q">??T!Q$QRSTQTUVQV,EWAWX[\]_[_`a[abefgij1a4!A#a%< j! g""#g$ c% \%&'$q!tac!e|*<&<\> > ?!bQDA!A$6 679::RAq4PQSTPTWXYZWZ[\W\P\K]G]D^_`D`@a=aabdE %=E!!!%'D1a&>999 
1Q4#QqtVad]3z!A$"AadFQqTM24E!bd3qadQh/00$q!tax.12DE1SRSQSTXYZ\]Y]`aYaTbQbMcHceijkmnjnk ff I  qtRAd1a4!8n,--3r$q!tax.7H3I0IIJLE %=E!!!%'D1a&>999
1Q4#Q'z!A$"A&(E!b\qtRLE%=E!!!%'D1a&>999
1Q4#QqtVad]3z!A$"AaD)+E!bd3q6kR"Wc!f$445qtRAYAc!f,-/E%=E!!!%'D1a&>999
1Q4#QqT*z!A$"AaD1Q4K02E!bQi qtRT#a&[2c!f9,-/E%=E!!!%'D1a&>999
1Q4#QqtV,z!A$"AaD1Q4K02E!ad3qs8m$qtRAaC[2c!f9,-/E%=E!!!%'D1a&>999
1Q4#QqtV,z!A$"AaD)+E!bQqSk"qtRAY!E%=E!!!%'D1a&>999rK   c                  o   t        d      } t        d      }t        d      }t        d      }t        d      }t        d      \  }}}}}	}
t        t	         ||       |       |  ||       z  | ||       z  z   | ||       z  z   |
 ||       z  z         t        t	         ||       |       | ||       z  | ||       z  z
  | ||       z  z         t        t	         ||       |       | |z
  |	z
   ||       z        t        t	         ||       |       |	 ||       z  |
 ||       z  z
        g}t         ||       t
        |z  |z  t        ||
z
  z  t        |
 | z        z  ||z   |
z
  z  z
  t        |||z   |
z
  z  |dz  z
  |||	z   |
z
  z  z
  |	|
z  z   z  t        |  ||z   |	z   z        z  |	| |z
  |z   |z   |	z   z  z  z
  t        t        |  ||z   z        z  z
        t         ||       t
        t        |z  t        |
 | z        z  ||z   |
z
  z  z
  t        | ||z   |
z
  z  ||z  z   |dz  z   ||	|
z
  z  z   z  t        |  ||z   |	z   z        z  |	| |z
  |z   |z   |	z   z  z  z   t        t        |  ||z   z        z  z         t         ||       t         ||z   |	z   |
z
  z  t        |  ||z   |	z   z        z  |	z        t         ||       t        t        |
 | z        z  t        t        |  ||z   |	z   z        z  z         g}t        |      |k(  sJ t        ||      dg d	fk(  sJ t        d
t              \  }}}}}}t        d      \  }}t        dd      \  }}t        t	         ||       |       | ||       z        t        t	         ||       |       | ||       z        t        t	         ||       |       | |z
   ||       z        g}t         ||       t
        t        |z  t        |  ||z   z        z  ||z   z  z
        t         ||       t         |z  t        |  ||z   z        z  ||z   z  t        z         t         ||       t        t        |  ||z   z        z        g}t        |      |k(  sJ t        ||      dg dfk(  sJ d ||       z   ||       z
  d ||       z  z
  t	         ||       |       z   d ||       z   ||       z   d ||       z  z
  t	         ||       |       z   d ||       z   ||       z   d ||       z  z
  t	         ||       |       z   g}t         ||       t        t        d| z        z  t
        dz  t        d      t        z  dz  z   t        t        d      | z        z  z   t        t        d      | z        t        d      t
        z  dz  t        t        dd      z  z   z  z         t         ||       t
        dz  t        d      t        z  dz  z   t        t        d      | z        z  t        t        d      | z        t        d      t
        z  dz  t        t        dd      z  z   z  z         t         ||       t
        t        t        d      | z        z  t        t        t        d      | z        z  z
  t        t        d| z        z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        t	         ||       |        ||       t        dd      z  d ||       z  z    ||       z    ||       t        dd      z  z         t        t	         ||       |        ||       t        dd      z  d ||       z  z    ||       t        dd      z  z         t        t	         ||       |        ||       t        dd      z   ||       t        dd      z  z         t        t	         ||       |        ||       t        dd      z   ||       t        dd      z  z         g}t         ||       t
        t        d| z        z  t        | z  t        d| z        z  z         t         ||       t        t        d| z        z  dt        z  t        d| z        z  z         t         ||       dt        z  t        d| z        z  t        t        d| z        z  t        dd      z  z         t         ||       t        t        d| z        z  t        t        d| z        z  z         g}t        |      |k(  sJ t        ||      dg d	fk(  sJ t         ||       j!                  |        ||             t         ||       j!                  |        ||             t         ||       j!                  |        ||             t         ||       j!                  |        ||             g}t         ||       t
        t        |       z        t         ||       t        t        |       z        t         ||       t        t        |       z        t         ||       t        t        |       z        g}t        |      |k(  sJ t        ||      dg d	fk(  sJ t        t	         ||       |        ||        ||       z         t        t	         ||       |        ||        ||       z         t        t	         ||       |        ||       t        dd      z   ||       z         t        t	         ||       |        ||       dz   ||       dz  z         g}t         ||       t
        t        |       z  t        | z  t        |       z  z   dt        z  | z  t        | t        dd      z        z  z   dt        z  dt        z  z   t        | t        dd      z        z  z         t         ||       t        t        |       z  t        | z  t        | t        dd      z        z  z
  t        dt        z  z   t        | t        dd      z        z  z
        t         ||       t        | z  t        | t        dd      z        z  dz  t        dz  t        z   t        | t        dd      z        z  z         t         ||       t        t        | t        dd      z        z  dz  t        | z  t        | t        dd      z        z  dz  z         g} t        |      | k(  sJ t        ||       dg d	fk(  sJ t        t	         ||       |        ||             t        t	         ||       |        ||             t        t	         ||       |        ||             t        t	         ||       |        ||             t        t	         ||       |        ||             g}!t         ||       t
        t        |       z        t         ||       t        t        |       z        t         ||       t        t        |       z        t         ||       t        t        |       z        t         ||       t"        t        |       z        g}"t        |!      |"k(  sJ t        |!|"      dg dfk(  sJ t        t	         ||       |       d ||       z   ||       z         t        t	         ||       |       d ||       z        t        t	         ||       |       d ||       z        t        t	         ||       |        ||       d ||       z  z         t        t	         ||       |       d ||       z        g}#t         ||       t
        t        d| z        z  t        | z  t        d| z        z  z         t         ||       t        t        d| z        z        t         ||       t        t        d| z        z        t         ||       t        t        d| z        z  t"        | z  t        d| z        z  z         t         ||       t"        t        d| z        z        g}$t        |#      |$k(  sJ t        |#|$      dg dfk(  sJ t        t	         ||       |        ||             t        t	         ||       |        ||             t        t	         ||       |        ||             g}%t         ||       t
        t        |       z        t         ||       t        t        |       z        t         ||       t        t        |       z        g}&t        |%      |&k(  sJ t        |%|&      dg dfk(  sJ t        t	         ||       |       | |z
   ||       z        t        t	         ||       |       | ||       z        t        t	         ||       |       | ||       z        g}'t         ||       t
         ||z   z  t        |  ||z   z        z  |z        t         ||       t        t        || z        z        t         ||       t
        t        |  ||z   z        z  t        z         g}(t        |'      |(k(  sJ t        |'|(      dg dfk(  sJ t        t	         ||       |       | ||       z        t        t	         ||       |       | |z
   ||       z        t        t	         ||       |       | ||       z        g})t         ||       t
        t        |z  t        |  ||z   z        z  |z  z         t         ||       t         ||z   z  t        |  ||z   z        z  |z        t         ||       t        t        |  ||z   z        z  t        z         g}*t        |)      |*k(  sJ t        |)|*      dg dfk(  sJ t        t	         ||       |       | ||       z        t        t	         ||       |       | ||       z        t        t	         ||       |       | |z
   ||       z        g}+t         ||       t
        t        |z  t        |  ||z   z        z  ||z   z  z
        t         ||       t         |z  t        |  ||z   z        z  ||z   z  t        z         t         ||       t        t        |  ||z   z        z        g},t        |+      |,k(  sJ t        |+|,      dg dfk(  sJ t        dt              \  }-}.}/t        d       \  }0}1}2t        t	         |-|       |       d |-|       z   |.|       z         t        t	         |.|       |       |0 |-|       z        g}3t         |-|       t
        t        | t        |0d!z         d!z   z        z  t        |0d!z         d!z
  z  t        t        |  t        |0d!z         d!z
  z        z  t        |0d!z         d!z   z  z
        t         |.|       t
        t        | t        |0d!z         d!z   z        z  t        t        |  t        |0d!z         d!z
  z        z  z         g}4t        |3      |4k(  sJ t        |3|4      dd"d"gfk(  sJ t        t	         |-|       |       d |.|       z  d |/|       z  z
        t        t	         |.|       |       d |-|       z  d |/|       z  z         t        t	         |/|       |       d |-|       z  d |.|       z  z
        g}5t         |-|       dt
        z  t        t        d#      | z        t        d#      t        z  t        dd$      z  t        t        dd$      z  z   z  z
  t        t        d#      | z        t        t        dd$      z  t        d#      t        z  t        dd$      z  z   z  z
        t         |.|       t
        t        dd      z  t        t        d#      | z        t        d#      t        z  t        dd$      z  t        t        dd$      z  z   z  z   t        t        d#      | z        t        t        dd$      z  t        d#      t        z  t        dd$      z  z   z  z
        t         |/|       t
        t        t        t        d#      | z        z  z   t        t        t        d#      | z        z  z
        g}6t        |5      |6k(  sJ t        |5|6      dg dfk(  sJ t        dt	         |-|       |       z  d% |.|       z  d% |/|       z  z
        t        dt	         |.|       |       z  d |-|       z  d |/|       z  z         t        dt	         |/|       |       z  d |-|       z  d |.|       z  z
        g}7t         |-|       t
        t        t        d#      | z        t        d#      t        z  t        dd&      z  t        t        d'd&      z  z   z  z
  t        t        d#      | z        t        t        dd&      z  t        d#      t        z  t        dd&      z  z   z  z
        t         |.|       t
        t        t        d#      | z        t        d#      t        z  t        dd(      z  t        t        dd&      z  z   z  z   t        t        d#      | z        t        t        dd&      z  t        d#      t        z  t        dd(      z  z   z  z
        t         |/|       t
        t        t        t        d#      | z        z  z   t        t        t        d#      | z        z  z
        g}8t        |7      |8k(  sJ t        |7|8      dg dfk(  sJ t        t!         ||       |       d) ||       z        t        t!         ||       |       d* ||       z  d ||       z  z         t        t!         ||       |       d ||       z  d+ ||       z  z   d ||       z  z         f}9t         ||       d,t
        z  t        d)| z        z  d-z        t         ||       d.t
        z  t        d)| z        z  d-z  dt        z  t        d| z        z  d+z  z
        t         ||       t
        t        d)| z        z  t        t        d| z        z  z   t        t        d| z        z  z         g}:t        |9      |:k(  sJ t        |9|:      dg dfk(  sJ t        t	         ||       |       d ||       z  d/ ||       z  z
        t        t	         ||       |       d0 ||       z  d+ ||       z  z         t        t	         ||       |       d/ ||       z  d+ ||       z  z
        g};t         ||       t
        t        d+d      z  t        t        d1      | z        t        d1      t        z  t        d/d2      z  t        t        d3d2      z  z   z  z
  t        t        d1      | z        t        t        d)d2      z  t        d1      t        z  t        d/d2      z  z   z  z
        t         ||       t
        t        d/d      z  t        t        d1      | z        t        d1      t        z  t        d+d2      z  t        t        d4d2      z  z   z  z   t        t        d1      | z        t        t        d4d2      z  t        d1      t        z  t        d5d2      z  z   z  z
        t         ||       t
        t        t        t        d1      | z        z  z   t        t        t        d1      | z        z  z
        g}<t        |;      |<k(  sJ t        |;|<      dg dfk(  sJ t        dt	         ||       |       z  d6 ||       z  d6 ||       z  z
        t        dt	         ||       |       z  d7 ||       z  d8 ||       z  z         t        dt	         ||       |       z  d% ||       z  d% ||       z  z
        g}=t         ||       t
        t        dt        d      z  | z        t        d      t        z  t        dd      z  t        z
  z  z
  t        dt        d      z  | z        t        t        d      t        z  t        dd      z  z   z  z
        t         ||       t
        t        dt        d      z  | z        t        d      t        z  t        dd      z  t        z   z  z   t        dt        d      z  | z        t        t        d      t        z  t        d0d      z  z   z  z
        t         ||       t
        t        t        dt        d      z  | z        z  z   t        t        dt        d      z  | z        z  z
        g}>t        |=      |>k(  sJ t        |=|>      dg dfk(  sJ t        t	         ||       |       d ||       z   ||       z
        t        t	         ||       |       d ||       z  d ||       z  z    ||       z
        t        t	         ||       |       d ||       z   ||       z         g}?t         ||       t        | dz  z  t        d| z        z  dz  | dt        z  t        z   z  t        d| z        z  z   t
        t        z   dt        z  z   t        d| z        z  z         t         ||       t        | dz  z  t        d| z        z  dz  | dt        z  t        z   z  t        d| z        z  z   t
        dt        z  z   t        d| z        z  z         t         ||       t        | dz  z  t        d| z        z  | dt        z  dt        z  z   z  t        d| z        z  z   dt
        z  dt        z  z   t        d| z        z  z         g}@t        |?      |@k(  sJ t        |?@      dg dfk(  sJ t        t	         ||       |       d ||       z   ||       z
  d ||       z  z
        t        t	         ||       |       d ||       z   ||       z   d ||       z  z
        t        t	         ||       |       d ||       z  d ||       z  z
        g}At         ||       t
        t        d| z        z  t        |       t        t        dd      z  t        dz  z   z  z
  t        |       t        dz  t        t        d0d      z  z   z  z
        t         ||       t        |        t        t        dd      z  t        dz  z   z  t        |       t        dz  t        t        d0d      z  z   z  z
        t         ||       t
        t        d| z        z  t        t        |       z  z
  t        t        |       z  z         g}Bt        |A      |Bk(  sJ t        AB      dg dfk(  sJ t        t!         ||       |       d ||       z        t        t!         ||       |       d% ||       z        f}Ct         ||       t        d       t
        z  t        d9t        d      z  | z        z  dz  t        d      t        z  t        dt        d      z  | z        z  dz  z         t         ||       t
        t        d9t        d      z  | z        z  t        t        dt        d      z  | z        z  z         g}Dt        |C      |Dk(  sJ t        CD      dd"d"gfk(  sJ t        t	         ||       |       d ||       z  d ||       z  z         t        t	         ||       |       d% ||       z  d: ||       z  z         g}Et         ||       t
        d(t        d;      z
  z  t        | t        d;      d<z   z  dz        z  t        dd=      z  t        d(t        d;      z   z  t        | d<t        d;      z
  z  dz        z  t        dd=      z  z         t         ||       t
        t        | t        d;      d<z   z  dz        z  t        t        | d<t        d;      z
  z  dz        z  z         g}Ft        |E      |Fk(  sJ t        EF      dd"d"gfk(  sJ t        t	         ||       |        ||        ||       z         t        t	         ||       |       d ||       z  d ||       z  z         g}Gt         ||       t
        dz  t        d+      t        z  dz  z   t        t        d+      | z  dz        z  t        | t        dd      z        z  t        t        d+      | z  dz        t        d+      t
        z  dz  t        t        dd      z  z   z  t        | t        dd      z        z  z         t         ||       t
        t        t        d+      | z  dz        z  t        | t        dd      z        z  t        t        t        d+      | z  dz        z  t        | t        dd      z        z  z
        g}Ht        |G      |Hk(  sJ t        GH      dd"d"gfk(  sJ t        d>d      }0 ||       j!                  |       |0 ||       z  z
   ||       j!                  |       |0 ||       z  z   g}It         ||       t
        t        |0| z        z  t        t        |0| z        z  z         t         ||       t
        t        |0| z        z  t        t        |0| z        z  z
        g}Jt        |I      |Jk(  sJ t        IJ      dd"d"gfk(  sJ t        t	         |-|       |       d"      t        t	         |.|       |        |-|       d |.|       z  z
   ||       z   |1|2z  z        t        t	         ||       |        |.|       d ||       z  z
   ||       z   |1|2z  z        t        t	         ||       |        |/|        ||       z   d ||       z  z
  |1|2z  z        t        t	         |/|       |       d"      g}Kt         |-|       d0t
        z  dt        z  z         t         |.|       dt
        z  dt        z  z   t        t        d| z  |1|2z  z        z  z
  t        t        |  t        d      dz   z  |1|2z  z        z  z   t"        t        |  dt        d      z
  z  |1|2z  z        z  z         t         ||       t
         dt        z  z   t        d      t        z  t        |  t        d      dz   z  |1|2z  z        z  z
  t        d      t"        z  t        |  dt        d      z
  z  |1|2z  z        z  z         t         ||       t        t        t        d| z  |1|2z  z        z  z   t        t        |  t        d      dz   z  |1|2z  z        z  z   t"        t        |  dt        d      z
  z  |1|2z  z        z  z         t         |/|       t
              g}Lt        |K      |Lk(  sJ t        KL      dg dfk(  sJ t        t	         |-|       |       d |-|       z        t        t	         |.|       |       d |-|       z  d+ |.|       z  z         g}Mt         |-|       d?t
        z  t        d| z        z  dz        t         |.|       t
        t        d| z        z  t        t        d+| z        z  z         g}Nt        |M      |Nk(  sJ t        MN      dd"d"gfk(  sJ t        t	         |-|       |       d@t$        z   |-|       z  d |.|       z  z
        t        t	         |.|       |       dt$        z   |.|       z        g}Ot         |-|       dt$        z  t
        z  t        dt$        z  | z        z  dz  t        t        d@t$        z  | z        z  z         t         |.|       t
        t        dt$        z  | z        z        g}Pt        |O      |Pk(  sJ t        OP      dd"d"gfk(  sJ t        t	         |-|       |       d@t$        z   |-|       z        t        t	         |.|       |       dt$        z   |.|       z        g}Qt         |-|       t
        t        d@t$        z  | z        z        t         |.|       t        t        dt$        z  | z        z        g}Rt        |Q      |Rk(  sJ t        QR      dd"d"gfk(  sJ t        t	         |-|       |       d"      t        t	         |.|       |       d"      g}St         |-|       t
              t         |.|       t              g}Tt        |S      |Tk(  sJ t        ST      dd"d"gfk(  sJ t        t	         |-|       |        |-|             t        t	         |.|       |       d"      g}Ut         |-|       t
        t        |       z        t         |.|       t              g}Vt        |U      |Vk(  sJ t        UV      dd"d"gfk(  sJ t        t	         |-|       |        |.|             t        t	         |.|       |       d"      g}Wt         |-|       t
        t        | z  z         t         |.|       t              g}Xt        |W      |Xk(  sJ t        WX      dd"d"gfk(  sJ t        t	         |-|       |       d"      t        t	         |.|       |        |-|             g}Yt         |-|       t
              t         |.|       t
        | z  t        z         g}Zt        |Y      |Zk(  sJ t        YZ      dd"d"gfk(  sJ t        t	         |-|       |       d"      t        t	         |.|       |        |.|             g}[t         |-|       t
              t         |.|       t        t        |       z        g}\t        |[      |\k(  sJ t        [\      dd"d"gfk(  sJ t        t	         |-|       |        |-|             t        t	         |.|       |       t$         |.|       z        g}]t         |-|       t
        t        |       z        t         |.|       t        t        t$        | z        z        g}^t        |]      |^k(  sJ t        ]^      dd"d"gfk(  sJ t        t	         |-|       |       t$         |-|       z        t        t	         |.|       |       t$          |.|       z        g}_t         |-|       t
        t        t$        | z        z        t         |.|       t        t        t$         | z        z        g}`t        |_      |`k(  sJ t        _`      dd"d"gfk(  sJ t        t	         |-|       |       t$         |.|       z        t        t	         |.|       |       d"      g}at         |-|       t$        t
        z  t$        t        z  | z  z         t         |.|       t              g}bt        |a      |bk(  sJ t        ab      dd"d"gfk(  sJ t        t	         |-|       |       t$         |.|       z        t        t	         |.|       |       t$         |-|       z        g}ct         |-|       t
         t        t$         | z        z  t        t        t$        | z        z  z         t         |.|       t
        t        t$         | z        z  t        t        t$        | z        z  z         g}dt        |c      |dk(  sJ t        cd      dd"d"gfk(  sJ t        t	         |-|       |       dz   |.|       dz        t         |-|        t	         |.|       |       z   d"      g}et         |-|       t
         t        |       z  t        t        |       z  z
        t         |.|       t
        t        |       z  t        t        |       z  z
        gt         |-|       t
         t        |        z  t        t        |       z  z         t         |.|       t
        t        |        z  t        t        |       z  z         gg}t        |e      |k(  sJ |D ]  }ft        e|f      dd"d"gfk(  rJ  y )ANr;   Z0Z1Z2Z3zk01 k10 k20 k21 k23 k30r<   Tr   r   r   r   zx y z u v wr9   zk2 k3za_b a_crealrB   r@   rA   r?   r   r_   r>   rx   ir   %   ,   r   r   r   )r   r   r   r   r   r8   za, b, cr=   r         r^   r|   i'   rv   rw   rt            r`   rC         ry   r   ru   r   r   r   rd   r~   i  +      r   rz   r{   )r   r   r   r
   r   r   r   r   C3C4r   r   r   r   r   r   r   C5r   )gr;   r  r  r  r  k01k10k20k21k23k30r   r   r3   r   r   uvr   k2k3a_ba_cr   r   r   r   r   r   r   r   r   r   eq7r   r   r   eq9r   r   r   r  r   r  r   r4   r5   r6   r   r   r   r  r   r  r   r  r   eq16r  r  r	  r
  r  r  r  r  r  eq21r  r  r  eqs23sol23eq24sol24eqs25sol25eq26sol26eq27sol27eq28sol28eq29sol29eq30sol30eq31sol31eq32sol32eq33sol33eq34sol34eq35sol35eq36sol36eq37sol37r   solsg                                                                                                          rI   (test_sysode_linear_neq_order1_type1_slowr[    sW3    	sA	$B	$B	$B	$B#*+D#E Cc3Sz"Q%#cT"Q%Z#be)%;c"Q%i%G#bQRe)%STz"Q%#SAYRU%:SAY%FGz"Q%#sdSj3&61%=>z"Q%#SAYRU%:;=D r!ubfSj2sSy>#sd1f+#=sSy3#OORTVY[^ad[dgj[jVk!VW39s?+W,.1#gW6 S77:A2sSy3;O7PSQRUX[W[^aWadgWgjmWmX SS QBc	N++, - r!ub2c6#sd1f+-sSy3??"sdCRUIX[OF\_bcf_fFfilnoioFoC#IG C  #QBc	C$8 9C:;>s
S@PSV@VY\@\;]C_ _acdgijhjlom i e b  r!urc39s?S01#qb#)c/6J2KKCOPr!ubcT!Vnr#qb#)c/.B*C'CCDFD $<4$%$)====}(;Aq!Q1WFByt,HCz!A$"BqtG,z!A$"BqtG,z!A$"bS2XqtO46D qtR"R%QBRL 1127;;<qtbSVCBG--rBw7"<=qtRQBRL))*,D $<4$%$	)::::adFQqTMAadF"Z!a%88adFQqTMAadF"Z!a%88adFQqTMAadF"Z!a%88:D qtRBqD	\RTDGBJqL%8#d1gai.$HH3tTUwWXy>[_`a[bce[efg[gQ\  L! ! "qtbdT!WRZ\)3tAwqy>9CQ	NDQRGTVJWXL[]^fgikl^m[mLm<nnoqtRDGAI&CQ	N)::RBqD	\IJLD $<4$%$	)::::z!A$"AaD"a$81QqT6$AAaD$H1Q4PXY[]^P_K_$_`z!A$"AaD!Q$7!AaD&$@1Q4QSUVCW$WXz!A$"AaD"a$81Q4Q;O$OPz!A$"AaD"a$81Q4Q;O$OPRD qtRAaC[2a4AaC=01qtRAaC[1R4AaC=01qtQrT#ac(]RAaC["a%@@AqtRAaC[2c!A#h;./1D $<4$%$)==== adiilAaD!2adiilAaD#92adiilAaD;QSUVWXYVZV_V_`aVbdefgdhSi
jCqtRAYAaD"SV)!4b1r#a&y6I2aPQdTVWZ[\W]T]K^_D#;$#t$|(<<<<z!A$"AaD1Q4K0z!A$"AaD1Q4K0z!A$"AaD"a$81Q4$?@z!A$"AaDFQqT!VO46D qtRAYAc!f,qtAvc!HQN:J6K/KKqQStVXY[V[|]`abcklmd b ^ O  qtRAYAc!HQN*:&;!;;rAbDy#aPXYZ\]P^N^J_>__`qtRT#aA.//1RTBYAhqRSnDT@U4UUVqtRAhq!n,--a/"Q$s1Xa^;K7L2LQ2NNO	QD
 $<4$%$)==== j1q!1Q4("Z!a-@!A$*GJWXYZW[]^L_abcdaeIfj1q!1Q4("Z!a-@!A$*GICqtRAYAaD"SV)!4b1r#a&y6I2aPQdTVWZ[\W]T]K^qtRAY!D#;$#t$(????z!A$"AadFQqTM2z!A$"AadF+z!A$"AadF+z!A$"AaD1QqT6M2z!A$"AadF+	-D
 qtRAaC[2a4AaC=01qtRAaC[!qtRAaC[!qtRAaC[2a4AaC=01qtRAaC[!	#D
 $<4$%$)@@@@ j1q!1Q4("Z!a-@!A$*GJWXYZW[]^L_abcdaeIf
gCqtRAYAaD"SV)!4b1r#a&y6IJD#;$#t$y(9999 
1Q4#sdSj!A$%67
1Q4#S1X.
1Q4#S1X.0E !rc39oc1"cCi.&99#=>!bSUm$!baRs^,,r124E %=E!!!%'D)+<<<< 
1Q4#R!W-
1Q4#rcBh!_5
1Q4#R!W-/E !b2b5aRb\!222556!rc27mCBG$55b89!baRb\**R/02E %=E!!!%'D)+<<<< 
1Q4#R!W-
1Q4#R!W-
1Q4#rcBh!_57E !b2b5aRb\!22BG<<=!rc"fS!R"W..R82=>!baRb\**+-E %=E!!!%'D)+<<<<iX.GAq!i GAq! 
1Q4#QqtVad]3
1Q4#QqtV,.E!bQQUa0114A;?CbaRQUVWZ[V[Q\_`Q`MaIbFbdhijmnindoe G  !bQQUa011BsA2tAE{Q;O7P4PPQSE %=E!!!%'D1a&>999
1Q4#QqtVa!f_5
1Q4#R!Wq1v%56
1Q4#QqtVa!f_57E !adSb!_d2hrk(1b/.IBxXZ\^O_L_._``$r(1*or(1b/1DHRKB4OOPQ R!b!Q'#d2hqj/48B;xPQSU;VY[\defhj\kYk;k*ll$r(1*or(1b/1DHRKR@P4PPQR S!b2c$r(1*o--3tBxz?0BBC	EE
 %=E!!!%'D)+<<<<*QqT1%%r!A$wAaD'89*QqT1%%r!A$w1Q4'78*QqT1%%q1v!A$79E !b3tBxz?DHRKB,G"XVY[]M^J^,^__$r(1*or(2r"22T"Xb[!R5PPQR S!b3tBxz?DHRKB,G"XVXZ\M]J],]^^$r(1*or(2r"22T"Xb["bAQ5QQRS T!b2c$r(1*o--3tBxz?0BBC	EE
 %=E!!!%'D)+<<<<tAaD!}b1g&4!a="QqT'AadF:J(KtAaD!}a!fq1vo!A$679D!c"fSAY&s*+!c"fSAY&s*QrT#ac(]1_<=!bRTlRAaC[02c!A#h;>?AE $<5   $&4*;;;;
1Q4#QqtVb1g%56
1Q4#R!Wq1v%56
1Q4#R!Wq1v%568E !b!Q'#d3ik*:DIbLRTVYIZ<Z]_`hila ^ = + $s)A+&8B+<(<tCy|HUWY\L]?](]^_ `!b"a(3tCy{+;T#Yr\(STVYJZ=Z]_`hika ^ > , $s)A+&8B+<(<tCy|HUWY\L]?](]^_ `!b2c$s)A+...CS	!4D1DDE	GE
 %=E!!!%'D)+<<<<*QqT1%%r!A$wAaD'89*QqT1%%s1Q4x"QqT''9:*QqT1%%r!A$wAaD'89;E !b3qay{+T!WRZA-F-KLLsSTUYZ[U\S\]^S^O_ac1gbj!Q'b( P) ) *!b3qay{+T!WRZA-F-KLLsSTUYZ[U\S\]^S^O_ac1gbj"a(b) P* * +!b2c!DG)A+...C$q'	!4D1DDE	GE
 %=E!!!%'D)+<<<<
1Q4#QqtVad]3
1Q4#QqtVa!f_qt%;<
1Q4#QqtVad]35E !bAgc!A#h&q(1adRi=QqS+AAR"WqQSt^UXYZ[\Y\U]D]]^!bAgc!A#h&q(1adRi=QqS+AAR!B$YPSTUVWTWPXDXXY!bAgc!A#h&AbD1R4KQqS)AAQrTAbD[RUVWXYVYRZDZZ[]E %=E!!!%'D)+<<<<
1Q4#QqtVad]QqtV%;<
1Q4#QqtVad]QqtV%;<
1Q4#QqtVa!f_57E !bQqSkCFBx1~,=1,D$EEAPRSTPTWYZbceghZiWiPiHjjk!s1vgr(1a.02a4783q62a4"XVXZ[_J\C\;]]^!bQqSkBs1vI-3q6	9:<E %=E!!!%'D)+<<<<tAaD!}a!f%r$qtQ-AaD'ABD!tAwhrk#bajl"33A5Q
3qayQR{CS8STU8UUV!bRQZ\**RAd1gIaK0@-@@ACE $<5   $&4!Q.888
1Q4#QqtVa!f_5
1Q4#R!Wr!A$w%679E!b"tDz/*3q$t*r//B1/D+EEhrSUFVVY[]_4j^ Zad4j1!34Z55=b"5EZF F G!bQT
R0233bQT$Z=PQR=R9S6SSTVE %=E!!!%'D1a&>999
1Q4#QqTAaD[1
1Q4#R!Wq1v%568E!r!td1gbjl*CQ	!,<<S8Aq>AQ=RR$q'!)A+Q
1r(2q//A AB3qRSUVGWCXXY Z!bT!WQYq[))#aA.>*??"SaQRSTEUBUVYZ[\defhi\jZjVkBkklnE %=E!!!%'D1a&>999 	sAaDIIaL1QqT6!1Q499Q<!AaD&#89D!bQqSkBs1Q3xK/0"QqT2c!A#h;CPQRSPSH;T2UVE$<5   $&4!Q.888 
1Q4#Q'
1Q4#adQqtVmad&:QqS%AB
1Q4#adQqtVmad&:QqS%AB
1Q4#adQqTkAadF&:QqS%AB
1Q4#Q'	)E
 !beadl#!beadlRBqD!A#J%77"S!T!Wq[AQSTUVSVAW=X:XX[]^acdbdfg1gg c!c _ \  !rcAbDj472:c1"d1gk2BAaC2H.I#IIDQRGTVJWZ\][]_`1g` \!\ X M  !b2c"Q$!*o--3r47Q;7G17M3N0NNQSTWYZXZ\]`def`g\gXhjklmjmXnToQoop!b\E %=E!!!%'D/+BBBBz!A$"AadF+R
1Q40CQqtVaPQRSPTf_-UVD!beC!HnQ&'AaD"S1X+3qs82K)LME$<5   $&4!Q.888z!A$"BqD1I!A$$67JqtQ<OQSTUQUVWXYVZQZ9[\D!ac"fSAa[(*RBqDF^;<b1r#bQRdSTf+~>VWE$<5   $&4!Q.888z!A$"BqD1I.:adA3F1QqT	0RSD!bRT!Vn%r!A$3r!tAv;'?@E$<5   $&4!Q.888z!A$"A&:adA+>(BCD!b\2adB<(E$<5   $&4!Q.888z!A$"AaD)2j1q.A1+EFD!bQi "QqT2,/E$<5   $&4!Q.888z!A$"AaD)2j1q.A1+EFD!b2a4i "QqT2,/E$<5   $&4!Q.888z!A$"A&:adA+>!(EFD!b\2adBqD2I./E$<5   $&4!Q.888z!A$"A&:adA+>!(EFD!b\2adBs1vI./E$<5   $&4!Q.888z!A$"AaD)2j1q.A1QqT6+JKD!bQi "QqT2c!A#h;"78E$<5   $&4!Q.888z!A$"AadF+R
1Q40CaR!W-MND!bQqSk"BqtRQBqD	\$:;E$<5   $&4!Q.888z!A$"AadF+R
1Q40CQ-GHD!adQrT!Vm$b1rl3E$<5   $&4!Q.888z!A$"AadF+R
1Q40CQqtV-LMD!rc#qbd)mbQqSk12BqtRQBqD	\BsSTUVSVxK=W4XYE$<5   $&4!Q.888 j1q!1$adAg.AaD5:adA;N3NPQ0R
SC!rc#a&j2c!f9,-!bQi"SV)+,.!rc#qb'kBs1vI-.!baRj2c!f9,-/0D #;$ :c3'D1a&>999:rK   c                  A   t        dt              \  } }}}t        d      \  }}}}}}	}
t        d      \  }}t        t         | |      |       | |       ||      z   dz         t        t         ||      |       | |        ||      z
  dz         g}t         | |      t        t
        z   d|dz  z  z   |t
        dz   z  z         t         ||      t         d|dz  z  z
  |t
        dz
  z  z
        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t         | |      |       | |       ||      z   dz         t        t         ||      |       | |       ||      z   dz         g}t         | |      t         t
        t        d|z        z  z   |z
  dz
        t         ||      t        t
        t        d|z        z  z   |z   dz
        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t         | |      |       | |      dz         t        t         ||      |       | |      dz         g}t         | |      t        t        |      z  dz
        t         ||      t        t        |      z  t
        z   d|z  z   dz
        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t         | |      |       | |      t        |      z         t        t         ||      |      |t        |      z   | |      z    ||      z         g}t         | |      t        t        |      z  |t        |      z  z         t         ||      t        |z  t        |      z  t
        t        |      z  z   |dz  t        |      z  z         g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t         | |      |      d|z   | |      z    ||      z         t        t         ||      |       | |       ||      z
        g}t         | |      t        dt        d      z   z  t        t        d      |z        z  t
        dt        d      z
  z  t        t        d       |z        z  z   |t        dd      z  z   t        dd      z         t         ||      t        t        t        d      |z        z  t
        t        t        d       |z        z  z   |t        dd      z  z         g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t         | |      |      d | |      z  d ||      z  z
        t        t         ||      |      d ||      z        t        t         ||      |       ||      t        |      z         g}t         | |      t
        t        d|z        z  t        dd      z  t        t        d|z        z  z         t         ||      t
        t        d|z        z        t         ||      t        t        |      z  |t        |      z  z         g}t        |      |k(  sJ t        ||      d	g dfk(  sJ t        t         | |      |      d|z   | |      z         t        t         ||      |       ||            g}t         | |      t        t        |      z  d|z  z
  dz
        t         ||      t
        t        |      z        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t         | |      |       | |      d ||      z  z         t        t         ||      |      d | |      z   ||      z   dt        |      z  z         g}t         | |      t        t        |      z  t        d|z        z  t
        t        |      z  t        d|z        z  z   t        |      t        d|z        dz  z  z   t        |      t        d|z        dz  z  z         t         ||      t        t        |      z  t        d|z        z  t
        t        |      z  t        d|z        z  z
        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t         | |      |      |d | |      z  z
   ||      z   ||z  z        t        t         ||      |       | |      d ||      z  z
   ||      z   ||z  z        t        t         ||      |      |	 ||      z   d ||      z  z
  ||z  z        g}t         | |      t         t        d|z  ||z  z        z  t
        t        | t        d      dz   z  ||z  z        z  z   t        t        | dt        d      z
  z  ||z  z        z  z   t        t        dd      d|z  |	z   d      z         t         ||      t        d       t
        z  t        | t        d      dz   z  ||z  z        z  t        d      t        z  t        | dt        d      z
  z  ||z  z        z  z   t        t        dd      ||	z   d      z         t         ||      t        t        d|z  ||z  z        z  t
        t        | t        d      dz   z  ||z  z        z  z   t        t        | dt        d      z
  z  ||z  z        z  z   t        t        dd      |d|	z  z   d      z         g}t        |      |k(  sJ t        ||      d	g dfk(  sJ t        t         | |      |      d|z   | |      z    ||      z
  dz
        t        t         ||      |      d|z   | |      z    ||      z
  dz
        g}t         | |      t        t
        z   d|dz  z  z   d|dz  z  z   |t
        dz
  z  z         t         ||      t        d|dz  z  z   d|dz  z  z
  |t
        dz
  z  z         g} t        |      | k(  sJ t        ||       d	d
d
gfk(  sJ t        t         | |      |      dz  dt         | |      |      z  z
  dz   d      t        |
  | |      z  t         ||      |      z   d
      g}!t         | |      t        |z
        t         ||      t        |z  |
z  t
        |
z  z   |dz  |
z  t        dd      z  z         gt         | |      t        d|z  z         t         ||      t        |z  |
z  t
        |
z  z   |dz  |
z  t        dd      z  z         gg}"t        |!      |"k(  sJ |"D ]  }#t        |!|#      d	d
d
gfk(  rJ  t        dd	      }$t        d      }%t        d      }&t        d      }'t        d      }(t        d      }t        d      }t        d      }
t        d       })t        t         |
|      |       ||            t        t         ||      |      |$ |
|      dz   z        g}*t         |
|      t        t        t        |$      |z        z  |$t        dd      z  z  t
        t        t        |$       |z        z  |$t        dd      z  z  z
  dz
        t         ||      t        t        t        |$      |z        z  t
        t        t        |$       |z        z  z         g}+t        |*      |+k(  sJ t        |*|+      d	d
d
gfk(  sJ t         |
|      |)t        t        |$       |(z        z  dz  t        t        |$       |(z        dz  z   |'t        t        |$       |(z        z  dt        |$      z  z  z   t        t        |$      |z        z  |)t        t        |$      |(z        z  dz  t        t        |$      |(z        dz  z   |'t        t        |$      |(z        z  dt        |$      z  z  z
  t        t        |$       |z        z  z   dz
        t         ||      |)t        |$      z  t        t        |$       |(z        z  dz  t        |$      t        t        |$       |(z        z  dz  z   |'t        t        |$       |(z        z  dz  z   t        t        |$      |z        z  |)t        |$      z  t        t        |$      |(z        z  dz  t        |$      t        t        |$      |(z        z  dz  z   |'t        t        |$      |(z        z  dz  z
  t        t        |$       |z        z  z
        g},t        |* |
|&      |) ||&      |%i!      |,k(  sJ t        |*|,      d	d
d
gfk(  sJ t        t         | |      |       | |       ||      z   d"z         t        t         ||      |      d | |      z  d ||      z  z   d#z         g}-t         | |      t         dt        d      z   z  t        |dt        d      z
  z        z  dz  t
        dt        d      z
  z  t        |t        d      dz   z        z  dz  z
  t        d$d      z
        t         ||      t        t        |dt        d      z
  z        z  t
        t        |t        d      dz   z        z  z   t        dd      z
        g}.t        |-      |.k(  sJ t        |-|.      d	d
d
gfk(  sJ t        t         | |      |       | |       ||      z   d%z         t        t         ||      |      d | |      z   ||      z   d#z         g}/t         | |      t        d      t        z  t        |      z  t        t        d      |z        z  dz  t        d      t
        z  t        |      z  t        t        d      |z        z  dz  z   d&t        t        d      |z        dz  z  dz  z
  d&t        t        d      |z        dz  z  dz  z
        t         ||      t        t        |      z  t        t        d      |z        z  t
        t        |      z  t        t        d      |z        z  z
  d't        t        d      |z        dz  z  dz  z
  d't        t        d      |z        dz  z  dz  z
        g}0t        |/      |0k(  sJ t        |/|0      d	d
d
gfk(  sJ t        t         | |      |       | |      d ||      z  z   |z         t        t         ||      |      d | |      z  d ||      z  z   |z         g}1t         | |      t         dt        d(      z
  z  t        |dt        d(      z   z  dz        z  dz  t
        dt        d(      z   z  t        |dt        d(      z
  z  dz        z  dz  z
  d|z  z   |z
        t         ||      t        t        |dt        d(      z   z  dz        z  t
        t        |dt        d(      z
  z  dz        z  z   t        t        dd      d|z  |z
  d      z
        g}2t        |1      |2k(  sJ t        |1|2      d	d
d
gfk(  sJ t        t         | |      |      |      t        t         ||      |      |      g}3t         | |      t        ||z  z         t         ||      t
        ||z  z         g}4t        |3      |4k(  sJ t        |3|4      d	d
d
gfk(  sJ t        t         | |      |      d
      t        t         ||      |      | | |      z  |z         g}5t         | |      t              t         ||      t
        |z  |t        |z  |z   z  z         g}6t        |5      |6k(  sJ t        |5|6      d	d
d
gfk(  sJ t        t         | |      |      |      t        t         ||      |       | |      |z         g}7t         | |      t        ||z  z         t         ||      t
        ||dz  z  dz  z   |t        |z   z  z         g}8t        |7      |8k(  sJ t        |7|8      d	d
d
gfk(  sJ t        t         | |      |      |      t        t         ||      |       | |      d ||      z  z   |z         g}9t         | |      dt        z  ||z  z         t         ||      t        t
        t        d|z        z  z   ||z  dz  z
  t        t        dd      |d|z  z   d      z
        g}:t        |9      |:k(  sJ t        |9|:      d	d
d
gfk(  sJ t        t         | |      |       | |      |z         t        t         ||      |      |      g};t         | |      t        t        |      z  |z
        t         ||      t
        ||z  z         g}<t        |;      |<k(  sJ t        |;|<      d	d
d
gfk(  sJ t        t         | |      |       ||      |z         t        t         ||      |      d
      g}=t         | |      t        |t
        |z   z  z         t         ||      t
              g}>t        |=      |>k(  sJ t        |=|>      d	d
d
gfk(  sJ t        t         | |      |       | |      d ||      z  z   |z         t        t         ||      |      |      g}?t         | |      dt        z  t
        t        |      z  z   |z
  d|z  |z  z
  d|z  z
        t         ||      t        ||z  z         g}@t        |?      |@k(  sJ t        |?@      d	d
d
gfk(  sJ t        t         | |      |       ||      |z         t        t         ||      |      d ||      z  |z         g}At         | |      t        t
        t        d|z        z  dz  z   |dz  z
  |d|z  |z
  z  dz  z         t         ||      t
        t        d|z        z  |dz  z
        g}Bt        |A      |Bk(  sJ t        AB      d	d
d
gfk(  sJ t        t         | |      |       | |      |z         t        t         ||      |      d | |      z  |z         g}Ct         | |      t        t        |      z  dz  |z
        t         ||      t        t        |      z  t
        z   d|z  z
  |d|z  |z
  z  z
        g}Dt        |C      |Dk(  sJ t        CD      d	d
d
gfk(  sJ t        t         | |      |       | |      d ||      z  z   |z         t        t         ||      |      d | |      z  d ||      z  z   |z         g}Et         | |      dt        z  t
        t        d|z        z  dz  z   d|z  d|z  |z
  z  dz  z   t        t        dd)      |d|z  z   d      z
        t         ||      t        t
        t        d|z        z  z   |d|z  |z
  z  dz  z
  t        t        dd)      |d|z  z   d      z
        g}Ft        |E      |Fk(  sJ t        EF      d	d
d
gfk(  sJ t        t         | |      |      d | |      z   ||      z
  |z         t        t         ||      |      d | |      z  d ||      z  z
  d|z  z         g}Gt         | |      t        dt
        z  z   |dt        z  |z   z  z         t         ||      dt
        z  |dt        z  d|z  z   z  z         g}Ht        |G      |Hk(  sJ t        GH      d	d
d
gfk(  sJ t        t         ||      |      d |
|      z  dz         t        t         |
|      |      d ||      z  d |
|      z  z
  dz         g}It         ||      t        dz  dt
        z  dz  z
  t        |       z  t        d|z        z  dt        z  dz  t
        dz  z   t        |       z  t        d|z        z  z
  d*t        d|z        dz  z  dz  z   d*t        d|z        dz  z  dz  z         t         |
|      t        t        |       z  t        d|z        z  t
        t        |       z  t        d|z        z  z
  dt        d|z        dz  z  z   dt        d|z        dz  z  z         g}Jt        |I      |Jk(  sJ t        IJ      d	d
d
gfk(  sJ y )+Nf g h kr9   zx t a b c d yzk1 k2rA   rt   r_   r<   Tr   r?   r=   rz   r{   r@   r   rB   r   Fevaluater   r   r   r>   r   positivex_0t_0r;   r3   r   Ticsrx   r      Q   :      r   1   rw   )r   r   r
   r   r   r   r   r   r   r   r   r)  r   r   r   r   )Kr4   r5   r6   r   r3   r;   r   r   r   dr   k1r4  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   s11r   x0t0rb  rc  rd  r  r   sol12br   r   r   r   r   r   r:  r  eq17r	  eq18r  eq19r  eq20r  r;  r  eq22r  eq23r=  r>  r?  eq25rA  rB  rC  rD  rE  sK                                                                              rI   #test_sysode_linear_neq_order1_type2ry    s   1JAq!Q!/2Aq!Q1aWFB z!A$"AaD1Q4K!O4z!A$"QqTEAaDL1$457DqtR"WqAv%26
23qtbS1QT6\ArAvJ./1D$<4$%$A777z!A$"AaD1Q4K!O4z!A$"AaD1Q4K!O46DqtbS2c!A#h;&*Q./qtR"S1X+%)A-.0D$<4$%$A777z!A$"AaD1H-z!A$"AaD1H-/DqtRAY]#qtRAY^ac)A-.0D$<4$%$A777z!A$"AaD3q6M2z!A$"Ac!fHqtOad$:;=DqtRAY3q6)*qtRT#a&[2c!f9,q!tCF{:;=D$<4$%$A777z!A$"AaC!A$J1$56z!A$"AaD1Q4K02DqtRT!W%c$q'!)n4r1tAw;7GTRSWHUVJ7WWZ[\degij\kZkkb!_ qtRDGAI&Ca
O);;aQ>OOPRD $<4$%$A777z!A$"BqtGa!f$45z!A$"BqtG,z!A$"AaD3q6M24D qtRBqD	\(2q/1Bs2a4yL@AqtRBqD	\"qtRAY3q6)*,D $<4$%$	):::: z!A$"AaC!A$J/z!A$"AaD)+DqtRAY1_q()qtRAY!D$<4$%$A777 z!A$"AaD1QqT6M2z!A$"BqtGadNQs1vX$=>@DqtRAYs1Q3x'"SV)C!H*<<a&QqS1$%'*1vc!A#hk'9: ;qtRAYs1Q3x'"SV)C!H*<<=?D $<4$%$A777 z!A$"Q1Q4Z!A$%61$=>z!A$"QqTAadF]QqT%9AaC$@Az!A$"Q1X!A$%61$=>@D qtbSRT1Q3Z(2c1"d1gk2BAaC2H.I+IIBsTUSUWX[_`a[bWbScefghehSiOjLjj!Q1q59: ;qtd1gXb[aRa1%5qs%;!<<tAwrz#qbRSVZ[\V]R]N^`abc`cNdJe?ee!QQ78 9qtRBqD!A#J'"S!T!Wq[1A1Q31G-H*HH2cSTRTVWZ^_`ZaVaRbdefgdgRhNiKii!QQqS59: ;	<D $<4$%$	):::: 
1Q4#RTAaD[1Q4%7"%<=
1Q4#SUQqT\AaD%81%<=?E!b2g!Q$&1a4/!R"W+=>!b1QT6kBq!tG+aaj89;E%=E!!!%'D1a&>999 
1Q4#Q&:adA+>)>>BAF1Q4*QqT1--q13E1rAv1Q4Aa"Q$AaQ9O)O PQ1rAaCx "QqT2a46BqD=1a46(1a.;P+P"QRTE%=E!!! <eS)dQF^;;;<
 	d#A	B	B
%.C
%.CAAAA
1Q4#QqT*
1Q4#Q!q\24E!bT!WQY'8B?(::RT!WHQJ=OPQS[\^`aSbPb=bbeffg!bT!WQY'"S$q'!_*<<=?E%=E!!!%'D1a&>999 	1Q4!Ca%%a'#tAwhsl*;A*==T!WHSL!!1T!W9-./24719~>s473;!CQ$4Q$66CQ$$aQi0125tAwhqj/BB EFF 	G 	1Q4!DG)Ca--a/$q'#tAwhsl:K2KA2MM#tAwhsl##A%&'*4719~6T!W9Sa--a/$q'#d1gck:J2J12LLDGCK((*+,/a
O<< 	=	F %aeQ"r23v===%(TAq6N:::
 z!A$"AaD1Q4K!O4z!A$"AadFQqtVOb$89;D!rc1tAw;'Aq47{O(<<Q>Qa[AQRUVWY]^_Y`cdYdVeRfAfghAhhr!n !bQDG_--3q$q'A+3G0GG(STUV-WXZE $<5   $&4!Q.888z!A$"AaD1Q4K"$45z!A$"BqtGadNR$78:D!d1gbjQ'DGAI6q81gbjQ'DGAI6q89T!WQY**1,-/1#d1gai.!2C/CA/EF G !bQiDGAI.CF3tAwqy>1II#d1gai.!++A-.03CQ	NA4E0Ea0GH IJE
 $<5   $&4!A-777z!A$"AaD1QqT6MB$67z!A$"AadFQqtVOb$89;D!rc1tBx<(QDH-=a-?)@@B!d2h,Aq48|$4Q$6 779:<=bDACEF G!bQDH-a/002c!Qb\:J1:L6M3MM(1Q-2u=> ?@E $<5   $&4!A-777z!A$"B'z!A$"B')D!b2a4i !b2a4i "E$<5   $&4!A-777z!A$"A&z!A$"AadFRK02D!b\!bdQ1r	]*+-E$<5   $'DAa5>999z!A$"B'z!A$"AaD2I.0D!b2a4i !b2ad719nq"r'{235E$<5   $'DAa5>999z!A$"B'z!A$"AaD1QqT6MB$679D!bebdl#qtR"S1X+%1Q.Xa]B2I[`1aabdE$<5   $'DAa5>999tAaD!}adRi(tAaD!}b!#D!bQi"n%qtR"Q$Y!E$<5   $'DAa5>999tAaD!}adRi(tAaD!}a "D!b1b2g;&'qtRLE$<5   $'DAa5>999z!A$"AaD1QqT6MB$67z!A$"B')D!bebQi'",qtAv5"<=qtR"Q$Y!E$<5   $'DAa5>999z!A$"AaD2I.z!A$"AadFRK02D!b2c!A#h;q=(2a4/!QrTBY-/ABqtRAaC[2a4'(*E$<5   $'DAa5>999z!A$"AaD2I.z!A$"AadFRK02D!bQikB&'qtRAY^ad*Q"r	]:;=E$<5   $'DAa5>999z!A$"AaD1QqT6MB$67z!A$"AadFQqtVOb$89;D!bebQqSk!m+ac1R4"9oa.??(1R."qt)?@ A!b2c!A#h;&AbD2Iq8(1R."qt)?@ ABE $<5   $'DAa5>999z!A$"AadFQqTMB$67z!A$"AadFQqtVOad$:;=D!b1R4i!QrTBY-/0qtQrTAqtad{O+,.E$<5   $'DAa5>999
 tAaD|BqtGBJ'D1aL1Q4!A$q)IJD!r!tad1f}c1"g-c!A#h6tAv1}c1"g-c!A#h67QqS1nQ&')+C!HaK)9: ; qtRQBZAaC(2c1"g:c!A#h+>>QqS1n%')#ac(A+~6 78E
 $<5   $'DAa5>999rK   c                  x)   t        dt              \  } }}}}}t        d      \  }}}t        dd      }	t        t         | |	      |	      |	 ||	      z   | |	      z         t        t         ||	      |	      |	  | |	      z   ||	      z         g}
t         | |	      t        t        |	      z  t        |	dz  dz        z  t        t        |	      z  t        |	dz  dz        z  z         t         ||	      t        t        |	      z  t        |	dz  dz        z  t        t        |	      z  t        |	dz  dz        z  z
        g}t        |
      |k(  sJ t        |
|      dddgfk(  sJ t        t         | |      |      |dz   ||      z  | | |      z  z         t        t         ||      |      d|dz  z   | |      z  d	|dz  z  |z    ||      z  z         g}t         | |      t        d
      t        z  d
z  t        d
d	t        d
      z  z
  z  dz  z   t        |d	z  d	t        d
      z   z  dz  |dz  dz  z         z  t        |d	z  d	t        d
      z
  z  dz  |dz  dz  z         t        d
      t        z  d
z  t        d	t        d
      z  d
z   z  t        dd      z  z   z  z
        t         ||      t        |d	z  d	t        d
      z
  z  dz  |dz  dz  z         t        d
d	t        d
      z  z
  z  dz  t        d
      t        z  t        dd
      z  z   z  t        |d	z  d	t        d
      z   z  dz  |dz  dz  z         t        d	t        d
      z  d
z   z  dz  t        d
      t        z  t        dd
      z  z   z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t         | |      j                  |      | | |      z   ||      z         t         ||      j                  |       | |       | ||      z  z         g}t         | |      t        dz  t        t        z  dz  z   t        |dz  dz  t        |z  z
        z  t        |dz  dz  t        |z  z         t        dz  t        t        z  t        dd      z  z   z  z         t         ||      t        t        z  dz  t        dz  z   t        |dz  dz  t        |z  z         z  t        |dz  dz  t        |z  z
        t        t        z  dz  t        t        dd      z  z   z  z
        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t         | |      j                  |      | | |       ||      z    ||      z   z        t         ||      j                  |      | | |       ||      z    ||      z   z        t         ||      j                  |      | | |       ||      z    ||      z   z        g}t         | |      t         d	z  t        d	z  z
  dt        z  d	z  z   t        d	z  t        d	z  z   t        d	z  z   t        d	|dz  z  dz        z  z         t         ||      dt        z  d	z  t        d	z  z
  t        d	z  z
  t        d	z  t        d	z  z   t        d	z  z   t        d	|dz  z  dz        z  z         t         ||      t         d	z  dt        z  d	z  z   t        d	z  z
  t        d	z  t        d	z  z   t        d	z  z   t        d	|dz  z  dz        z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t         | |      j                  |      |dz   | |       ||      z    ||      z   z        t         ||      j                  |      |dz   | |       ||      z    ||      z   z        t         ||      j                  |      |dz   | |       ||      z    ||      z   z        g}t         | |      t         d	z  t        d	z  z
  dt        z  d	z  z   t        d	z  t        d	z  z   t        d	z  z   t        |d	z        z  z         t         ||      dt        z  d	z  t        d	z  z
  t        d	z  z
  t        d	z  t        d	z  z   t        d	z  z   t        |d	z        z  z         t         ||      t         d	z  dt        z  d	z  z   t        d	z  z
  t        d	z  t        d	z  z   t        d	z  z   t        |d	z        z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        t         | |      |      | | |       ||      z    ||      z    ||      z   z        t        t         ||      |      | | |       ||      z    ||      z    ||      z   z        t        t         ||      |      | | |       ||      z    ||      z    ||      z   z        t        t         ||      |      | | |       ||      z    ||      z    ||      z   z        g}t         | |      t         dz  t        dz  z
  t        dz  z
  d	t         z  dz  z   t        dz  t        dz  z   t        dz  z   t         dz  z   t        d|dz  z        z  z         t         ||      d	t        z  dz  t        dz  z
  t        dz  z
  t         dz  z
  t        dz  t        dz  z   t        dz  z   t         dz  z   t        d|dz  z        z  z         t         ||      t         dz  d	t        z  dz  z   t        dz  z
  t         dz  z
  t        dz  t        dz  z   t        dz  z   t         dz  z   t        d|dz  z        z  z         t         ||      t         dz  t        dz  z
  d	t        z  dz  z   t         dz  z
  t        dz  t        dz  z   t        dz  z   t         dz  z   t        d|dz  z        z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        dd      }t        t         | |      |      | | |      z   ||      z         t        t         ||      |      | ||      z   | |      z
        g}t         | |      t        t        |dz  dz        z  t        |      z  t        t        |dz  dz        z  t        |      z  z         t         ||      t        t        |dz  dz        z  t        |      z  t        t        |dz  dz        z  t        |      z  z
        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |      d|z   | |      z  d ||      z  z         t        t         ||      |      d | |      z  d|z   ||      z  z         g}t         | |      t#        dt        dz  t        dz  z
  d      t        d|dz  z  dz  d|z  z
        z  t        dz  t        dz  z   t        d|dz  z  dz  d|z  z         z  z         t         ||      t        dz  t        dz  z
  t        d|dz  z  dz  d|z  z
        z  t        dz  t        dz  z   t        d|dz  z  dz  d|z  z         z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |      d|z   | |      z  |dz   ||      z  z         t        t         ||      |      |dz    | |      z  d|z   ||      z  z         g}t         | |      t        dz  t        t        z  dz  z
  t        t        |d	z  z  d	z  d|dz  z  dz  z         z  t        dz  t        t        z  dz  z   t        t         |d	z  z  d	z  d|dz  z  dz  z         z  z         t         ||      t#        dt        t        z  dz  t        dz  z
  d      t        t         |d	z  z  d	z  d|dz  z  dz  z         z  t        t        z  dz  t        dz  z   t        t        |d	z  z  d	z  d|dz  z  dz  z         z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |      |dz   ||      z  d|z   | |      z  z         t        t         ||      |      |dz    | |      z  d|dz  z  d|z  z    ||      z  z         g}t         | |      t        ddt        d      z  z
  z  dz  t        d      t        z  dz  z   t        |d	z  t        d      dz   z  dz  d|dz  z  dz  z         z  t        ddt        d      z  z   z  dz  t        d      t        z  dz  z
  t        |d	z  dt        d      z
  z  dz  d|dz  z  dz  z         z  z         t         ||      t        d      t        z  dz  t        ddt        d      z  z
  z  dz  z   t        |d	z  dt        d      z
  z  dz  d|dz  z  dz  z         z  t        d      t        z  dz  t        ddt        d      z  z   z  dz  z
  t        |d	z  t        d      dz   z  dz  d|dz  z  dz  z         z  z
        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |      d|z   | |      z  |dz   ||      z  z         t        t         ||      |      d|dz  z
   | |      z  d|z  d|dz  z  z    ||      z  z         g}t         | |      t         ||      z  t         ||      z  t%        |dz  t        t%        d|z  |            z  t        t%        d|dz  z  d|z  z   |            z   ||      dz  z  |      z  z         t         ||      t         ||      z  t         ||      t%        |dz  t        t%        d|z  |            z  t        t%        d|dz  z  d|z  z   |            z   ||      dz  z  |      z  t        t%        d|z  |            t        t%        d|dz  z  d|z  z   |            z   ||      z  z   z  z         g} t        |      | k(  sJ y )Nzf g h k x0 y0r9   x t arTr  r<   r   r?   rw   "   r_   r>   r   rB   r@   r  r   rA   Fr^  rx   M      r=   )r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r)  r*  r   r-   )!r4   r5   r6   r   ro  y0r3   r;   r   r|  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   s!                                    rI   #test_sysode_linear_neq_order1_type3r    sd   !/x@Aq!QRgGAq!$Az!A$"AadFQqTM2z!A$"QBqtGadN35DqtRAYs1a46{*RAYs1a46{-BBCqtRAYs1a46{*RAYs1a46{-BBCED$<4$%$A777z!A$"AqD1I!A$$67z!A$"AadF1Q4K1QT6A:qt2C$CDFDqtd2hrk"nr2$r(
?';B'>>AqD!dSUh,DWXYDY\]_`\`ab\bDb@ccAq48|$Q&Aa/0$r(2+b.2qbzTVCWX`acegXhCh2hij kqtSAq48|,Q.Aa78"b1T"X:o:Nr:QTXY[T\]_T_`hika U ; 1a$r(l+A-1Q67QtBxZ"_9Mb9PSWXZS[\^S^_ghikm_nSn9nop qrD $<4$%$A777qtyy|QqtVad]+qtyy|adUQqtV^,.DqtbdQrT!VmSAa!A#%66QT!Vac\9JBqDSTUWSWX`acefXgSgLg9hhiqtad1fr!tmSAa!A#%66QT!Vac\9JAbDQRFUWX`acefXgUgLg9hhikD$<4$%$A777qtyy|Q!qtad 234b11q!A$QRSTQU+XYZ[X\J\G]6^qtyy|Q!qtad 2346DqtbSURT\AbDF*bdRTkBqD.@#a1fQh--OOPqtQrT!Vbd]RT)RTBqD[2a4-?Qq!tVAX,NNOqtbSUQrT!V^bd*bdRTkBqD.@#a1fQh--OOPRD $<4$%$	)::::qtyy|QT1Q4!A$;1#567AaDIIaL!Q$PQRSPTWXYZW[P[^_`a^bPbJc9dqtyy|QT1Q4!A$;1#5679DqtbSURT\AbDF*bdRTkBqD.@#ad)-KKLqtQrT!Vbd]RT)RTBqD[2a4-?QT,JJKqtbSUQrT!V^bd*bdRTkBqD.@#ad)-KKLND $<4$%$	)::::z!A$"Aqtad{QqT'9AaD'@$ABz!A$"Aqtad{QqT'9AaD'@$ABz!A$"Aqtad{QqT'9AaD'@$ABz!A$"Aqtad{QqT'9AaD'@$ABDD qtbSURT\BqD(1R461RTBqD[2a45G"Q$5NPSTUVWYZVZTZP[4[[\qtQrT!Vbd]RT)BqD0BqD2a4K"Q$4FA4MsSTUVXYUYSY{3ZZ[qtbSUQrT!V^bd*RT1RTBqD[2a45G"Q$5NPSTUVWYZVZTZP[4[[\qtbSURT\AbDF*RT1RTBqD[2a45G"Q$5NPSTUVWYZVZTZP[4[[\^D $<4$%$)====$Az!A$"AadFQqTM2z!A$"AadFQqTM24DqtRAqDF^CF*RAqDF^CF-BBCqtRAqDF^CF*RAqDF^CF-BBCED$<4$%$A777
 z!A$"AaC!Hq1v$56z!A$"AadFQqS1X$568DqtSbdRTku=c!AqD&(QqS.>QQUWXYUY\^_`\`U`befghiklhlflmnfnqrstqtftbuTuuvqtbdRTk3qAvax!A#~#66"Q$A+s1QPQT6RS8VWXYVY>GZ9ZZ[]D$<4$%$A777tAaD!}ac!A$hAad23tAaD!}q!teAaDj1Q3qt8346DqtbdQrT!VmS1a4AadF1H)<%==A"QPSUVTVWXZ[W[T[\]T]`abcefbf`fgh`hThPi@iijqtSad1fr!tm%@aR1WQYQRSTVWSWQWXYQYEYAZZ^_`b^bcd^dgijkgk^kmpqrstvwswqwxyqy|}~  BC  C  }C  DE  }E  rE  nF  ^F  F  GHD$<4$&41Q%.888QqT1q!tAaDy1Q3qt834QqT11uQqTzQq!tVac\1Q4,??@BE!r2$r(
?+C/$r(2+b.@#adDQSHWXLFYZ[F[^_`acd`d^def^fFfBggkmoqtuvz{}v~t~o~k  AD  lD  GK  LN  GO  PR  GR  SU  GU  lU  WZ  [\  ^_  [_  ab  ei  jl  em  am  [n  op  [p  st  uv  xy  uy  sy  z{  s{  [{  W|  k|  |  }!tBx{2~B48O(<S(@@#adAPTUWPXLFYZ[F[^_`acd`d^def^fFfBggkoprkstvkvwyky|~  AC  FG  HL  MO  HP  FP  AP  }Q  RU  }U  lU  WZ  [\  ^_  [_  ae  fh  ai  lm  am  [n  op  [p  st  uv  xy  uy  sy  z{  s{  [{  W|  k|  |  }~E%=E!!!%%(TQqEN:::QqT1qs1Q4x!Q$qt)34QqT1!Q$!}!a1fad/BBCEE!bAhBqE(1a4HQqS!<L8M3McRZ[\]^`a]a[adefgdg[gijRkNl3lmopqmrtumu3uwx*y!yyz!bAhRU8AqDXac1=M9N4NsS[\]^_ab^b\befgheh\hjkSlOm4mnpqrnsuvnv4vxy+z%z  ~A  BJ  KL  MN  KN  PQ  BR  ~S  TW  X`  ab  cd  fg  cg  ag  jk  lm  jm  am  op  Xq  Tr  ~r  su  vw  sx  ~x  &x  "y  y  z{E%=E!!!rK   c                  ;   t        dt              \  } }}}t        d      \  }}}t        dd      }t        t         | |      |       | |      | ||      z  z   |dz  z         t        t         ||      |      |  | |      z   ||      z   |z         g}t         | |      t        t        |      z  t        |dz  dz        z  t        t        |      z  t        |dz  dz        z  z   t        |      t        |dz  dz        z  t        |dz  t        |       z  t        |dz  dz        z  |t        |       z  t        |dz  dz        z  z   |      z  z   t        |      t        |dz  dz        z  t        |dz  t        |       z  t        |dz  dz        z  |t        |       z  t        |dz  dz        z  z
  |      z  z         t         ||      t        t        |      z  t        |dz  dz        z  t        t        |      z  t        |dz  dz        z  z
  t        |      t        |dz  dz        z  t        |dz  t        |       z  t        |dz  dz        z  |t        |       z  t        |dz  dz        z  z
  |      z  z
  t        |      t        |dz  dz        z  t        |dz  t        |       z  t        |dz  dz        z  |t        |       z  t        |dz  dz        z  z   |      z  z         g}	t        |      |	k(  sJ t        ||	      dddgfk(  sJ t        t         | |      |       | |      | ||      z  z   |z         t        t         ||      |      |  | |      z   ||      z   t        |      z         g}
t         | |      t        t        |      z  t        |dz  dz        z  t        t        |      z  t        |dz  dz        z  z   t        |      t        |dz  dz        z  t        |t        |       z  t        |dz  dz        z  t        |       t        |      z  t        |dz  dz        z  z   |      z  z   t        |      t        |dz  dz        z  t        |t        |       z  t        |dz  dz        z  t        |       t        |      z  t        |dz  dz        z  z
  |      z  z         t         ||      t        t        |      z  t        |dz  dz        z  t        t        |      z  t        |dz  dz        z  z
  t        |      t        |dz  dz        z  t        |t        |       z  t        |dz  dz        z  t        |       t        |      z  t        |dz  dz        z  z
  |      z  z
  t        |      t        |dz  dz        z  t        |t        |       z  t        |dz  dz        z  t        |       t        |      z  t        |dz  dz        z  z   |      z  z         g}t        |
d	d	
      |gk(  sJ t        |
|      dddgfk(  sJ t        t         | |      |      | | |       ||      z    ||      z   z  |z         t        t         ||      |      | | |       ||      z    ||      z   z  |z         t        t         ||      |      | | |       ||      z    ||      z   z  dz         g}t         | |      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   |dz  dz  z   |t        dd      z  z   t        dz  t        dz  z   t         dz  z   t        |dz  t        dd      z        z  z   t#        d      t#        t$              z  t'        t#        d      |z  dz        z  t        |dz  t        dd      z        z  dz  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   |dz  dz  z   |t        dd      z  z   t        dz  t        dz  z   t         dz  z   t        |dz  t        dd      z        z  z   t#        d      t#        t$              z  t'        t#        d      |z  dz        z  t        |dz  t        dd      z        z  dz  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   |dz  t        dd      z  z   |t        dd      z  z   t        dz  t        dz  z   t         dz  z   t        |dz  t        dd      z        z  z   t#        d      t#        t$              z  t'        t#        d      |z  dz        z  t        |dz  t        dd      z        z  dz  z   t        dd      z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        t         | |      |      | | |       ||      z    ||      z   z  t        |      z         t        t         ||      |      | | |       ||      z    ||      z   z  t        |      z         t        t         ||      |      | | |       ||      z    ||      z   z  t        |      z         g}t         | |      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t        dz  t        dz  z   t         dz  z   t        |dz  t        dd      z        z  z   t        t        |      t        |dz  t        dd      z        z  |      t        |dz  t        dd      z        z  z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t        dz  t        dz  z   t         dz  z   t        |dz  t        dd      z        z  z   t        t        |      t        |dz  t        dd      z        z  |      t        |dz  t        dd      z        z  z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t        dz  t        dz  z   t         dz  z   t        |dz  t        dd      z        z  z   t        t        |      t        |dz  t        dd      z        z  |      t        |dz  t        dd      z        z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        t         | |      |      | | |       ||      z    ||      z    ||      z   dz   z        t        t         ||      |      | | |       ||      z    ||      z    ||      z   dz   z        t        t         ||      |      | | |       ||      z    ||      z    ||      z   dz   z        t        t         ||      |      | | |       ||      z    ||      z    ||      z   dz   z        g}t         | |      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        d|dz  z        z  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        d|dz  z        z  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        d|dz  z        z  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        d|dz  z        z  z   t        dd      z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        t         | |      |      |dz   | |       ||      z    ||      z    ||      z   dz   z        t        t         ||      |      |dz   | |       ||      z    ||      z    ||      z   dz   z        t        t         ||      |      |dz   | |       ||      z    ||      z    ||      z   dz   z        t        t         ||      |      |dz   | |       ||      z    ||      z    ||      z   dz   z        g}t         | |      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dz  t        dd      z        z  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dz  t        dd      z        z  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dz  t        dd      z        z  z   t        dd      z         t         ||      t        t        dd      z  t        t        dd      z  z   t         t        dd      z  z   t(        t        dd      z  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dz  t        dd      z        z  z   t        dd      z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        t         | |      |       | |       ||      z    ||      z   t        |      z  t        |      z         t        t         ||      |       | |       ||      z    ||      z   t        |      z  t        |      z         t        t         ||      |       | |       ||      z    ||      z   t        |      z  t        |      z         g}t         | |      t         dz  t        dz  z
  dt         z  dz  z   t        dz  t        dz  z   t         dz  z   t        |dt        |      z  dz
  z        z  z   t        |dt        |      z  dz
  z        t        t        d|z        t        d|z  t        |      z        z  t        |      z  |      z  z         t         ||      dt        z  dz  t        dz  z
  t         dz  z
  t        dz  t        dz  z   t         dz  z   t        |dt        |      z  dz
  z        z  z   t        |dt        |      z  dz
  z        t        t        d|z        t        d|z  t        |      z        z  t        |      z  |      z  z         t         ||      t         dz  dt        z  dz  z   t         dz  z
  t        dz  t        dz  z   t         dz  z   t        |dt        |      z  dz
  z        z  z   t        |dt        |      z  dz
  z        t        t        d|z        t        d|z  t        |      z        z  t        |      z  |      z  z         g}t+        d      5  t        |d	d	
      |k(  sJ 	 d d d        t        ||      dg dfk(  sJ t        t         | |      |       | |       ||      z    ||      z    ||      z   t        |      z  t        |      z         t        t         ||      |       | |       ||      z    ||      z    ||      z   t        |      z  t        |      z         t        t         ||      |       | |       ||      z    ||      z    ||      z   t        |      z  t        |      z         t        t         ||      |       | |       ||      z    ||      z    ||      z   t        |      z  t        |      z         g}t         | |      t         dz  t        dz  z
  t         dz  z
  dt(        z  dz  z   t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dt        |      z  dz
  z        z  z   t        |dt        |      z  dz
  z        t        t        d|z        t        d|z  t        |      z        z  t        |      z  |      z  z         t         ||      dt        z  dz  t        dz  z
  t         dz  z
  t(        dz  z
  t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dt        |      z  dz
  z        z  z   t        |dt        |      z  dz
  z        t        t        d|z        t        d|z  t        |      z        z  t        |      z  |      z  z         t         ||      t         dz  dt        z  dz  z   t         dz  z
  t(        dz  z
  t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dt        |      z  dz
  z        z  z   t        |dt        |      z  dz
  z        t        t        d|z        t        d|z  t        |      z        z  t        |      z  |      z  z         t         ||      t         dz  t        dz  z
  dt         z  dz  z   t(        dz  z
  t        dz  t        dz  z   t         dz  z   t(        dz  z   t        |dt        |      z  dz
  z        z  z   t        |dt        |      z  dz
  z        t        t        d|z        t        d|z  t        |      z        z  t        |      z  |      z  z         g}t+        d      5  t        |      |k(  sJ 	 d d d        t        ||      dg dfk(  sJ y # 1 sw Y   %xY w# 1 sw Y   ,xY w)Nr]  r9   r{  r|  Tr  r<   r   Fsimplifydoitr=   r>   r?   r_      r   rx   rB   rC   r@   r  r   )r   r   r
   r   r   r   r   r   r   r-   r   r   r   r'   r   r   r)  r   r	   r   r*  r   )r4   r5   r6   r   r3   r;   r   r|  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                           rI   #test_sysode_linear_neq_order1_type4r  d  sw    1JAq!QgGAq!$AtAaD!}adQqtVmad23RQqT1r!A$wQRSTQU~XYGY5Z[DqtRAYs1a46{*RAYs1a46{-BBSVCPQSTPTUVPVKEWX`abdeaefikljlfmamnqrsuvrvwxrxnyay#qb'	#ad1f+%b&'(Y* F* *,/F3q!tAv;,>x1SRSQSWUXYZ\]Y]^_Y_U`H`cdehjkikelclmpqrtuquvwqwmxcxHxz{?|,|} ~qtRAYs1a46{*RAYs1a46{-BBSVCPQSTPTUVPVKEWX`abdeaefikljlfmamnqrsuvrvwxrxnyay#qb'	#ad1f+%b&'(Y* F* *,/F3q!tAv;,>x1SRSQSWUXYZ\]Y]^_Y_U`H`cdehjkikelclmpqrtuquvwqwmxcxHxz{?|,|} ~D $<4$%$A777tAaD!}adQqtVma/0"T!A$]QBqtGaPQdNUXYZU[D[2\]DqtRAYs1a46{*RAYs1a46{-BBSVCPQSTPTUVPVKEWX`abcfhigicjajknoprsostuoukvavQBAs1a46{*b+,-Y/ F/ /14QAqDF1CHQsTUSUwYWZ[\^_[_`a[aWbMbehjkikelmpqrmsestw1Qu f NE 2  qtRAYs1a46{*RAYs1a46{-BBSVCPQSTPTUVPVKEWX`abcfhigicjajknoprsostuoukvavQBAs1a46{*b+,-Y/ F/ /14QAqDF1CHQsTUSUwYWZ[\^_[_`a[aWbMbehjkikelmpqrmsestw1Qu f NE 2 D E:tfDDD$%$A777z!A$"Aqtad{QqT'9$:Q$>?z!A$"Aqtad{QqT'9$:Q$>?z!A$"Aqtad{QqT'9$:Q$>?AD qtRQ'"Xb!_*<<r(1a.?PPSTVWSWXYSYY\]^fgikl^m\mmdRTkBqD #ad8Aq>&9"::;!WT"Xc$q'!)A+..s1a4A3F/GGJKMUVXZ[_] ^ qtRA&HRO);;b"a>PPSTVWSWXYSYY\]^fgikl^m\mmdRTkBqD #ad8Aq>&9"::;!WT"Xc$q'!)A+..s1a4A3F/GGJKMUVXZ[_] ^ qtRQ'"Xa^*;;b"a>PPSTVWSWX`acefXgSggx1~!#A1r!t!3SAhq!n9L5M MN!WT"Xc$q'!)A+..s1a4A3F/GGJKMUVXZ[_] ^_D $<4$%$	)::::z!A$"Aqtad{QqT'9$:SV$CDz!A$"Aqtad{QqT'9$:SV$CDz!A$"Aqtad{QqT'9$:SV$CDFD qtRQ'"Xb!_*<<r(1a.?PPTVWXTX[]^_[_T_TUq!tHQN*+T, ,.6s1vc!Q$xPRTUBV>W7WYZ.[\_`acd`demnof a ] /  qtRA&HRO);;b"a>PPTVWXTX[]^_[_T_TUq!tHQN*+T, ,.6s1vc!Q$xPRTUBV>W7WYZ.[\_`acd`demnof a ] /  qtRQ'"Xa^*;;b"a>PPTVWXTX[]^_[_T_TUq!tHQN*+T, ,.6s1vc!Q$xPRTUBV>W7WYZ.[\_`acd`demnof a ] / D $<4$%$	)::::z!A$"Aqtad{QqT'9AaD'@1'D$EFz!A$"Aqtad{QqT'9AaD'@1'D$EFz!A$"Aqtad{QqT'9AaD'@1'D$EFz!A$"Aqtad{QqT'9AaD'@1'D$EFHD qtRQ'"Xb!_*<<r(2q/?QQTVW_`acdWeTeeiklmimTjqDja4j !$Qq!tVi- -/7A? @qtRA&HRO);;b"a>PPSUV^_acdVeSeeiklmimTjqDja4j !$Qq!tVi- -/7A? @qtRQ'"Xa^*;;b"a>PPSUV^_acdVeSeeiklmimTjqDja4j !$Qq!tVi- -/7A? @qtRQ'"Xb!_*<<r(1a.?PPSUV^_acdVeSeeiklmimTjqDja4j !$Qq!tVi- -/7A? @AD $<4$%$)====z!A$"AqD!A$1+!*<qt*Ca*G$HIz!A$"AqD!A$1+!*<qt*Ca*G$HIz!A$"AqD!A$1+!*<qt*Ca*G$HIz!A$"AqD!A$1+!*<qt*Ca*G$HIKD qtRQ'"Xb!_*<<r(2q/?QQTVW_`acdWeTeeiklmimTjqDja4j !$QT(1a.%8!9i: :<DROL MqtRA&HRO);;b"a>PPSUV^_acdVeSeeiklmimTjqDja4j !$QT(1a.%8!9i: :<DROL MqtRQ'"Xa^*;;b"a>PPSUV^_acdVeSeeiklmimTjqDja4j !$QT(1a.%8!9i: :<DROL MqtRQ'"Xb!_*<<r(1a.?PPSUV^_acdVeSeeiklmimTjqDja4j !$QT(1a.%8!9i: :<DROL MND $<4$%$)====z!A$"QqTAaD[1Q4%7Q$?#a&$HI2jYZ[\Y]_`NadefgdhklmnkododeFd Vd$ L%&(AaD!)<qtad{QqT?QSVWXSY>Y\_`a\b>b&ceDqtbSURT\AbDF*bdRTk1/!Qs1vX\*+., ,.1!Qs1vX6 3 / QqS#bd3q6k*:!:3q6!A1E/FF G qtQrT!Vbd]RT)RTBqD[1.!Qs1vX\*+-, ,.1!Qs1vX6 3 / QqS#bd3q6k*:!:3q6!A1E/FF G qtbSUQrT!V^bd*bdRTk1/!Qs1vX\*+., ,.1!Qs1vX6 3 / QqS#bd3q6k*:!:3q6!A1E/FF GHD 
T	 @dU74???@$%$	)::::z!A$"QqTAaD[1Q4%7!A$%>A$FQ$OPRTU_`abc`dfgUhklmnkodlqTlaDl!"%a&k)+.q6k2 S346z!A$7JQqTTUVWTX[[\]^[_M_bcdebfMfhklmhnLnFM 5
1Q4+adQqTkAaD.@1Q4.GQ-ORUVWRX-XY[D qtbSURT\BqD(1R461RTBqD[2a45G16!Qs1vX\*+5, ,.1!Qs1vX6 3 / QqS#bd3q6k*:!:3q6!A1E/FF G qtQrT!Vbd]RT)BqD0BqD2a4K"Q$4F15!Qs1vX\*+4, ,.1!Qs1vX6 3 / QqS#bd3q6k*:!:3q6!A1E/FF G qtbSUQrT!V^bd*RT1RTBqD[2a45G16!Qs1vX\*+5, ,.1!Qs1vX6 3 / QqS#bd3q6k*:!:3q6!A1E/FF G qtbSURT\AbDF*RT1RTBqD[2a45G16!Qs1vX\*+5, ,.1!Qs1vX6 3 / QqS#bd3q6k*:!:3q6!A1E/FF GHD 
T	 $d|t###$$%$)====+@ @&$ $s    bAwvAwwAwwAw#c                  f   t        dt              \  } }t        d      \  }}t        t         | |      |      d | |      z   ||      z   |z        t        t         ||      |       | |      d ||      z  z   |z        g}t         | |      t         |z  t
        |dz  z  z         t         ||      t        |z  t
        |dz  z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |      d | |      z   ||      z   dz   |z        t        t         ||      |      | | |      z   d ||      z  z   |z        g}t         | |      t
        |dz  z  |t        t        dd	      z   z  z
  |t        |      z  t        d
d      z  z   t        dd      z         t         ||      t
        |dz  z  |t        |      z  dz  z   |t        t        d
d	      z   z  z   t        dd      z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ y )Nr   r9   zx x_r<   r?   Tr   r=   r@   r>   r   )
r   r   r
   r   r   r   r   r   r   r   )r4   r5   r3   x_r   r   r   r   s           rI   )test_sysode_linear_neq_order1_type5_type6r    s-   5h'DAqFOEAr z!A$"QqtVad]A$56:adA;NQRSTQUXYZ[\]Z^X^Q^`aPa8bcDqtbSUR1W_%r!A$1r!Q$w'?@D$<4$%$A777 z!A$"QqtVad]Q%6$9:z!A$"Q1X!A$%6$9:<DqtR1Wq"x1~"5663q6(2q/9QQT\]_abTccdqtR1WqQxz)ArHRO/C,DDxPQST~UVXD$<4$%$A777rK   c                  6/   t        dt              \  } }t        d      }t        t         | |      |df      d | |      z   ||      z         t        t         ||      |df       | |             g}t         | |      t         |z  t        |       z  t        |z  t        |      z  z   t        t        z
  t        |       z  z
  t        t        z   t        |      z  z         t         ||      t        |z  t        |       z  t        |z  t        |      z  z
  t        t        z   t        |       z  z   t        t        z
  t        |      z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t         | |      j                  |d      d      t         ||      j                  |d       | |            g}t         | |      t        t        |z  z         t         ||      t        |dz  z  dz  t        |dz  z  dz  z   t        z   t        |z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |df      d | |      z        t        t         ||      |df       | |       d ||      z  z         g}t         | |      d	t        z  t        t        d       |z        z  d	t        z  t        t        d      |z        z  z         t         ||      t        d      t        z  |z  t        t        d       |z        z  t        d      t        z  |z  t        t        d      |z        z  z
  t        t        d      t        z  z   t        t        d       |z        z  z   t        t        d      t        z  z
  t        t        d      |z        z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |df      d | |      z   ||      z         t        t         ||      |df      d ||      z        g}	t         | |      t        |z  t        t        d      |z        z  d	z  t        |z  t        t        d       |z        z  d	z  z   t        d	z  t        d      t        z  d
z  z   t        t        d       |z        z  z   t        t        d      |z        t        d      t        z  d
z  t        t        dd	      z  z   z  z
        t         ||      t        d      t        z  t        t        d      |z        z  dz  t        d      t        z  t        t        d       |z        z  t        dd      z  z         g}
t        |	      |
k(  sJ t        |	|
      dddgfk(  sJ t         | |      j                  |d       | |            t         ||      j                  |d       | |            g}t         | |      t         t        |       z  t        t        |      z  z         t         ||      t         t        |       z  t        t        |      z  z   t        z   t        |z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |df       | |       ||      z         t        t         ||      |df       | |        ||      z
        g}t         | |      t        t        |dz  z  dz  z   t        z   t        |dz  z  dz  z   |t        t        z   z  z         t         ||      t         t        |dz  z  t        dd      z  z   t        |z  z
  t        |dz  z  t        dd      z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |df       | |       ||      z   dz         t        t         ||      |df       | |       ||      z   dz         g}t         | |      t         t        |z  z
  t        d      t        z  t        t        d      |z        z  dz  z   t        d      t        z  t        t        d       |z        z  t        dd      z  z   t        dd      z         t         ||      t        t        |z  z   t        d      t        z  t        t        d      |z        z  dz  z   t        d      t        z  t        t        d       |z        z  t        dd      z  z   t        dd      z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |df       | |       ||      z   dz         t        t         ||      |df       | |        ||      z
  dz         g}t         | |      t        t        z   t        |dz  z  dz  z   |d	z  dz  z   |dz  t        dz  t        dd      z   z  z   |t        t        z   z  z         t         ||      t         t        |z  z
  t        |dz  z  t        dd      z  z   |d	z  t        dd      z  z   |dz  t        dz  t        dd      z   z  z
        g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        dt              \  }}t        d      \  }}t        t         ||      |df      d ||      z  d ||      z  z         t        t         ||      |df       ||      d ||      z  z         g}t         ||      t        ddt        d      z  z
  z  t        t        d      dz         z  t        | t        t        d      dz         z        z  dz  t        t        dt        d      z
        z  ddt        d      z  z   z  t        | t        dt        d      z
        z        z  dz  z   t        ddt        d      z  z
  z  t        t        d      dz         z  t        |t        t        d      dz         z        z  t        dd      z  z   t        t        dt        d      z
        z  ddt        d      z  z   z  t        |t        dt        d      z
        z        z  t        dd      z  z         t         ||      t        dt        d      z
  z  t        t        d      dz         z  t        | t        t        d      dz         z        z  t        dd      z  t        t        dt        d      z
        z  t        d      dz   z  t        | t        dt        d      z
        z        z  t        dd      z  z   t        dt        d      z
  z  t        t        d      dz         z  t        |t        t        d      dz         z        z  dz  z   t        t        dt        d      z
        z  t        d      dz   z  t        |t        dt        d      z
        z        z  dz  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        d ||      z  t         ||      |df      z   dt         ||      |      z  z
  d      t        d ||      z  dt         ||      |      z  z   t         ||      |df      z   d      g}t         ||      t        dt        d      z
  z  t        t        d      |z  t        dt        d      z  dz         z  dz        z  dz  t        dt        d      z
  z  t        t        d      |z  t        dt        d      z  dz         z  dz        z  t        dd      z  z   t        dt        d      z   z  t        t        d      |z  t        ddt        d      z  z
        z  dz        z  dz  z   t        dt        d      z   z  t        t        d      |z  t        ddt        d      z  z
        z  dz        z  t        dd      z  z         t         ||      t        dt        d      z
  z  t        t        d      |z  t        dt        d      z  dz         z  dz        z  t        dd      z  t        dt        d      z
  z  t        t        d      |z  t        dt        d      z  dz         z  dz        z  t        dd      z  z   t        dt        d      z   z  t        t        d      |z  t        ddt        d      z  z
        z  dz        z  dz  z   t        dt        d      z   z  t        t        d      |z  t        ddt        d      z  z
        z  dz        z  dz  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |df      t         | |      |      |z   | |      |dz  z  z    ||      |dz  z  z         t        t         ||      |df       ||      |dz  z        g}t         | |      t        t        d      dz   z  t        dd      z  |t        dd      t        d      t        dd      z  z   z  z  t        |t        dd      t        d      dz  z   z  z  dt        d      z
  z  t        dd      z  z   t        |dt        d      z
  z  z  dt        d      z   z  z
  t        |dt        d      z   z  z  dt        d      z
  z  z
        t         ||      t        dt        d      z   z  t        dd      z  |t        dd      t        d      t        dd      z  z   z  z  t        |t        dd      t        d      dz  z   z  z  dt        d      z
  z  t        dd      z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         | |      |df      | | |      z        t        t         ||      |df      | ||      z        g}t         | |      t        t!        |      z  t        t#        |      z  z         t         ||      t        t!        |      z  t        t#        |      z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ t        t         ||      |df      |d	t         ||      |      z  d
t         ||      |      z  z   z        t        t         ||      |df      |dt         ||      |      z  dt         ||      |      z  z
  z        g}t         ||      t        t%        t        d      |z        t        d      t        t&              z  t        z  dz  t        d      t        t&              z  t        z  t        dd      z  z   z  z
  t)        t        d      |z        t        d      t        t&              z  t        z  t        dd      z  t        d      t        t&              z  t        z  t        d	d      z  z   z  z         t         ||      t        t%        t        d      |z        t        d      t        t&              z  t        z  t        dd      z  t        d      t        t&              z  t        z  t        dd      z  z   z  z   t)        t        d      |z        t        d      t        t&              z  t        z  t        dd      z  t        d      t        t&              z  t        z  t        dd      z  z   z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ y )Nr   r9   r3   r<   Tr   r?   r_   r@   r   r>   r=   r^   x, yt, lrA   r'  rx   =   /   rt   m   _      r   r  7   rg  n   )r   r   r
   r   r   r   r)  r   r*  r   r   r   r   r   r   r   r+   r,   r   r	   r   ) r4   r5   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r   r   r   r  r   r  r   r  r   r  r   s                                    rI    test_higher_order_to_first_orderr    s   5h'DAqAz!A$A'1Q4!A$7z!A$A'!A$/1DqtbSU3r7]RT#a&[0BGS!W3DDRQTUVQWGWWXqtRT#qb'\BqDQK/27CG2CCrBwPSTUPVFVVWYD$<4$%$A777qtyyA"BqtyyA!$=>DqtR"Q$YAaD"QT'!)bAgai*?"*Dr!t*K!LMD$<4$%$A777z!A$A'1Q40z!A$A'!A$1Q48:DqtQrT#tAwhqj/)AbDT!WQY,??@qtT!WRZ\#tAwhqj/1DGBJqLT!WQY4OOSU!WRZTd1gXaZS) ),.aOSa^+KL MND $<4$%$A777z!A$A'1Q4!A$7z!A$A'1Q402DqtRT#d1gai.(*RT#tAwhqj/-A!-CCr!tdSTgVXjYZlGZ\_aefgah`hij`j\kFkka^T!WRZ\BxA,>>?@ AqtT!WRZDGAI.q0472:c47(1*o3MhWY[\o3]]^`D $<4$%$A777qtyyA!%r!A$))Aq/1Q4'@ADqtbSaR[2c!f9,-r!A$CGbQi8ORT8TWYZ[W[8[/\]D$<4$%$A777z!A$A'1!5z!A$A'!A$168DqtR"QT'!)^b(2ad7194q"r'{BCqtbS2ad78B?22RT9Bq!tGHRQRO<SSTVD$<4$%$A777z!A$A'1!q9z!A$A'1!q9;DqtbS2a4Z$q'"*Sa^";A"==Q
3PTUVPWxXYz?@Z[cdfhi[j@jjb!_ qtR"Q$YaCQ	N!:1!<<tAwrz#tTUwhWXj/?YZbceghZi?iib!_ D $<4$%$A777z!A$A'1!q9z!A$A'!A$1)9:<DqtR"Wr!Q$wqy(1a472QT2a4(1a.;P5QQTUWY\^W^T__`qtbS2a4Z"QT'(2q/"99AqD"bAQ<QQTUWXTXZ\]^Z^aijlb [ U  D $<4$%$A7776x(DAq6?DAq
1Q4!Q(!AaD&2ad7*:;
1Q4!Q(!A$1Q4-8:E!b"qbz/*4R1+==c1"T$r(UV,EWBW>XXYZZ]_`def2hf a ^aRj^**-qba$r(l1C.C*D^EEF^G GIKRRSTXY[T\R\_I]^bcghjckd _ JQtDHqL))*J++3B?J;;=?Qb\@R=RTVYZ[_`b[cYcTc=dehijkopqRq l j f >#B?>++ , !b!d2h,'T"X\(::3r$tBxRS|BT?T;UUV^_acdVeehjkopqRq l i8a<i)),aRQb\0B-B)CiDDLRQROiT TVXZ[2h[ WT"X\*W++.qd2hl1C/C+DWEEFWGGIKDQRUYZ\U]Q]L^I^`deg`ha JQtARL))*J++,J-- .	/E %=E!!!%'D1a&>999!A$AaD1a&11Aj1q6I4II1M!A$:adA...AaD1a&1II1MOE!b!d3i-(T!WQYtAd3iK"<L7M-Ma-O)PPQSSVXZ[3i[ WT!WQYtAd3iK",<'==a?@WAAI"bAQWR RTVXY3iY UT!WQYtB49,<'==a?@UAACUDDFH!dSVi-FXY\]abc]def]fgklnS	km h ^^ Z G&r2.G// 0 !b!d3i-(T!WQYtAd3iK"<L7M-Ma-O)PPQYZ\^`Qaadfhi3ii eT!WQYtAd3iK",<'==a?@eAAI"bAQeR RTVXY3iY UT!WQYtB49,<'==a?@UAACUDDFH!dSVi-FXY\]abc]def]fgklnS	km h ^^ Z G G!! "	#E %=E!!!%'D1a&>999 
1Q4!Q(*QqT1*=a*?!A$q!t)*KaPQdSTVWSWi*WX
1Q4!Q(!A$q!t)46E!b$q'A+&xA6q8Aq>QQ'<( 8) )+-a(1a.Q	3 / ,QK,))1"a,99;=a!QC ? <d1g+<'' *,ADG,<)<a$q'k)JK L !b!d1g+&xA6q8Aq>a"a(<) 8* *,.q8Aq>!WQY4 0  - !"T!W-..6r1o->> ?	@E %=E!!!%'D1a&>999 
1Q4!Q(!AaD&1	JqtaV$a!f	-/E!blRq	\12	AaD"VAY,F1I-	.0E%=E!!!%'D1a&>999 
1Q4!Q(!Qz!A$/B-BQzRSTURVXYGZEZ-Z*[\
1Q4!Q(!R
1Q40C-Ca
STUVSWYZH[F[-[*\]_E!b3tAwqy>4748+;B+>r+ADGDQSHDTUWDWX`acegXhDh+hii4719otAwtBx/28Ar?BT!WTRTXEUVXEXYabcegYhEhhij k!b3tAwqy>4748+;B+>x2+NQUVWQXY]^`YaQabdQdemnpf R ,  $q'!)_d1gd2h&6r&9(1c:J&JTRSWUYZ\U]M]^`M`aijkmoapMp&pqr stE %=E!!!%'D1a&>999rK   c                     t        dt              \  } }t        d      } | |       ||      z   dt        t        |z        z  z
  dt	         | |      |      z  z   t	         | |      |df      z    | |       ||      z   dt        t        |z        z  z
  dt	         ||      |      z  z   t	         ||      |df      z   g}t         | |      t         t        t        d|z        z  dz  z   t        dz  t        dz  z
  t        |       z  t        |      z  z
  t        dz  t        dz  z   t        |       z  t        |      z  z   dddt        z  z
  t        t        |z        z  t        |      dz  z  dz  z  z   dddt        z  z
  t        t        |z        z  t        |      dz  z  dz  z  z         t         ||      t        t        t        d|z        z  dz  z
  t        dz  t        dz  z
  t        |       z  t        |      z  z
  t        dz  t        dz  z   t        |       z  t        |      z  z   dddt        z  z
  t        t        |z        z  t        |      dz  z  dz  z  z   dddt        z  z
  t        t        |z        z  t        |      dz  z  dz  z  z         g}t        |      |k(  sJ t        ||      dd	d	gfk(  sJ y )
Nr   r9   r3   r<   r   r=   rA   Tr   )r   r   r   r   r   r
   r   r*  r   r)  r   r   r   r   )r4   r5   r3   r   r   s        rI   "test_higher_order_to_first_order_9r  k  s   5h'DAqAaD1Q4K!C!H*$qAaD!)<'<<z!A$QRTUPV?WWaD1Q4K!C!H*$qAaD!)<'<<z!A$QRTUPV?WWYD!rcBs2a4yLN*bdRTk3r7-B3q6-II!tbd{CG+CF2356QqS#ac(8J3q6ST98TUV8V5WX!ac'3qs8+CFAI5a789 : qtR"SAY,q.(BqD2a4KaR+@Q+GG!tbd{CG+CF2356QqS#ac(8J3q6ST98TUV8V5WX!ac'3qs8+CFAI5a789 :;D $<4$%$A777rK   c                     t        dt              \  } }t        d      }t        dt              \  }}t        d      \  }}t        d ||      z  t         ||      |df      z   dt         ||      |      z  z   d	      t        d ||      z  dt         ||      |      z  z
  t         ||      |df      z   d	      g}t         ||      t        dt        d
      z
  z  t        d|z  t        dt        d
      z  dz         z        z  t        dd      z  t        dt        d
      z
  z  t        d|z  t        dt        d
      z  dz         z        z  dz  z   t        dt        d
      z   z  t        d|z  t        ddt        d
      z  z
        z        z  t        dd      z  z   t        dt        d
      z   z  t        d|z  t        ddt        d
      z  z
        z        z  dz  z         t         ||      t        dt        d
      z
  z  t        d|z  t        dt        d
      z  dz         z        z  t        dd      z  t        dt        d
      z
  z  t        d|z  t        dt        d
      z  dz         z        z  t        dd      z  z   t        dt        d
      z   z  t        d|z  t        ddt        d
      z  z
        z        z  dz  z   t        dt        d
      z   z  t        d|z  t        ddt        d
      z  z
        z        z  dz  z         g}t        |      |k(  sJ t        ||      dd	d	gfk(  sJ y )Nr   r9   r3   r  r  r@   r<   r   r   rA   rx   r>   T)r   r   r
   r   r   r   r   r   r   r   r)  r*  r   r   )r4   r5   r3   r   r;   r   r  r   s           rI   #test_higher_order_to_first_order_12r  |  s`   5h'DAqA6x(DAq6?DAq!A$AaD1a&11Aj1q6I4II1M!A$:adA...AaD1a&1II1MOE!b!d1g+&s1Q3tAd1gIM/B+B'CCHRQROSVXZ[1g[ W1Q3tAd1gIM223W445W6 68:AQK8HQqSQUVWZ[\`ab\cZcVcQdMdIe8efnoqg 9q47{#C!DQtAwY,?(?$@@BC D !b!d1g+&s1Q3tAd1gIM/B+B'CCHRQROSVXZ[1g[ W1Q3tAd1gIM223W44<ROWD DFH!dSTg+FVWZ[\]^[^_cdeQie ` \ X GG !d1g+.s1Q3tA$q'	M7J3J/KKAMN OPE %=E!!!%'D1a&>999rK   c                     t        dt              \  } }t        d      \  }}}}}}}t         | |      j                  |d      d| ||      j                  |      z   ||      z
  z        t         ||      j                  |d      d| | |      j                  |      z   | |      z
  z        g}	t         | |      t        |z  |t        t        t        |       z  t        t        t        d|z        z        z  dz  t        t        |       z  t        t         t        d|z        z        z  dz  z   t        t        z  t        |       z  t        t        t        d|z        z        z  dz  z
  t        t        z  t        |       z  t        t         t        d|z        z        z  dz  z   |t        |      f      z  z         t         ||      t        |z  |t        t        t        z  t        |       z  t        t        t        d|z        z        z  dz  t        t        z  t        |       z  t        t         t        d|z        z        z  dz  z
  t        t        |       z  t        t        t        d|z        z        z  dz  z   t        t        |       z  t        t         t        d|z        z        z  dz  z   |t        |      f      z  z         g}
t        |	dd      |
gk(  sJ t        |	|
      dd	d	gfk(  sJ t        t         | |      ||      d
|z  t         ||      |      z  d
 ||      z  z
        t        t         ||      ||      d|z  t         | |      |      z  d | |      z  z
        f}t         | |      t        |z  |t        t        t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  t        t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  z   dt        d      z  t        z  t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  z   dt        d      z  t        z  t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  z
  |t        |      f      z  z         t         ||      t        |z  |t        t        d      t        z  t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  t        d      t        z  t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  z
  t        t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  z   t        t        |       z  t        dt        d      z  t        d|z        z  dz        z  dz  z   |t        |      f      z  z         g}t        |dd      |gk(  sJ t        ||      dd	d	gfk(  sJ t        t         ||      |df      ||z        t        t         | |      |df      d	      g}t         ||      t        t        |z  z   ||z  |dz  z  dz  z         t         | |      t        t        |z  z         g}t!        |      |k(  sJ t        ||      dd	d	gfk(  sJ t        t         | |      |df       | |      |dz  z        t        t         ||      |df      | ||      z  |dz  z        g}t         | |      t        t        |dz        z  t        d|z        z  t        t        |dz        z  t        d|z        z  z
        t         ||      t        t        |dz        z  t        t        |       |z        z  |t#        dd      z  z  t        t        |dz        z  t        t        |      |z        z  |t#        dd      z  z  z
        g}t!        |      |k(  sJ t        ||      dd	d	gfk(  sJ y )Nr   r9   x t x_ t_ d a mr<   r   Fr  Tr   rx   rt   r?   rC   r  r_   r@   r>   r=   )r   r   r
   r   r   r-   r   r   r   r)  r   r*  r'   r   r   r   r   r   )r4   r5   r3   r;   r  r   rl  r   mr   r   r   r   r   r   r   r   s                    rI   "test_second_order_to_first_order_2r    s=   5h'DAq#$56Aq"b!QqtyyA1QqTYYq\>AaD#8 9:qtyyAr1QqTYYq\>AaD#89:<DqtRTAhr#rc({3qQrT{3C'CA'E3PRs8TWYZXZ[^_`ac_c[dXdTeHefgHg'g"S"Xc!C"I+..q0(134R4RC=aRAbD	\AR3RST3T(UWY[^_`[aVbd d d eqtRTAhqtCH}S3qt95E'Ea'G!B$sTVSVx-X[]^\^_bcdegcg_h\hXiJijkJk'k3s8C#ad),,Q.(/13CHS!C"I=N1Nq1P(QSUWZ[\W]R^` ` ` abD
 E:tfDDD$%$A777tAaD1~qs4!Q</!A$67D1aN1Q3tTUVWTXYZ|K[\]^_`a^b\bKb9cdDqtRTAhr#rc({3qayQrT7J17L3M'Ma'ORTUXZ\Y\U]R]BtAwJs1R4y(*+S,,-S. (.01$q'	"S"X0Ec!DQRG)TWXYZ\X\T]J]^_J_F`0`ac0c(d$q'	"S"X%c"T!W*S2Y*>q*@&AA"D(EGI3q6lT T T U qtRTAhtAwrz#rc(':3qayQrT?RST?T;U'UVW'WZ^_`ZabdZdehjlilemZmBtAwJs1R4y(*+[,,-[. (.023s8C$q'	#aPRd)@STU@U<V0VWX0X(Y[]^acebe^f[fgjkmnrstnukuAbD	ll h \\(!#SV. . . /0D E:tfDDD$%$A777 z!A$A'1-z!A$A'+-DqtR"Q$Y1QT!+,qtR"Q$Y!D$<4$%$A777 z!A$A'1ad3z!A$A'1Q4157DqtRQT
]3r!t9,r$q!t*}S1X/EEFqtRQT
]3Qxz?21hr1o3EEQT
]3tAwqy>)!Xb!_*<<= >?D $<4$%$A777rK   c            
         t        dt              \  } }t        d      \  }}}}}}}t         | |      j                  |d      d|z  | ||      j                  |      z   ||      z
  z        t         ||      j                  |d      d|z  | | |      j                  |      z   | |      z
  z        g}	t         | |      t        |z  dt
        z  |z  t        d|z        z  z   t
        t        d|z        z  z
  dt        z  |z  t        d|z        z  z
  t        t        d|z        z  z
        t         ||      dt
        z  |z  t        d|z        z  t
        t        d|z        z  z
  dt        z  |z  t        d|z        z  z
  t        t        d|z        z  z   t        |z  z         g}
t        |	      |
k(  sJ t        |	|
      dddgfk(  sJ y )Nr   r9   r  r<   r   Tr   )r   r   r
   r   r   r   r   r   r)  r   r   r*  r   r   )r4   r5   r3   r;   r  r   rl  r   r  r   r   s              rI   &test_second_order_to_first_order_slow1r    s   5h'DAq#$56Aq"b!Q qtyyA!a!		!nqt&; <=adii1obdQqtyy|^ad%:;<>DqtRTAbDF2ac7N*RAaC[81R46"QqS'>IBsSTUVSVxKWXqtRU1WR!W_r#ac({2QrT!VBqsG^CbQqSkQTVWXTXXY[D$<4$%$A777rK   c                     t        dt              \  } }t        d      \  }}}}}}}t        t         | |      |df      |t	        |      z  t         ||      |      z   ||      t	        |      z  z
        t        t         ||      |df      |t	        |      z  t         | |      |      z   | |      t	        |      z  z
        g}	t         | |      t
        |z  |t        t        t        |       z  t        t        |      t        t        |            z        z  t        t	        t        |                   z  dz  t        t        |       z  t        t        |       t        t        |            z        z  t        t	        t        |                  z  dz  z   t        t        |       z  t        t        |      t        t        |            z        z  t        t	        t        |                   z  dz  z
  t        t        |       z  t        t        |       t        t        |            z        z  t        t	        t        |                  z  dz  z   |t        |      f      z  z         t         ||      t        |z  |t        t         t        |       z  t        t        |      t        t        |            z        z  t        t	        t        |                   z  dz  t        t        |       z  t        t        |       t        t        |            z        z  t        t	        t        |                  z  dz  z   t        t        |       z  t        t        |      t        t        |            z        z  t        t	        t        |                   z  dz  z   t        t        |       z  t        t        |       t        t        |            z        z  t        t	        t        |                  z  dz  z   |t        |      f      z  z         g}
t        |	dd      |
gk(  sJ t        |	|
      dddgfk(  sJ y )	Nr   r9   r  r<   Fr  Tr   )r   r   r
   r   r   r   r-   r   r   r   r)  r   r*  r'   r   )r4   r5   r3   r;   r  r   rl  r   r  r   r   s              rI   &test_second_order_to_first_order_slow4r    s   5h'DAq#$56Aq"b!Qz!A$A'3q6*QqT12E)E!SQRV)STz!A$A'3q6*QqT12E)E!SQRV)STVDqtRTAhr#rc({3s2ws3r7|7K3L'LSRUVYZ\V]R^Q^M_'_`a'a3s8CRSW 566s3s2w<7HHJ(KMOPSUWTWPX[Y\]`ac]dehilmoipeq]qYrMrSR\M"N##$N%(% 3s8CRSW 566s3s2w<7HHJ(K NPQTUVQWLZ Z Z [ qtRTAhs3s8|CBCG8L4M'McSVWZ[]W^S_R_N`'`ab'b3s8CRSW 566s3s2w<7HHJ(KMOPSUWTWPX[Y\]`ac]dehilmoipeq]qYrMrSR\M"N##$N%(%')#rc({3BxCG7L3M'McRUVYZ\V]R^N_'_`a'a(bdfhklmhncoq q q r	sD E:tfDDD$%$A777rK   c                  b9   t        dt              \  } }}}t        d      } | |       ||       ||       ||      g}t        t         | |      |      d | |      z        t        t         ||      |       | |            t        t         ||      |       ||            t        t         ||      |       ||      dz   ||      z         g}t         | |      dt        z  t        d|z        z        t         ||      t        t        d|z        z  t        z         t         ||      t        t        |      z        t         ||      t        dz  t        d|z        z  dz  t        t        |      z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t        t         | |      |      d | |      z        ft        t         ||      |       | |            fft        t         ||      |       ||            ft        t         ||      |       ||      dz   ||      z         ffh} | |      t                ||       | |      h ||      t                ||       ||      hi | |      t        t         | |      |      d | |      z         ||      t        t         ||      |       | |             ||      t        t         ||      |       ||             ||      t        t         ||      |       ||      dz   ||      z         if}	 | |       ||       ||       ||      h ||       | |      f ||       ||      fhg}
t        |||      D ch c]  }t        d	 |D               c}|k(  sJ t        ||      |	k(  sJ t        |	d
         D cg c]  }t        |       c}|
k(  sJ t        t         | |      |      d | |      z        t        t         ||      |       | |            t        t         ||      |       ||            t        t         ||      |       | |      dz   ||      z         g}t         | |      t        t        d|z        z        t         ||      t        t        d|z        z  dz  t        z         t         ||      t        t        |      z        t         ||      t        dz  t        d|z        z  dz  t        t        |      z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t!        t        t         | |      |      d | |      z        ft        t         ||      |       | |            ft        t         ||      |       | |      dz   ||      z         fg      t!        t        t         ||      |       ||            fg      h} | |      t                ||       | |      h ||      t                ||       | |      hi | |      t        t         | |      |      d | |      z         ||      t        t         ||      |       | |             ||      t        t         ||      |       ||             ||      t        t         ||      |       | |      dz   ||      z         if} | |       ||       ||       ||      h ||       | |      f ||       | |      fhg}t        |||      D ch c]  }t!        d |D               c}|k(  sJ t        ||      |k(  sJ t        |d
         D cg c]  }t        |       c}|k(  sJ t        t         | |      |      d | |      z        t        t         ||      |      | | |      z         t        t         ||      |       ||            t        t         ||      |       | |      dz   ||      z         g}t         | |      t        t        d|z        z        t         ||      t        t        d|z        z  dz  t        z   |dz  dz  z         t         ||      t        t        |      z        t         ||      t        dz  t        d|z        z  dz  t        t        |      z  z         g}t        |      |k(  sJ t        ||      dg dfk(  sJ t!        t        t         | |      |      d | |      z        ft        t         ||      |      | | |      z         ft        t         ||      |       | |      dz   ||      z         fg      t!        t        t         ||      |       ||            fg      h} | |      t                ||       | |      h ||      t                ||       | |      hi | |      t        t         | |      |      d | |      z         ||      t        t         ||      |      | | |      z          ||      t        t         ||      |       ||             ||      t        t         ||      |       | |      dz   ||      z         if} | |       ||       ||       ||      h ||       | |      f ||       | |      fhg}t        |||      D ch c]  }t!        d |D               c}|k(  sJ t        ||      |k(  sJ t        |d
         D cg c]  }t        |       c}|k(  sJ t        t         | |      |      | | |      z  d ||      z  z         t        t         ||      |       | |      | ||      z  z   |z         t        t         ||      |       ||            t        t         ||      |       | |      dz   ||      z         g}t         | |      t        dz  t#        d      t        z  dz  z
  t#        d      t%        |t        |dz   dz  t#        d      |z  z
        z  dz  |t        |dz   dz  t#        d      |z  z         z  dz  z   |      z  dz  z
  t%        t#        d      |z  t        |dz   dz  t#        d      |z  z
        z  dz  t#        d      |z  t        |dz   dz  t#        d      |z  z         z  dz  z
  |      dz  z   t        |dz  dz  t#        d      |z  z
        z  t        dz  t#        d      t        z  dz  z   t#        d      t%        |t        |dz   dz  t#        d      |z  z
        z  dz  |t        |dz   dz  t#        d      |z  z         z  dz  z   |      z  dz  z   t%        t#        d      |z  t        |dz   dz  t#        d      |z  z
        z  dz  t#        d      |z  t        |dz   dz  t#        d      |z  z         z  dz  z
  |      dz  z   t        |dz  dz  t#        d      |z  z         z  z         t         ||      t#        d       t        z  dz  t        dz  z   t%        |t        |dz   dz  t#        d      |z  z
        z  dz  |t        |dz   dz  t#        d      |z  z         z  dz  z   |      dz  z   t#        d      t%        t#        d      |z  t        |dz   dz  t#        d      |z  z
        z  dz  t#        d      |z  t        |dz   dz  t#        d      |z  z         z  dz  z
  |      z  dz  z
  t        |dz  dz  t#        d      |z  z
        z  t#        d      t        z  dz  t        dz  z   t%        |t        |dz   dz  t#        d      |z  z
        z  dz  |t        |dz   dz  t#        d      |z  z         z  dz  z   |      dz  z   t#        d      t%        t#        d      |z  t        |dz   dz  t#        d      |z  z
        z  dz  t#        d      |z  t        |dz   dz  t#        d      |z  z         z  dz  z
  |      z  dz  z   t        |dz  dz  t#        d      |z  z         z  z         t         ||      t        t        |      z        t         ||      t        t        |      z  t        |      t%        t        t        |dz  dz  t#        d      |z  z
        z  dz  t        t        |dz  dz  t#        d      |z  z         z  dz  z   t#        d      t        z  t        |dz  dz  t#        d      |z  z
        z  dz  z
  t#        d      t        z  t        |dz  dz  t#        d      |z  z         z  dz  z   t#        d      t        |dz  dz  t#        d      |z  z
        z  t%        |t        |dz   dz  t#        d      |z  z
        z  dz  |t        |dz   dz  t#        d      |z  z         z  dz  z   |      z  dz  z
  t        |dz  dz  t#        d      |z  z
        t%        t#        d      |z  t        |dz   dz  t#        d      |z  z
        z  dz  t#        d      |z  t        |dz   dz  t#        d      |z  z         z  dz  z
  |      z  dz  z   t#        d      t        |dz  dz  t#        d      |z  z         z  t%        |t        |dz   dz  t#        d      |z  z
        z  dz  |t        |dz   dz  t#        d      |z  z         z  dz  z   |      z  dz  z   t        |dz  dz  t#        d      |z  z         t%        t#        d      |z  t        |dz   dz  t#        d      |z  z
        z  dz  t#        d      |z  t        |dz   dz  t#        d      |z  z         z  dz  z
  |      z  dz  z   dz  t        |       z  |      z  z         g}t!        t        t         | |      |      | | |      z  d ||      z  z         t        t         ||      |      | ||      z  |z    | |      z         g      t!        t        t         ||      |       | |      dz   ||      z         g      ft!        t        t         ||      |       ||            g      fh} | |       ||      h ||       | |      h ||      t                ||       | |      hi | |      t        t         | |      |      | | |      z  d ||      z  z          ||      t        t         ||      |      | ||      z  |z    | |      z          ||      t        t         ||      |       ||             ||      t        t         ||      |       | |      dz   ||      z         if} | |       ||       ||       ||      h | |       ||      f ||       | |      f ||       | |      fhg}t        |||      D ch c]  }t        d |D               c}|k(  sJ t        ||      |k(  sJ t        |d
         D cg c]  }t        |       c}|k(  sJ t'        |dd      |gk(  sJ t        ||      dg dfk(  sJ t        t         | |      |      | | |      z  d ||      z  z         t        t         ||      |      | ||      z   | |      z         t        t         ||      |       ||            t        t         ||      |       | |      dz   ||      z         g}t         | |      t        dz  t#        d      t        z  dz  z
  t        |dz  dz  t#        d      |z  z
        z  t        dz  t#        d      t        z  dz  z   t        |dz  dz  t#        d      |z  z         z  z         t         ||      t#        d       t        z  dz  t        dz  z   t        |dz  dz  t#        d      |z  z
        z  t#        d      t        z  dz  t        dz  z   t        |dz  dz  t#        d      |z  z         z  z         t         ||      t        t        |      z        t         ||      t        t        |      z  t        |      t%        t        t        |dz  dz  t#        d      |z  z
        z  dz  t        t        |dz  dz  t#        d      |z  z         z  dz  z   t#        d      t        z  t        |dz  dz  t#        d      |z  z
        z  dz  z
  t#        d      t        z  t        |dz  dz  t#        d      |z  z         z  dz  z   dz  t        |       z  |      z  z         g}t!        t        t         | |      |      | | |      z  d ||      z  z         t        t         ||      |      | ||      z   | |      z         g      t!        t        t         ||      |       | |      dz   ||      z         g      ft!        t        t         ||      |       ||            g      fh} | |       ||      h ||       | |      h ||      t                ||       | |      hi | |      t        t         | |      |      | | |      z  d ||      z  z          ||      t        t         ||      |      | ||      z   | |      z          ||      t        t         ||      |       ||             ||      t        t         ||      |       | |      dz   ||      z         if}  | |       ||       ||       ||      h | |       ||      f ||       | |      f ||       | |      fhg}!t        |||      D ch c]  }t        d |D               c}|k(  sJ t        ||      | k(  sJ t        | d
         D cg c]  }t        |       c}|!k(  sJ t'        |dd      |gk(  sJ t        ||      dg dfk(  sJ y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nr]  r9   r3   r<   r@   r?   Tr  c              3   2   K   | ]  }t        |        y wr   tuple.0sccs     rI   	<genexpr>z*test_component_division.<locals>.<genexpr>  s     ,%*,   r   r   rt   c              3   2   K   | ]  }t        |        y wr   r  r  s     rI   r  z*test_component_division.<locals>.<genexpr>       0SeCj0r  c              3   2   K   | ]  }t        |        y wr   r  r  s     rI   r  z*test_component_division.<locals>.<genexpr>(  r  r  c              3   2   K   | ]  }t        |        y wr   	frozensetr  s     rI   r  z*test_component_division.<locals>.<genexpr>P       0S)C.0r  Fr  c              3   2   K   | ]  }t        |        y wr   r  r  s     rI   r  z*test_component_division.<locals>.<genexpr>j  r  r  )r   r   r
   r   r   r   r   r)  r*  r   r   setr(   r  r)   r*   r  r   r-   r'   )"r4   r5   r6   r   r3   rH   r   r   components1eqsdict1graph1wccelementr   r   components2eqsdict2graph2r   r   components3eqsdict3graph3r   r   r   components4eqsdict4graph4r   r   components5eqsdict5graph5s"                                     rI   test_component_divisionr    s   1JAq!QAqT1Q41qt$Ez!A$"AadF+z!A$"AaD)z!A$"AaD)z!A$"AaD!GadN35D qtQrT#ac(]#qtRAaC[2%&qtRAYqtRU3qs8^A%3q6	124D $<4$%$)====
1Q4+QqtV46JqtQ<OQRSTQU9V8XY
1Q4+QqT24r*QqT1:MqQRtUVwYZ[\Y]~7^6`acK1suadQqTFAaD#%1!vF1r*QqT1-q1v6!bAaD!,ad3!bAaD!,ad3!bAaD!,adAg!n=?@H
 tQqT1Q41&!A$!!ad|(DEF8KDRWYZ8[\E,,,\`kkkkT5!X---(3HQK(@AWCLAVKKKz!A$"AadF+z!A$"AaD)z!A$"AaD)z!A$"AaD!GadN35D qtRAaC[!qtRAaC[]R'(qtRAYqtRU3qs8^A%3q6	124D $<4$%$)====r*QqT1"5q1v>@
1Q4+QqT24
1Q4+QqT1Wqt^<>@ A r*QqT1"5qt<>?@BK 1suadQqTFAaD#%1!vFA$:adA.!A$7A$:adA.!5A$:adA.!5A$:adA.!a!A$?ABH
 tQqT1Q41&!A$!!ad|(DEF<OPTV[]^<_`SI0C00`dooooT5!X---(3HQK(@AWCLAVKKKz!A$"AadF+z!A$"A!H-z!A$"AaD)z!A$"AaD!GadN35D qtRAaC[!qtRAaC[]R'!Q$q&01qtRAYqtRU3qs8^A%3q6	124D $<4$%$)====r*QqT1"5q1v>@
1Q4+Q1X68
1Q4+QqT1Wqt^<>@ A :adA#6! =?ABDK 1suadQqTFAaD#%1!vF1r*QqT1-q1v6!bAaD!,a!A$h7!bAaD!,ad3!bAaD!,adAg!n=?@H
 tQqT1Q41&!A$!!ad|(DEF<OPTV[]^<_`SI0C00`dooooT5!X---'45qCF5??? z!A$"AadFQqtVO4z!A$"AaD1QqT6MA$56z!A$"AaD)z!A$"AaD!GadN35D qtbdT!WRZ\)DGHQsAqD57TRSWUVYCV?W=WXY=Y\]^acdfgcgbghibiQ	c _ ]] >5! -!!"-# #%-d1gaiQTE!Gd1gai<O8P.PQR.RUYZ[U\]^U^_bdeghdhchijcjQ	d ` VV /&!!"&##$'1Qa(:$;<?A!td1gbjQRl?RUYZ[U\]efghkmnpqmqlqrslsq'!)m i gg!"31uQwa':#;!;A!=g>?@^B VBBCVD @DFNtTUwWXyY\^_ab^b]bcd]dgklmgnopgp]pYqOqrsOsq'!)CAa$q'!) 344Q6P789G;;<G=@=>A!Q$q&4PQ7ST9BT>U?VV W
 qttAwhrk!mbd*XaQTE!Gd1gai<O8P6PQR6RUVWZ\]_`\`[`ab[beijkelmnen[nWoUopqUq6qst-uvw-wwQa31uQwa/B+C!CA!EQPQ	RUWXZ[W[V[\]V]`def`ghi`iViRjHjklHl!l !Q$q&4719,-.15aA11DxPQRUWXZ[W[V[\]V]`def`ghi`iViRjPjklPl#q!teAgQ	)**1,Q-./H112H3 2359!WXd1gaiPSUVXYUYTYZ[T[^bcd^efg^gTgPhFhijFjQ	#q!teAgQ	12214G567>9 699:6;2;<?1QaQR@R<S1TT U
 qtRAYqtRAYQ"SAa$q'!)9K5L2LQ2NQSTWXY[\X\]^X^aefgahijajXjTkQklmQm2mQ
3q!tAvQ	12214357;Awrz#ad1ftTUwWXyFXBY7YZ[7[3\^bcd^efijkmnjnopjpQ	k g _#Ac1a4%'DGAI*=&>$>q$@1S!Q$qSWXYSZ[\S\I\E]C]^_C_$_abc_dde_f3fhklmoplpqrlrQ	m i#DGAIc1a4%'DGAI2E.F$Fq$H4PQ7ST9UXZ[]^Z^Y^_`Y`cghicjklclYlUmKmnoKo$oii3 Aws1a46DGAI#566x#q!teAgPTUVPWXYPYFYBZ@Z[\@\_`adfgijfjejklelQ	f b `` A8! !!"#	3#
 &)Aa$q'!));%<Xd1gaiPSUVXYUYTYZ[T[^bcd^efg^gTgPhFhijFjQ	#q!teAgQ	12214G567>9 &99:&;3; >?2? @CA2w2G IJ)K "K K LMD$ r*QqT1"5q1v!A$Gz!A$*AadFQJ1,=>@ Ar*QqT1"5qtQw1~FHIK :adA#6! =?@BDK 1!vqtadVQqT35!A$1G1r*QqT1-q1v!A$?!bAaD!,a!fqj1Q4.?@!bAaD!,ad3!bAaD!,adAg!n=?@H
 tQqT1Q41&!A$!!ad|adAaD\(RSF<OPTV[]^<_`SE0C00`dooooT5!X---(3HQK(@AWCLAVKKKE:tfDDD$%$)====z!A$"AadFQqtVO4z!A$"AadFQqTM2z!A$"AaD)z!A$"AaD!GadN35D qtbdT!WRZ\)3q!tAvQ	/A+BBbdTRSWUWZXY\FY[^_`bc_cde_ehlmnhopqhq_q[rErrsqttAwhrk!mbd*C1Qa0B,CCtAwrzRS|VXYZVZGZ\_`acd`def`fimnoipqrir`r\sFsstqtRAYqtRAYQ"SAa$q'!)9K5L2LQ2NQSTWXY[\X\]^X^aefgahijajXjTkQklmQm2mQ
3q!tAvQ	12214357;Awrz#ad1ftTUwWXyFXBY7YZ[7[3\^_2``cefdf`g2hij)l "l l mnD
 r*QqT1"5q1v!A$Gz!A$*AadFQqTM:< =r*QqT1"5qtQw1~FHIK :adA#6! =?@BDK 1!vqtadVQqT35!A$1G1r*QqT1-q1v!A$?!bAaD!,a!fqtm<!bAaD!,ad3!bAaD!,adAg!n=?@H
 tQqT1Q41&!A$!!ad|adAaD\(RSF<OPTV[]^<_`SE0C00`dooooT5!X---(3HQK(@AWCLAVKKKE:tfDDD$%$)====s ]A. aA. a5L aA0 aAsJ   Aq?Ar8Ar	:Ar=Ar?ArYArZ	Ar"o9Ar'p;Ar,c                  0&   t        d      \  } t        dt              \  }}}t        t        fd       t        t        fd       t	        ddgddgdd	gg      t        t
        fd
       t	        g dg dg      t        t
        fd        |       |      g}t         |      j                         |      j                        z    |            t         |      j                         |            g}t        ||      }t        |d   |d      \  \  }}|}	t        t        dd       t        d      dz  z   z  t        t        dd       t        d      dz  z   z        z  t        t        d       dz  t        dd      z
  z  t        t        d       dz  t        dd      z
  z        z  z   t        t        t        dd       t        d      dz  z   z        z  t        t        t        d       dz  t        dd      z
  z        z  z   g}
t        t!        |	      t#        | j$                        |
k(  sJ t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t	        ddgddgdd	gg      t	        ddz  g      t        t
        fd       t	        g dg dg      t	        dz  g      t        t
        fd       t        t        fd       t        t        fd       t	        ddgddgg      t	        dz  dz
  dz  dz
  g      t        t        z  z   t        z   ddz  z  z
  ddz  z  z   ddz  z  dz  z
  z  z   dz  z
  t        t        z  z   ddz  z  z
  ddz  z  z
  ddz  z  dz  z
  z  z   dz  z
  g}t        t!        d d!"      g      |k(  sJ  |       |      g}t         |      j                         |      j                        z    |      z         t         |      j                         |            g}t        ||      }t        |d   |d      \  \  }}|}	t         t         dz  t        d      z  dz  z         z  dz  t        d      t        z  t         dz  t        d      z  dz  z         z  dz  z   t        d      t        z  t        t        d       z  dz  dz  z
        z  dz  z
  t        t        t        d       z  dz  dz  z
        z  dz  z
  t         dz  t        d      z  dz  z         t'        t        t        d       z  dz  dz  z         z  d#t        d      z   z  t        d      z  t        t        d       z  dz  dz  z         z  d#t        d      z   z  z
        z  dz  z
  t        d      t         dz  t        d      z  dz  z         z  t'        t        t        d       z  dz  dz  z         z  d#t        d      z   z  t        d      z  t        t        d       z  dz  dz  z         z  d#t        d      z   z  z
        z  dz  z   t        d      t        t        d       z  dz  dz  z
        z  t'        t        d       z  t        dz  t        d      z  dz  z         z  dz        z  dz  z
  t        t        d       z  dz  dz  z
        t'        t        d       z  t        dz  t        d      z  dz  z         z  dz        z  dz  z
  t        t         dz  t        d      z  dz  z         z  t        t        t        d       z  dz  dz  z
        z  z   t         dz  t        d      z  dz  z         t'        t        t        d       z  dz  dz  z         z  d#t        d      z   z  t        d      z  t        t        d       z  dz  dz  z         z  d#t        d      z   z  z
        z  z   t        t        d       z  dz  dz  z
        t'        t        d       z  t        dz  t        d      z  dz  z         z  dz        z  z   g}
t        t!        |	|$      g      |
k(  sJ t         t         dz  t        d      z  dz  z         z  dz  t        d      t        z  t         dz  t        d      z  dz  z         z  dz  z   t        d      t        z  t        t        d       z  dz  dz  z
        z  dz  z
  t        t        t        d       z  dz  dz  z
        z  dz  z
  t        t         dz  t        d      z  dz  z         z  t        t        t        d       z  dz  dz  z
        z  z   g}t        t!        |	d %      g      |k(  sJ t        t        fd&       t        t        fd'       t	        dg dgg      t)              \  }t        t
        fd(       t        t        fd)       t	        gggg      t)              \  }t        t
        fd*       t        t        fd+       t        t        fd,       t        t        fd-       t        t        fd.        |       |      g}t         |      j                         |       |      z  z         t         |      j                          |      z   |      z         g}t        ||      }t        |d   |d      \  \  }}|}	t        dz  t*        t        z  dz  z
  t        t*        dz  z  dz  z         z  t        dz  t*        t        z  dz  z   t        t*         dz  z  dz  z         z  z   t*         t        z  dz  t        dz  z   t        t*         dz  z  dz  z         z  t*        t        z  dz  t        dz  z   t        t*        dz  z  dz  z         z  z   g}
t        t!        |	      t#        | j$                        |
k(  sJ t        t!        |	d/%      t#        | j$                        |
k(  sJ t	        dgdgg      t        t,        fd0       t        t        fd1       t        t        fd2       t        t        fd3       t        t        fd4       t        t        fd5       t        t        fd6       t	        dg dgg      t	        dz  g      t)              \  }t        t
        fd7       t	        gggg      t	        ddz  g      t)              \  }t        t
        fd8       t        t        fd9       t        t        fd:       t        t        fd;       t        t        fd<        ||        ||        ||       g}t         ||       j                  |       |  ||        ||       z    ||       z   z  | z         t         ||       j                  |       |  ||        ||       z    ||       z   z  | z         t         ||       j                  |       |  ||        ||       z    ||       z   z  dz         g}t        |||       }t        |d   || d      \  \  }}|}	t        d=| dz  z  dz        }t        d| dz  z  dz        }t'        d|z  | z  dz  |dz  z   | dz  z   t        dd      z
  |       }d|z  |z  dz  }t'        d|z  | z  dz  |dz  z   d| z  dz  z
  t        dd      z   |       }t        |z  dz  t        dz  z
  t        |z  dz  z   t        dz  z
  t.        |z  dz  z   dt.        z  dz  z   ||z  dz  z   |dz  z   |z   |dz  z
  t        |z  dz  dt        z  dz  z   t        |z  dz  z   t        dz  z
  t.        |z  dz  z   t.        dz  z
  ||z  dz  z   |dz  z   |z   |dz  z
  t        |z  dz  t        dz  z
  t        |z  dz  z   dt        z  dz  z   t.        |z  dz  z   t.        dz  z
  ||z  dz  z   d|z  dz  z
  |z   d|z  dz  z   g}
t        t!        |	| |$      t#        | j$                        |
k(  sJ t        t!        |	| |d>?      t#        | j$                        |
k(  sJ t	        dgdgg      t        t,        fd@       t         dz  t        dz  z
  dt.        z  dz  z   t        dz  t        dz  z   t.        dz  z   t        d| dz  z  dz        z  z   dt        z  dz  t        dz  z
  t.        dz  z
  t        dz  t        dz  z   t.        dz  z   t        d| dz  z  dz        z  z   t         dz  dt        z  dz  z   t.        dz  z
  t        dz  t        dz  z   t.        dz  z   t        d| dz  z  dz        z  z   g}t        t!        |	| d>d!A      t#        | j$                        |k(  sJ y )BNzt x ar   r9   c                      t        d       S r   r%   r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>w      {1a0 rK   c                      t               S r   r  r   r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>x  r  rK   r=   r<   r@   r_   c                      t               S r   r  r   r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>{      R); rK   )r=   r<   r=   )r?   r=   r<   c                      t               S r   r  A2r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>~  r  rK   r   rA   )	variablesc                  :    t        d t         dz   g            S Nr=   r   r%   r   r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {1a61Q3%=A rK   c            
      ^    t         t        t              t              z   g            S Nr  r%   r   r   r   r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s$    {1a63q6CF?:K3LM rK   c                  :    t        t        dg        dz        S Nrt   r<   r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {61#;QTB rK   c                  d    t        t         dz   g      t              t              z        S Nr   r  r%   r   r   r   r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s&    {61R4&>1As1vN rK   c                  &    t        d  dz        S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {1a1a48 rK   c                  J    t         t              t              z         S r  r%   r   r   r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {1a3q6CF?C rK   c                       t               S r  r  r   b1r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>      Rb)A rK   c                       t               S r  r  r  b2r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  r  rK   c                  2    t         d dd d f         S Nr<   r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {2bqb!e9a2> rK   c                  8    t         d dd d f   d d       S )Nr<   r=   r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s"    {2bqb!e9a2bq6B rK   r>   r   r   r   r?   r   T)r   typer  rz   r  )r  c                  "    t         dz          S )Nr   r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {1R43 rK   c                  "    t         z        S r   r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {1Q32 rK   c                  2    t         d d d df         S Nr=   Br  )r   B1r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>      R2A2YR)H rK   c                       t         d      S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>      {2qA6 rK   c                  2    t         d dd d f         S Nr<   r  r  r  B2r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    Rb!Qi)H rK   c                       t         d      S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  r  rK   c                  "    t         d      S )Ntype31)r  r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {2qBXF rK   c                       t               S Nr  r  )r   r  r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>      {2qB7 rK   c                       t               S r   r  )r  r  r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  r  rK   r   c                      t               S r   r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    B(: rK   c                  @    t         dz    t         dz   g            S )Nr   r=   r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {1R4facUmD rK   c            
      d    t         z  t        t              t              z   g            S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s(    {1Q3VSVc!f_<M5NO rK   c                  @    t        t        d z  g        dz        S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {61Q3%=!q!tD rK   c            	      |    t        t         dt              z  z   g      t              t              z        S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s2    {61r#a&y=/+BAQPSTUPVW rK   c                  ,    t        d z    dz        S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    {1Q3QT: rK   c                  V    t         dz  z  t              t              z         S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s$    {1QT61AQH rK   c                  2    t         d d d df         S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  r  rK   c                  2    t         d dd d f         S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    RAYR)H rK   c                       t               S r  r  )r   r  r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  r  rK   c                       t               S r  r  )r  r  r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  r  rK   c                  "    t               S N)r   r  r  )r   r  r  r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>      {2qB"= rK   c                  "    t               S r  r  )r  r  r  r;   s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  r  rK   rC   r   )r   r  c                       t               S r  r  r  s   rI   rJ   z"test_linodesolve.<locals>.<lambda>  s    BR(@ rK   )r  r  )r   r   r/   r   r   r   r
   r   r&   r    r   r   r   r   r   r   r%   r   free_symbolsr-   r$   r   NotImplementedErrorr)  )r3   r4   r5   r6   ri   rh   ceqr   r   r   rZ  r   __x1_x2_x3_x4_x5r   r  r  r  r   r  r  r;   s                     @@@@@@@@rI   test_linodesolver  r  sK   gGAq!g8,GAq! :01
:01	!Q!Q!Q(	)B
!;<	I&	'B
!;< aD!A$<D
QqTYYq\AaDIIaL(!A$
/AaDIIaL!A$1G	HB
T1
%C&s1vtQ:KHRa
AAa*+CHQN?T!WQY3N0O,PPSUX\]^X_W_`aWadlmnpqdrWrSsq47(1*x1~-./T0 0c!hq!n_tAwqy0122RAQxzHUVXYN?Z<[8\5\\^C [A.%*:Q:QRVYYYY :AB
:MN
:BC
:NO
:89
:CD	!Q!Q!Q(	)B	Aq!t	B
!AB	I&	'B	AqD		B
!AB
:>?
:BC 
!R1b'"	#B	ACEAI&	'BAINR1W$r!Q$w.Bq!tGacM1BBRTIAI1a4!AqD&(1bAg!m+<<qsBDD[Q"7N()s,/34 4 4 aD!A$<D
QqTYYq\AaDIIaL(!A$(
3R!		!ad5K	LB
T1
%C&s1vtQ:KHRa
A3sA2a4$q'!)A+%&&q(472:c1"Q$a1:L6M+Ma+OORVWXRYZ\R\]`bfghbiaijkaklmam
A#b ^ SS c47(1*Q,1,--a/025qbdT!WQYq[6H2I(STUXZ^_`ZaYabcYcdeYe
A#Z V TT!WT $Q	#tAwhqjlQqS.@*A A2Q< PTQRSKU 3UUV3WWY]^_Y`adfgeghiei
q'!)A+f b Z#tAwhqjlQqS&8"9 92Q< H4PQ7ST9UXZ^_`ZaYabcYcdeYe
A#Z V LT!WL ! "Z""#Z$$ '+1gc47(1*Q,12D.E&EhPTUVPWxXYzZ]^_`a^a
q'!)A+_ [ PPG ''	
 "%d1gXaZ\AaC%7!847(1*SQRSTQTW[\]W^_`W`abWbQbMcBcdeBegh9i!ijk!kl 
C1tAwqy{"#	#bd1gXaZ\AaC-?)@&@	@3r!t
q'!)A+H D#tAwhqjlQqS&8"9 92Q< H4PQ7ST9UXZ^_`ZaYabcYcdeYe
A#Z V LT!WL ! "D" 
"$'a
1c) %T!WHQJs1Q3a1+<'==a?C%D
D	EC [A3sCsJJJ CQBqD4719Q;&'')DGBJsA2a4$q'!)A+;M7N,Nq,PPSWXYSZ[]S]^acghicjbjklblmnbnA#c _ TT c47(1*Q,1"455a78sA2a4$q'!)A+%&&Ca
1qs0B,C)CCED [AG<LPTTTT :34
:23	!Q1"a!	"B+B2EB
!HI
:67	!QQ1I1ay1	2B+B2EB
!HI
:67
:FG
:78
:78 aD!A$<D
QqTYYq\1Q4!AaD&=
)2adiilQBqtGadN+K	LB
T1
%C&s1vtQ:KHRa
AqD1R46M3qAvax!|,,1qtAvsA2ad719q=?Q/QQBrE!GbdNC1a4	A..!B$q&2a4-Qq!tVAXPQ\AR1RRTC[A.%*:Q:QRVYYYY[AG<r
H_H_`dgggg	!Q!R!	"B
 :; :DE
:OP
:DE
:WX
::;
:HI	!Q1"a!	"B	AF	B+B2EB
!HI	!QQ1I1ay1	2B	Aq!t	B+B2EB
!HI
:78
:78
:=>
:=> aD!A$!D
QqTYYq\1adQqTkAaD01A5
6
QqTYYq\1adQqTkAaD01A5
6
QqTYYq\1adQqTkAaD01A5
6
8B T1
%C&s1vtQ:KHRa
A
bAgai.C
a1fQh-C
1S5719s1u$qs*Xa^;Q
?C
C%)A+C
1S5719s1u$qs1u,x1~=q
AC
3q2a4"S&("RT)BsF1H4qtAv=C	ICPQEQTWWZ]^_Z__
3q1R46BsF1H$r!t+bfQh6A=C	ICPQEQTWWZ]^_Z__
3q2a4"S&("QrT!V+bfQh6A=C	IAcERSGSVYY\]^a\abc\ccC
 [A3ubz?V?VW[^^^^[AA',bz'>'>@CFG G G 
!Q!R!	"B
 @A CEBqDL1R46!RTBqD[2a4%7Qq!tVAX$FF"QQSTUQUXZ[\X\H\`bcd`dgijkgk`knpqrnr`rtwxyz{}~z~x~  @A  yA  uB  `B  IBCEAbDFNRT!RTBqD[2a4%7Qq!tVAX$FFHD[AG$GSXZ\S]SjSjkossssrK   c            
         t        dt              \  } }}t        d      }|dz  t        |      z   }|dz  t	        |      z   }t        t         | |      |      d|z  |z    | |      z  | ||      z  z
  d|z   ||      z  z
        t        t         ||      |      d|z   | |      z  ||z    ||      z  z   d|z   ||      z  z
        t        t         ||      |      d|z   | |      z  | ||      z  z   d|z  |z    ||      z  z         f}t        d	      5  t        |       d d d        y # 1 sw Y   y xY w)
Nx, y, zr9   r;   r?   r<   r@   rA   rC   T)	r   r   r   r   r   r
   r   r   r   )r3   r   r   r;   r4   r5   r   s          rI   !test_linear_3eq_order1_type4_slowr    sV   iX.GAq!sA	QQA	QQAd1Q4ma!eai1Q4/!ad(:QUQqT\IJ4!a=!a%!A$,!a%1Q4"?!a%!A$,"NOQSTXYZ[\Y]_`Tacdghchklmnkocorsvw	w s d1fqjAaD d! R"#C 
T	 s  s   D44D=c                     t        d      \  } }}}}}t        d      }t        d      }||z  t         ||      |      z   ||      z    ||      z
  || z  z
  }||z  t         ||      |      z  ||z  t         ||      |      z  z    ||      z   || z  z
  }	||	g}
t        |
dd      \  }t	        |
|      dddgfk(  sJ y )Nzi, r1, c1, r2, c2, tr   r   Fr  Tr   )r   r   r   r'   r   )r   r1c1r2c2r;   r   r   r   r   rh   rZ  s               rI   "test_linear_neq_order1_type2_slow1r%  '  s    "#9:Ar2r2q	$B	$B
R%
2a5!$
$r!u
,r!u
4r!t
;C
R%
2a5!$
$r"uZ1q-A'A
ABqE
IBqD
PC
sB "u59ES"c"taVn444rK   c            	      N   t        dd      } t        dd      }t        dd      }t        dd      \  }}}t        dd      \  }}}t        dt        d	      \  }	}
}| |z  | t         |	|      |      z  z   ||  ||      z  | |
|      z  z   z  z
  | |z  | t         |
|      |      z  z   || ||      z  | |	|      z  z
  z  z
  | |z  | t         ||      |      z  z   ||  |
|      z  | |	|      z  z   z  z
  g}t	        |      }t        ||      dg d
fk(  sJ y )Nr  Tr  qr;   ze1:4zb1:4zv1:4)r:   r  rB   )r   r   r   r   r   r   )r  r'  r;   e1e2e3r  r  b3v1v2v3eqsrZ  s                 rI   2test_linear_new_order1_type2_de_lorentz_slow_checkr0  8  sG   sAsAsAd+JBBd+JBBXD9JBB 
A*RUA&&&RC1I2a5,@)AA	A*RUA&&&Br!uHr"Q%x,?)@@	A*RUA&&&RC1I2a5,@)AAC
 +C#s#i'8888rK   c            	         t        d      \  } }}}}}}}t        d      }t        d      }	t         ||      j                  |      d| z   ||      z   |	|      |z  z         t         |	|      j                  |      | |z   |	|      z  d|z   ||      z  z
  ||z  z         g}
t	        |
dd      \  }t        |
|      dd	d	gfk(  sJ y )
NzRC t C Vs L R1 V0 I0Vr   r>   r=   Fr  Tr   )r   r   r
   r   r'   r   )RCr;   CVsLR1V0I0r2  r   systemrZ  s               rI   'test_linear_neq_order1_type2_slow_checkr;  M  s    ")*@"AB1b!RRAA11r"uQqTzAaDF23R!		!rc!eAaDjSTUVSVWXYZW[S[F[^`ab^bFb5cdF&5u=ES&#&4!Q.888rK   c            
         t        dt              \  } }}t        d      }|dz  t        |      z   }|dz  t	        |      z   }t        t         | |      |      d|z  |z    | |      z  | ||      z  z
  d|z   ||      z  z
        t        t         ||      |      d|z   | |      z  ||z    ||      z  z   d|z   ||      z  z
        t        t         ||      |      d|z   | |      z  | ||      z  z   d|z  |z    ||      z  z         f}t        |      }|D cg c]  }t        |       }	}t        |d	z   d
|dz  z  t        |      z  z
  d
|dz  z  z   dt        |      dz  z  z
  dt        |      z  z   dz
        }
t        d      }dt        z  |
z  |z  dt        z  |
z  |z  z   dt        z  |
z  |z  z
  }dd|dz  z  d|
z  |z  z   dt        |      z  z   dz
  z  }t        |dz  dz  ||
z  |z  dz  z   t        |      z
        }t        |dz  dz  ||
z  |z  dz  z
  t        |      z
        }t        |dz  dz  |dz  dz  z   d|z  t        |      z  z   d|z  z
  t        |      z
        }dt        z  |
z  |z  dt        z  |
z  |z  z   dt        z  |
z  |z  z
  }dd|dz  z  d|
z  |z  z
  dt        |      z  z   dz
  z  }dt        z  dz  dt        z  dz  z   dt        z  dz  z
  ||z  z
  }dt        z  dz  dt        z  dz  z
  dt        z  dz  z   ||z  z   }t         | |      ||z  ||z  z   |t        t        z
  z  z         t         ||      ||z  ||z  z         t         ||      |dt        z  dz  dt        z  dz  z
  dt        z  dz  z   ||z  z
  z  |dt        z  dz  dt        z  dz  z   dt        z  dz  z
  ||z  z   z  z   |t        t        z
  z  z         g}|	|k(  sJ t        ||	      dg d fk(  sJ y c c}w )!Nr  r9   r;   r?   r<   r@   rA   rC   r_   r   r   r}   l   XW` l   Rl+p r=   istql   +RH l   ,N ifd i i  i ieb  i  i;:i1  iXi     i  TrB   )r   r   r   r   r   r
   r   r   r#   r   r   r   r)  r   r   r   )r3   r   r   r;   r4   r5   r   
dsolve_solrZ  dsolve_sol1x_1x_2x_3x_4x_5x_6x_7x_8x_9x_10x_11s                        rI   _linear_3eq_order1_type4_longrK  X  s   iX.GAq!sA	QQA	QQAd1Q4macAgqt^a!f4qs1Q4x?@d1Q4mQqS1XQ!4qs1Q4x?@"T!A$PQ]TUVWTWXYZ[X\T\_`ab	b ` UdQh!_U CC J,67S8C=7K7
1uqAvc!f}$qAv-3q619<r#a&yH2M
NC
q'C
R-
C
*R-"3C"7
7*R-:KC:O
OC
z!Q$C!33jQ6GG*T
UC
ad1fquSy{"SV+
,C
ad1fquSy{"SV+
,C
ad1fq!tAvo!CF
*QqS03q69
:C
(3,s
U2Xc\#-
-bS0@
@C
uQTzE#IcM)F3q6M9FB
CC2:b.r%?#c'ID"9U?U2Xe^+eBhun<s3wFDadDHtCx'#rBw-78"QqT48dSVhCV:WY[\]^_\`beGCK#b&*$s2vcz1CG;c=?BCF3JQTUWQWX[Q[D[F3JESE! @"c"$'bMc2 Z3 4C ##{+i/@@@@% 8s   #Pc            	      v   t        dt              \  } }t        d      }t        t         | |      |      | | |      z  |dz   ||      z  z   |z         t        t         ||      |      d|dz  z   | |      z  |d|dz  z  z    ||      z  z   dz         g}t	        |      }t        ||      dddgfk(  sJ y )	Nr   r9   r3   r<   r?   r=   Tr   )r   r   r
   r   r   r   r4   r5   r3   r/  rZ  s        rI   !test_neq_order1_type4_slow_check1rN  y  s    5h'DAqAd1Q4mQqtVad1Q4i/!34d1Q4mQq!tVAaD[A!Q$J!+<<q@ACC
+C#s#q!f~555rK   c            	         t        dt              \  } }}t        d      }t        t	         | |      |      | ||      z   | |      z    ||      z   dz         t        t	         ||      |      | ||      z   | |      z    ||      z   dz         t        t	         ||      |      | | |      z  |z    ||      z    ||      z         g}t        d      5  t        |      }d d d        t        |      dg dfk(  sJ y # 1 sw Y   xY w)Nr8   r9   r3   r=   r   TrB   )r   r   r   r
   r   r   r   r   )r4   r5   r6   r3   r/  rZ  s         rI   !test_neq_order1_type4_slow_check2rP    s   iX.GAq!sA 	:adA!A$1! 4q 89
:adA!A$1! 4r 9:
:adA!A$
QqT 1AaD 89C
 
T	 Sk#s#i'8888 s   DDc                  J   t        dt              \  } }t        d      }t        t         | |      |      | | |      z   ||      z   t	        |      z         t        t         ||      |      |dz  | ||      z  z    | |      z
        g}t         | |      t
        dz  t        t        z  dz  z
  t        t        |dz  t        |dz   dz  t        |z  z
        z  dz  |dz  t        |dz   dz  t        |z  z         z  dz  z   t        t        |dz   dz  t        |z  z
        z  t	        |      z  dz  z   t        t        |dz   dz  t        |z  z         z  t	        |      z  dz  z
  |      z  dz  z
  t        t         |dz  z  t        |dz   dz  t        |z  z
        z  dz  t        |dz  z  t        |dz   dz  t        |z  z         z  dz  z   t        |dz   dz  t        |z  z
        t	        |      z  dz  z   t        |dz   dz  t        |z  z         t	        |      z  dz  z   |      dz  z   t        |dz  dz  t        |z  z         z  t
        dz  t        t        z  dz  z   t        t        |dz  t        |dz   dz  t        |z  z
        z  dz  |dz  t        |dz   dz  t        |z  z         z  dz  z   t        t        |dz   dz  t        |z  z
        z  t	        |      z  dz  z   t        t        |dz   dz  t        |z  z         z  t	        |      z  dz  z
  |      z  dz  z   t        t         |dz  z  t        |dz   dz  t        |z  z
        z  dz  t        |dz  z  t        |dz   dz  t        |z  z         z  dz  z   t        |dz   dz  t        |z  z
        t	        |      z  dz  z   t        |dz   dz  t        |z  z         t	        |      z  dz  z   |      dz  z   t        |dz  dz  t        |z  z
        z  z         t         ||      t         t
        z  dz  t        dz  z   t        |dz  t        |dz   dz  t        |z  z
        z  dz  |dz  t        |dz   dz  t        |z  z         z  dz  z   t        t        |dz   dz  t        |z  z
        z  t	        |      z  dz  z   t        t        |dz   dz  t        |z  z         z  t	        |      z  dz  z
  |      dz  z   t        t        t         |dz  z  t        |dz   dz  t        |z  z
        z  dz  t        |dz  z  t        |dz   dz  t        |z  z         z  dz  z   t        |dz   dz  t        |z  z
        t	        |      z  dz  z   t        |dz   dz  t        |z  z         t	        |      z  dz  z   |      z  dz  z
  t        |dz  dz  t        |z  z
        z  t        t
        z  dz  t        dz  z   t        |dz  t        |dz   dz  t        |z  z
        z  dz  |dz  t        |dz   dz  t        |z  z         z  dz  z   t        t        |dz   dz  t        |z  z
        z  t	        |      z  dz  z   t        t        |dz   dz  t        |z  z         z  t	        |      z  dz  z
  |      dz  z   t        t        t         |dz  z  t        |dz   dz  t        |z  z
        z  dz  t        |dz  z  t        |dz   dz  t        |z  z         z  dz  z   t        |dz   dz  t        |z  z
        t	        |      z  dz  z   t        |dz   dz  t        |z  z         t	        |      z  dz  z   |      z  dz  z   t        |dz  dz  t        |z  z         z  z         g}||fS )Nr   r9   r3   r<   )
r   r   r
   r   r   r   r   r   r-   r   rM  s        rI   _neq_order1_type4_slow3rR    s   5h'DAqA 	:adA!A$1A 67
:adA1q1v! 45C
 	1Q4"Q$2a-!HQT#q!teAg!m2D-DQ-FqDadU1Wqs]##A%.&()#q!teAg!m*<(<SV(CA(E.Fc1a4%'AaC-  Q').*+,%. #../#0 02:A2ad731uQwcH D <<Avc1a4%'AaC-002<358!Q$qaC: 6Q66<Aa!A#.s1v5a7<89:3<<=3>> @C1a46aCD @	
 qD1R46MAhq!tCAa!A#4F/Fq/HqDadU1Wqs]##A%0&()#q!teAg!m*<(<SV(CA(E0Fc1a4%'AaC-  Q')0*+,'. %../%0 02:A2ad731uQwcH D <<Avc1a4%'AaC-002<358!Q$qaC: 6Q66<Aa!A#.s1v5a7<89:3<<=3>> @C1a46aCD @	
 
	 	1Q41"R%'BqD.8AqDadU1Wqs]1C,CA,EqDadU1Wqs]##A%-&()#q!teAg!m*<(<SV(CA(E-Fc1a4%'AaC-  Q')-*+,$../$0 0 hr!Q$wsAqD57QqS=11!3a1fS!Q$qaCB > 77 !Q$q1Q3'A.q01361uQwaC8 4Q44   
 "%QT!Vac\!23
 78d1fr!tmQT#q!teAg!m,,Q.Ac1a4%'AaC-6H1H1JJc1a4%'AaC-  Q')*,-c1a4%'AaC-.@,@Q,G,IJ7 XqbAgc1a4%'AaC-&88:adF31uQw1}%%a'(*-q!teAg!m*<SV*CA*EFAa!A#s1v%a'()*, ,,-.7.
 031a46AaC</@6A
A 
	BC2 8OrK   c                  F    t               \  } }t        | dd      |gk(  sJ y )NFr  )rR  r'   r/  rZ  s     rI   test_neq_order1_type4_slow3rU    s'    &(HCu59cUBBBrK   c                  H    t               \  } }t        | |      dddgfk(  sJ y )NTr   )rR  r   rT  s     rI   !test_neq_order1_type4_slow_check3rW    s+    &(HC#s#q!f~555rK   c                  |    t               \  } }t        |       }|D cg c]  }t        |       }}|k(  sJ y c c}w r   )rK  r   r#   rh   rZ  r>  r?  s       rI   3test_linear_3eq_order1_type4_long_dsolve_slow_xfailrZ    sC     ,-GBJ,67S8C=7K7# 8s   9c                      t               \  } }t        d      5  t        |       }d d d        D cg c]  }t        |       }}|k(  sJ y # 1 sw Y   )xY wc c}w )NT)rK  r   r   r#   rY  s       rI   4test_linear_3eq_order1_type4_long_dsolve_dotprodsimpr\    sa    +-GB 
T	  BZ
  -77S8C=7K7#	    8s   AAAc                  H    t               \  } }t        | |      dg dfk(  sJ y )NTrB   )rK  r   )rh   rZ  s     rI   'test_linear_3eq_order1_type4_long_checkr^    s(    +-GB"c"tY&7777rK   c            
         t        dt              \  t        d      t               j                                      z         t               j                                      z         g              gt               t         t
        t        dz        z  z         t               t        t
        t        dz        z  z         gg} t        d      | k(  sJ t        t        d        t        t        fd       t        t        fd	       t        t        fd
       t               j                        d       z  d       z  z
        t               j                        dz  d       z  d       z  z         ft        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd       y )Nr   r9   r3   r<   T)rH   r;   r  c                      t        d      S r   r'   r   rK   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s    }Q/ rK   c                      t         d      S r   ra  r/  s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s    }S!4 rK   c                      t         d      S r   ra  )r/  rH   s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s    }S%; rK   c                  $    t         d d       S r   ra  )r/  rH   r3   s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s    }S%)Q? rK   r^   r_   r`   r?   c                  $    t               g g fk(  S r   ra  )rh   s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s    b(9b"X(E rK   c                  D    t                       g      g g fk(  S )N)rH   ra  rh   r4   r5   r3   s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s&    b1qt(MRTVXQY(Y rK   c                  F    t                       g      g g fk(  S )N)rH   r;   ra  rh  s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s)    b1qtPQ(RWY[]V^(^ rK   c            
      h    t                       g d      d d      di      g g fk(  S )Nr   r=   )rH   r;   rf  ra  rh  s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  sD    b1qtPQXYZ[X\^_abcdaeghWi(joqsunv(v rK   c            	      J    t          d      d d      di      g g fk(  S )Nr   r=   )r;   rf  ra  rh  s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s.    bAAaD!QqTSTCU(V[]_aZb(b rK   c                  H    t          d      d d      di      g g fk(  S )Nr   r=   re  ra  )rh   r4   r5   s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  s+    bqtQ!a>P(QVXZ\U](] rK   c            	      f    t                       g d      d d      di      g g fk(  S )Nr   r=   )rH   rf  ra  rh  s   rI   rJ   z$test_dsolve_system.<locals>.<lambda>  sA    b1qtSTUVSWYZ\]^_\`bcRd(ejlnpiq(q rK   )r   r   r
   r   r   r   r   r'   r/   r   r  )rZ  rh   r/  r4   rH   r5   r3   s    @@@@@@rI   test_dsolve_systemrn    s   5h'DAqAadiilAaD1Q4K("QqTYYq\1Q4!A$;*G
HCqT1Q4LEqtbS2c!A#h;&'AaD"r#ac({2B)CD
ECEQT:cAAA
:/0
:45
:;<
:?@
QqTYYq\2!9q1Q4x/
0"QqTYYq\Q5FQqT	TUXYZ[X\T\H\2]	^B
 EF
 YZ
 ^_
 vw
 bc
 ]^
 qrrK   c                     t        dt              \  } }t        d      \  }} | |      j                  |      |z
   | |      j                  |      |z   g}t        t              5  t        |       d d d         | ||      j                  |      g}t        t              5  t        |       d d d         | ||      j                  |       ||      j                  |      z    ||      j                  |      g}t        t              5  t        |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r9   x y)r   r   r   r/   r   r   )r4   r5   r3   r   r/  s        rI   test_dsolverq    s   5h'DAq5>DAqQ499Q<!QqTYYq\A-
.C	
	 s Q7<<?
C	
	 s Q7<<?1Q499Q<'11
6C	
	 s    s$   &D!"D-D9!D*-D69Ec                     t        dt              \  } }t        d      }t        t         | |      ||      t	        |      |dz  z   t         | |      |      z  t	        |      |dz  z   dz  t         ||      |      z  z         t        t         ||      ||      t	        |      |dz  z   dz  t         | |      |      z  t	        |      |dz  z   dz  t         ||      |      z  z         g}t        |dd      \  }|D ]  }|j                  |j                  z
  j                  |d	   j                  |d	   j                  |d
   j                  |d
   j                  i      }|j                  |j                  t              D ci c]  }||j                  d       c}      }t        |j                  |d
            d	k(  rJ  y c c}w )Nrp  r9   r;   r<   r?   rx   Fr  r   r=   )deep)r   r   r
   r   r   r'   lhsr   subsatomsr   r  r.   )r3   r   r;   rh   rZ  eresrl  s           rI   test_higher_order1_slow1ry  	  s   5h'DAqA 	4!Qq>CF1a4Kad15s1vad{Aod1Q4PQl6RRS
4!Qq>CF1a4K?4!Q<7Q1aQqTRS8TTU
B e%8DC  ,uuquu}""CFJJs1vzz3q6::c!fjj#QRhhsyy7LM!166u6--MNsxx1~&!+++,Ms   G
c                     t        dt              \  } }}t        d      \  }}t        t         | |      |df      |d | |      z   ||      z   z        t        t         ||      |df      | | |       d ||      z  z   z        g}t         | |      t        t
        z  t        |dt        z
  t        d      dz  z  z        z  t        t        z  t        |dt        z
  t        d      dz  z  z        z  z   t        t        z  t        |dt        z   t        d      dz  z  z        z  z
  t        t        z  t        |dt        z   t        d      dz  z  z        z  z
        t         ||      t
        t        |dt        z
  t        d      dz  z  z        z  t        t        |dt        z
  t        d      dz  z  z        z  z   t        t        |dt        z   t        d      dz  z  z        z  z   t        t        |dt        z   t        d      dz  z  z        z  z         g}t        |      |k(  sJ t        ||      dddgfk(  sJ y )	Nr  r9   r  r<   r=   r?   Tr   )r   r   r
   r   r   r   r+   r   r   r,   r)  r*  r   r   )r3   r   r   r;   r   r   r   s          rI   test_second_order_type2_slow1r{  	  s=   iX.GAq!6?DAqz!A$A'AadFQqTM):;z!A$A'QqTEAadFN);<>DqtQrT&AEQqT!V#4!455"VAq1uPQRSPTUVPVFWDW=X8XX[\]_[_`fghjkkA$q&j h a \ rT&AEQqT!V+<)<"==> ?qtRq!a%1Q46!2233b1q5AaDQRFBS@S9T6TTWYZ`abdehidimnopmqrsmsctatZuWuuq!a%1Q46**++, -.D $<4$%$A777rK   c                     t        d      \  } }}| t        t              j                  t              z  ||z
  t	        t              z  t        t              z  z
  |t	        t              j                  t              z  || z
  t        t              z  t        t              z  z
  |t        t              j                  t              z  | |z
  t        t              z  t	        t              z  z
  g}t        |      sJ y )Nza b c)r   r4   r3   r   r5   r6   r   )r   r   r   r/  s       rI   test_nonlinear_3eq_order1_type1r}  -	  s     gGAq! 	
AaDIIaLAEQqT>AaD00	AaDIIaLAEQqT>AaD00	AaDIIaLAEQqT>AaD00C #;;rK   c            
         t        t        t              j                  t              dt	        t              z  t        t              z  dt        t              z  t	        t              z  z
        t        t        t              j                  t              dt        t              z  t	        t              z  dt	        t              z  t        t              z  z
        t        t	        t              j                  t              dt        t              z  t        t              z  dt        t              z  t        t              z  z
        g} t        |        y Nr<   r?   r@   )r
   r4   r3   r   r6   r5   r   rc  s    rI   test_nonlinear_3eq_order1_type4r  ;	  s     	1Q499Q<!AaD&1+!A$qt35
1Q499Q<!AaD&1+!A$qt35
1Q499Q<!AaD&1+!A$qt35C
 3KrK   c            
         t        t        t              j                  t              dt        t              dz  z  dz
        t        t	        t              j                  t              ddt        t              z  z
        t        t        t              j                  t              dt        t              z  dt        t              dz  z  z
        g} t        |        y r  r
   r4   r3   r   r5   r6   r   rc  s    rI   test_nonlinear_3eq_order1_type3r  H	  s     	1Q499Q<!AaD!G)a-1
1Q499Q<!a!f,1
1Q499Q<!AaD&a!ai/1C
 3KrK   c                  R   t        t        t              j                  t              t        t              dt        t              z  dt	        t              z  z
  z        t        t	        t              j                  t              t	        t              dt	        t              z  dt        t              z  z
  z        t        t        t              j                  t              t        t              dt        t              z  dt        t              z  z
  z        g} t        |        y r  r  rc  s    rI   test_nonlinear_3eq_order1_type5r  V	  s     	1Q499Q<1q1v!A$/0
1Q499Q<1q1v!A$/0
1Q499Q<1q1v!A$/0C
 3KrK   c                  b   t        dt              \  } }}t        dd      \  }}}}t        d      }t        dt              \  }}	t        t	         | |      |       | |       ||      z   dz         t        t	         ||      |      d	 | |      z  d
 ||      z  z   dz         f}
t         | |      t
        t        |t        d      dz   z        z  t        t        |t        d       dz   z        z  z   t        dd      z
        t         ||      t
        d	t        d      z   z  t        |t        d      dz   z        z  t        t        d       d	z   z  t        |t        d       dz   z        z  z   t        d
d      z
        g}t        |
|      dddgfk(  sJ t        t	         | |      |       | |       ||      z   dz         t        t	         ||      |      d | |      z   ||      z   dz         f}t         | |      t
        t        t        d	      |z        z  t        t        t        d	      |z        z  z   t        |      z  t        dd      z
        t         ||      t        d	       t
        z  t        t        d	      |z        z  t        d	      t        z  t        t        d	      |z        z  z   t        |      z  t        dd      z
        g}t        ||      dddgfk(  sJ t        t	         | |      |      d
|z   | |      z  d	 ||      z  z         t        t	         ||      |      d	 | |      z  d
|z   ||      z  z         f}t         | |      t
        t        d	|z        z  t        t        d|z        z  z   t        t        d
d	      |d	z  z        z        t         ||      t
        t        d	|z        z  t        t        d|z        z  z
  t        t        d
d	      |d	z  z        z        g}t        ||      dddgfk(  sJ t        t	         | |      |      d
|z   | |      z  |d	z   ||      z  z         t        t	         ||      |      |d	z    | |      z  d
|z   ||      z  z         f}t         | |      t
        t        |dz  dz        z  t        t        |dz  dz        z  z   t        t        d
d	      |d	z  z        z        t         ||      t
         t        |dz  dz        z  t        t        |dz  dz        z  z   t        t        d
d	      |d	z  z        z        g}t        ||      dddgfk(  sJ t        t	         | |      |      d
|z   | |      z  |d	z   ||      z  z         t        t	         ||      |      |d	z    | |      z  d
|z  d|d	z  z  z    ||      z  z         f}t         | |      t
        t        t        d      d	z  t        dd	      z   |dz  z  dz        z  t        t        t        d       d	z  t        dd	      z   |dz  z  dz        z  z   t        t        d
d	      |d	z  z        z        t         ||      t
        t        d      d	z  t        dd	      z   z  t        t        d      d	z  t        dd	      z   |dz  z  dz        z  t        t        d       d	z  t        dd	      z   z  t        t        d       d	z  t        dd	      z   |dz  z  dz        z  z   t        t        d
d	      |d	z  z        z        g}t        ||      dddgfk(  sJ t        t	         | |      |      d
|z   | |      z  |d	z   ||      z  z         t        t	         ||      |      d|d	z  z
   | |      z  d
|z  d|d	z  z  z    ||      z  z         f}t         | |      t
         ||      z  t         ||      z  t        |d	z  t        t        d
|z  |            z  t        t        d|d	z  z  d
|z  z   |            z   ||      d	z  z  |      z  z         t         ||      t
         |	|      z  t         |	|      t        |d	z  t        t        d
|z  |            z  t        t        d|d	z  z  d
|z  z   |            z   ||      d	z  z  |      z  t        t        d
|z  |            t        t        d|d	z  z  d
|z  z   |            z   ||      z  z   z  z         g}t        |      }||k(  sJ y )Nr  r9   z
k, l, m, nT)Integerr;   zx0, y0rx   r<   rA   r   r_   r?   rg  r   rh  r   ri  rj  r~  r=   )r   r   r   r
   r   r   r   r   r   r   r   r   r   r-   r   )r3   r   r   r   r   r  r   r;   ro  r  r   r   r   r   r   r   r   r   r   r   eq6r   ss                          rI   test_linear_2eq_order1r  c	  s   iX.GAq!t4JAq!QsAX8,FBd1Q4lAaD1Q4K!O,bad1q1v!A$QS?S.T
UCqtRAtAw{O,,r#a$q'A6F2G/GG(SUWX/YZqtRT!Wc!T!Wq[/22R$q'A5Fs1tTUwhYZlK[G\5\\_ghikl_mmnpD#t$1v666d1Q4lAaD1Q4K",-r$qtA,1Q4!A$QS@S/T
UCqtbT!WQY'"Sa^*;;SVChrSToUVqttAwhrk#d1gai.(472:c$q'!)n+DDc!fLxX[]^O__`bD#t$1v666d1Q4lAaC!Hq1v-.4!Q<1Q4!A#aPQd(AR0S
TCqtbQqSkBs2a4yL0#hq!nQT6I2JJKqtbQqSkBs2a4yL(#hq!nQT.A*BBCED#t$1v666d1Q4lAaC!Hq!tAaDy012d1Q4lQTE!A$JQRSTQTUVWXUYQYDY3Z
[CqtbadAX&CAqM)993x1~aQRd?R;SSTqtrc#q!tQh-"S!Q$]"22CAq!t8K4LLMOD#t$1v666d1Q4lAaC!Hq!tAaDy012d1Q4lQTE!A$JRSTURUVWXY[\X\V\R\^_`a^bQbDb3c
dCqtbd2hqj8Aq>9AqDA!CDDsT"XIaK(1a.(1a40233458!Q19L5MN Oqtb$r(1*x1~-.sDHQJ!Q4ORSUVRV3WXY3Y/ZZb	!hq!n$%cDH9Q;!Q+G!Q$*OPQ*Q&RRSTWX`abdeXfghjkgkXkTlm noD #t$1v666d1Q4lAaC!Hq!tAaDy012d1Q4lQq!tVQqTMUVWXUXYZ[\^_[_Y_U_abcdaeTeDe3f
gCqtR1X2a5!Q$s8AaC;K7L2LSQYZ[\]_`\`Z`cdefcfZfhiQjMk2klnoplqstlt2tvw)x xxyqtR1XBqE(1a4HQqS!4D0E+Ec(STUVXYUYSY\]^_\_S_abJcFd+deghiejlmem+mop"qq1a#hqAv!|Q788A>? @ @ ABD 	sA99rK   c                  &   t        dt              \  } }}t        d      }t        t	         | |      |       | |       ||      dz  z        t        t	         ||      |       ||      dz        f}t         | |      t
        t        ddt        z  d|z  z   z  t        dd      z        z        t         ||      ddt        z  d|z  z   z  t        dd      z         t         | |      t
        t        dddt        z  d|z  z   z  t        dd      z  z        z        t         ||      ddt        z  d|z  z   z  t        dd      z        t         | |      t
        t        t         ddt        z  d|z  z   z  t        dd      z  z        z        t         ||      t         ddt        z  d|z  z   z  t        dd      z  z        t         | |      t
        t        t        ddt        z  d|z  z   z  t        dd      z  z        z        t         ||      t        ddt        z  d|z  z   z  t        dd      z  z        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t	         | |      |      t        d | |      z         ||      dz  z        t        t	         ||      |       ||      dz        f}t         | |      t        t
        dddt        z  d|z  z   z  t        dd      z  z  z
         dz        t         ||      ddt        z  d|z  z   z  t        dd      z         t         | |      t        t
        dddt        z  d|z  z   z  t        dd      z  z  z          dz        t         ||      ddt        z  d|z  z   z  t        dd      z        t         | |      t        t
        dt        z  ddt        z  d|z  z   z  t        dd      z  z  z          dz        t         ||      t         ddt        z  d|z  z   z  t        dd      z  z        t         | |      t        t
        dt        z  ddt        z  d|z  z   z  t        dd      z  z  z
         dz        t         ||      t        ddt        z  d|z  z   z  t        dd      z  z        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t	         | |      |       ||       | |      z        t        t	         ||      |       | |      dz        f}t        dd      }	t         | |      d|	z  dt        t        t
              t        |z   z  dz         t        t
              z  |	z  z  z        t         ||      t        t
        t
        t        t        t
              t        |z   z  dz        dz  z  z         dz        g}
t        |      |
k(  sJ t        t	         | |      |       | |       ||      z  t        |      dz  z        t        t	         ||      |       ||      dz  t        |      dz  z        f}t         | |      dt        t
              z  t        t        t
              z  |z   t        d|z        dz  z
  z        t         ||      dt
        |z   t        d|z        dz  z
  z        h}t        |      |k(  sJ t         | |      |t	         | |      |      z  t	         | |      |      t	         ||      |      z  z         t         ||      |t	         ||      |      z  t	         ||      |      dz  z         f}t         | |      t
        t        z  t
        |z  z         t         ||      t        dz  t        |z  z         h}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ t        t	         | |      |       | |      dz   ||      dz  z        t        t	         ||      |       ||      dz        f}t         | |      dt
        dddt        z  d|z  z   z  t        dd      z  z  z
  z        t         ||      ddt        z  d|z  z   z  t        dd      z         t         | |      dt
        ddt        z  d|z  z   z  t        dd      z  z   z        t         ||      ddt        z  d|z  z   z  t        dd      z        t         | |      dt
        t        ddt        z  d|z  z   z  t        dd      z  z  z   z        t         ||      t         ddt        z  d|z  z   z  t        dd      z  z        t         | |      dt
        t        ddt        z  d|z  z   z  t        dd      z  z  z
  z        t         ||      t        ddt        z  d|z  z   z  t        dd      z  z        g}t        |      |k(  sJ t        ||      d	d
d
gfk(  sJ y )Nr  r9   r;   r?   rA   r>   r@   r=   Tr   r<   r_   r   )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   ttr   r   r   r   r   r  r   s                    rI   test_nonlinear_2eq_order1r  	  s	   iX.GAq!sAd1Q4l1Q4!a<("T!A$q\!A$'*B
CC
1Q4CQrTAaCZHRO<==>
1Q42qtacz?Xa^334
1Q4CB"qs
Ohq!n<<==>
1Q4"adQqSj/HQN23
1Q4CB"qs
Ohq!n<<==>
1Q4!R2!_x1~556
1Q4C2qtacz?Xa^;;<<=
1Q4B"qs
Ohq!n4457D #;$#t$1v666d1Q4lC!A$K!a/0D1aL!A$'1J
KC
1Q4#b1b!B$1*oA>>>??AB
1Q42qtacz?Xa^334
1Q4#b1b!B$1*oA>>>??AB
1Q4"adQqSj/HQN23
1Q4#b1Q3AbD1Q3J(1a.@@@AA!CD
1Q4!R2!_x1~556
1Q4#b1Q3AbD1Q3J(1a.@@@AA!CD
1Q4B"qs
Ohq!n4457D #;$#t$1v666d1Q4lAaD1I&4!Q<1q(A
BC	!QB
1Q4BDb26!21!455d2h>CCDE
1Q4b2d48R!V#4Q#67:::;A=>@D #;$ d1Q4l1Q4!9SVQY./D1aL1qQQRAR1S
TCqtRBZCGa#ac(1*!<=>1Q4RRSVVYZ[\]Z]V^_`V`M`Ia@bcD#;$ ad1T!A$q\>$qtA,tAaD|";;<b1aQqTRSnUYZ[\]Z^_`UacdUdFd>e
fCqtRURT\"BqtRURT\$:;D#;$#t$1v666d1Q4l1Q471Q47?+RQqT!QqT1W-E
FC
1Q4BB"qs
Ohq!n<<<=>
1Q42qtacz?Xa^334
1Q4B"adQqSj/Xb!_==>?
1Q4"adQqSj/HQN23
1Q4BB"qs
Ohq!n<<<=>
1Q4!R2!_x1~556
1Q4BB"qs
Ohq!n<<<=>
1Q4B"qs
Ohq!n4457D #;$#t$1v666rK   c                  x	   t        dt              \  } }}t        d      \  }}dt         | |      |      z  d ||      z   ||      z  z   dt         ||      |      z   ||       | |      z  z
  dt         ||      |      z   | |       ||      z  z
  f}t        dt	        dt        d	|dz  z  dt        z  z
  t        z         t        d	|dz  z  dt        z  z   t        z
        z  z  | | |      f      z  t        t        d
      |z  d
z  z
        t        dt	        dt        d|dz  z  t        z
  dt        z  z         t        d|dz  z  t        z   dt        z  z
        z  z  | ||      f      z  t        t        d      |z  dz  z         t        dt	        dt        d|dz  z  dt        z  z
  t        z         t        d|dz  z  dt        z  z   t        z
        z  z  | ||      f      z  t        t        d      |z  dz  z         g}t        t        |      |      D cg c]  \  }}|j                  |       c}}sJ dt         | |      |      z  d ||      z   ||      z  t        |      z  z   dt         ||      |      z   ||       | |      z  t        |      z  z
  dt         ||      |      z   | |       ||      z  t        |      z  z
  f}	t        dt	        dt        d|dz  z  t        z
  dt        z  z         t        d|dz  z  t        z   dt        z  z
        z  z  | | |      f      z  t        t        d      t        |      z  dz  z         t        dt	        dt        d	|dz  z  dt        z  z
  t        z         t        d	|dz  z  dt        z  z   t        z
        z  z  | ||      f      z  t        t        d
      t        |      z  d
z  z
        t        dt	        dt        d|dz  z  dt        z  z
  t        z         t        d|dz  z  dt        z  z   t        z
        z  z  | ||      f      z  t        t        d      t        |      z  dz  z         g}
t        t        |	      |
      D cg c]  \  }}|j                  |       c}}sJ y c c}}w c c}}w )Nr  r9   zt ur@   r<   r?   rA   r=   r   r   rd   r   ir_   )r   r   r   r
   r-   r   r   r   r)  zipr   dummy_eqr   r   )r3   r   r   r;   r2  r   r   r   r   r   r   s              rI   test_nonlinear_3eq_order1r  	  s   iX.GAq!5>DAqT!A$q\>AadF1Q4K'4!Q<!A$qt))CQtAaDQR|^VWXYVZ[\]^[_V_E_
`Cq!T"QT'AbD.2"56tBq!tGadNR<O7PPQTUWXYZW[S\]]
T"XaZ](1d2ad7R<!B$3F.GQqRStVVX[[\]_[_M_H`.`+a	
AaD	# !a2%'(*1Xac!Q$h2oPR>R9SQq!tVad]R :! 7"$%qt9.. ,./1DGAIaK/?)ABD '*&+t&<=daAJJqM=== T!A$q\>AadF1Q4KA..$qtA,1ad3q6AQ0QSTUYZ[\]Z^_`UaSadefgdhijklimdmnqrsntdtSt
uCq!T"QT'B,2"56tAadFRK!B$<N7OOPSTVWXYVZR[\\^`QAr_ q!T"QT'AbD.22E-FtBqRStGVWXZVZN]_L_G`-`*a	
AaD	"  b#a&++-.08AtC1HqQStOVXDX?YQq!tVad]R @! ="$%qt94. 2./1DGCFN14D/D/FGD '*&+t&<=daAJJqM=== > >s   )R0R6c                     t        d      } t        d      }t        d      }t        d      }t        d      }t        t         ||       |       d ||       z        t        t         ||       |       d ||       z        f}t         ||       d|z  t	        dt        d	      z  | z        z  d|z  t	        d
t        d	      z  | z        z  z         t         ||       dt        d	      z  |z  t	        dt        d	      z  | z        z  dt        d	      z  |z  t	        d
t        d	      z  | z        z  z
        g}t        ||      dddgfk(  sJ y )Nr;   r   r   r)  r*  rx   r^   r_   r?   rd   Tr   )r   r   r
   r   r   r   r   )r;   r   r   r)  r*  rh   rZ  s          rI   test_C1_function_9239r  	  s/   sA	$B	$B	B	B
T"Q%^Qr!uW
%r$r!ua."RU('C	DBbeQrT#aQik**QrT#bajl2C-CCDbeQtAwYr\#aQik"22QtAwYr\#bajQRlBS5SSTVC"c"taVn444rK   c            
      j   t        dd      } t        t        t        t              t              |  t        t              z        t        t        t        t              t              | t        t              z        f}t        t        t              t         | z  t        | t        z        z  t        | z  t        | t        z        z  z
        t        t        t              t         | z  t        | t        z        z  t        | z  t        | t        z        z  z         g}t        ||      dddgfk(  sJ y )NepsilonTr`  r   )r   r
   r   r4   r3   r5   r   r   r   r   r   )epsr   r   s      rI   test_dsolve_linsystem_symbolr  	  s    
T
*Cd1Q4mcT!A$Y'D1qM3qt8)D
ECqtbSWSQZ'"S&SU*;;<qtbSWSQZ'"S&SU*;;<>D#t$1v666rK   N)~sympy.core.functionr   r   r   sympy.core.mulr   sympy.core.numbersr   r   r	   sympy.core.relationalr
   sympy.core.singletonr   sympy.core.symbolr   r   %sympy.functions.elementary.hyperbolicr   (sympy.functions.elementary.miscellaneousr   r   r   sympy.core.containersr   sympy.functionsr   r   r   r   r   r   r   r   sympy.matricesr   r   sympy.solvers.oder   sympy.solvers.ode.oder   sympy.solvers.ode.subscheckr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   sympy.integrals.integralsr-   sympy.simplify.ratsimpr.   sympy.testing.pytestr/   r0   r1   r2   C0r   r   r)  r*  r+  C6C7C8C9C10r3   r4   r5   r6   r\   r   r   r   r  r[  ry  r  r  r  r  r  r  r  r  r  r  r  r  r%  r0  r;  rK  rN  rP  rR  rU  rW  rZ  r\  r^  rn  rq  ry  r{  r}  r  r  r  r  r  r  r  r  r   rK   rI   <module>r     s   < <  0 0 $ " / 6 9 ' ' A A A < $ 3 6? ? ? ?
 + . * = = /6g.> +BBBBBCLSMSMSM"UJA:H
j:Z2c:L S: S:l
~:B]"~ u> u>p8&x:v 8 8 :&+8\ 8 88$Q>hdtN 
 
 5 5  	9 	9( 9 9AB 6 6 9 9!HC 6 6
 	  	 		 		 	8 	8
s0$ , ,"8 		  		   	  	  &T:7z > >(	57rK   