
    gr                       d 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 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'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZA ddlBmCZCmDZD ddlEmFZFmGZGmHZH ddlImJZJ ddlKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU ddlVmWZW ddlXmYZY ddlZm[Z[m\Z\ ddl]m^Z^m_Z_ ddl`maZa ddlbmcZcmdZd ddlemfZf ddlgmhZh ddlimjZj dd lkmlZlmmZm dd!lnmoZo dd"lpmqZrmsZtmuZvmwZx dd#lymzZz dd$l{m|Z| dd%l}m~Z~ dd&lmZ dd'lmZ dd(lmZmZmZmZ dd)lmZ dd*lmZ dd+lmZ dd,lmZ dd-lmZ dd.lmZmZmZmZ dd/lmZ dd0lmZ dd1lmZmZ dd2lmZ dd3lmZmZ dd4lmZ dd5lmZ dd6lmZ dd7lZdd8l/mZ dd9lXmZ dd:lmZmZmZ dd;lemZ dd<lmZmZmZmZmZ dd=lmZ dd>lmZmZ dd?lmZmZmZ dd@lmZmZ ddAlmZmZ ddBlmZ ddClmZ ddDlmZ ddElmZ ddFlmZ ddGlmZ ddHlmZ ddIlmZmZmZmZmZmZmZ ddJlmZ ddKlmZmZmZ ddLlmZ ddMl!mZ ddNlmZmZ ddOlmZ ddPlmZ ddQlmZ e%j        ZeZ e)dR          \  ZZZ e)dSdTU          \  ZZZZZZ edV          Z edW          ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Z d` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Z	di Z
dj Zdk Zdl Zdm Zedn             Zdo Zdp Zedq             Zdr Zeds             Zdt Zdu Zdv Zdw Zedx             Zedy             Zedz             Zed{             Zed|             Zed}             Zed~             Zed             Z ed             Z!d Z"d Z#ed             Z$ed             Z%ed             Z&d Z'd Z(d Z)d Z*d Z+ed             Z,ed             Z-d Z.d Z/d Z0d Z1ed             Z2d Z3ed             Z4d Z5d Z6d Z7d Z8dedz  z  dedz  z  z
  dedz  z  z
  dedz  z  z
  dedz  z  z
  dz
  Z9dedz  z  dedz  z  z
  dedz  z  z
  dedz  z  z
  dedz  z  z
  dedz  z  z   dz   Z:dedz  z  dedz  z  z
  dedz  z  z   dedz  z  z   dez  z
  dz
  Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCed             ZDd ZEd ZFd ZGd ZHed             ZId ZJed             ZKedÄ             ZLdĄ ZMdń ZNdƄ ZOdǄ ZPdȄ ZQdɄ ZRedʄ             ZSed˄             ZTd̄ ZUd̈́ ZVed΄             ZWdτ ZXdЄ ZYedф             ZZd҄ Z[dӄ Z\edԄ             Z]edՄ             Z^edք             Z_edׄ             Z`ed؄             Zadل Zb edڦ          edۄ                         Zced܄             Zdd݄ Zedބ Zfed߄             Zgd Zhd Zid Zjd Zkd Zld Zmd Znd Zoed             Zpd Zqd Zred             Zsed             Ztd Zued             Zvd Zwd Zxed             Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zed             Zd Zed             Zed              Zed             Zed             Zd Zed             Zd Zd Zed             Zed             Zd	 Zed
             Zd Zed             Zed             Zd Zed             Zed             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Zed             Zed              Zed!             Zd" Zd# Zd$ Zd% Zd& Zd' Zed(             Zed)             Zed*             Zed+             Zeed,                         Zed-             Zeed.                         Zd/ Zd0 Zd1 Zd2 Zd3 Zed4             Zd5 Zd6 Zed7             Zd8 Zd9 Zed:             Zd; Zed<             ZĐd= ZŐd> ZƐd? Zǐd@ ZedA             ZɐdB ZʐdC ZːdD Z̐dE Z͐dF ZedG             ZedH             ZАdI ZѐdJ ZҐdK ZӐdL ZԐdM ZՐdN Z֐dO ZאdP ZؐdQ ZedR             ZڐdS ZېdT ZܐdU ZݐdV ZސdW ZߐdX ZdY ZedZ             Zed[             Zd\ Zed]             Zd^ Zd_ Zed`             Zeda             Zedb             Zdc Zedd             Zede             Zdf Zdg Zdh Zdi Zdj Zdk Zedl             Zedm             Zedn             Zedo             Zedp             Zdq Zdr Zeds             Zdt Zedu             Zedv             Zedw             Zedx             Z edy             Zedz             Zd{ Zd| Zd} Zeed~                         Zed             Zed             Zed             Z	d Z
d Zd Zd Zd Zd Zed             Zed             Zed             Zed             Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zed             Zed             Zed             Zd Z d Z!d Z"d Z#d Z$d Z%ed             Z&d Z'd Z(ed             Z)d Z*d Z+d Z,ed             Z-ed             Z.d Z/ed             Z0ed             Z1ed             Z2ed             Z3d Z4d Z5d Z6d Z7ed             Z8ed             Z9d Z:ed             Z;d Z<d Z=d Z>ed             Z?eed                         Z@d ZAed             ZBed             ZCed             ZDed             ZEeed                         ZFeed                         ZGeed                         ZHeed                         ZId ZJedÄ             ZKeedĄ                         ZLedń             ZMedƄ             ZNdǄ ZOedȄ             ZPdɄ ZQedʄ             ZRd˄ ZSd̄ ZTd̈́ ZUed΄             ZVedτ             ZWdЄ ZXdф ZYed҄             ZZdӄ Z[eedԄ                         Z\eedՄ                         Z]dք Z^dׄ Z_d؄ Z`dل Zadڄ Zbdۄ Zced܄             Zdd݄ Zedބ Zfd߄ Zgd Zhd Zid Zjed             Zkd Zled             Zm ed          d             Znd Zoed             Zped             Zqed             Zred             Zsd Zted             Zud Zvd Zwd Zxd Zyd Zzed             Z{ed             Z|d Z}d Z~ ed          ed                         Zed             Zed             Zed             Zd Zd Zd Zed              Zed             Zed             Zd7S (  z Tests from Michael Wester's 1999 paper "Review of CAS mathematical
capabilities".

http://www.math.unm.edu/~wester/cas/book/Wester.pdf
See also http://math.unm.edu/~wester/cas_review.html for detailed output of
each tested system.
    )Qask)refine)product)
EulerGamma)N)
DerivativeFunctionLambdaSubsdiffexpandexpand_func)Muligcd)AlgebraicNumberEIRationalnanoopizoo)EqLt)S)DummySymbolsymbols)rfbinomial	factorial
factorial2)	bernoulli	fibonaccitotient	partition)	conjugateimresign)LambertWexplog)asinhcoshsinhtanh)ceilingfloor)MaxMinsqrt)	Piecewise)
acosacotasinatancoscotcscsecsintan)besselj)
DiracDelta)
elliptic_e
elliptic_f)gamma	polygamma)hyper)assoc_legendre
chebyshevt)polylog)idiff)And)hessian	wronskian)MatMul)continued_fraction_convergentscontinued_fraction_iteratorcontinued_fraction_periodiccontinued_fraction_reduce)	factorint)
primerange)ZZ)legendre_poly)apart)Polyfactorgcd	resultant)limit)O)residue)series)ImageSet)	FiniteSetIntersectionIntervalUnion)combsimp)hyperexpand)	powdenestpowsimp)radsimp)
logcombinesimplify)
sqrtdenest)trigsimp)solveNstirling)	Heaviside)CiSierf)zeta)XFAILslowSKIPtooslowraises
partitions)mpimpc)MatrixGramSchmidteye)BlockMatrixblock_collapse)MatrixSymbol
ZeroMatrix)
Commutator)PolyRing)	FracField)solve_lin_sys)Sum)Product)	integrate)laplace_transforminverse_laplace_transformLaplaceTransformfourier_transformmellin_transformlaplace_correspondencelaplace_initial_conds)rsolve)solvesetsolveset_reallinsolve)dsolve)Equality)islice	takewhile)fps)fourier_series)minimumx y zzi j k l m nTintegerfgc                  N   t          t          t          t          t          t          t                    t          t          t          t                    z  t          t          t
          t                    z  t          t          t          t          t          t
                    k    sJ d S Nre   ijklm     ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/utilities/tests/test_wester.pytest_B1r   v   sm    aAq!Q'')Aq!*<*<<aA#,Q1a#;#;< < < < < <r   c                  x   t          t          t          t          t          t          t                    t          t          t          t                    z  t          t          t
          t                    z  t          t          t
          ht          t          t          ht          t          t          h          k    sJ d S r   )re   r   r   r   r   r   rf   r   r   r   test_B2r   {   s    aAq!Q'')Aq!*<*<<aA#/AAq	Aq!9#M#MN N N N N Nr   c                      t          t          t          t          t          t
                    t          t                    z
  t          t          t          t          t
                    k    sJ d S r   r   r   r   r   test_B3r      sO    aAq!$$y||3aAq!!" " " " " "r   c                  
   t          t          t          t                    t          t          t                    z   t          t          t          ft          t          ft          t          ft          t          f          k    sJ d S r   )re   r   r   r   r   r   r   r   test_B4r      s^    	!Q	!Q79q!fq!fq!fq!f556 6 6 6 6 6r   c                  0    t          d          dk    sJ d S )N2   l         <:.kjFt=VfvaI= )r#   r   r   r   test_C1r      s2    bMMIJ J J J J Jr   c                  j    t          t          d                    dddddddddd	d	d	d	d	d	d
k    sJ d S )Nr   /                        )r   r                              %   )   +   r   )rW   r#   r   r   r   test_C2r      s[    imm$$B2"1!qaQ1!) )      r   c                  N    t          d          t          d          fdk    sJ d S )N
   	   )i   i  )r$   r   r   r   test_C3r      s*    rNNJqMM*k999999r   c                      ddk    sJ d S )Ni
  r   r   r   r   test_C4r      s    D======r   c                  2    dt          dd          k    sJ d S )N{   234r   intr   r   r   test_C5r      s!    #eQ--r   c                  `    t          dd          t          dd          cxk    rdk    sn J d S )N677r   1BF   i  r   r   r   r   test_C6r      s=    ua==CrNN1111c11111111r   c                  2    t          dd          dk    sJ d S )Ni   r   r   )r/   r   r   r   test_C7r      s!    ua==Ar   c                  r    t          j        dd          dk    sJ t          j        dd          dk    sJ d S )Nr   r   r      )rY   invertr   r   r   test_C8r      s>    9Q??a9Q??ar   c                  N    t          t          dd          d          dk    sJ d S )N  i  iB  J   r   r   r   r   test_C9r      s-    T4  $''2------r   c                      d} t          dd          D ]}| t          d|          z  } | t          dd          k    sJ d S )Nr   r   r   r   i  i	  )rangeR)xns     r   test_C10r      sP    	A1b\\  	Qq!WW$r   c                  L    t          dd          t          d          k    sJ d S )Nr   r   z
0.[142857])r   r   r   r   r   test_C11r      s'    Q77aoo%%%%%%r   c                  T    t          dd          t          dd          z  dk    sJ d S )Nr   r   r   r   r   r   r   r   test_C12r      s.    Q88aAhh!######r   c                      t          dd          dt          dd          z   t          dd          z  z  } dt          dd          z  }| |k    sJ d S )Nr   r   r   r   i  r   r   testgoods     r   test_C13r      sO    R88q1R;;1Q7722D!Q<D4<<<<<<r   c                      t          t          dt          d          z  dz                       dt          d          z   k    sJ d S )Nr   r   r   r   rp   r8   r   r   r   test_C14r      sA    d1T!WW9q=))**a$q''k999999r   c                  
   t          t          ddt          ddt          ddt          ddt          d          z  z
            z  z
            z  z             z  z                       } t          d          dz   }| |k    sJ d S )N   r   r   r   r   r   r   s     r   test_C15r     s{    d2$q1T!ba!DGG)m9L9L6L2L-M-M+M'M"N"N NNOOPPD77Q;D4<<<<<<r   c            	         t          t          ddt          d          z  z   dt          d          z  z   dt          d          z  z                       } t          d          t          d          z   t          d          z   }| |k    sJ d S )Nr   r   r      r   r   r   r   s     r   test_C16r     su    d2$q''	>Ad2hhJ6488CDDEED77T!WWtAww&D4<<<<<<r   c                      t          t          d          t          d          z   t          d          t          d          z
  z            } ddt          d          z  z   }| |k    sJ d S )Nr   r   r   r   )rm   r8   r   s     r   test_C17r     sZ    DGGd1gg%$q''DGG*;<==Dqay=D4<<<<<<r   c            	          t          t          dt          d          z             t          dt          d          z
            z                      d                    dk    sJ d S )NTcomplexr   )ro   r8   r   r   r   r   test_C18r     s\    T"tBxx-((4T"XX+>+>>FFtFTTUUYZZZZZZZr   c            	          t          t          ddt          d          z  z   t          dd          z                      dt          d          z   k    sJ d S )NZ   "   r   r   r   )rm   ro   r8   r   r   r   r   test_C19r     sN    8R"T!WW*_1a899::a$q''kIIIIIIr   c                     ddt          d          z  z   } t          | t          dd          z  dz   t          d          z  | t          dd          z  z            }t          |          t          d          k    sJ d S )N   N   r   r   r   r   )r8   r   r   ro   )insider   s     r   test_C20r     su    BtAwwJFFAaGGOa/477:VQq!WW_LMMDD>>_R00000000r   c            	          t          t          ddt          d          z  z   t          dd          z                      t          dt          d          z             k    sJ d S )Nr   r   r   r   r   )ro   r   r8   r   r   r   r   test_C21r     sc    OR"T!WW*_1a$@AABBDGG$$% % % % % %r   c                     t          ddt          d          z  z
  t          ddt          d          z  z
            z  ddt          d          z  z
  t          ddt          d          z  z
            z  z   dz   dt          d          z  z
  d	t          d          z  d
z
  z            } t          d          dz  t          t          d          dz
            dz  z
  }| |k    sJ d S )Nr   r   r   r   r   r          0   H   r   )ro   r8   r/   r   s     r   test_C22r     s    a!DGG)mSQtAwwY%7%771qay=#b
T!WW*O K K ; QZ(,.tAwwJO= > >D7719s477Q;''))D4<<<<<<r   c                  2    dt           z  dz
  t           u sJ d S )Nr   r   )r   r   r   r   test_C23r!    s!    r6A:r   c                       t          d          )Nz2**aleph_null == aleph_1NotImplementedErrorr   r   r   test_C24r%    s    
8
9
99r   c                  6    dt          d          z  dk    sJ d S )N        r   )r8   r   r   r   test_D1r(    s#    a=Cr   c                  n    t          t          d                                                    dk    sJ d S )Niz3.29683147808856e-434295)strr.   evalfr   r   r   test_D2r,    s4    s8}}""$$%%)CCCCCCCr   c                      t          t          t          d          z                                d          j                            d          sJ d S )N   r   l   h	a%)r.   r   r8   r+  numaer   r   r   test_D3r1    sF    r$s))|""2&&*--.@AAAAAAAr   c                      t          t          dd                    dk    sJ t          t          dd                    dk    sJ d S )Nr  r   r
  )r5   r   r4   r   r   r   test_D4r4    sH    2q??b    1R88""""""r   c                       t          d          )Nz6cubic_spline([1, 2, 4, 5], [1, 4, 2, 3], x)(3) == 27/8r#  r   r   r   test_D5r6     s    
V
W
WWr   c                       t          d          )Nz,translate sum(a[i]*x**i, (i,1,n)) to FORTRANr#  r   r   r   test_D6r8  %      
L
M
MMr   c                       t          d          )Nz&translate sum(a[i]*x**i, (i,1,n)) to Cr#  r   r   r   test_D7r;  *      
F
G
GGr   c                       t          d          )Nz.apply Horner's rule to sum(a[i]*x**i, (i,1,5))r#  r   r   r   test_D8r>  /  s    
 N
O
OOr   c                       t          d          )Nztranslate D8 to FORTRANr#  r   r   r   test_D9r@  7  s    
7
8
88r   c                       t          d          )Nztranslate D8 to Cr#  r   r   r   test_D10rB  <  s    
1
2
22r   c                       t          d          )Nz.flops(sum(product(f[i][k], (i,1,k)), (k,1,n)))r#  r   r   r   test_D11rD  A  s     N
O
OOr   c                      t          dd          t          z  t          dd          z   dz  t          dd          t          dz  z  t          dd          t          z  z   t          dd	          z   k    sJ d S )
Nr   r   r   r   r   r   )r   r   r   r   r   test_D12rI  G  sl    AJJNSAYY&1,BAqD0@3sB<<PQ>0QTWXY[\T]T]0]]]]]]]r   c                       t          d          )Nz:discretize a PDE: diff(f(x,t),t) == diff(diff(f(x,t),x),x)r#  r   r   r   test_D13rK  L  s    
Z
[
[[r   c                  r    t          t          d          t          dt          z   z  dt          z   z  k    sJ d S )Nr   r   r   )r!   r   r   r   r   test_F1rM  V  s2    a88q!a%y!a%(((((((r   c                      t          t          t          d                    t          t          dz
  z  t          dz
  z  dz  k    sJ d S )Nr   r   r   r   )r   r"   r   r   r   r   test_F2rO  Z  s?    x1~~&&!QU)QU*;A*=======r   c                      t          dt          z  t          t                    z  t          dt          z  dz
            z            t          dt          z            k    sJ d S Nr   r   )ri   r   r#   r$   r   r   r   test_F3rR  ^  sO    AqD9Q<<'*QqS1W*=*==>>)AaC..PPPPPPr   c            	          t          dt          z  t          t                    z  t          dt          z  dz
  t          dt          f          z            t          dt          z            k    sJ d S rQ  )ri   r   r#   r   r   r   r   r   test_F4rT  c  sZ    AqD9Q<<''!A#'Aq!9*E*EEFF)TUVWTW..XXXXXXr   c                  &   t          t          t          dd          z             t          t                    z  t          t                    z  t          dt          z            ddt          z  z  z  t          t                    dz  z  k    sJ d S Nr   r   )rH   r   r   r8   r   r#   r   r   r   test_F5rW  h  sp    Qq!WWR(9Q<<79QqS>>!aPQc(;RS\]^S_S_abSb;bbbbbbbr   c                  n    d t          d          D             } ddidddddidddddig}| |k    sJ d S )Nc                 6    g | ]}|                                 S r   )copy).0ps     r   
<listcomp>ztest_F6.<locals>.<listcomp>n  s     000Q000r   r   r   )r   r   r   )r   r   r   )partTestpartDesireds     r   test_F6r`  m  sZ    00*Q--000Hq6qQ<<!QQ!q!fEK{""""""r   c                  0    t          d          dk    sJ d S )Nr   r   )r(   r   r   r   test_F7rb  s  s    Q<<1r   c                  6    t          ddd          dk    sJ d S )Nr   r   T)signedirs   r   r   r   test_F8re  w  s(    Aq&&&#------r   c                  0    t          d          dk    sJ d S )Nr   i@  )r'   r   r   r   test_F9rg  {  s    4==Cr   c                  P    t          t          dd                    ddgk    sJ d S )N/B iDB iCB )listrX   r   r   r   test_G1rk    s0    
67++,,0AAAAAAAr   c                       t          d          )Nz$find the primitive root of 191 == 19r#  r   r   r   test_G2rm    s    
D
E
EEr   c                       t          d          )Nz,(a+b)**p mod p == a**p + b**p mod p; p primer#  r   r   r   test_G3ro    r9  r   c                  n   t          t          d                                                                        d          t	          dd          k    sJ t          t          d t          t          t          d                                                  d         t	          dd          k    sJ d S )Nr   r     c                     | j         dk    S )Nr  )qr   s    r   <lambda>ztest_G15.<locals>.<lambda>  s    AC2I r   r3  )	r   r8   r+  limit_denominatorr   rj  r   cf_ccf_ir   r   r   test_G15ry    s    DGGMMOO$$66r::aBiiGGGG	--tDaMM/B/BCCDDRH	"b		     r   c                  t    t          t          t          t                    d                    g dk    sJ d S )Nr   )
r   r   r  r   i$  r   r   r   r   r   )rj  r   rx  r   r   r   r   test_G16r{    s8    tBxx##$$(I(I(IIIIIIIr   c                  <    t          ddd          dg dgk    sJ d S )Nr   r   r   r   )r   r   r   r   )cf_pr   r   r   test_G17r~    s,    1b>>a.......r   c                      t          ddd          dggk    sJ t          dgg                                          t          j        t          d          dz  z   k    sJ d S )Nr   r   r   )r}  cf_rr   r   Halfr8   r   r   r   test_G18r    s_    1a==aSE!!!!!;;16DGGAI#5555555r   c                     t          ddd          } t          t          d| z            dz
  t          d| z            dz   z            }t          t	          |d                    dd| z  d| z  d	| z  d
| z  gk    sJ d S )NsTr   positiver   r   r   r   r   r   r  )r    rx  r.   rj  r   )r  its     r   test_G19r    s    TD111A	s1Q3xx!|c!A#hhl+	,	,Br11ac1Q31bd";;;;;;;r   c                      t          ddd          } t          d| z  gg          | t          | dz  dz             z   k    sJ d S )Nr  Tr  r   r   )r    r  r8   r  s    r   test_G20r    sN    TD111A!A#==AQTAX.......r   c                  n    t          ddd          } t          | d| dz  dz             d| z  ggk    sJ d S )Nr  Tr  r   r   )r    r}  r  s    r   	test_G20br    sI    TD111A1adQhQqSE7******r   c                      t          ddt          z  z            t          dt          dz   z            k    sJ t          ddt          z  z            t          dt          dz   z            k    sJ d S rQ  )ro   r   rk   r   r   r   test_H1r    sj    AadFxAE
333333Qq!tVQU 4 4444444r   c                  \    t          ddt          z  z            dt          dz   z  k    sJ d S )Nr   r   )rl   r   r   r   r   test_H2r    s1    1q!t8AE
******r   c                  <    dt           t           dz   z  z  dk    sJ d S Nr3  r   r   r   r   r   test_H3r    s&    !QU)!!!!!!r   c                      t          dt          z  dz
            } t          |           t          u sJ | j        d         dk    sJ | j        d         dt          z  dz
  k    sJ d S )Nr   r   r   r   r   r   r   )r]   r   typer   args)exprs    r   test_H4r    sj    !A#(D::9Q<19Q<1Q37""""""r   @   r     r   ~   r   .   r   r   <   Q   r     r   r   r   '   S   4   6   r   F   r      r   [   V   c                  R    t          t          t          t                    dk    sJ d S Nr   )r^   p1p2r   r   r   r   test_H5r    s#    r2q>>Qr   c                      t          t          t          t          z            t          t          t          z                      t          k    sJ d S r   )r^   r   r  rs  r  r   r   r   test_H6r    s7    vb1f~~vb1f~~..!333333r   c                  J   dt           z  t          dz  z  t          dz  z  dt           dz  z  t          dz  z  t          dz  z  z
  dt           dz  z  t          d	z  z  t          d
z  z  z   dt           dz  z  z
  dz   } dt           dz  z  t          dz  z  t          dz  z  dt           dz  z  t          dz  z  t          dz  z  z   dt           d	z  z  t          dz  z  t          dz  z  z   dt          dz  z  t          z  z   }t          | |t           t          t                    dk    sJ d S )Nr  r   r   r   r   r   r   r  r   r   r   r   r  r   r  r   r   r   r   P   r  r   r   yzr^   r  r  s     r   test_H7r    s    	AaeAqD2ae8AqD=A-	-!R%1QT0A	AAaeG	Ka	OB	AqDAae	bAgadl1a4/	/"QT'!R%-12D	Dr!R%xPQz	QBr2q!Q1$$$$$$r   c                  ,   dt           z  t          dz  z  t          dz  z  dt           dz  z  t          dz  z  t          dz  z  z
  dt           dz  z  t          d	z  z  t          d
z  z  z   dt           dz  z  z
  dz   } dt           dz  z  t          dz  z  t          dz  z  dt           dz  z  t          dz  z  t          dz  z  z   dt           d	z  z  t          dz  z  t          dz  z  z   dt          dz  z  t          z  z   }dt           dz  z  t          dz  z  t          dz  z  dt           d
z  z  t          dz  z  t          dz  z  z
  dt           dz  z  t          dz  z  t          dz  z  z   }t          | |z  ||z  t           t          t                    |k    sJ d S )Nr  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  rs  s      r   test_H8r    s^   	AaeAqD2ae8AqD=A-	-!R%1QT0A	AAaeG	Ka	OB	AqDAae	bAgadl1a4/	/"QT'!R%-12D	Dr!R%xPQz	QB
1b5AaebAgadl1b5002ae8AqD=A3EEArAvrAvq!Q''1,,,,,,r   c                      t          dd          } d| t          dz   z  z  | t          dz   z  z
  }d| t          dz   z  z  d| t          z  z  z   }t          ||          | t          z  k    sJ d S )Nr   F)zeror   r   r   r   )r   r   r^   )r   r  r  s      r   test_H9r    ss    sA	
1q1u:AE
	"B	
1q1u:!Q$	Br2;;!Q$r   c                      dt           dz  z  dt           dz  z  z   t           dz  z   t           z
  dz
  } t           dz  dt           dz  z  z
  t           z   dz   }t          | |t                     dk    sJ d S )Nr   r   r   r   r   )r   r_   r  s     r   test_H10r    sp    	
1a4!AqD&1a4	!	#a	'B	
A!Q$	Q	BRQ1$$$$$$r   c                  r    t          t          t          z  t          t          z  t                    dk    sJ d S Nr   )r_   r  rs  r  r   r   r   r   test_H11r    s-    R!VR!VQ''1,,,,,,r   c                      t           dz  dz
  } t           dz  dt           z  z   dz   }t          | |z            t           dz
  t           dz   z  k    sJ d S )Nr   r   )r   ro   )r/  dens     r   test_H12r    sS    
Q$(C
Q$1*q.CCGQQ//////r   c                      t          t          t                    dz
  t          t          dz            dz   z            t          t          dz            dz
  k    sJ d S rV  )ro   r.   r   r   r   r   test_H13r    sL    SVVaZC!HHqL122c!A#hhlBBBBBBr   c                      t           dz   dz  } t          |           }|ddt           z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   d	t           d
z  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   d	t           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   t           dz  z   k    sJ t          |t                     }|ddt           z  z   dt           dz  z  z   d t           dz  z  z   dt           dz  z  z   d!t           d
z  z  z   d"t           dz  z  z   d#t           dz  z  z   d$t           dz  z  z   d%t           dz  z  z   d%t           dz  z  z   d$t           dz  z  z   d#t           dz  z  z   d"t           dz  z  z   d!t           dz  z  z   dt           dz  z  z   d t           dz  z  z   dt           dz  z  z   dt           dz  z  z   dt           dz  z  z   k    sJ t          |          ddt           z   dz  z  k    sJ d S )&Nr   r     r   it  r   i  r   i<  r   ih  r   i. r   i r   i r   i r   r   r   r   r  r  r   r      r   i|  i\  iK  ip iG i` i i1 )r   r   r   r]   )r\  epdeps      r   test_H14r    s   	
Q2A	B!bd(SAX%QT	1DAI=ad
J
1*QTz"$*1a4K028A+>@Fq"uM
B,2&(-ae46;ArEkBDI!R%KP q"u* ArEz" %(2I. 131b59 <=b5A B B B B r1++C2A:QT	)E!Q$J6q!tC
A+q!t$&-adl35<QT\BDKAqDLQ
!R%-!!R%-(*1!R%-8:@B,G B, q"u% (-QU{3 6:!R%Z@ CFae)L QU(	    
 #;;"a!eb[.((((((r   c            
          t          t          d t          t          dz  t          dz  z   dz
            D                        t          dz  t          dz  z   dz
  k    sJ d S )Nc                 "    g | ]}t           |z
  S r   rt  )r[  rs     r   r]  ztest_H15.<locals>.<listcomp>  s    CCCA!a%CCCr   r   r   r   )ro   r   r   r   r   r   r   test_H15r    sa    CCC!Q$A+/)B)BCCCDEEAPQSTPTWXXXXXXXr   c                     t          t          dz  dz
            t          dz
  t          dz   z  t          dz  dz   z  t          dz  t          dz  z
  t          dz  z   t          z
  dz   z  t          dz  t          dz  z   t          dz  z   t          z   dz   z  t          dz  t          dz  z
  t          dz  z   t          dz  z
  dz   z  t          dz  t          d	z  z
  t          d
z  z   t          dz  z
  dz   z  t          dz  t          d	z  z   t          d
z  z   t          dz  z   dz   z  t          dz  t          dz  z
  t          dz  z   t          d
z  z
  dz   z  k    sJ d S )Nd   r   r   r   r   r   r   r  r  r   r   (      r]   r   r   r   r   test_H16r    s^   !S&1*1q51q5/1a4!8"<adQTk
Q$??? #A1q!t+a/!3#567dQTkAqD6H
Q$77#UQU]QU*QT1A5#7892228M
Q$99# UQU]QU*QU2Q6#8 9 9 9 9 9 9r   c                      t          t          t          t          t          z                      t          t          z  z
            dk    sJ d S r  )ro   r]   r   r  r  r   r   r   test_H17r    s<    F6"r'??++be344999999r   c                  L   t          dt          dz  z  dt          dz  z  z   dt          dz  z  z   dt          z  z   dz             } dt          z  dt          z  z   dt          z  dt          z  z
  z  t          dz   dt          z  z
  z  t          dz   dt          z  z   z  }| |k    sJ d S )	Nr   r   r   M   r   r     r   )r]   r   r   r   s     r   test_H18r  !  s     !AqD&1QT6/Bq!tG+bd2S899DaC!A#I!ac	"AEAaCK0!a%!A#+>D4<<<<<<r   c                      t          d          } t          | dz
                                t          | dz  dz
                      | dz   k    sJ d S )Nar   r   )r    r\   r   r  s    r   test_H19r  )  sN    AA;;d1a4!8nn--Q666666r   c                       t          d          )NzXlet a**2==2; (x**3 + (a-2)*x**2 - (2*a+3)*x - 3*a) / (x**2-2) = (x**2 - 2*x - 3) / (x-a)r#  r   r   r   test_H20r  /  s    
 C D D Dr   c                       t          d          )Nzuevaluate (b+c)**4 assuming b**3==2, c**2==3.                               Answer is 2*b + 8*c + 18*b**2 + 12*b*c + 9r#  r   r   r   test_H21r  5  s    
 J K K Kr   c                      t          t          dz  dt          dz  z  z
  dz   d          t          dz
  dz  t          dz   dz  z  k    sJ d S )Nr   r   r   r   r   modulusr  r   r   r   test_H22r  ;  sP    !Q$1a4-!#Q///AEA:Q
3JJJJJJJr   c                     t           dz  t           z   dz   } t           dz  t           z   dz   t           dz  t           dz  z
  t           dz  z   t           dz  z
  t           dz  z   t           dz  z
  dz   z  }t          | d	
          |k    sJ d S )Nr   r   r   r   r   r   r   r   i  r  )r   r]   r   r   s     r   test_H23r  ?  s    	2	AA	
AA!Q$A+1,q!t3ad:QTAAEFA!U###q((((((r   c                  "   t          t          j                            d          d          } t	          t
          dz  dt
          dz  z  z
  dz   | 	          t
          | z
  t
          dz   | z
  z  t
          dz
  | z   z  t
          | z   z  k    sJ d S )
NT)funcphi)aliasr   r   r   r   	extension)r   r   GoldenRatior   r]   r   )r  s    r   test_H24r  E  s    
!-..D.99
G
G
GC!Q$1a4-!#s333	
S1q53;Q-q3w78 8 8 8 8 8r   c                      t           dt          dz  z  z
  dt          dz  z  z   dz  } t          t	          |                     | k    sJ d S )Nr   r   r  r   r  r  r]   r   )es    r   test_H25r  K  sJ    	
Qq!tVa1f	#A&))!!!!!!r   c                     t          t          t                    dt          t                    dz  z  z
  dt          t                    dz  z  z   dz            } t          | d          t          t                     dt          t                    dz  z  z   dt          t                    dz  z  z
  dz  k    sJ d S )Nr   r   r  F)r   )r   rB   r   r>   r  rC   r  r]   )r   s    r   test_H26r  P  s    A3q6619$qQ{2R788A!E"""Aw3q6619'<qQ{'JR&OOOOOOOr   c                  :   dt           z  t          dz  z  t          dz  z  dt           dz  z  t          dz  z  t          dz  z  z
  dt           dz  z  t          d	z  z  t          d
z  z  z   dt           dz  z  z
  dz   } dt           dz  z  t          dz  z  t          dz  z  dt           dz  z  t          dz  z  t          dz  z  z   dt           d	z  z  t          dz  z  t          dz  z  z   dt          dz  z  t          z  z   }dt          z  t          dz  z  dt           d	z  z  t          d	z  z  t          dz  z  dt           dz  z  t          dz  z  z   dt          z  t           dz  z  t          dz  z  z   dt          dz  z  z   z  dt           dz  z  dt           dz  z  t          dz  z  t          dz  z  z   dt           dz  z  t          d	z  z  t          d
z  z  z
  dt           z  t          dz  z  t          dz  z  z
  dz
  z  }t          t	          | |z                      |k    sJ d S )Nr  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   hs      r   test_H27r  U  s   
1QU
1a4"QU(1a4-1,,qBwq!t|AqD/@@1QU7JQNA
1a41QUR1WQT\!Q$..AqDBq!t1CCbBhqjPA
1QT	
AqD&A+ad
R1WQT\
)BqDAIaeO
;bAg
E	G
ArE'Bq"uHQTM!Q$&
&1b5Aad):
:RT!R%Z1_
Lq
P	RA &1++!######r   c                       t          d          )Nzgexpand ((1 - c**2)**5 * (1 - s**2)**5 * (c**2 + s**2)**10) with c**2 + s**2 = 1. Answer is c**10*s**10.r#  r   r   r   test_H28r  ^  s    
 L M M Mr   c                      t          dt          dz  z  dt          z  t          z  z
  dt          dz  z  z   d          t          t          z   t          t          z
  z  k    sJ d S )Nr   r   r  r  r   r  )r]   r   r  r   r   r   test_H29r   d  sS    !AqD&2a46/Bq!tG+Q777AEAE?JJJJJJr   c                     t          t          dz  t          dz  z   t          d                    } t          t          z   t          t          t	          dd           t          d          dz  t
          z  z
  z  z   z  t          t          t	          dd           t          d          dz  t
          z  z   z  z   z  }|| k    sJ d S )Nr   r  r   r   )r]   r   r  r8   r   r   )r   answers     r   test_H30r  i  s    !Q$A+b222D!ea!a1ggXQ	!3445q1qAwwhaQRST>T;U7UVFT>>>>>>r   c                     t           dz  dt           z  z   dz   t           dz  dt           dz  z  z   dt           z  z   dz   z  } dt           dz   dz  z  dt           dz   z  z
  dt           dz   z  z   }t          |           |k    sJ d S )Nr   r   r   r   r   )r   r[   r  s     r   test_H31r  o  s|    	
A!a!Q$1a4-!A#-12A	QUQJa!e$qAE{2A88q======r   c                       t          d          )Nzp[A*B*C - (A*B*C)**(-1)]*A*C*B (product                               of a non-commuting product and its inverse)r#  r   r   r   test_H32r  u  s    
 K L L Lr   c                  <   t          dd          \  } }}t          | t          ||                    t          |t          ||                     z   t          |t          | |                    z                                                                   dk    sJ d S )NzA, B, CF)commutativer   )r    r   doitr   )ABCs      r   test_H33r  {  s    iU333GAq!q*Q**++
Q
1a((
)
)*
Q
1a((
)
)*+/466&&((a@ @ @ @ @ @r   c                      t          t          t          dd          z            t          ddt          d          z  z              k    sJ d S )Nr   r   r   r   r   )rC   r   r   r8   r   r   r   test_I1r    sF    r!Ar(({Q477] 3 33333333r   c                  r    t          dt          d          z   dz            t          d           k    sJ d S )Nr   r   r   r   )r8   r>   r   r   r   test_I2r    s7    SVVQCFF7******r   c                      t          t          t          z            t          dt          z  dz
  t          z  dz            z   dt          z  dz
  k    sJ d S )Nr   r   r   r3  )r>   r   r   rB   r   r   r   test_I3r    sH    qt99sAaC!GR<>***rAgk999999r   c            
      >   t          t          t          t          t          t          z            z            t	          t          dz  t          t          t          z            z            z   t          j        t                              dt          z  dz
  k    sJ d S )Nr   r3  r   )r   r>   r   r   rB   r   r   r   r   r   test_I4r    sj    #bQrTl##c"Q$s1R4yy.&9&9919Q<<HHRRSGVWKWWWWWWr   c                      t          t          dz  dz  t          dz  dz  z   t          dz  dz  z   t          dz  z
  t          z            dk    sJ d S )Nr   r   r   r   r  r   )rB   r   r   r   r   r   test_I5r    sP    1QAa!Q$q&(1R4/2566!;;;;;;r   c                       t          d          )NzHassuming -3*pi<x<-5*pi/2, abs(cos(x)) == -cos(x), abs(sin(x)) == -sin(x)r#  r   r   r   test_I6r    s    
h
i
iir   c                      t          dt          z            t          t                    z  t          t                    dz  dt          t                    dz  z  z
  k    sJ d S Nr   r   r>   r   rB   r   r   r   test_I7r    sJ    qs88CFF?c!ffai!CFFAI+5555555r   c                      t          dt          z            t          t                    z  dt          dt          z            z  dz
  k    sJ d S )Nr   r   r   )r>   r   r   r   r   test_I8r!    s?    qs88CFF?aAaCj1n,,,,,,r   c                      t          dt          z            t          t                    z  t          t                    dz  dt          t                    dz  z  z
  k    sJ d S r  r  r   r   r   test_I9r#    sL     qs88CFF?c!ffai!CFFAI+5555555r   c                      t          t          t                    dz  dz   t          t                    dz  z
  t	          t                    dz  t          t                    dz  z   dz
  z            t
          u sJ d S Nr   r   r
  )rq   rC   r   r>   rB   r   r   r   r   test_I10r&    sb    SVVQY]SVVRZ/CFFAIA	4IA4MNOOSVVVVVVVr   hangsc                     t          t          t                    dz  dz   t          t                    dz  z
  t	          t                    dz  t          t                    dz  z   dz
  z  t          d          dk    sJ d S )Nr   r   r
  r   )r`   rC   r   r>   rB   r   r   r   test_I11r)    si     #a&&!)a-#a&&"*,QSVVQY1F1JKQPQRRVWWWWWWWr   c                     t          t          t                    dz  dz   t          t                    dz  z
  t	          t                    dz  t          t                    dz  z   dz
  z  t                    } | t
          u sJ d S r%  )r   rC   r   r>   rB   r   )ress    r   test_I12r,    sd     A	AA
*s1vvqy3q6619/Dq/HI1
M
MC#::::::r   c                  L    t          d          t          dd          k    sJ d S )Nr   ii  )r%   r   r   r   r   test_J1r.    s'    R==AeSMM))))))r   c                      t          t          t          t          dz            t                    t          t          t          dz            t	          t          t          dz            z
  t          z  k    sJ d S Nr   )r   rF   r   r  rG   r   r   r   test_J2r1    s[    
1ad##Q''Jq!Q$,?,?*QPQSTPTBUBU,UWX+XXXXXXXr   c                       t          d          )NzDJacobi elliptic functions: diff(dn(u,k), u) == -k**2*sn(u,k)*cn(u,k)r#  r   r   r   test_J3r3    s    
d
e
eer   c                  v    t          t          dd                    dt          t                    z  k    sJ d S )Nr3  r   r
  )rH   r   r8   r   r   r   r   test_J4r5    s1    2q??bbk))))))r   c                      t          dt          dd                    t          d           t          d          t          z  dz  z
  t
          z
  t          t          d                    z
  k    sJ d S )Nr   r   r   r   )rI   r   r/   r8   r   r   r   r   r   test_J5r7    s]    Q!Q  SVVGd1ggbjl$:Z$G#dSTgg,,$VVVVVVVr   c                  v    t          j        dd                              t          dd                    sJ d S )Nr   y      ?      ?z0.04157988694396212z0.24739764151330632)mpmathrD   r0  r   r   r   r   test_J6r:    s:    >!V$$'',ACX(Y(YZZZZZZZr   c                      t          t          t          dd          t          dz                      dt          dz  z  k    sJ d S )Nr  r   r   )ro   rD   r   r   r   r   r   test_J7r<    s?    GAbGGRT**++r2q5z999999r   c                  8   t          t          dd          t                    } t          t                    t          z  t	          t                    z
  t          t          t          z  dz            z  }t          t          |           |z
            dk    sJ d S Nr   r   r   )	rD   r   r  rB   r>   r8   r   ro   r   )r\  rs  s     r   test_J8r?    sp    !AA	QCFF	DAaLL(AKNNA%&&!++++++r   c                      t          dt                                        t                    t          dt                     k    sJ d S )Nr   r   )rD   r  r   r   r   r   test_J9rA    s9    1a==a  gammO333333r   c                      t          dd          \  } }t          || d          d| z  t          t                    z  t	          || z
  dz  dz             z  t	          | | z
  dz   dz            z  k    sJ d S )Nzmu, nuTr   r   r   r   )r    rK   r8   r   rH   )munus     r   test_J10rE    s    Xt,,,FB"b!$$2d2hhub2gq[1_7M7M(MeVXUX[]U]`aUacdTdNeNe(eeeeeeer   c            	          t          t          ddt                              t          t          dd           t	          dt          dz  z
            z  dt          dz  z  dz
  z            k    sJ d S )Nr   r   r   r   )ro   rK   r   r   r8   r   r   r   test_J11rG    sj    N1a++,,!Aq''$q1a4x..9PRSTUWXTXRX[\R\9]0^0^^^^^^^r   c                      t          t          dt                    dt          z  t          dt                    z  z
  t          dt                    z             dk    sJ d S )Ni  r   i  i  r   )ro   rL   r   r   r   r   test_J12rI    sT    JtQ''!A#jq.A.A*AAJtUVDWDWWXX\]]]]]]]r   c                  \    t          ddd          } t          | d          d| z  k    sJ d S )Nr  TF)r   negativer3  )r    rL   r  s    r   test_J13rL    s;    TE222Aaa''''''r   c                      t          t          j        t          j        gt          dd          gt          dz            } t          |           t          t                    t          z  k    sJ d S r  )rJ   r   r  r   r  rj   r<   )r\  s    r   test_J14rN    sQ    qvqv1a	1a400Aq>>T!WWQY&&&&&&r   c                       t          d          )NzcF((n+2)/2,-(n-2)/2,R(3,2),sin(z)**2) == sin(n*z)/(n*sin(z)*cos(z)); F(.) is hypergeometric functionr#  r   r   r   test_J15rP    s    
  D  E  E  Er   c                       t          d          )Nz&diff(zeta(x), x) @ x=0 == -log(2*pi)/2r#  r   r   r   test_J16rR    r<  r   c            
         t          t          t          dz   dz            t          t          dz
  dz            z  t	          t                    t          t          t          dz
            t                    z  z
  t          ddf          dt          t          dd                    z  t          t          t	          t                    t                    t          d          z   k    sJ d S )Nr   r   r   r   r   r   )	r   r   r   rE   r   r   r   r   r	   r   r   r   test_J17rT    s   QAqy\\*a!eQY"7"77!A$$tJqSTuDUDUWX?Y?Y:YY\]_`bc[deeijklmnoprsmtmtkukuiux|  ~H  IJ  KL  IM  IM  OP  ~Q  ~Q  ST  VW  yX  yX  jX  X  X  X  X  X  Xr   c                       t          d          )Nz define an antisymmetric functionr#  r   r   r   test_J18rV    s    
@
A
AAr   c                  $   t          dd          \  } }t          | t          |z  z             t          |           t          |           z   k    sJ t          | t          |z  z             t          |           t          |          z   k    sJ d S )Nzz1, z2Tr  )r    r+   r   r*   )z1z2s     r   test_K1rZ    s    Xt,,,FBb1R4i==RVVGbff,,,,,b1R4i==BrFFRVVO++++++r   c            
          t          dt          d          z
  t          t          dt          d          z  dz
            z  z             dk    sJ d S )Nr   r   r   r  r   )absr8   r   r   r   r   test_K2r]    sK    q477{QtAd1ggIN333344999999r   c                      t          dd          \  } }t          t          d| t          | z  z   t          |z  z   z                      dt	          | dz  t          | z  |z   dz  z             z  k    sJ d S )Nza, bTrealr   r   )r    ro   r\  r   r8   r  bs     r   test_K3rc     sv    6%%%DAqC1qs7QqS=)**++qadacAg\6I1J1J/JJJJJJJr   c            	          t          ddt          z  z                                 d          t          d          t          t          t	          dd                    z  z   k    sJ d S )Nr   r   Tr  r   )r/   r   r   r=   r   r   r   r   test_K4re  &  sU    q1Q3w<<t,,A4!Q==0HHHHHHHr   c                     t          dd          \  } }t          | t          |z  z                                 d          t	          d| z            t          d| z            t          d|z            z   z  t          t          d|z            z  t          d| z            t          d|z            z   z  z   k    sJ d S )Nzx, yTr_  r  r   )r    rC   r   r   rB   r>   r1   r2   r   r  s     r   test_K5rh  *  s    6%%%DAqq1Q3w<<t,,QqS3qs88QqS		< 2tAaCyy[#ac((T!A#YY"6728 9 9 9 9 9 9r   c                     t          t          t          z  t          t                    dz  z            t          t                    t          t                    z  z  t          t          t          z            t          t                    z  k    sJ t          t          t          z  t          t                    dz  z            t          t                    t          t                    z  z  t          t                    k    sJ d S r0  )r8   r   r  r\  r  r   r   r   test_K6rj  0  s    !CFFAIQA/4!99T!WW3DDDDD!CFFAIQA/477::::::r   c                  $   t          ddd          } t          t          | z  t          t                    dz  z            t          t                    t          t                    z  z  }t          |          }|t          |           k    sJ d S )Nr  TF)r`  rK  r   )r    r8   r   r\  r  ro   )r  r  sexprs      r   test_K7rm  5  sr    $///A!CFFAIQA/DTNNEDGGr   c                  ,   t          dd          } t          t          d| z            dt          |           z  z
            dk    sJ t          ddd          } t          t          d| z            dt          |           z  z
            dk    sJ d S )Nr  Tr  r   r   F)r  rK  r    ro   r8   r  s    r   test_K8rq  <  s    T"""AD1II$q''	)**a////TE222AD1II$q''	)**a//////r   c                      t          dd          } t          t          d| z            dt          |           z  z
            dk    sJ d S )Nr  Tr  r   r   ro  rp  s    r   test_K9rt  C  L    d###AD1II$q''	)**a//////r   c                      t          dd          } t          t          d| z            dt          |           z  z             dk    sJ d S )Nr  T)rK  r   r   ro  rp  s    r   test_K10rw  H  ru  r   c                  X    t          d          dt          dd          z  z
  dk    sJ d S )Ni  i;r   r   r   r8   r   r   r   r   test_L1rz  Q  s1    991a((A------r   c                  X    t          d          dt          dd          z  z
  dk    sJ d S )Nri  l   ^|E!or   r   r   ry  r   r   r   test_L2r|  U  s1    <<9qAww..!333333r   c            
          t          dt          dd          z  dt          dd          z  z   dz  ddt          dd          z  dt          dd          z  z   z  z
  dz
            dk    sJ d S )Nr   r   r   r   r   r   )ro   r   r   r   r   test_L3r~  Y  sq    Q!QZ!Qq!WW*,q01a1aj1a1gg:6M3NNQRRSSWXXXXXXXr   c                      t          t          t                    dz  t          t                    t          t                    dz  z  z   t          t                    z
            dk    sJ d S r>  )rq   r>   r   rB   r   r   r   test_L4r  ]  sP    CFFAIAs1vvqy 003q669::a??????r   c                      t          t          t          dd          t          z  t          dz  z                       t          t          t                              z
  dk    sJ d S )Nr   r   r   r   )r/   rC   r   r   r   r0   r   r   r   test_L5r  a  sO    s1Q7719r!t#$$%%c!ff5::::::r   c                     t          t          t          dz  t          dz  z                       t	          t          t                              z
                      t                                        t          di          dk    sJ d S )Nr   r   r   )r/   rC   r   r   r0   r   subsr   r   r   test_L6r  f  sd    AaC"Q$J  5Q==066q99>>1vFF!KKKKKKr   c                      t          t          dt          t                    z  dz   t          dt          z  dt          t                    z  z   dz             z                      dk    sJ d S )Nr   r   r   r   )ro   r/   r8   r   r   r   r   test_L7r  j  s[    C477QacAd1ggIo.A)B)BCDDEEJJJJJJr   c            	      ~   t          dt          z  dt          t                    z  z   dz   t          t                    dt          t                    z  dz   z  z  dt          t                    z  dz   ddt          t                    z  dz   z  z  z  dt          t                    z  z
  dz
            dk    sJ d S )Nr   r   r   r   )ro   r   r8   r   r   r   test_L8r  o  s    QqS1T!WW9_q(DGGQtAwwY],CD
DGG)a-1aQi!m,	-.01$q''	:<=> ? ?BCD D D D D Dr   c                     t          dd          } t          dd| z
  z  t          |           z  t          |           z  t	          | t
          z  dz            z  t
          dz  t          d| z
            z  z
            dk    sJ d S )Nr  Tr  r   r   r   )r    ro   rH   ry   r>   r   rp  s    r   test_L9r  u  s}    T"""AAAJuQxx'Q/AbDF;b!eDQKK>OOPPTUUUUUUUr   c                      t          t          d          dz  t          dd          z   t          t          dz  dz   d          k    sJ d S rQ  )r   r   r   r   r   test_M1r  }  sE    Aq>>!hq!nn,1q!0D0DDDDDDDr   c                      t          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  t                    } t          d | D                       sJ d S )Nr   r  r   !   r   c              3   L   K   | ]}|                     d           j        V   dS )Tr  N)r   is_real)r[  r  s     r   	<genexpr>ztest_M2.<locals>.<genexpr>  s3      ;;!qxxx%%-;;;;;;r   )r   r   all)sols    r   test_M2r    s_     1QT6Bq!tG#bd*R/
3
3C;;s;;;;;;;;;;r   c                     t          t          dz  dt          dz  z  z
  dt          dz  z  z
  dt          dz  z  z   dt          z  z
  dz
  t                    t          d	t          d          z   d	t          d          z
  t          d          
 d
z
  t          t          d          z  dz  z   t          d          
 d
z
  t          t          d          z  dz  z
  t          d           d
z
  t          t          d          z  dz  z   t          d           d
z
  t          t          d          z  dz  z
            k    sJ d S )Nr   r   r   r      r   $   r   gr(?gr(?g<n=e?)r   r   re   r8   r   r   r   r   test_M5r    s[   AqD1QT6MAadF*R1W4r!t;b@!DD	RZ]abc]d]dRdfnquvwqxqxfx{  AB  |C  |C  {C  FP  {P  ST  UY  Z[  U\  U\  S\  ]e  Se  {e  hl  mn  ho  ho  go  r|  g|  @  AE  FG  AH  AH  H  IQ  Q  gQ  TX  YZ  T[  T[  S[  ^h  Sh  kl  mq  rs  mt  mt  kt  u}  k}  S}  @D  EF  @G  @G  G  JT  T  WX  Y]  ^_  Y`  Y`  W`  ai  Wi  i  Ij  Ij  j  j  j  j  j  jr   c                      t          t          t          dz  dz
  t                              d t          dd          D             k    sJ d S )Nr   r   c                     h | ][}t          |t          z  t          d d          z            t          t	          |t          z  t          d d          z            z  z   \S )r   r   )r>   r   r   r   rB   )r[  r   s     r   	<setcomp>ztest_M6.<locals>.<setcomp>  sR    FFFQQrT!Aq''\		Qs1R4!Q<000	0FFFr   r   )setr   r   r   r   r   r   test_M6r    s\    x1q!$$%%FF%1++FFFG G G G G Gr   c                     t          t          t          dz  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   d	t          d
z  z  z
  dt          dz  z  z   dt          z  z
  dz   t                              dt          d          t          z  t          t          ddt          d
          z  z              d
z             z  dz  z
  dt          d          t          dt          t          d
dt          d
          z  z             z  z             z  dz  z
  dt          d          t          z  t          t          ddt          d
          z  z             d
z             z  dz  z
  dt          d          t          dt          t          d
dt          d
          z  z             z  z
            z  dz  z
  dt          d          t          z  t          t          ddt          d
          z  z             d
z             z  dz  z   dt          d          t          dt          t          d
dt          d
          z  z             z  z
            z  dz  z   dt          d          t          dt          t          d
dt          d
          z  z             z  z             z  dz  z   dt          d          t          z  t          t          ddt          d
          z  z              d
z             z  dz  z   hk    sJ d S )Nr   r   r  r   \   r      r      r      r      r  r   r  )r  rr   r   r8   r   r   r   r   test_M7r    s   uQTAadF]R1W,r!Q$w6QTAC1HLAqDq5 " " # #	DGGAIdDaQi00014555a77	DGGDaQ477] 3 333444Q66	DGGAId4QtAwwY//!3444Q66	DGGDaQ477] 3 333444Q66	DGGAId4QtAwwY//!3444Q66	DGGDaQ477] 3 333444Q66	DGGDaQ477] 3 333444Q66	DGGAIdDaQi00014555a77	'


 

 

 

 

 

r   c                     t          d          } t          dd          }t          t          d| z            dt          |           z  z   dz   |z
  | t          j                  t          t          d|z   dt          |          z  z
            dz  t          d|z   dt          |          z  z             dz            k    sJ d S )Nr   r  Tr  r   r   )	r   r    r   r.   r   Realsre   r/   r8   )r   r  s     r   test_M8r    s    sAT"""AC!HHqQx'!+a/AG<<#a!eaQi'((*CA$q''	0A,B,B1,DEEF F F F F Fr   c                       t          d          )Nz6solveset(exp(2-x**2)-exp(-x),x) has complex solutions.r#  r   r   r   test_M9r    s     V
W
WWr   c                      t          t          t                    t          z
  t                    t          d           gk    sJ d S )Nr3  )rr   r.   r   r-   r   r   r   test_M10r    s7    Q!QXb\\M?222222r   c                      t          t          t          z  t          z
  t                    t          dd          k    sJ d S r  )r   r   re   r   r   r   test_M11r    s5    AqD1Ha  Ib!$4$4444444r   c                  6   t          t          dz   t          t                    dz  dz   dz  z  t          dt          z            dz  z  t                    dt          dz  t          dz  t
           t          dt          d          z             z  t
          t          dt          d          z             z  t          t
          t          dt          d          z             z  z
  t          t
          t          dt          d          z             z  z   gk    sJ d S )Nr   r   r   r3  r   )rr   r   rB   r>   r   r   r/   r8   r   r   r   test_M12r    s     !a%#a&&!)a-!++C!HHaK7;;
BqD"Q$3s1tAww;aAQK(8(8&8
Qs1tAww;aAQK(8(8&8!8@      r   c                  6   t          d          } t          t          t                    t	          t                    z
  t                    t          t          | | t          z  t          t          dd          z  z
            t          j
                  k    sJ d S )Nr   r   r   )r   r   rB   r   r>   rd   r   r   r   r   Integersr  s    r   test_M13r    sl    c

AQ#a&&!,,1R4"QqRSWW*CT9U9UWXWa0b0bbbbbbbr   c            	          t          d          } t          t          t                    dz
  t                    t	          t          | | t          z  t          dz  z             t          j                  k    sJ d S )Nr   r   r   )	r   r   rC   r   rd   r   r   r   r  r  s    r   test_M14r    sZ    c

AQ!Q''8F1adRTk4J4JAJ+W+WWWWWWWr   c                     t          d          } t          t          t                    t          j        z
            t          fdt          t          t          | d| z  t          z  t          dz  z             t          j                  t          t          | d| z  t          z  t          t          dd          z  z             t          j                            t          t          t          | d| z  t          z  t          t          dd          z  z             t          j                  t          t          | d| z  t          z  t          dz  z             t          j                            fD                       sJ d S )Nr   c              3   B   K   | ]}                     |          V  d S r   )dummy_eq)r[  r   gots     r   r  ztest_M15.<locals>.<genexpr>  s=       : :1s||A : : : : : :r   r   r   r   )r   r   rB   r   r   r  anyrh   rd   r   r   r  r   )r   r  s    @r   test_M15r    sC   c

A
3q66AF?
#
#C : : : :hva1R"Q$//<<1Q3r6BqAwwJ.//<<	> 	>hva1R"Qq!WW*!455qzBB1Q3r6BqD=))1:66	8 	8)9 : : : : : : : : : :r   c                     t          d          } t          t          t                    t	          t                    z
  t                    t          t          | | t          z            t          j	                  k    sJ d S )Nr   )
r   r   rB   r   rC   rd   r   r   r   r  r  s    r   test_M16r    sV    c

ACFFSVVOQ''8F1adOOQZ+P+PPPPPPPr   c                      t          t          t                    t          t                    z
  t                    t	          d          k    sJ d S r  )r   r<   r   r=   re   r   r   r   test_M17r    s:    a477*A..)A,,>>>>>>r   c                      t          t          t                    t          t                    z
  t                    t	          t          t          d          dz
  dz                      k    sJ d S )Nr   r   r   )r   r:   r   r=   re   r8   r   r   r   test_M18r    sR    a477*A..)D$q''A+q<Q<Q2R2RRRRRRRr   c                      t          t          dz
  t          t          dd          z  z  t                    dgk    sJ d S Nr   r   r   )rr   r   r   r   r   r   test_M19r    s:    !a%AaGG#Q''A3......r   c                      t          t          t          dz  dz             t          z
  dz   t                    t          k    sJ d S rQ  )r   r8   r   EmptySetr   r   r   test_M20r    s;    DANNQ&*A..(::::::r   c                      t          t          t          t                    z   dz
            t          d          k    sJ d S rQ  )r   r   r8   re   r   r   r   test_M21r    s5    AQK!O$$	!444444r   c            	          t          dt          t                    z  dt          t          dd          z  z  z   dz
            t	          t          dd                    k    sJ d S )Nr   r   r   r   r   )r   r8   r   r   re   r   r   r   test_M22r    sU    Ad1ggI!Qq!WW*,q011YqBxx5H5HHHHHHHr   c            	      J   t          dd          } t          | dt          d| dz  z             z  z
            t           t          t          j        t          d          dz  z             z  t          t          dd          t          d          dz  z             gk    sJ d S )Nr   Tr  r   r   r   r3  )r    rr   r8   r   r   r  r   rt  s    r   test_M23r    s    T"""AQtA1H~~%%&&	
4a"###T(2q//DGGAI*E%F%F+H H H H H H Hr   c                     t          dt          t          d          dt          z  z  z
  t                    } t	          dt          t          dz
  z  z  d          }| d                                         |                                k    sJ d S Nr   r   r   )rr   r"   r   r   r/   r   )solutionr  s     r   test_M24r    sq    Q!Q1,,a00HAq1uI""FA;6==??222222r   c                  4   t          dd          \  } }}}t          d          }t          | ||z  z  |||z  z  z
  |          d                                         t          || z            t          ||z            z                                  k    sJ d S )Nz:dTrs  r   r   )r    rr   r   r/   )r  rb  cdr   s        r   test_M25r    s    ---JAq!QA1a4!AqD&!$$Q'..00S1XXc!A#hh5F4N4N4P4PPPPPPPr   c                      t          t          t          t                              t          t          t                              z
            dt	          d          gk    sJ d S )Nr   r   )rr   r8   r/   r   r.   r   r   r   test_M26r    sH    c!ffDGG,--!SVV<<<<<<r   c                  v   t          dd          } t          dd          }t          t          t          t	          | t          dd          z  |z
                      dz
            dz   |           |t          t          t          d          dz                       z   t          dd          z  gk    sJ d S )	Nr   Tr_  rb  r   r   r   r
  )	r    rr   r/   r:   r<   r   rB   r>   r.   )r   rb  s     r   test_M27r     s    $A$A T$q!Aq''zA~..//!344q8! 
 
3s3r77Q;''(((1Q77234 4 4 4 4 4r   c                      t          dt          z  t          t          dz
  dz            z   dt          dz  z  z
  t          t          j        t                              g dk    sJ d S )Nr   r   r   r   )assume)gOqg0eg?)r   r   r.   r   r`  r   r   r   test_M28r  *  s[    1sAE19~~-!Q$6!&))LLLPpPpPpppppppr   c                      t          d          } t          t          | dz
            dz
  t          j                  t          dd          k    sJ d S )Nr   r   r   domainr3  r   )r    r   r\  r   r  re   rt  s    r   test_M29r  /  sK    ACAJJN17333yQ7G7GGGGGGGr   c                      t          t          dt          z  dz             t          t          dz
            z
  t                    t          dd          k    sJ d S )Nr   r   r3  )r   r\  r   re   r   r   r   test_M30r  4  sL     QqS1WAE

2A66)B:K:KKKKKKKr   c                      t          dt          t                    z
  t          t           dz
  t          dz
            z
  t                    t	          t          dd          t          dd                    k    sJ d S )Nr   r   r  r   )r   r\  r   r6   re   r   r   r   r   test_M31r  ;  sh     SVVc1"q&!a%&8&88!<<	!BPQ((TUVWYZT[T[@\@\\\\\\\r   c                      t          t          dt          dz  z
  t                    t          t           t          dz  dz            z
  t                    t          dd          k    sJ d S )Nr   r   r   r3  r   r6   r   re   r   r   r   test_M32r  B  s[     QAXq))3rAqD!8+<+<<a@@IbRSDTDTTTTTTTr   c                      t          t          dt          dz  z
  t                    t          dz  dz  z
  t                    t          ddd          k    sJ d S )Nr   r   r   r  g,r  r   r   r   test_M33r  I  sQ     QAXq))AqDF2A66)B	ST:U:UUUUUUUr   c                      t          dd          } t          dt          z   | z  dt          z
  t          |           z  z   dt          z  z   |           t	          ddt          z  z             k    sJ d S )Nr  Tr  r   r   r   )r    r   r   r)   re   rp  s    r   test_M34r  R  so    T"""AQUaK1q5IaLL"881Q3>BBiPQTUVWTWPWFXFXXXXXXXr   c                      t          dd          \  } }t          d| z  d|z  z
  t          |z  z
  dt          z  z                                   ||           t	          d          k    sJ d S )Nx yTr_  r   r   )r   r   )r    r   r   as_real_imagre   rg  s     r   test_M35r  X  sl    5t$$$DAqQqS1Q3Y1_qs*88::AqAAYvEVEVVVVVVVr   c                      t          t          t                    dz  t          t                    z   dz
  t          t                              t          dd          k    sJ d S )Nr   r
  r   )r   r   r   re   r   r   r   test_M36r  ]  sN     AaDD!GaddNQ&!--2q1A1AAAAAAAr   c                  8   t          t          t          z   t          z   dz
  dt          z  t          z   dt          z  z   dz
  t          dt          z  z   t          z   dz
  gt          t          t                    t	          t           dz   dt          f          k    sJ d S )Nr   r   r   r   r   )r   r   r  r  re   r   r   r   test_M37r  d  s    QUQY]AaC!GacMB$6AaC!b8HJAqRSTTA261a.!!" " " " " "r   c            1         t          d          \  } }}t          | ||gt                                                    }t	          d|          }|j        \1  }}}}}	}
}}}}}}}}}}}}}}}}}}}}}} }!}"}#}$}%}&}'}(})}*}+},}-}.}/}0}1}2}3}4}5g | |z  | z  ||z  | z  z   | |z  | z  ||z  | z  z   | |z  | z  ||z  | z  z   |z   | ||z  | z  z
  ||z  | z  z   | |z  | z  ||z  | z  z   | |z  | z  ||z  | z  z   | |z  | z  ||z  | z  z   |z
  | |z  | z  ||z  | z  z   | |z  | z  ||z  | z  z   |z   | |z  | z  ||z  | z  z   ||z  | z  z
  ||z  | z  z   ||	z  | z  z   ||	z  | z  z
  ||0z  | z  ||0z  | z  z
  | |1z  | z  ||1z  | z  z   | |z  | z  ||z  | z  z   | |0z  | z  ||0z  | z  z   ||2z  | z  ||2z  | z  z
  |dz  |3z  | dz  z  d|z  |z  |3z  | dz  z  z
  |dz  |3z  | dz  z  z   || | |z  | z  ||z  | z  z   | |
z  |z  z
  ||
z  |z  z   | |z  | z  ||z  | z  z   | |z  |z  z   ||z  |z  z
  ||1z  | z  ||1z  | z  z
  | |2z  | z  ||2z  | z  z   |4 ||4z  | z  z   ||4z  |z  z   |dz  |4z  | |z  z  z
  |5 ||5z  | z  z   ||5z  |z  z   |dz  |5z  | |z  z  z
  | |z  |z  ||z  |z  z
  | |z  |z  ||z  |z  z
  | |z  |z  ||z  |z  z
  |z   | | |z  |z  z   ||z  |z  z
  | |z  |z  ||z  |z  z
  | |||z  | z  ||z  | z  z
  | |
z  |z  z   ||
z  |z  z
  | |z  |z  ||z  |z  z
  || |z  |z  z   ||z  |z  z
  | | |z  |z  z   ||z  |z  z
  | |z  |z  ||z  |z  z
  |  |z  |z  ||z  |z  z   | |z  |z  z   ||z  |z  z
  | |	z  |z  z   ||	z  |z  z
  |  |0z  |z  ||0z  |z  z   | |1z  |z  ||1z  |z  z
  | |z  |z  ||z  |z  z
  | |z  |z  z   ||z  |z  z
  | |0z  |z  ||0z  |z  z
  |  |2z  |z  ||2z  |z  z   |3 ||3z  | z  z   ||3z  |z  z   |dz  |3z  | |z  z  z
  | |z  |z  ||z  |z  z
  |  |1z  |z  ||1z  |z  z   | |2z  |z  ||2z  |z  z
  | dz  |4z  |dz  z  d| z  |z  |4z  |dz  z  z
  |dz  |4z  |dz  z  z   |5 | |5z  |z  z   | |5z  |z  z   | dz  |5z  ||z  z  z
  || |  |z  |z  ||z  |z  z   | | |z  |z  z
  ||z  |z  z   |  |z  |z  ||z  |z  z   || |z  |z  z
  ||z  |z  z   ||z  | z  ||z  | z  z
  | |z  |z  z
  ||z  |z  z   |  |
z  |z  ||
z  |z  z   |  |z  |z  ||z  |z  z   |  |z  |z  ||z  |z  z   |z   |  |z  |z  ||z  |z  z   |z
  |  |z  |z  ||z  |z  z   |  |z  |z  ||z  |z  z   | |z  |z  z
  ||z  |z  z   |  |z  |z  ||z  |z  z   | |z  |z  z   ||z  |z  z
  | |	z  |z  z
  ||	z  |z  z   | |0z  |z  ||0z  |z  z
  |  |1z  |z  ||1z  |z  z   |  |0z  |z  ||0z  |z  z   | |2z  |z  ||2z  |z  z
  |3 ||3z  | z  z   ||3z  |z  z   |dz  |3z  | |z  z  z
  |  |z  |z  ||z  |z  z   | |1z  |z  ||1z  |z  z
  |  |2z  |z  ||2z  |z  z   |4 | |4z  |z  z   | |4z  |z  z   | dz  |4z  ||z  z  z
  | dz  |5z  |dz  z  d| z  |z  |5z  |dz  z  z
  |dz  |5z  |dz  z  z   ||| ||z
  | || |! ||$z
  | |z   |#z
  | |"z
  |' |0|1 |(||z
  |+z   | |*z   ||)z   ||z  | z  ||z  | z  z
  |&z
  |.z   d|0z  |1|2||3z  | z  ||3z  | z  z
  |-|0|2 | |3z  | z  ||3z  | z  z   ||z   | |z
  |  |z  |z  ||z  |z  z   |%z
  |1|2 |  |4z  |z  ||4z  |z  z   | | z  |z  || z  |z  z
  |,z   |1 |2| |4z  |z  ||4z  |z  z
  | |5z  |z  ||5z  |z  z
  |  |5z  |z  ||5z  |z  z   | | | |||z
  |||||z
  ||"z   ||z   |#z
  | |0 |1|" |
z
  ||$z   |||%z  | z  z   ||%z  | z  z
  |0|2 | |3z  | z  ||3z  | z  z   |( |#|+z
  |	z
  |$ |*z
  ||)z
  || |&z  |z  z
  ||&z  |z  z   |.z
  |0d|1z  |2| |4z  |z  ||4z  |z  z
  | |'z  |z  ||'z  |z  z
  |-z
  |0 |2||3z  | z  ||3z  | z  z
  |  |5z  |z  ||5z  |z  z   |, |1|2 |  |4z  |z  ||4z  |z  z   | |5z  |z  ||5z  |z  z
  |||| | | |z   | |)|z   | |*z
  | | |)z
  | |
z   | |z
  |+z   |  ||,z  | z  z   ||,z  | z  z
  |0|1 | |0 |2||3z  | z  ||3z  | z  z
  |!|$|*z   |#|+z
  |	z   | |"z   |'| |-z  |z  z
  ||-z  |z  z   |0 |1| |&z   | |.z  |z  z   ||.z  |z  z
  |0|1d|2z  | |3z  | z  ||3z  | z  z   |  |4z  |z  ||4z  |z  z   | |5z  |z  ||5z  |z  z
  |%|1 |2| |4z  |z  ||4z  |z  z
  |  |5z  |z  ||5z  |z  z   }6i |5d|4d|3d|2d|1d|0d|-d|,d|*d|)d|(d|'d|%d|$d|"d|!d| di |d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|
d|	d|d|d|d|d|&||z  |.z  |#|+|| |z  |.z  ||+i}7t          |6|          |7k    sJ d S )Nza, b, czk1:50r   r
  r   )r    r   rY   	to_domainr   gensr   )8r  rb  r  r  ringk1k2k3k4k5k6k7k8k9k10k11k12k13k14k15k16k17k18k19k20k21k22k23k24k25k26k27k28k29k30k31k32k33k34k35k36k37k38k39k40k41k42k43k44k45k46k47k48k49systemr  s8                                                           r   test_M38r+  i  s   i  GAq!1ay"%%//11FGV$$D
 489	1RRRRRc3S#sCc3S#sCc3S#sCc3S#sC(
	
2a!B$q&(
"S&(QsU1W,(
/0bfQh3q.@2.E(
HJsQrTRSV|VWXZVZ[\V\G\(
	
3q1S57(
BsF1HquQw.(
123q1S570BR0G(
JKCPQTUVYTYZ[T[I[(
 
3q1S57R(
 #$CAcE!G!3aeAg!=#a!G!B$q&!PSTUWSWXYSY!Y(
 	
#a!C%'	(
 2c6!8aeAg-	(
 12r#vax!C%'/A	(
 EF2c6!8aPSeTUgCU	(

 	
#a!C%'(

 a48AqD=1Q3q59QT>9AqDHQTMI(

 LN(

 QSs(
 
3q1S57QrT!V#ad1f,(
 01bfQh3q.@1R46.IAbDQRF.R(
 	
#a!C%'(
 2c6!8aeAg-(
 14taeAg~#a/G!Q$s(TUVWTW./X(
 
quQw3q 1a48QqS>1(
 45R46AbDF?(
 EFbDFQrTRSVO(
 	
"Q2a"(
  #dQrT!Vmad1f4(
 78d1fqtAvo(
 IKs(
 MP(
 	
#a!C%'AbDF"QrT!V+(
 ./sU1WquQw->(
 ADaeAgPQRUPUVWPW@W(
 
quQw3q (
 #$C%'AcE!G"3(
 78RVAX#a5G!C%PQ'5QTUVYTYZ[T[5[^_`b^bcd^d5dghikgklmgm5m(
 
3q1S57(
 cE!GaeAg-(
 01uQw3q/@1S57/JQsUSTW/T(
 	
#a!C%'(
 2c6!8aeAg-(
 14taeAg~#a/G!Q$s(TUVWTW./X(
 	
#a!C%'(
 2c6!8aeAg-(
 01uQw3q/@(
 CDQ$s(1a4-RSTURUVWRWX[R[\]_`\`R`B`cdfgcghkcklmoplpcpBp(
 
quQw3q 1a48QqS>1(
 47(
 :=(
 @AbeAg"Q>N(
  
qtAv"Q!(
  "#2a!B$q& 0!(
  36"Q,2a2G!(
  JK3qSTUXSXYZSZIZ]^_a]abc]cIcfghjfjklflIl!(
" 
2a!B$q&#(
" "R%'AbDF*#(
" ./BsF1HquQw,>,D#(
" HIbfQhQRSVQVWXQXFX[^F^#(
$ 
2a!B$q&%(
$ "S&(QsU1W,quQw63q@%(
$ DE"S&(QsUSTWBTWXY\W\]^W^B^abcfafghahBhklmokopqkqBqtuvxtxyztzBz%(
& 	
#a!C%''(
& 2c6!8aeAg-'(
& 12r#vax!C%'/A'(
& DES57QsUSTWCT'(
( 
quQw3q 1a48QqS>1)(
( 562c6!8aeAg3E)(
( HIuQwQRSVQVWXQXGX)(
* 
3q1S57+(
* !D1S57NQsU1W4q!tCx1~E+(
, 	
1SA!Ac	!Q$&Ac!Q$6-(
, 9;-(
, =@-(
, CF-(
, HKSy-(
. 
/(
. /(
. $/(
. /(
. "Ci/(
. +.c)9/(
. =@4#:/(
. ILt/(
. NQ/(
0 
1(
0 1(
0 9s?1(
0 &)D3J1(
0 14c	1(
0 <=S57QsU1W;Ls;RUX;X1(
2 	33(
2 3(
2 3(
2 C%'AcE!G+3(
2 .13(
2 363(
2 9<t3(
2 ?@RVAX#a=O3(
4 	c	5(
4 4#:5(
4 !"r#vax!C%'1C75(
4 :=5(
4 @Cd5(
4 FGBsF1HqQTuUVwDV5(
6 	
#a!C%'C7(
6 #&7(
6 (+7(
6 -.cE!GaeAg,=7(
6 @AuQw3q?P7(
8 
3q1S579(
8  C9(
8 #%9(
8 (*c9(
8 ,/9(
8 14b9(
8 ;>9(
8 @C9(
8 EH9(
8 JMr9(
: 	c	;(
: 9s?;(
: %(;(
: +.;(
: 03;(
: 69D2I;(
: @CSy;(
: KNPQRUPUVWPW-Z[\_Z_`aZaJa;(
< 	=(
< T=(
< 2c6!8aeAg%=(
< ),t=(
< .13Y^=(
< ?BTCZ=(
< JMs=(
> 	aeAg#a#%?(
> (+?(
> -/sF?(
> 58?(
> :;3q1S579J?(
@ 	
#a!C%'CA(
@ #&A(
@ (+A(
@ -.cE!GaeAg,=A(
@ ABr#vax!C%PQ'?QA(
B 
C(
B C(
B 4C(
B CAcE!G+C(
B ./sU1WquQw->C(
B ACC(
B EGC(
B IKC(
B NPCC(
D 
E(
D dRiE(
D E(
D "BhE(
D *-s
E(
D 69DE(
D <?$*E(
D HKdRiE(
F 
s
SG(
F $3q.1S572G(
F 58G(
F ;>G(
F ADtG(
F GJTG(
F LOG(
H 	
#a!C%'I(
H I(
H !$c	I(
H ,/9r>I(
H =@4#:I(
H HKQsUSTW}WXY\W\]^W^G^I(
J 
K(
J K(
J 4#:#a'!C%'1K(
J 47K(
J 9<K(
J >@VK(
J GHRVAXPQRUPUVWPWEWK(
L 
3q1S57M(
L cE!GaeAg-M(
L 03M(
L 69DM(
L ;>M(
L @AuQw3q?PM(
N 
3q1S57O(
FRQQQ #Q(+Q03Q8;Q@CQQQQ #Q(+Q03Q8;Q@CQ 	Q  Q Q !$Q ),Q 14Q 9<Q ADQ 	Q	 Q	 Q	 !$Q	 ),Q	 14Q	 9<Q	 ADQ	
 	Q
 Q 
 QQQQQQ
QQQqSWc3QqSWc3 H &&(222222r   c                  F   t          dd          \  } }}t          | dz  |z  d|z  |z  z   dz
  d| dz  z  |z  d|dz  z  z   dz   d|z  |dz  z  |dz  z
  dz
  g          |d|d| d	i|d|d| di|t          d          t          z  |t	          dd          t          d          t          z  dz  z
  | t          d	t          d          t          z  z
             i|t          d          t          z  |t	          dd          t          d          t          z  dz  z
  | t          d	t          d          t          z  z
            i|t          d           t          z  |t	          dd          t          d          t          z  dz  z   | t          d	t          d          t          z  z              i|t          d           t          z  |t	          dd          t          d          t          z  dz  z   | t          d	t          d          t          z  z             igk    sJ d S )
Nr   Tr  r   r   r   r  r   r3  )r    rr   r8   r   r   r   r  r  s      r   test_M39r.    s   gt,,,GAq! !Q$q&1Q3q5.1$bAgai!AqD&&81&<ac!Q$hAoPQ>QSTTAq!R 1aAq!"4aAq1vvQ	!3Qb47719n9M9M8MNaAq1vvQ	!3QR$q''!)^8L8LM$q''!Q!Aa1 4a$rDGGAI~:N:N9NO$q''!Q!Aa1 4ab47719n9M9MN	PP P P P P Pr   c                  d    t          t          t          z  t          t          z  k              sJ d S r   )r   r   r   r   r   r   test_N1r0    s(    q"ur1u}r   c                      t          dd          } t          | dz  | z
  dz   dk              du sJ t          | dz  | z
  dz   dk              du sJ d S )Nr   Tr_  r   r   r   Fr    r   rt  s    r   test_N2r3    sn    $Aq!tax!|a  D((((q!tax!|a  E))))))r   c            	          t          dd          } t          t          t          d|           t          | d                    t	          |           dk               sJ d S )Nr   Tr_  r3  r   )r    r   rO   r   r\  rt  s    r   test_N3r5    sT    $As2b!99bAhh''Q!5555555r   c                      t          dd          \  } }t          d| dz  z  d|dz  z  k    | |k    |dk    z            du sJ d S )Nr  Tr_  r   r   r2  rg  s     r   test_N4r7    sZ    5t$$$DAqqAv!Q$Q1q5 122d::::::r   c                      t          dd          \  } }}t          || dz  z  ||dz  z  k    | |k    |dk    z  |dk    z            du sJ d S )Nzx y kTr_  r   r   r2  )r   r  r   s      r   test_N5r9    se    gD)))GAq!qAv!Q$Q1q5 1QU ;<<DDDDDDr   c                      t          dd          \  } }}}t          || |z  z  |||z  z  k    | |k    |dk    z  |dk    z  |dk    z            du sJ d S )Nzx y k nTr_  r   r2  )r   r  r   r   s       r   test_N6r;    sr     ...JAq!QqAv!Q$Q1q5 1QU ;q1u EFF$NNNNNNr   c                  z    t          dd          \  } }t          |dk    | dk    || dz
  k    z            du sJ d S )Nr  Tr_  r   r   r2  rg  s     r   test_N7r=    sN    5t$$$DAqq1uq1ua!e,--555555r   c                      t          dd          \  } }}t          t          | |          t          ||          z  | |k    ||k    z  || k    z            sJ d S )Nr   Tr_  )r    r   r   r-  s      r   test_N8r?    sr     gD)))GAq!r!Qxx"Q(("Q16"a1f-/ / / / / / /r   c            	          t          d          } t          t          | dz
            dk    t          j                  t          t          t           ddd          t          dt          d                    k    sJ d S )	Nr   r   r   r  r3  FTr   )r   r   r\  r   r  rh   rg   r   rt  s    r   test_N9rA    s    sACAJJN17333uXrc2uVZ=[=[-5aT-B-B8D 8D D D D D D Dr   c                  L   t          d          } | dz
  | dz
  z  | dz
  z  | dz
  z  | dz
  z  }t          t          |          dk     t          j                  t          t          t           dd	d	          t          ddd	d	          t          ddd	d	                    k    sJ d S )
Nr   r   r   r   r   r   r   r  T)r   r   r   r   r  rh   rg   r   )r   r\  s     r   test_N10rC    s    sA	
QQQQ'Q/AF1IIM!'222eHbS!TSW<X<X,4Q4,F,F,4Q4,F,F7H 7H H H H H H Hr   c            	          t          d          } t          d| dz
  z  dk    t          j                  t	          t          t           ddd          t          dt                              k    sJ d S )Nr   r   r   r  Tr   )r   r   r   r  rh   rg   r   rt  s    r   test_N11rE    sg    sAAq1uIN17333uXrc1dTX=Y=Y[cdegi[j[j7k7kkkkkkkr   c                      t          d          } t          t          |           dk     t          j                  t          dddd          k    sJ d S )Nr   r   r  r   r   FT)r   r   r8   r   r  rg   rt  s    r   test_N12rG    sK    sADGGaK000HQ5$4O4OOOOOOOr   c                      t          d          } t          t          |           dk     t          j                  t          j        k    sJ d S )Nr   r   r  )r   r   rB   r   r  rt  s    r   test_N13rI    s?    sACFFQJqw///17::::::r   c            
         t          d          } t          t          |           dk     | t          j                  t          t          t           t          dz  dd          t          t          dz  t          dd                    k    sJ d S )Nr   r   r  r   T)	r   r   rB   r   r  rh   rg   r   r   rt  s    r   test_N14rK    s    sA CFFQJ!'222eHbS"Q$PTVZ<[<[)1"Q$D$)G)G7I 7I I I I I I Ir   c                      t          d          \  } }t          t          d| z  t          |          dz
  z  dz             dk    | t          j                   d S )Nr tr   r   )r    r   r\  r>   r   r  r  ts     r   test_N15rP    sP    5>>DAqS1c!ffqj!A%&&!+Q88888r   c                      t          d          \  } }t          | dz  t          |          dz
  dz  z  t          |          dz  z  dk     | t          j                   d S )NrM  r   r   r   )r    r   r>   rB   r   r  rN  s     r   test_N16rR    sV    5>>DAqadc!ffqj1_%c!ffai/!3Q@@@@@r   c                      t          t          t          z   dk    t          t          z
  dk     ft          t          f          t          t                    t          k     k    sJ d S r  )r   r   r  r\  r   r   r   test_N17rT    sH     QUQYA	*QF33A
CCCCCCr   c                      t          dt          z   ddt          z  f          } t          t          |                     | j                                      t          d          k    sJ d S )Nr   r
  r   r  )r   r   r8   r   dotHMs    r   test_O1rZ    sW    Ar1Q3  AquuQSzz""##tBxx//////r   c                      t          d                              t          d                    t          dgdgdgg          k    sJ d S )N)r   r   r  )r   r   r   r   r  r   )r   crossr   r   r   test_O2r]  $  sj    *##F9$5$566&2$CE$CD#BG ;H ;H H H H H H Hr   c                       t          d          NzfThe vector module has no way of representing
        vectors symbolically (without respect to a basis)r#  r   r   r   test_O3r`  +        = > > >r   c                     ddl m} m}  | d          } |            } |j                    \  }}} |j                    \  }}}	|||z  |	z  z  |||z  |	z  dz  z  z   ||dz  |	dz  z  z  z   }
|                    |
                                          d|dz  z  |dz  z  |	z  d|z  |	dz  z  z   |z  ||z  |z  z   d|z  |dz  z  |	dz  z  ||	z  z
  |z  z   k    sJ d S )Nr   )
CoordSys3DDelr   r   r   r
  )sympy.vectorrc  rd  base_vectorsbase_scalarsr\  r  )rc  rd  r   delopr   r   r   r   r  r  Fs              r   test_O4rj  1  s-   ,,,,,,,,
3ACEEEanGAq!anGAq!	1Q3q5	A!AzN"QA1%66A;;q>>  R1WQT\!^ac!Q$h%>$AAaCE$IQqSQRTUQUXVWYZVZ]]^_`]`M`bcLc$cccccccr   c                       t          d          r_  r#  r   r   r   test_O5rl  :  ra  r   c                     t          g d          t          g d          t          g d          g} t          |           t          dgdgdgg          t          t          dd          gt          d	d          gt          d
d          gg          t          t          dd          gt          dd          gt          dd          gg          gk    sJ d S )N)r   r   r   )r   r   r   )r   r   r   r   r   r   r   r   ?   ii  ia  ii  iY)r   r   r   )Ls    r   test_O10rp  C  s    						F999--viii/@/@AAq>>f c c c&# $ $ % Ryyk Ryyk bzzl&, - - % s||n }}o s||n&. / /0 0 0 0 0 0 0r   c                  ~    t          ddd                               d          t          ddddg          k    sJ d S )Nr   c                     || z
  S r   r   )r   r   s     r   ru  ztest_P1.<locals>.<lambda>T  s
    QU r   r3  r   r   )r   diagonalr   r   r   test_P1rt  S  sX    !Q**++44R88F	1r2h= =      r   c                      t          g dg dg dg          } |                     d           |                     d           | t          ddgddgg          k    sJ d S )N)r   r   r   )r   r   r   )r   r   r   r   r   r   r   )r   row_delcol_delrX  s    r   test_P2rx  X  s    			999iii011AIIaLLLIIaLLLAA  ! ! ! ! ! ! ! !r   c                     t          g dg dg dg dg          } | ddddf         }| d	         }| }| dd
d
df          }| d          }t          ||gg          j        }| |g||ggt          t          fd           t                    }|t          g dg dg dg dg dg dg dg          k    sJ d S )N)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   c                  "    t                     S r   )r   )rowss   r   ru  ztest_P3.<locals>.<lambda>n  s    {400 r   )r   r   r  )irH  r   r  r  )iiir   r   r{  )r   r   r   r  r  r  )r  r   r   r  r  rH  )r   r  r  r  r  )r   rz  r   r{  ir~  )r   r   Tr~   
ValueError)	r  A11A12A21A221A222A22r  r}  s	           @r   test_P3r  `  sF   	 	 	A AaC1H+C
 
!C
Cac1Q3hK<DnD
d|n
%
%
'CT3K#s$D
:0000111tA#########""""""""""""$ % % % % % % % %r   c                       t          d          )Nz*Block matrix diagonalization not supportedr#  r   r   r   test_P4r  z  s    
J
K
KKr   c                  l    t          ddgddgg          } | dz  t          ddgddgg          k    sJ d S )Nr   r   r   r   r   r   r   r   rX  s    r   test_P5r    sf    BA 	 	AEVaVV% & & & & & & & &r   c                     t          t          t                    t          t                    gt          t                     t          t                    gg          } |                     t          d          t          t          t                     t          t                     gt          t                    t          t                     gg          k    sJ d S r0  )r   r>   r   rB   r   rX  s    r   test_P6r    s    QQ a&&#a&&!# 	$ 	$A66!Q<<6SVVGc!ffW#5$'FFSVVG#4#6 7 7 7 7 7 7 7 7r   c            	         t          t          t          gg          t          t          g dg dg          z  t          g dg dg          z   z  } | t          t          t          dz   z  t          dt          z  dz
  z  z   t          dt          z  d	z
  z  t          d
t          z  dz   z  z   t          dt          z  dz   z  t          dt          z  dz
  z  z   gg          k    sJ d S )N)r   r   r   )r   r   r   )r   r   )rG  r   r~  r   r   r   r   r   r   r   r   r   r   r   )r   r   r  r  rX  s    r   test_P7r    s    Ax	&)))))   	 &(5(7 !8 !8	8	9A AEQ!a[0!QqS1W+1Q382LAaC"H1Q3846 7 8 8 8 8 8 8 8 8r   c                      t          ddt          z  gdt          z  dgg          } |                     t          j                  dk    sJ d S )Nr   r
  r  r   )ordr   )r   r   normr   InfinityrX  s    r   test_P8r    sR    BqD	Aq	 	 	A66aj6!!Q&&&&&&r   c            	      |   t          dd          \  } }}t          | ||z  z  d|z  d|z  gd|z  || |z  z  d| z  gd|z  d| z  || |z  z  gg          }t          |                    d                    | dz  |dz  z   |dz  z   t	          |           t	          |          z  t	          |          z  z  k    sJ d S )Na b cT)nonzeror   fror   )r    r   r]   r  r\  r  rb  r  rY  s       r   test_P9r    s    gt,,,GAq!AaC!A#qs#1a1gqs#1ac1ac7#% 	& 	&A !&&--  QTAqD[1a4%7#a&&Q-A:N$OOOOOOOr   c            	          t          dddt          z  z   gt          ddt          z  z
            dgg          } | j        t          dt          ddt          z  z             gddt          z  z   dgg          k    sJ d S )Nr   r   r   r   r   r   )r   r   r   rW  rX  s    r   test_P10r    s    A!G1qs7Q! 	" 	"A 3&1aAaCjj/qs7A,( ) ) ) ) ) ) ) )r   c                  
   t          t          t          gdt          t          z  gg                                          dt          dz  dz
  z  t          t          dgdt          z  t          t          z  gg          z  k    sJ d S Nr   r   r3  )r   r   r  invr   r   r   test_P11r    s     Aq6qs8  !cee1a4!8fq"g?A!tQqSk>K 7L 7L (LL L L L L Lr   c            	      h   t          t          t          gdt          t          z  gg                              d          } t	          t          |                     }t          || |z  d          t          |t          t          t          z  t           gdt          gg          d          k    sJ d S )Nr   ADJF)evaluater3  )r   r   r  r  r^   tuplerR   )rY  r  s     r   test_P11_workaroundr    s     	AAaC!""&&u--AE!HHA!QqS5)))VAv	
1qb	
q	? 8 8#.% .% .% % % % % % %r   c                     t          dt          t                    } t          dt          t                    }t          dt          t                    }t          | |gt          t          t                    |gg          }t	          |j                  t          | j        d| j        z  |z  |j        z  gt          t          t                    |j        gg          k    sJ d S )Nr  r  r  r3  )r   r   r   r   r   r   )r  r  r  r  s       r   test_P12r    s    
ua
#
#C
ua
#
#C
ua
#
#Cc3Z A&&,. 	/ 	/A!#+CEz#~ce7K/L0:1a0@0@#%/H/J #K #K K K K K K Kr   c            	      r   t          dt          dz
  t          dz
  gt          dz
  t          dz  dt          z  z
  dz   t          dz  dt          z  z
  dz
  gt          dz
  t          dz  dz
  dt          dz  z  dt          z  z
  dz   gg          } |                                 \  }}}t          |          t          g dt          dz
  dd	gt          dz
  t          dz
  dgg          k    sJ t          |          t          dt          dz
  t          dz
  gd	d
t          dz
  gd	d	t          dz
  gg          k    sJ d S )Nr   r   r   r   r   r   r  )r   r   r   r   r   r   r   )r   r   LUdecompositionro   )rY  ro  U_s       r   test_P13r    sY   Aq1u=Q1qs
QadQqSj1n=Q1q1a42a4"(<=? 	@ 	@A !!GAq!A;;&"3"3"3#$q5!"3#$q5!a%"3"5 6 6 6 6 6 6 A;;&1a!eQU"3#$!QU"3#$!QU"3"5 6 6 6 6 6 6 6 6r   c                      t          g dg dg dg dg          } |                                 \  }}|t          g dg dg dg dg          k    sJ d S )	N)r   r   r   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   r3  )r   r   r   r   r   )r   r   r   r   r   )r   rref)rY  r   r  s      r   test_P14r    s    ! 	" 	"A 6688DAq))))))))))))+ , , , , , , , ,r   c                  j    t          g dg dg dg          } |                                 dk    sJ d S )N)r3  r   r   r  )r   r
  r   r   )r   r   r  r  r   )r   rankrX  s    r   test_P15r    sE    ! 	" 	"A 6688q======r   c                      t          dt          d          z  dgdt          d          z  dt          d          z  gg          } |                                 dk    sJ d S )Nr   r   r   r  r   r   )r   r8   r  rX  s    r   test_P16r    s[    477A477BtAwwJ') 	* 	*A6688q======r   c            	      ^   t          dd          } t          t          d| z            t          d| z            gddt          |           dz  z
  z  t          |           z  ddt          |           dz  z  z
  t          |           z  gg          }|                                dk    sJ d S )NrO  Tr_  r   r   )r    r   rB   r>   r  )rO  rY  s     r   test_P17r    s    $A	QqS3qs88	
AQO	SVV	#a!SVVQY-&7Q%?@B C CA 6688q======r   c                      t          g dg dg dg          } |                                 t          dgdgdgdgg          t          dgdgdgdgg          gk    sJ d S )	N)r   r   r
  r   )r
  r   r   r   )r3  r   r   r   r   r   r   r  )r   	nullspacerX  s    r   test_P18r    s      	! 	!A ;;==VaS&'S&'S&'S%* + + $aS&(T&'S&'S%* + +	, , , , , , ,r   c            
      
   t          d          } t          g d| t          t          t          g| dz  t          dz  t          dz  t          dz  g| dz  t          dz  t          dz  t          dz  gg          }|                                | dz  t          dz  z  t          z  | dz  t          dz  z  t          z  z
  | dz  t          z  t          dz  z  z
  | dz  t          z  t          dz  z  z   | dz  t          dz  z  t          z  z   | dz  t          z  t          dz  z  z
  | dz  t          dz  z  t          z  z
  | dz  t          dz  z  t          z  z   | dz  t          z  t          dz  z  z   | dz  t          z  t          dz  z  z
  | dz  t          dz  z  t          z  z
  | dz  t          z  t          dz  z  z   | t          dz  z  t          dz  z  z   | t          dz  z  t          dz  z  z
  | t          dz  z  t          dz  z  z
  | t          dz  z  t          dz  z  z   | t          dz  z  t          dz  z  z   | t          dz  z  t          dz  z  z
  t          dz  t          dz  z  t          z  z
  t          dz  t          z  t          dz  z  z   t          dz  t          dz  z  t          z  z   t          dz  t          z  t          dz  z  z
  t          t          dz  z  t          dz  z  z
  t          t          dz  z  t          dz  z  z   k    sJ d S )Nw)r   r   r   r   r   r   )r    r   r   r  r  det)r  rY  s     r   test_P19r    s   A%%%qQ1%Aq!tQT1a4(Aq!tQT1a4(* 	+ 	+A 5577q!tAqDy{q!tAqDy{2QT!VAqD[@1a46!Q$;NAad1%'(!tAvad{356T!Q$Yq[ACDa419Q;OAa1%'(!tAvad{356T!Q$Yq[ACDa46!Q$;O 1a41% ()Avad{3 67q!tVAqD[A DEQT6!Q$;O 1a41	% ()Avad{	3 67T!Q$Yq[	A DEa46!Q$;	O
 Aad1%
 ()!tAvad{3
 67q!tVAqD[A
 DEQT6!Q$;O      r   c                       t          d          )Nz'Matrix minimal polynomial not supportedr#  r   r   r   test_P20r    s    
G
H
HHr   c                      t          g dg dg dg          } |                     t                                                    t          dz  dt          dz  z  z
  dt          z  z
  dz   k    sJ d S )N)r   r  r  )r
  r   r   )r   r  rF  r   r   r   r   )r   charpolyr   as_exprrX  s    r   test_P21r    sw     	 	A ::a==  ""adQq!tVmac&9A&=======r   c                      d} dt           z
  t          |           z  }|                                t            dz   | ik    sJ d S )Nr  r   )r   r   	eigenvals)r  rY  s     r   test_P22r  !  sC    A	
QAA;;==aR!VQK''''''r   c                     t          g dg dg dg dg dg          } |                                 t          d          dt          d          dt          d	          dt          d
          dt          d          dik    sJ d S )N)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   1r   23zsqrt(3) + 2z-sqrt(3) + 2r   r  r   rX  s    r   test_P23r  '  s     	 	A ;;==	#	#	#	-!	.1      r   c                  Z   t          g dg dg dg dg dg dg dg dg          } |                                 t          d	          d
t          d          d
t          d          d
t          d          dt          d          d
t          d          d
t          d          d
ik    sJ d S )Nc     @  rG  r   r    q   r  r  rG  r  r  r  r  =   1   r   r  r  r  r  r  r   r{  ;   r  rG  r  r  r        r  r  r  r  r{  r  r  r  r  r  rG  r   r  r  r  c   qr   r  r  r  r  r  r  r  0r   z10*sqrt(10405)z100*sqrt(26) + 5101000r   z-100*sqrt(26) + 510z-10*sqrt(10405)1020r  rX  s    r   test_P24r  6  s    ??????@@@@@@@@@@@@@@@@@@B 	C 	CA ;;==	#	
Q	
	&		1	
  !	
a	&		1      r   c                  2   t          t          g dg dg dg dg dg dg dg dg                    } t          |                     d	
                    }t          g d          }t	          ||          D ]\  }}t          ||z
            dk     sJ d S )Nr  r  r  r  r  r  r  r  T)multiple)gMcdr'  gyP9?     @@r  gx5F27ߏ@g     @gMcd@g-q=)r   r   sortedr  zipr\  )MFev_1ev_2r   r  s        r   test_P25r  I  s    	
6CCCCCCCCCCCCCCCCCCCCCCCCE F F 
G 
GB ",,,--..D	8 	8 	89 9D D$ " "11q5zzE!!!!!" "r   c                     t          d          \  } }}}}t          | | | | |  ddddg	g dg dg dg dg dg dg d	g d
g	          }|                    d          t          d          dt          d          dik    sJ d S )Nza0 a1 a2 a3 a4r   )	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   r   r   r   r   r   r   r   )	r   r   r   r   r   r3  r3  r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r3  r3  )	r   r   r   r   r   r   r   r   r   F)error_when_incompletez-1/2 - sqrt(3)*I/2r   z-1/2 + sqrt(3)*I/2)r    r   r  r   )a0a1a2a3a4rY  s         r   test_P26r  \  s     !122BBB"rcB3bS1q1q9999999999999999999999999; 	< 	<A ;;U;33	
	
8$ $ $ $ $ $ $r   c                     t          d          } t          | ddddgg ddd| ddgddd| dgg dg          }|                                | dt          g d          t          g d          t          g d          gfd	t          z
  d	t          dd	t          z   d
z  ddd	g          gfd	t          z   d	t          dd	t          z
  d
z  ddd	g          gfgk    sJ d S )Nr  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   )r    r   
eigenvectsr   )r  rY  s     r   test_P27r  l  s.   AQ1a    Q1a Q1a    	" 	# 	#A <<>>	
A???##???##???##
 	
 
QAAqy!Q*++
 	 
QAAqy!Q*++
 	      r   c                       t          d          NzQGeneralized eigenvectors not supported https://github.com/sympy/sympy/issues/5293r#  r   r   r   test_P28r        
 , - - -r   c                       t          d          r
  r#  r   r   r   test_P29r    r  r   c            	          t          g dg dg dg dg dg          } |                                 \  }}|t          g dg dg dg d	g d
g          k    sJ d S )N)r   r   r   r   r3  )r   r   r
  r   r  )r   r   r3  r   r
  )r   r3  r   r   r   )r   r3  r   r3  r   )r3  r   r   r   r   )r   r   r   r   r   r  )r   r   r   r   r   r  )r   jordan_form)rY  r  Js      r   test_P30r    s    ###############	% 	& 	&A
 ==??DAq(((((((((((((((	* + + + + + + + +r   c                       t          d          )Nz!Smith normal form not implementedr#  r   r   r   test_P31r    s    
A
B
BBr   c            	      ~   t          ddgddgg          } t          |                               t                                                    t          t
          t          d          z  t
           t          d          z  gt
          t          d          z  t
          t          d          z  gg          k    sJ d S )Nr   r
  r   )r   r.   rewriter>   ro   r   rB   rX  s    r   test_P32r    s    BA 	 	Aq66>>#''))VaAh3q66	5J67Ah3q665J5L .M .M M M M M M Mr   c                  t   t          d          \  } }t          g ddddd| z  gg ddd| z  d| dz  z  dgg          }t          ||z                                t                                                    t          dd	|z  d
t          || z            z  | z  z   d|z  | z  dt          || z            z  z
  dt	          || z            z  | z  d| z  z   gdd
t	          || z            z  dz
  d| z  t	          || z            z  d| z  z   dt          || z            z  gddt	          || z            z  | z  d| z  z
  d	t	          || z            z  d
z   t          || z            | z  gddt          || z            z  d| z  t          || z            z  t	          || z            gg          k    sJ d S )Nzw t)r   r   r   r   r   r   )r   r   r   r   r
  r   r   r  r   r   r  )r    r   r.   r  r>   r   rB   )r  rO  rY  s      r   test_P33r    s   5>>DAq&&&qq!A#&&&&BqD!AqD&A&( 	) 	)A qs88C  ''))V	
BqD1S1XX:a<!A#a%!C!HH*"4bQqSk!mac6IJ	
3qs88aAc!A#hh1!4qQqSzJ	
Qs1Q3xxZ\AaCRAaC[1_s1Q3xxzJ	
Bs1Q3xxK!C!HHQqSJ	5L .M .M M M M M M Mr   c                  F   t          dd          \  } }}t          | dddddgd| ddddgdd|dddgddd|ddgdddd|dgddddd|gg          }t          |          t          t          |           t          |           ddddgdt          |           ddddgddt          |          dddgdddt          |          t          |          t          |           dz  gddddt          |          t          |          gdddddt          |          gg          k    sJ d S )Nr  Tr_  r   r   r   )r    r   rB   r>   r  s       r   test_P34r    sh   gD)))GAq!Aq!Q"Aq!Q"Aq!Q"Aq!Q"Aq!Q"Aq!Q"$ 	% 	%A q66Vc!ffc!ffaAq9QAq!4CFFAq!4As1vvs1vvAwqyAAq#a&&#a&&9Aq!SVV46 7 7 7 7 7 7 7 7r   c                      t           dz  t          g dg dg dg          z  } t          |           t          d          k    sJ d S )Nr   )r   r   r   )r   r   r   )r   r   r   r   )r   r   rB   r   rX  s    r   test_P35r    sZ    
1VYYYYYYY  ! ! 	!A
 q66SVVr   c                      t          ddgddgg          } t          |           t          ddgddgg          k    sJ d S )Nr   r   r   r   r   r   )r   r8   rX  s    r   test_P36r    sh    QB 	 	A77fq!f !f& ' ' ' ' ' ' ' 'r   c                      t          g dg dg dg          } | t          j        z  t          dt          dd          dgg dg dg          k    sJ d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r  r   rX  s    r   test_P37r"    s    							 	 	A af9AaGGQ(7(7 9 : : : : : : : :r   c                      t          g dg dg dg          } t          t                    5  | t          j        z   J # 1 swxY w Y   d S )Nr!  )r   r   r   )r   r~   AssertionErrorr   r  rX  s    r   test_P38r%    s    iiiiiii  A 
		  	16		 	         s   ?AAc                       t          d          )zQ
    M=Matrix([
        [1, 1],
        [2, 2],
        [3, 3]])
    M.SVD()
    z,Singular value decomposition not implementedr#  r   r   r   test_P39r'    s     L
M
MMr   c            	         t          dd          \  } }t          | t          |          z  | t          |          z  g          }|                    t          | |g                    t          t          |          |  t          |          z  gt          |          | t          |          z  gg          k    sJ d S )NrM  Tr_  )r    r   r>   rB   jacobian)r  rO  rY  s      r   test_P40r*    s    5t$$$DAq#a&&!CFF(#$$A::faVnn%%#a&&1"SVV)1D25a&&1SVV81D1F *G *G G G G G G Gr   c            	      >   t          dd          \  } }t          | dz  t          |          z  | |f          t          dt          |          z  d| z  t	          |          z  gd| z  t	          |          z  | dz   t          |          z  gg          k    sJ d S )NrM  Tr_  r   )r    rP   rB   r   r>   rN  s     r   test_P41r,    s    5t$$$DAq1a4A;!u%%Ac!ffH!CFF
1K23A#c!ff*q!teCFFl1K1M *N *N N N N N N Nr   c                      t          t          t                    t          t                    gt                                                    dk    sJ d S r  )rQ   r>   r   rB   ro   r   r   r   test_P42r.  
  s@    c!ffc!ff%q))2244999999r   c            	      Z   d } t          dd          \  }}t          |t          |          z  |t          |          z  g          } | |||g          t          t          |          | t          |          z  gt          |          |t          |          z  gg          k    sJ d S )Nc                 D     t           fd|D                       j        S )Nc                 D    g | ]}                     |          j        S r   )r   r  )r[  vrY  s     r   r]  z3test_P43.<locals>.__my_jacobian.<locals>.<listcomp>  s%    ...qqvvayy{...r   )r   r  )rY  Ys   ` r   __my_jacobianztest_P43.<locals>.__my_jacobian  s)    ....A...//11r   rM  Tr_  )r    r   r>   rB   )r4  r  rO  rY  s       r   test_P43r5    s    2 2 25t$$$DAq#a&&!CFF(#$$A=Aa5!!Vc!ffqbQi-@.1!ffqQx-@-B &C &C C C C C C Cr   c            	      <   d } t          dd          \  }} | |dz  t          |          z  ||f          t          dt          |          z  d|z  t          |          z  gd|z  t          |          z  |dz   t          |          z  gg          k    sJ d S )Nc                 r     t           fd|D                       t          fd|D                       S )Nc                 0    g | ]}t          |          S r   )r   )r[  r2  r   s     r   r]  z2test_P44.<locals>.__my_hessian.<locals>.<listcomp>  s!    ***1DAJJ***r   c                 D    g | ]}j                             |          S r   )r  r   )r[  r2  Vs     r   r]  z2test_P44.<locals>.__my_hessian.<locals>.<listcomp>  s%    //////r   r  )r   r3  r:  s   ` @r   __my_hessianztest_P44.<locals>.__my_hessian  sI    *******++////Q///000r   rM  Tr_  r   )r    rB   r   r>   )r;  r  rO  s      r   test_P44r<    s    1 1 1 5t$$$DAq<1SVVaV,,/0Qx1Q3s1vv:,F-.qSQZ!Q$s1vv,F8H 1I 1I I I I I I Ir   c                      d }  | t          t                    t          t                    gt                                                    dk    sJ d S )Nc           	           t           fdt          dt                               D                       }|                                S )Nc                 j    g | ]/}t                    j                            t          |          0S r   )r   r  r   r   )r[  r   r3  s     r   r]  z4test_P45.<locals>.__my_wronskian.<locals>.<listcomp>#  s1    EEEqF1IIK$$Q**EEEr   r   )r   r   lenr  )r3  r2  rY  s   `  r   __my_wronskianz test_P45.<locals>.__my_wronskian"  sB    EEEEE!SVV4D4DEEEFFr   r   )r>   r   rB   ro   )rA  s    r   test_P45rB  !  sS       >3q663q66*A..7799Q>>>>>>r   c            
         t          ddd          \  } }}t          d|d          }t          || df         t          ||df         |d|dz
  f          |z  z
  dz  | d|dz
  f          }|                                 t	          d          )	Nzi j nTr  xnr   r   r   zUnknown result)r    r   r   r  r$  )r   r   r   rD  Sms        r   test_R1rF  *  s    gtd;;;GAq!	dAq	!	!B	bAhR1X1a!e}55a77!;aAE]	K	KB GGIII
.
/
//r   c                  |   t          d          \  } }t          ddd          \  }}t          d|d          }t          d|d          }t          ||df         | ||df         z  z
  |z
  d	z  |d|dz
  f          }t          ||           }t          ||          }t	          ||f| |ft
          j        
           d S )Nzm bzi nTr  rD  r   ynr   r   r  )r    r   r   r   r   r   r  )	r   rb  r   r   rD  rH  r   f1f2s	            r   test_R2rK  4  s    5>>DAq5$666DAq	dAq	!	!B	dAq	!	!BR1X"QT(
"Q&*Q1q5M::A	aB	aBb"X1vag......r   c                  &   t          ddd          \  } }d|z  t          d| z  |          dz  z  }t          ||dt          f          }|                                }|                                }|d| z  t          d| z  |           z  k    sJ d S )Nn kTr  r3  r   r   )r    r"   r   r   r  ri   )r   r   skrE  r  T2s         r   test_R3rP  A  s    5$666DAq'hqsA&&*	*B	R!Q		B
		A	
B "q!A#q)))))))))r   c                       t          d          )NzIndefinite sum not supportedr#  r   r   r   test_R4rR  M  s    & <
=
==r   c                     t          ddd          \  } }}}}d|z  t          | |z   | |z             t          ||z   ||z             z  t          || z   ||z             z  z  }t          ||dt          f          }|                                }|t          | |z   |z             t          |           t          |          z  t          |          z  z  k    sJ d S )Nz	a b c n kTr  r3  r   )r    r"   r   r   r  r#   )r  rb  r  r   r   rN  rE  r  s           r   test_R5rT  c  s    KEEEMAq!Q'HQUAE**a!eQU++,,4QUAE,B,BC 
DB	R!Q		B
		A	!A#a%  )A,,y||";IaLL"HIIIIIIIr   c                     t          ddd          \  } }t          d| dz   d          }t          ||df         ||dz
  df         z
  |d| dz   f          }|                                |d          || dz   df         z   k    sJ d S )	NrM  Tr  gnr   r   r   )r   r   )r    r   r   r  )r   r   rV  rE  s       r   test_R6rW  m  s    5$666DAq	dAE1	%	%B	R1X1q5!8$q!QUm	4	4B7799D	Bq1uaxL0000000r   c                      t          ddd          \  } }t          |dz  |d| f                                          }|                                | dz  | dz   dz  z  dz  k    sJ d S )NrM  Tr  r   r   r   r   )r    r   r  r]   )r   r   r  s      r   test_R7rY  t  ss    5$666DAqAqD!Aa  A88::Aq1uqj*******r   c                      t          ddd          \  } }t          |dz  t          | |          z  |d| f          }|                                }|                                | | dz   z  d| dz
  z  z  k    sJ d S NrM  Tr  r   r   )r    r   r"   r  ri   r   r   rE  r  s       r   test_R8r]  y  s    5$666DAq	QT(1a.. 1a)	,	,B
		A::<<1a!e9QQZ///////r   c                      t          ddd          \  } }t          t          | |dz
            |z  |d| dz   f          }|                                                                d| dz   z  dz
  | dz   z  k    sJ d S NrM  Tr  r   r   )r    r   r"   r  ro   )r   r   rE  s      r   test_R9r`    s    5$666DAq	XaQ!Aq!a%=	1	1B7799AAJNQU#;;;;;;;r   c                  b   t          ddd          \  } }}}t          t          | |          t          |||z
            z  |d|f          }|                                }|                                                    t                    }|t          || z             t          |          t          || z   |z
            z  z  k    sJ |t          || z   |                              t                    k    sJ |                    t                    }|t          || z   |          k    sJ d S )Nzn m r kTr  r   )r    r   r"   r  ri   r  r#   )r   r   r  r   rE  r  rO  T3s           r   test_R10rc    s   D4@@@JAq!Q	Xa^^HQA...Aq		:	:B
		A	
		i	(	(B1q5!!9Q<<	!a%!)0D0D#DEEEEE!a%##++I666666 
H		B!a%########r   c                      t          ddd          \  } }t          | |          t          |          z  }t          ||d| f          }|                                }|t          d| z            k    sJ d S )NrM  Tr  r   r   )r    r"   r&   r   r  )r   r   rN  rE  r  s        r   test_R11re    sw    5$666DAq	!Q	!	$B	R!Q		B
		A 	!A#r   c                      t          ddd          \  } }t          t          |          dz  |d| f          }|                                }|t          |           t          | dz             z  k    sJ d S )NrM  Tr  r   r   r   )r    r   r&   r  r\  s       r   test_R12rg    st    5$666DAq	Yq\\1_q!Qi	(	(B
		A	!Yq1u---------r   c                     t          ddd          \  } }t          t          |t          z            |d| f          }|                                }|                                t          t          dz            dz  t          t          d| z  dz   z  dz            dt          t          dz            z  z  z
  k    sJ d S r_  )r    r   rB   r   r  ro   r?   r>   r\  s       r   test_R13ri    s    5$666DAq	S1XX1ay	!	!B
		A::<<3qs88A:AqsQwKM(:(:Ac!A#hhJ(GGGGGGGGr   c                  B   t          ddd          \  } }t          t          d|z  dz
  t          z            |d| f          }|                                }|                                t          | t          z            dz  t          t                    z  k    sJ d S r[  )r    r   rB   r   r  ro   r\  s       r   test_R14rk    s    5$666DAq	S!A#'11ay	)	)B
		A::<<3qs88Q;s1vv-------r   c            	         t          ddd          \  } }t          t          | |z
  |          |dt          | dz            f          }|                                }|                                t          | dz             k    sJ d S )NrM  Tr  r   r   r   )r    r   r"   r5   r  ro   r&   r\  s       r   test_R15rm    s    5$666DAq	Xa!eQ!Qac

!3	4	4B
		A::<<9QU++++++++r   c                      t          ddd          } t          d| dz  z  d| dz  z  z   | dt          f          }|                                t	          d          t
          dz  dz  z   k    sJ d S )Nr   Tr  r   r   r   r   )r    r   r   r  ry   r   )r   rE  s     r   test_R16ro    sq    TD111A	Qq!tVa1f_q!Rj	)	)B7799Q"a%')))))))r   c            
          t          ddd          } t          t          t          d| dz  z  d| dz  z  z   | dt          f                    dz
            dk     sJ d S )	Nr   Tr  r   r   r   g3@V瞯<)r    r\  floatr   r   r   s    r   test_R17rt    sz    TD111AuS1a4!AqD&1a*5566#$ % %',- - - - - -r   c                     t          ddd          } t          dd| z  | dz  z  z  | dt          f          }|                                }|                                t          d          dz   dz  t          dz  dz  z   k    sJ d S )Nr   Tr  r   r   r   )r    r   r   r  ro   r/   r   r   rE  r  s      r   test_R18rw    s    TD111A	Q1QT	]Q2J	'	'B
		A::<<CFFAI:a<"a%(2222222r   c                  D   t          ddd          } t          dd| z  dz   d| z  dz   z  d| z  dz   z  z  | dt          f          }|                                }|                                t          d           dz  t          d          t          z  d	z  z   k    sJ d S )
Nr   Tr  r   r   r   r   r   r   )r    r   r   r  ro   r/   r8   r   rv  s      r   test_R19ry    s     	TD111A	Q1q1Q37#QqS1W-.Ar
	;	;B
		A::<<CFF719tAwwrz"}4444444r   c                  >   t          ddd          \  } }t          t          | d|z            |dt          f          }|                                }|                                d| dz  z  t          t          | z  dz            z  dz  d| dz
  z  dz  z   k    sJ d S )NrM  Tr  r   r   r   r   )r    r   r"   r   r  ro   r>   r   r\  s       r   test_R20r{    s    5$666DAq	Xa11bz	*	*B
		A::<<1qs8C1QKK/1AAJqL@@@@@@@r   c            	      (   t          ddd          } t          dt          | | dz   z            t          |           t          | dz             z   z  z  | dt          f          }|                                }|                                dk    sJ d S )Nr   Tr  r   )r    r   r8   r   r  ro   rv  s      r   test_R21r}    s    TD111A	QQAY477T!a%[[#89:Q2J	G	GB
		A::<<1r   c                     t          ddd          \  } }t          t          t          |           t          |          dz  t          | d|z  z
            z  z  t          t          z  |z  z  t          t          z  | |z
  z  z  | d|z  t
          f          |dt
          f          }|                                }|dt          t          dz  t          dz  z  dt          dz  z  z
  dt          z  t          z  z
  dz             z  k    sJ d S )	NrM  Tr  r   r   r3  r   r   )r    r   r#   r   r  r   r  r8   r\  s       r   test_R23r    s    5$666DAq	S)A,,	!a	!ac'0B0B BCA#Q3!a%.)+,ac2,8 8:;Q
E 
EB 			A41QT	AadF*QqSU2Q6777777777r   c                      t          ddd          \  } }t          t          |d|z  dz
  z  |d| f          | dt          f          }|                                t
          dz  k    sJ d S )Nzm kTr  r   r   )r    r   r   r   r  r   )r   r   rE  s      r   test_R24r    sn    5$666DAq	WQ!a[1a),,q!Rj	9	9B77991r   c                     t          ddd          } t          t          | dz            | ddf          }|                                                                dt          d          z  t          dz  z  dz  k    sJ d S )	Nr   Tr  r   r   r   i  i  )r    r   rH   r  ro   r8   r   )r   Prs     r   test_S1r    sx    TD111A	qsaAY	'	'B77993tAww;r1u#4T#9999999r   c                      t          ddd          \  } }t          ||d| f                                          t          |           k    sJ d S NrM  Tr  r   )r    r   r  r#   r   r   s     r   test_S2r  	  sS    5$666DAq1q!Qi  %%''9Q<<777777r   c                      t          ddd          \  } }t          t          |z  |d| f                                                                          t          | | dz   z  dz  z  k    sJ d S r_  )r    r   r   r  ro   r  s     r   test_S3r    sn    5$666DAq1a4!Q##((**3355QAYq[9IIIIIIIr   c                      t          ddd          \  } }t          dd|z  z   |d| dz
  f                                                                          | k    sJ d S r  )r    r   r  ro   r  s     r   test_S4r    se    5$666DAq1qs7Q1a4L))..0099;;q@@@@@@r   c                  F   t          ddd          \  } }t          d|z  dz
  d|z  z  |d| f                                                                          t	          | t
          j        z             t          t                    t	          | dz             z  z  k    sJ d S r[  )	r    r   r  	gammasimprH   r   r  r8   r   r  s     r   test_S5r    s    5$666DAqQqS1WqsOaAY//4466@@BB!af*tBxxa!e456 6 6 6 6 6r   c                  J   t          ddd          \  } }t          t          dz  dt          z  t          |t          z  | z            z  z
  dz   |d| dz
  f                                                                          t          d| z  z  dz
  t          dz  dz
  z  k    sJ d S r[  )r    r   r   r>   r   r  ro   r  s     r   test_S6r    s    5$666DAqAqD!A#c!B$q&kk/)A-1a!e}==BBDDMMOOAaC1q!tax() ) ) ) ) )r   c                      t          ddd          } t          | dz  dz
  | dz  dz   z  | dt          f          }|                                }|                                t          dd          k    sJ d S )Nr   Tr  r   r   r   )r    r   r   r  ro   r   r   r  r  s      r   test_S7r  &  st    TD111A	!Q$(QTAX&Ar
	3	3B
		A::<<1Q77""""""r   c                      t          ddd          } t          ddd| z  dz  z  z
  | dt          f          }|                                }|                                dt
          z  k    sJ d S )Nr   Tr  r   r   )r    r   r   r  ro   r   r  s      r   test_S8r  .  sk    TD111A	Q!axZ!Q	,	,B
		A::<<1R4r   c                      t          ddd          } t          dd| dz   z  d| z  dz
  z  z   | dt          f          }|                                }|                                t          d          k    sJ d S )Nr   Tr  r   r3  r   )r    r   r   r  ro   r8   r  s      r   test_S9r  7  sy    TD111A	bAE]AaC!G,,q!Rj	9	9B
		A ::<<477""""""r   c                      t          ddd          } t          | | dz   z  dz   t          z   | | dz   z  dz   t          z
  z  | dt          f          }|                                }|                                dk    sJ d S )Nr   Tr  r   r   r3  )r    r   r   r   r  ro   r  s      r   test_S10r  A  s~    TD111A	!QU)a-!#aQi!ma&781a*	E	EB
		A::<<2r   c                     t          ddt          z  z   t          z  t          t                    t          k    sJ t          dt	          t
                    z
  t
          dz  z  t
          d          t          j        k    sJ d S r  )r`   r   r   r   r>   r   r   r  r   r   r   test_T1r  J  sc    !ac'Aq"%%****!c!ff*ad"Aq))QV333333r   c                      t          dt          z  dt          z  z   dt          z  z  t          t                    dk    sJ d S )Nr   r   r   )r`   r   r   r   r   r   test_T2r  O  s:    !Q$A+1%q"--222222r   c                      t          t          t                    t          t                    t          t                    z   z  t          t                    dk    sJ d S r  )r`   r/   r   rB   r   r   r   r   test_T3r  S  s@    QQ#a&&)1b11Q666666r   c                  f   t          t          t          t          t                     z  t          t                     t          dt          dz  z  t          dz   z            z   z            t          t                    z
  t          z  t          t                    t          d           k    sJ d S )Nr
  r   r   )r`   r.   r   r   r   r   r   test_T4r  W  s    #aQBiaR3r!Q$wA+?+?!?@AAq66% %),Q0 0 0 0 0 0r   c                     t          t          t          t                    z  t          t          t          t                    z  t          dz  z
            dz  z  t          t          t          dz  dt          t          dt          dz  z  t          t                    z                      z  z                       z  t          t                    t          dd          k    sJ d S )Nr   r   r   )r`   r   r/   r.   r   r   r   r   r   test_T5r  \  s    !CFF(3qQx!Q$//223s1a4c#a1fSVVm,,---<. 8/ 8/ 40 40 012B8 8;<Q77C C C C C Cr   c                      t          dt          z  t          t                    dt          z  z  z  t          t                    t	          d          k    sJ d S Nr   r3  )r`   r   r#   r   r.   r   r   r   test_T6r  a  sC    1y||ac**Ar22c"gg======r   c                      t          dt          z  t          t          dz             dt          z  z  z  t          t                     d S r  )r`   r   rH   r   r   r   r   test_T7r  e  s6    	!A#a!eqs#
#Q+++++r   c            	          t          dd          \  } }t          t          || z             t          |          z  t          |  t	          |          z            z  |t
                    dk    sJ d S )Nza zTrs  r   )r    r`   rH   r.   r/   r   )r  r  s     r   test_T8r  i  sg    54(((DAqq1ueAhh&sA2c!ff9~~5q"==BBBBBBr   c                      t          dd          \  } }t          t          d|fd| |z            |t                    t	          |           k    sJ d S )Nzz kTrs  r   )r   )r    r`   rJ   r   r.   )r  r   s     r   test_T9r  n  sW    54(((DAq 1vtQqS))1b11SVV;;;;;;r   c                      t          t          t                    dt          dz
  z  z
  t          d          t          dt          z  dt	          t                    z  z   t          dt
          f          k    sJ d S r  )r`   ry   r   r   r5   r   r   r   r   test_T10r  v  s_     a1a!e9$a++yA%((
9JQPQSUJ/W/WWWWWWWr   c            
          t          ddd          \  } }t          | t          z  t          t          dt          |z  z   |d| f          z  z  | t                    t          t                    k    sJ d S r  )r    r`   r   r   r   rH   r  s     r   test_T11r  {  si    5$666DAqAq!ac'Q1I6667B??588KKKKKKr   c            	          t          dd          \  } }t          | t          t          |dz             |d| f          z  dt          | dz             z
  z  | d          dk    sJ d S )Nx tTr_  r   r   r   )r    r`   r   r.   )r   rO  s     r   test_T12r    s    5t$$$DAqYsAqD5zzAq!9555q31u::~FA      r   c                      t          dd          } t          | t          |           z  | dd          t          | t          |           z  | dd          gdd	gk    sJ d S )
Nr   Tr_  r   -dir+r3  r   )r    r`   r\  rt  s    r   test_T13r    sz    $A!CFF(Aqc***!CFF(Aqc***,02Aw7 7 7 7 7 7r   c                      t          dd          } t          t          t          |                      | dd          t          dz  k    sJ d S )Nr   Tr_  r   r  r  r   )r    r`   r=   r/   r   rt  s    r   test_T14r    sN    $As1vvg1#..."Q$666666r   c                      t          dd          } t          t          |           |           t          |           k    sJ d S )Nr   Tr_  )r    r   r\  r,   rt  s    r   test_U1r    s?    $AA??d1gg%%%%%%r   c            	      (   t          t          t          t           t          dk     ft          t          dk    f                    } t           | t                    t                    t          dt          dk     fdt          dk    f          k    sJ d S )Nr   r3  r   r   r   r9   r   )r   s    r   test_U2r    sn    q)aRQK!Q!V5566A!a==Ir1q5kAqAv;????????r   c            	      n   t          t          t          t          dz  dz
  t          dk    ft          dz  t          dk    f                    } t          t          t           | t                    t                              } |t                    dt          dz  z  k    sJ  |d          dk    sJ d S r  r  )r   rI  s     r   test_U3r    s    q)QTAXqAv.AqAv??@@A	4!a==	!	!B2a55AadF????2a55A::::::r   c                      t          ddd          } t          dd          }t          || z  ||           }|                    t                    t          |           k    sJ d S )Nr   Tr  r   r_  )r    r   r  r#   )r   r   r  s      r   test_U4r    sf    TD111A$AQT1aA99Y9Q<<//////r   c                  (   t          d          } t          t          t          |                     t          |                     t          t          |           | df          z  t          t          t          |                     t          |           df          t          t          |           |           dz  z  z   }t          t          |                                         | d          |k    sJ |                                |k    sJ d S )NrO  r   )r    r	   r   r   r   r  )rO  anss     r   test_U5r    s    A1QqTT77AaDD!!*QqTTAq6":"::1QqTT77QqTT1I&&z!A$$':':A'==	>  QqTT77<<1$$$$88::r   c                  
   t          d          } t          t          t                    t           | t                    t          t                    f          }|                    t                    t          t          t                              t          t          t                    t                    z  t           | t                              t           | t                    t                    z  z
  k    sJ d S )Nr  )r
   r   r   r  r   r   r   r	   )r  r  s     r   test_U6r    s    A!A$$AAaDD!A$$((A66!99	!A$$
1Q44###a!ggj1q.A.A&AAC C C C C Cr   c                  h    t          dd          \  } }t          t          | |                     d S )Nzp tTr_  )r    r   r   )r\  rO  s     r   test_U7r    s1    5t$$$DAq
 	1aMMMMMr   c                      t          dd          \  } }t          | |z            | z   }t          ||z
  ||           | t          | |z            z  dz   | t          | |z            z  dz   z  k    sJ d S )Nr  Tr_  r   )r    r>   rN   rB   )r   r  eqs      r   test_U8r    s    5t$$$DAq	QqSAB RAA2c!A#hh;?Qs1Q3xxZ!^"DDDDDDDr   c            	         t          dd          \  } }t          t          | |          |           t          t          | |          |          z   }|                    t          | |          t	          | dz  |dz  z                       }|                                                                }|| |z   t          t          t	          |           |           | | dz  |dz  z             z  dz  k    sJ d S )Nr  Tr_  r   )	r    r   r   r  r   r  r]   r   r	   )r   r  sus2s3s        r   test_U9r    s     5t$$$DAq	a1ggq		D1a!,,	,B	1a!AqD1a4K..	)	)B					B !a%j1q111adQTkBBB1DDDDDDDr   c                      t          t          dz  dz   t          dz  dz
  t          dz   z  z  t          d          t          dd          k    sJ d S )Nr   r   r   r   r3  r  )rb   r  r   r   r   r   test_U10r    sK    AqD1H1q1q512Ar::aAhhFFFFFFr   c                      t           r   r#  r   r   r   test_U11r    s
     r   c                       t          d          )Nz0External diff of differential form not supportedr#  r   r   r   test_U12r    s     :< < <r   c                      t          t          dz  t          z
  dz   t                    ddt          dd          z  z  dz  dz   k    sJ d S )Nr   r   r  r   r   r   )r   r   r   r   r   r   test_U13r    sH    1a4!8a<##r!QqVV)|A~'9999999r   c                       t          d          )Nz$minimize(), maximize() not supportedr#  r   r   r   test_U14r  	  s     D
E
EEr   c                       t          d          )NzRminimize() not supported and also solve does not support multivariate inequalitiesr#  r   r   r   test_U15r  
	  s    
 ' ( ( (r   c                       t          d          )Nz[minimize() not supported in SymPy and also solve does not support multivariate inequalitiesr#  r   r   r   test_U16r  	  s    
 2 3 3 3r   c                       t          d          )Nz;Linear programming, symbolic simplex not supported in SymPyr#  r   r   r   test_U17r  	  s    
    r   c                      t          dd          } t          t          |           |           t          | dz   dz  | dk    f| dz  dz  df          k    sJ d S )Nr   Tr_  r   r   )r    r   r\  r9   rt  s    r   test_V1r  	  sd    $ASVVQ9q!teAgqAv->Aa#O#OOOOOOOr   c                      t          t          t           t          dk     ft          t          dk    f          t                    t          t          dz   dz  t          dk     ft          dz  dz  df          k    sJ d S )Nr   r   T)r   r9   r   r   r   r   test_V2r  !	  sy    YAE{QQK88! 
 
AaQ'!Q$q&$889 9 9 9 9 9r   c                      t          dt          dz  dz   z  t                                                                                    dt          dz  dz   z  k    sJ d S )Nr   r   r   )r   r   r   ro   r   r   r   test_V3r  &	  sS    Q1q\!$$))++4466!QTAX,FFFFFFr   c                      t          dt          z  t          ddt          z  z             z  t                    t          dt          z            t	          d          z  k    sJ d S )Nr   r   r   )r   r   r8   r0   r/   r   r   r   test_V4r  *	  sO    QT$q1a4x..(!,,adCFF0BBBBBBBr   c                  0   t          dt          z  dz
  dz  dt          z  dz
  t          dd          z  z  t                                                    ddt          z  z   dt          dz  z  z
  ddt          z  dz
  t          dd          z  z  z  k    sJ d S )	Nr   r   r   r   r   ir  -   )r   r   r   ro   r   r   r   test_V5r  .	  s     qsQwlAaC!Ga1gg#55q99BBDD2a4Z"QT'!AqsQw1a&8$89: : : : : :r   c            
         t          ddt          t          t          z            z  dt          t           t          z            z  z
  z  t                    t	          d          t          dt          t          t          z            z  t	          d          z
            t          dt          t          t          z            z  t	          d          z             z
  z  dt          z  z  k    sJ d S )Nr   r   r   r   r  )r   r.   r   r   r8   r/   r   r   r   test_V6r  5	  s     a3qs88aQBqD		k12A66$r((#ac((
T"XX%&&Qs1Q3xxZ$r((-B)C)CC;EFHd;L L L L L L Lr   c                  t   t          t          t                    dz  t          t                    dz  z            } |                                 t          t          dd          z  t          t                    dz  dt          t                    z  z  z   dt          t                    z  dz  z   k    sJ d S )Nr   r   r  r   )r   r2   r   r1   ro   r   r3   r1s    r   test_V7r  <	  s    	477A:d1ggqj(	)	)B;;==AaAhhJa!QtAwwY)??!DGG)A+MMMMMMMr   c                       t          d          )Nz'Integrate with assumption not supportedr#  r   r   r   
test_V8_V9r  A	  s     13 3 3r   c                      t          dddt          t                    z  z   dt          t                    z  z   z  t                    t	          dt          t          dz            z  dz             dz  k    sJ d S )Nr   r   r   r   )r   r>   r   rB   r/   rC   r   r   r   test_V10r  R	  sd    QAc!ffHqQx/0!44Ac!A#hhJN8K8KA8MMMMMMMr   c                     t          dddt          t                    z  z   dt          t                    z  z   z  t                    } t	          |           }t          |d          t          t          t          dz            dz   t          t          dz            dz   z  t          dd          z            k    sJ d S )Nr   r   r   T)forcer   r   )	r   r>   r   rB   r]   rn   r/   rC   r   r  r2s     r   test_V11r  V	  s    	1a!CFF(lQs1vvX-.	2	2B	Br&&&#ac((Q,QqSA.1a899: : : : : :r   c                      t          dddt          t                    z  z   dt          t                    z  z   z  t                    } | dt	          t          dz            dz   z  k    sJ d S )Nr   r   r   r   r3  r   )r   r>   r   rB   rC   r  s    r   test_V12r   ]	  s]    	1a!CFF(lQs1vvX-.	2	2BS1XX\"""""""r   c            
      l   t          dddt          t                    z  z   dt          t                    z  z   z  t                    } |                                 dt          d          z  t          t          d          dt          t          dz            z  dz   z  dz            z  dz  k    sJ d S )Nr   r   r   r   r   r   )r   r>   r   rB   ro   r8   r=   rC   r  s    r   test_V13r  b	  s    	1a!CFF(lQs1vvX-.	2	2B ;;==Ad2hhJtDHHaAaCj1n,Eb,H'I'II"LLLLLLLr   c            	         t          t          t          t          dz  t          dz  z
                      t                    } |                                 t          t          t          t          dz  t          dz  z
                      z  t          t          t          t          z             z  z   t          t          t          t          z
            z  z
  dt          z  z
  k    sJ d S r0  )r   r/   r\  r   r  ro   r  s    r   test_V14r  j	  s     
3s1a4!Q$;''((!	,	,BKKMMQs3q!tq!t|#4#4555AE

l+-.s1q5zz\:<=aC@ @ @ @ @ @ @r   c            	      *   t          t          t          t          t          z            z  t                    } t	          | t          t          z  t          dz  t          dz  z   t          t          t          z            z  z   dz  z
            dk    sJ d S Nr   r   )r   r   r;   r  ro   r  s    r   test_V15r  s	  sl    	1T!A#YY;	"	"BB!A#A1d1Q3ii 77::;;q@@@@@@r   c                  \   t          t          dt          z            t          dt          z            z  t                    t          dt          z            t	          dt          z            z  dz  t          dt          z            t          dt          z            z   dz  z
  k    sJ d S )Nr   r   r   r   r   )r   r>   r   rv   rB   rw   r   r   r   test_V16r	  x	  s     S1XXb1gg%q))R!WWS1XX-=a-?2ac77RPQRSPSWWCTVXBX-XXXXXXXr   c            	      V   t          t          t          t                    t                    t	          t                    z  t          t                    t          t	          t                    t                    z  z
  t          t                    dz  t	          t                    dz  z
  z  t                    } t          | t          t                    t	          t                    z
  t          t                    t	          t                    z   z  dz  z
            dk    sJ d S r  )r   r   r   r   r   ro   r  s    r   test_V17r  }	  s    	D1qMM!A$$&qTT$qttQ--'(*+A$$'AaDD!G*;=>?
A 
AB B!A$$1+!qtt4Q66771<<<<<<r   c                      t          dt          t          z
  z  t          t          dz
  t          dz   f          dk    sJ d S )Nr   r   )r   r   r  r   r   r   test_W1r  	  s<    
 QAYAE1q5 122a777777r   c                      t          dt          t          z
  dz  z  t          t          dz
  t          dz   f          t          u sJ d S rV  )r   r   r  r   r   r   r   test_W2r  	  s@     QAz\Aq1ua!e#455<<<<<<r   c                      t          t          t          dt          z  z   dz
            t          ddf          t          dd          k    sJ d S Nr   r   r   r   r   r   r8   r   r   r   r   r   test_W3r  	  sG    
 T!ac'A+&&Aq	22a1gg======r   c                      t          t          t          dt          z  z   dz
            t          ddf          dt          d          z  dz  t          dd          z   k    sJ d S )Nr   r   r
  r   r   r  r   r   r   test_W4r  	  Z     T!ac'A+&&Aq	22bajlQq!WW6LLLLLLLr   c                      t          t          t          dt          z  z   dz
            t          ddf          dt          d          z  dz  t          dd          z   k    sJ d S )Nr   r   r   r
  r   r   r  r   r   r   test_W5r  	  r  r   c            
          t          t          ddt          dt          z            z  z
            dz  t          t          t          dd          z  t           dz  f          t          d          k    sJ d S )Nr   r  r   )r   r8   r>   r   r   r   r   r   r   test_W6r  	  sc     T!aAaCj.))!+aAb!HHrc!e-DEEaPPPPPPr   c                     t          dd          } t          t          t                    t          dz  | dz  z   z  t          t           t          f          }|                                t          t          |            z  | z  k    sJ d S )Nr  Trs  r   )r    r   r>   r   r   ro   r   r.   )r  r  s     r   test_W7r  	  sq    d###A	3q661a4!Q$;'!bS"	6	6B;;==BsA2wwJqL((((((r   c                       t          d          )Nz1Integrate with assumption 0 < a < 1 not supportedr#  r   r   r   test_W8r  	  s     ;= = =r   c                     t          dt          dz  z  dt          z   t          dz  z   t          dz  z   t          dz  z   z  t          t           t          f          } |                                 }|dt          z  t          t          d           dz  dz             t          t          d          dz  dz             z   z  k    sJ d S )	Nr   r   r   r   r   r
  r   g      ?)r   r   r   r  r   r8   r  s     r   test_W9r   	  s    
 
1QT61q51a4<!Q$.A56RC	E	EB	BBd1ggXaZ#-..d1ggai#o1F1FFGGGGGGGr   c            	      ^   t          t          dt          z   t          dz  z   t          dz  z   z  t          t           t          f          } |                                 }|dt          z  t          d          dz  dz   z  t          t          t          dd          z            z  dz  k    sJ d S )Nr   r   r   r   g      ?)r   r   r   r  r   r8   r@   r   r  s     r   test_W10r"  	  s    
 
1a!eadlQT)*QRL	9	9B	B2tAwwqy3'BqAwwJ79999999r   c                      t          t          dt          dz  z
            dt          dz  z   z  t          ddf          t          dt          d          z   z  k    sJ d S r  )r   r8   r   r   r   r   r   test_W11r$  	  sb     d1q!t8nna!Q$h/!R<<T!WW     r   c                     t          dd          } t          dd          }t          t          t          |  t          dz  z  d|z  t          z  z             z  t          t           t          f          }|                                t          t                    |z  t          |dz  | z            z  | t          dd          z  z  k    sJ d S )Nr\  Trs  rs  r_  r   r   )	r    r   r   r.   r   ro   r8   r   r   )r\  rs  r  s      r   test_W12r&  	  s    d###A$A	1S!AqD1Q3q5)))AsB<	8	8B;;==DHHQJs1a46{{21a1gg:=======r   c            	          t          dt          t                    z  ddt          z
  z  z   t          t          dt          z                      z
  t          ddf          } | dt          z  k    sJ d S )Nr   r   r   )r   r/   r   r   r  s    r   test_W13r(  	  s`     
1SVV8aQi'#c!A#hh--7!Q	C	CB:r   c                      t          t          t                    t          z  t          dt          z  t          z            z  t          t
           t
          f          dk    sJ d S r  )r   rB   r   r.   r   r   r   r   r   test_W14r*  	  sH    SVVAXc!A#a%jj(1rc2,771<<<<<<r   c                      t          t          t          t                              t	          dt
          z  t          z            z  t          ddf          t          dd          k    sJ d S )Nr   r   r   r   )r   r/   rH   r   r>   r   r   r   r   r   test_W15r,  	  sR     Sq]]3qtAv;;.Aq	::a2hhFFFFFFr   c                      t          dt          z   dz  t          dt                    z  t          dt                    z  t          ddf          t          dd          k    sJ d S )Nr   r   r   r3  r  #   )r   r   rZ   r   r   r   r   test_W16r/  	  si    a!eaZa 3 33M!Q4G4GGQZ! !$%b"II. . . . . .r   c                     t          dd          \  } }t          t          |  t          z            t	          d|t          z            z  t          dt
          f          d|t          | dz  |dz  z  dz             z  z  k    sJ d S )Na bTrs  r   r   r   )r    r   r.   r   rD   r   r8   ra  s     r   test_W17r2  	  s    54(((DAqS!AYYwq!A#.Q  !1T!Q$q!t)a-%8%8#8 9: : : : : :r   c                      t          t          dt                    t          z  dz  t          dt          f          ddt          z  z  k    sJ d S r  )r   rD   r   r   r   r   r   r   test_W18r4  
  sB    gammAo)Aq":66!QrT(BBBBBBr   c                      t          t          t                    t          ddt	          dt          z            z            z  t          dt
          f          t          d          dz
  dz  k    sJ d S )Nr   r   r   r   )r   rv   r   rD   r8   r   r>   r   r   r   test_W19r6  
  s]     RUU71aQqS		k222Q2J??CFFQJPQ>QQQQQQr   c            	         t          t          dz  t          ddt          dz   z            z  t          ddf          t          dz   dz  t	          dd          z
  t          d          dz  z   t          dz   dz  dt          d          z  z
  t          d          dz  z   d	z   t          d          z  d
z  z   k    sJ d S )Nr   r   r   r   r  r   l   r   gUUUUUU'@r   )r   r   rM   r   r   ry   r/   r   r   r   test_W20r9  
  s     ad71aQi0001a)<<UF2I"c

"T!WWQY.!eVAX#a&& 3q6619,t3SVV;A=>> > > > > >r   c                      t          t          t          t          dz  t	          ddt          dz   z            z  t          ddf                    dz
            dk     sJ d S )Nr   r   r   r   g5?rq  )r\  r   r   r   rM   r   r   r   test_W21r;  
  sm    q1a41a!e9 5 551ayAABB
  $% % % % % %r   c                     t          dd          \  } }t          t          t          dt	          t          dk    t          dk              fd                    }t           ||           t          |           z  | d|f          t          d|dk     ft          t          d|                     t          t          d|                    z   df          k    sJ d S )Nzt uTr_  r   r   )r   Tr   )	r    r   r   r9   rO   r   r>   rB   r7   )rO  ur  s      r   test_W22r>  
  s    5t$$$DAqq)QAFAF 3 34i@@AAAQQqTT#a&&[1a),,		
AE

c!Qii..3s1ayy>>	)4012 12 2 2 2 2 2 2r   c                  b   t          dd          \  } }t          t          t          t          dz  t          dz  z   z  t          | |f          t          t           t          f          }|                    t                                                    t           | z  t          |z  z   k    sJ d S Nr1  Trs  r   )r    r   r   r  r   collectr   cancel)r  rb  r  s      r   test_W23rC  #
  s    54(((DAq	9Q1q!t_q!Qi881rc2,	G	GB::b>>  ""rc!ebdl222222r   c                  .   t          dd          \  } }t          t          t          t          dz  t          dz  z   z  t          t           t          f          t          | |f          }|                    t                    t          |  |z   z  k    sJ d S r@  )r    r   r   r  r   rA  r   )r  rb  r  s      r   	test_W23brE  *
  sz    54(((DAq	9Q1q!t_q2#rl;;aAY	G	GB::b>>R!a[((((((r   c            	         t          dd          \  } }t          t          t          | dz  |dz  z             | ddf          |ddf          }|t          d          t          d          z   dz  z
                                  dk    sJ d S )Nr  Tr_  r   r   r   r   )r    r   r8   r0   ro   )r   r  r  s      r   test_W24rG  1
  s    
 5t$$$DAq	9T!Q$A+..Aq	::Q1I	F	FB$q''E!HH$a''1133q888888r   c            
         t          dd          \  } }}t          t          |           t          |          z  t          dt          |           dz  t          |          dz  z  t          |          dz  z  z
            z  |dt          dz  f          }t          ||dt          dz  f          }|t          | z  dz  z
                                  dk    sJ d S )Nza x yTr_  r   r   r   )r    r   rB   r8   r   ro   )r  r   r  i1i2s        r   test_W25rK  ;
  s     gD)))GAq!	As1vvd1s1vvqyQ23q6619<<===	
Ar!t
 
B 
21bd|	$	$BAaK!!##q((((((r   c            	          t          dd          \  } }t          t          t          || dz  z
            |ddf          | ddf          t          dd	          k    sJ d S )
Nr  Tr_  r   r   r3  r   r  r  )r    r   r\  r   rg  s     r   test_W26rM  F
  sw    5t$$$DAqYs1q!t8}}q!Qi88QZ! !$%b"II. . . . . .r   c                      t          d          \  } }}t          t          t          dt          d|dt          | z  z
  t          |z  z
  z  f          t          d|dt          | z  z
  z  f          t          d| f          | |z  |z  dz  k    sJ d S )Nr  r   r   r   )r    r   r  r   r  )r  rb  r  s      r   test_W27rO  L
  s    gGAq!YyQ1a!A#g!m3D,EFF !1aQqSk24 4AY   #$Q3q57+ + + + + +r   c                     t          dd          \  } }t          dt          d| |z  dz  z
            z  | dd          d	| d
z  z  d|d
z  z  z  d| dz  z  d|dz  z  z  z   | dz  d|dz  z  z  z   dz   t          | dz            z   k    sJ d S )Nv cTr_  r   r   r   r   x0r   r   r   r   r   r   r    rc   r8   ra   )r2  r  s     r   test_X1rU  S
  s    5t$$$DAq1T!qsQh,'''qA666adFBq!tGqAvqAv.AqAv>BQq!tWWLM M M M M Mr   c                     t          dd          \  } }t          dt          d| |z  dz  z
            z  | dd          }d|dz  z                      | dd          | dz   |dz  z  dz   t          | dz            z   k    sJ d S )	NrQ  Tr_  r   r   r   r   rR  rT  )r2  r  s1s      r   test_X2rX  Y
  s    5t$$$DAq	$qAaC!8|$$$aA	3	3	3Bb!eGA!q))adU1a4Z!^a1gg-EEEEEEEr   c                     t          t                                                    t          t                                                    z                                  } t	          t                                                    }|t          t          dz  dz  z   dt          dz  z  dz  z   t          t          dz            z   k    sJ | |k    sJ d S )Nr   r   r   r  r   )rB   r   rc   r>   rC   ra   )rW  r  s     r   test_X3rZ  _
  s    
a&&--//#a&&--//
)	1	1	3	3B	QBQT!Va1fRi'!AqD''11111888888r   c                     t          t          t                    t          z                                            } | t          dz   dz  t          dz  dz  z
  t	          t          dz            z   k    sJ t          t          t          t                    t          z                                                      | k    sJ d S )Nr   r   r      )r/   rB   r   rc   ra   )rW  s    r   test_X4r]  f
  s    	SVVAX				B!Q$q1a48#a1gg-----vc!ffQh  ''))R//////r   c            	      ^   t          d          } t          dd          \  }}}}t          t          t	          |t
          z            t
                    t          |t
          z            z   t           | |t          z            t          dt
          f          z   t
          |d           d S )Nr  za b c dTr_  r   r   rR  )	r
   r    rc   r   r   r   r   r   r  )r  r  rb  r  r  s        r   test_X5r_  l
  s     	A...JAq!Q 4!A#??QqsVV#i!A#Aq	&B&BBa     r   c                  b   t          ddd          \  } }t          t          | |z   t          z            t          | t          z            t          |t          z            z  z
  t          dd          t          dz  |  |z  dz  || z  dz  z   z  t	          t          dz            z   k    sJ d S )Nr1  F)r
  scalarr   r   rR  r   )r    rc   r.   r   ra   ra  s     r   test_X6rb  
  s     5eE:::DAq3Aqy>>C!HHs1Q3xx$77qAFFFdQBqDFQqSUN#a1gg-. . . . . .r   c                  R   t          dt          t          t                    dz
  z  z  t          dd          t          dz  ddt          z  z  z
  t          dd          z   t          dz  dz  z
  t          dz  d	z  z   t          d
z  dz  z
  t	          t          dz            z   k    sJ d S )Nr   r   r   r
  r   r   i  r   i v  r   i u )rc   r   r.   r   ra   r   r   r   test_X7rd  
  s     1aQ!n%q!Q//1r7Q!W3DaHH4!tCx4 "#Q$u*4-/0!tG|4<>?1gg4F F F F F F Fr   c                  @   t          dd          } t          t          t          |                     | t          dz  dz  d          dt          | t          t          dd          z  z
            z  | t          t          dd          z  z
  t          dd          z  d	z  z   | t          t          dd          z  z
  t          d
d          z  dz  z   t          | t          t          dd          z  z
  dz  | t          t          dd          z  f          z   k    sJ d S )Nr   Tr_  r   r   r   rR  r   r   r      )r    rc   r8   rA   r   r   ra   rt  s    r   test_X8rg  
  s   
 	$A4A<<r!tAv333d1r!Aq''z>"""a"Qq!WW*nqAww%>r%AAAaGG^a1gg%c)*,-q2a1gg:~.AAr!Aq''z?,S,STT T T T T Tr   c                     t          t          t          z  t          dd          dt          t          t                    z  z   t          dz  t          t                    dz  z  dz  z   t          dz  t          t                    dz  z  dz  z   t          t          dz  t          t                    dz  z            z   k    sJ d S )Nr   r   rR  r   r   r   r   )rc   r   r/   ra   r   r   r   test_X9ri  
  s    1a4qA&&&!aAh,Ac!ffai9I*IqDQN1+ Ac!ffai00+1 1 1 1 1 1 1r   c            	         t          d          \  } }t          t          t          |                     t          t	          | |z                       z   | dd          t          t	          |                    t          |           z   | t          |          z  t	          |          z  z   t          | dz            z   k    sJ d S Nzz wr   r   rR  r    rc   r/   r2   r1   ra   r  r  s     r   test_X10rn  
  s    5>>DAq3tAww<<#d1q5kk"2"22A!qAAAQLL3q66!Ad1ggId1gg$55!Q$?@ @ @ @ @ @r   c            	      v   t          d          \  } }t          t          t          |           t	          | |z             z            | dd          t          t	          |                    t          |           z   | t          |          z  t	          |          z  z   t          | dz            z   k    sJ d S rk  rl  rm  s     r   test_X11rp  
  s    5>>DAq3tAwwa!e,--qQ!<<<QLL3q66!Ad1ggId1gg$55!Q$?@ @ @ @ @ @r   c                  ,   t          dd          \  } }}t          t          |          | z  t          | |z            z  |dd          |dz
  | z  t          |          z  d| d|z  z   |dz
  z  dz  z
  t	          |dz
  dz            z   z  k    sJ d S )Nza b xTr_  r   r   rR  )r    rc   r/   r.   ra   )r  rb  r   s      r   test_X12rr  
  s     gD)))GAq! 3q6619S!AYY&a1555UQJs1vvqA!Ga!e#4Q#66AEA:FGH H H H H Hr   c                      t          t          dt          dz  z  dz             t          t          d          t          d          t          z  t	          dt          z  t          t          f          z   k    sJ d S )Nr   r   rR  )rc   r8   r   r   ra   r   r   r   test_X13rt  
  s]    $qAvz""A"222d1ggai!AaC!R//6QQQQQQQr   c                  T   t          dddt          z  z  z  t          dt          z  t                    z  t          t          t          k    d          dt          t                    t          t                    z  z  t          dt          z  t          t          f          z   k    sJ d S )Nr   r   r  )rc   r   r"   r   r   r8   r   ra   r   r   r   test_X14rv  
  s     !A!H*Xac1---QUa! ! !$%tBxxQ'7$81QqS1b'??$JK K K K K Kr   z*https://github.com/sympy/sympy/issues/7164c                  .   t          dd          \  } }t          t          |           |z  || t          f          }t	          || t          d          d| dz  z  d| d	z  z  z   d
| dz  z  z
  d
| z  z   t          | dz  | t          f          z   k    sJ d S )Nr  Tr_  r   rR  r   r   r   r   r   r  )r    r   r.   r   rc   ra   )r   rO  e1s      r   test_X15ry  
  s     5t$$$DAq 
3r7719q!Rj	)	)B2qR1%%%adFQq!tVOa1f$qs*Qq2wB-@-@@A A A A A Ar   c                     t          t          t          t          z             t          t          z   dd          dt          t          z   dz  dz  z
  t	          t          dz  t          dz  t          z  z   t          dz  t          dz  z  z   t          t          dz  z  z   t          dz  z   t          t                    z   k    sJ d S )Nr   r   rR  r   r   r   )rc   r>   r   r  ra   r   r   r   test_X16r{  
  s    3q1u::q1ua000AQ
14DadQT!Vmad1a4i'!AqD&01a47A>>5? ? ? ? ? ? ?r   c            	      |   t          t          t          t                    t          z                      t	          dt
          z  ddt
          z  dz
  z  z  t          dt
          z            z  t          dt
          z  z  z  t
          t          dt
          z            z  z  t
          dt          f          k    sJ d S )Nr3  r   r   )	r   r/   rB   r   r   r   r%   r#   r   r   r   r   test_X17r}  
  s     s3q66!8}}R!GA!aL 1Q3/AaC8!IacNN:JKaQRTVZXXY Y Y Y Y Yr   c            
      r   t          d          } t          t          t                     t	          t                    z            t          dt          j        | z  z  t	          t          dd          | z  t          z            z  t          | z  z  t          |           z  | dt          f          k    sJ d S )Nr   r   r   r   r   )r   r   r.   r   rB   r   r   r  r   r   r#   r   rs  s    r   test_X18r  
  s    . 	c

AsA2wws1vv~AqM#a1ggail+++AqD01=1bzJJK K K K K Kr   c                       t          d          )NzTSolve using series not supported. Inverse Taylor series expansion also not supportedr#  r   r   r   test_X19r    s      4 5 5 5r   c                       t          d          )Nz'Symbolic Pade approximant not supportedr#  r   r   r   test_X20r    s     G
H
HHr   c                     t          dd          } t          ddd          }t          t          t          |  | f          }|j        j        dk    sJ |j        j                            |j        j        d         d          dk    sJ |j        j                            |j        j        d         |          d| z  t          z  d|z  z  |z  t          |t          z  t          z  | z            z  k    sJ d	S )
z
    Test whether `fourier_series` of x periodical on the [-p, p] interval equals
    `- (2 p / pi) sum( (-1)^n / n sin(n pi x / p), n = 1..infinity )`.
    r\  Trs  r   )r  r   r   r
  r3  N)
r    r   r   anformulabnr  	variablesr   rB   )r\  r   r  s      r   test_X21r  "  s    
 	d###AdD111Aq1qb!*%%A 4<1 4<QT^A.22a77774<QT^A.22
1R2'AAbDF1H-. . . . . .r   c                       t          d          )NzFourier series not supportedr#  r   r   r   test_X22r  4  s    < <
=
==r   c                      t          dd          } t          dd          }t          d          }t          t          |dz
  | z            | |          \  }}}|||dz  |dz
  dz  z   z  k    sJ d S )	NrO  Trs  r  r_  r  r   r   )r    r   r>   rO  r  r  ri  r  s        r   test_Y1r  U  s    d###A$AAQUAI155GAq!1a41q51*$%%%%%%%r   c                      t          dd          } t          dd          }t          d          }t          ||dz  |dz
  dz  z   z  || d	          }|t          | |dz
  z            k    sJ d S )
NrO  Trs  r  r_  r  r   r   ro   )r    r   r>   )rO  r  r  r   s       r   test_Y2r  ]  s    d###A$AA!!QTQUQJ%6"7AMMMAAq1uIr   c                  
   t          dd          } t          dd          }t          d          }t          t          || z            t          || z            z  | |d          \  }}}|||dz  d	|dz  z  z
  z  k    sJ d S )
NrO  Trs  r  r_  r  r  r   r   )r    r   r2   r1   r  s        r   test_Y3r  e  s    d###A$AAQqS		$qs)) 3QDIIIGAq!1a4!AqD&=!!!!!!!r   c                  
   t          dd          } t          d          }t          t          dt          |           z            | |d          \  }}}|d|z  t	          dt          |          z            |z  z
  k    sJ d S )	NrO  Trs  r  r   r  r   r  )r    r   rx   r8   r.   )rO  r  ri  r  s       r   test_Y4r  m  s    d###AAAd1ggI1tDDDGAq!!c"T!WW*ooa''''''''r   c                  >   t          dd          } t          d          }t          d          }t          d          }t          t          t	           ||           | d           ||           z   dt          | d	z
            t          | dz
            z
  z  z
  | |d
          ||i          }| |dz   ||          z  z   | |d          z  z
   ||          z   t          t           ||           |           | d          z
  dt          |           z  |z  z
  dt          d|z            z  |z  z   }|dk    sJ t          | ||                    d         }t          || |d	dgi          }||dz  t          d|z            z  dt          |          z  z   dz
  t          d|z            z  ||dz  d	z   z  z  k    sJ t          |||           }|                    t          | d	z
                                          t          | dz
                      }|ddt          | d	z
            z  z
  t          | d	z
            z  dt          | dz
            z  dz
  t          | dz
            z  z   t          |           t          |           z  z   k    sJ d S )NrO  Tr_  r  r  r3  r   r   r   )nocondsr   r
  )r    r
   r   r   r   ru   r   r	   r.   rr   r   r   rA  r>   )rO  r  r  r3  ri  DYfyfs           r   
test_Y5_Y6r  t  s    	$AAAA0aaddAq1A1AAAaDD1H"#Yq1u%5%5	!a%8H8H%H"I2J !1d 4  4  467V	= 	=A 
QT!!A$$Y11Q44!!A$$&j1q.A.A1a)H)HH	#qb''	!	BqD		k!m	$  6666 
q!!A$$	B	r1q1a&k	2	2B!Q$s1Q3xx-!CFF(*Q.BqD		91adQh<HHHHH	"2q!	,	,B	IacNN	#	#	+	+IacNN	;	;B	
Qs1q5zz\	9QU+++	
3q1u::	9QU+++	,Ay||	     r   c                     t          dd          } t          dd          }t          d          }t          ddt          d	t          z  t	          | t          |z  z
            z  t          dt
          f          z  z   | |          \  }}}|dt          d	t          z  t          | t          z  |z            z  |z  t          dt
          f          z  d|z  z   k    sJ d S )
NrO  Trs  r  r_  r  r   r   r3  )r    r   r   r   ru   r   r.   )rO  r  r  ri  r  s        r   test_Y7r    s    
 	d###A$AAAc2')A!G2D2D*D+,a*'6 '6 %6 !678!= =GAq!
 #rAgc1"Q$q&kk)!+aBZ8881Q3>>>>>>>r   c                  l    t          dt          t                    t          t                    k    sJ d S r  )r   r   r  rE   r   r   r   test_Y8r    s+    Q1%%A666666r   c                      t          t          dt          dz  z            t          t                    t	          t
                    t          t
          dz   t          dz  z  dz            z  dz  k    sJ d S )Nr  r   r   r   )r   r.   r   r  r8   r   r   r   r   test_Y9r    sj    c"QT'llAq11HHS"a%1Q''')* * * * * *r   c            	      v   t          t          t                    t          dt          t                    z            z  t          t                                                    dt          dz  z  t          dz  z  dz   dt          dz  z  t          dz  z  dt          dz  z  t          dz  z  z   dz   z  k    sJ d S )	Nr  rG  r   r  r   r   r  r  )r   r\  r   r.   r  rB  r   r   r   r   test_Y10r    s    c!ffSCFF^^3Q::AACCAXad]R"RU(1a4-"RU(1a4-"?""DEF F F F F Fr   z*https://github.com/sympy/sympy/issues/7181c                      t          d          \  } }t          dd| z
  z  | |          \  }}}|t          t          t          |z            z  k    sJ d S )Nx sr   )r    r   r   r?   r   r  ri  r  s       r   test_Y11r    sY     5>>DAq
  1q5	1a00GAq!3r!t99r   c                      t          d          \  } }t          t          d|           | dz  z  | |          \  }}}|d|dz
  z   t          |dz            z  t          | dz  dz             z  k    sJ d S )Nr  r   r   r   )r    r   rD   rH   r  s       r   test_Y12r    s     5>>DAq wq!}}QT11a88GAq!QUE!A#JJ&uaRTAX6666666r   c                       t          d          Nzz-transform not supportedr#  r   r   r   test_Y13r         9
:
::r   c                       t          d          r  r#  r   r   r   test_Y14r    r  r   c            	      |   t          d          } t           | t          dz             d | t          dz             z  z
   | t                    z   dz
   | t                     | d          d | d          t          i                                          t          dz  t          t          dz
  z  z   dz   k    sJ d S )Nr  r   r   r   )r
   r   r   r   ro   r  s    r   test_Z1r    s    A11QU88a!a%j(11Q44/!3QQqTTAaDD!QQqTT1%' ''/xzzQTAq1uI5E5IJ J J J J Jr   c            	      :   t          d          } t           | t                    d | t          dz
            z  d | t          dz
            z  z
  z
   | t                     | d          d | d          di          dt          z   dt          z  z   k    sJ d S )Nr  r   r   r   r   r   r   )r
   r   r   r  s    r   test_Z2r    s    A11Q441QQq1uXX:!!AE((
23QQqTTAAaDD!QQqTT1;MNN1uq!t|     r   c            	      X   t          d          } t          d          dz  t          d          dz  z
  t          z  t          d          dz  t          d          dz  z
  z  t          d          dz  t          d          dz  z   t          z  t          d          dz  t          d          dz  z   z  z   }t	           | t                     | t          dz
             | t          dz
            z   z
   | t                     | d          d | d          di          }||k    sJ d S )Nr  r   r   r   r   )r
   r   r8   r   r   )r  expectedr  s      r   test_Z3r    s   A 1a$q''!)#a'1a$q''"*)<=1a$q''!)#a'aadd1f)<=>H
11q5AAa!eHH,-qqttaaddAqqttQ5G
H
HC(??????r   c            
         t          d          } t          d          }t           | t                    d|z   |t          dz
  z  z
  |t          dz   z  z
  d|t          z  z
  z   | t          dz
            z  |d|t          dz
  z  z
  z  d|t          dz
  z  z
  z   | t          dz
            z  z
  dz   z
   | t                     | d          d | d          dd|z  z   |dz  z   d|z   z  i          }||t          dz   z  |t          dz   z  d|z  z
  dz
  z  t          dz   |dz  z  z   d|z  z   t          z
  |dz
  dz  |dz   z  z  z
  dk    sJ d S )Nr  r  r   r   r   r   )r
   r    r   r   )r  r  r  s      r   test_Z4r    s    	AA 	qqttAAaC(1qs83a!Q$h?!a%HA!H%q1qs8|4QQq1uXX=>@AB C1Q44!!A$$11Q44!ac'AqD.1q5!9:	< 	<A AEAq1uI!Oa/0!eQT\aC "#$'(sQh!n6 69:; ; ; ; ; ;r   c                     t          d          \  } }t          t          t                    t          d          dt          t                    z  z   t	          dt          z            z
  }t          |t          t                              }t          t          |j                  } |t                    |t	          dt          z            z  | t          dz  z
  t          dt          z            z  z   k    sJ t          t          t           |t                    t                              }t           |d           |d          f          } |t                                        | ||                                        |||                   }|t           t          dt          z            z  dz  t	          dt          z            dz  z   k    sJ t          d          )NzC1 C2r   r   r   r   z1ODE solving with initial conditions not supported)r    r	   r   r   rB   r   r   rhsr>   r   rr   r  r$  )C1C2r  r  f0rI  
const_dictresults           r   test_Z5r    sy    WFB 
AaDD!Q		!AaDD&	(3qs88	3B
QqTT

C	37		B2a55Bs1Q3xxK2!8S1XX"555555	41q>>	"	"B1rr!uu~&&JRUUZZJrN++00Z^DDFaRAaC[]S1XXaZ/////     r   c                     t          dd          } t          d          }t          t          |           | d          dt          |           z  z   t          d| z            z
  }t	          || |          \  }}}||dz  t          t          |           | |          z  dt          t          |           | |          z  z   d|dz  dz   z  z
  k    sJ d S )NrO  Trs  r  r   r   )r    r	   r   rB   r   r   )rO  r  r  ri  r  s        r   test_Z6r    s     	d###AA	AaDD!Q		!AaDD&	(3qs88	3BAq))GAq! A&qttQ222qttQ***+-.1q\: : : : : : :r   (  __doc__sympy.assumptions.askr   r   sympy.assumptions.refiner   sympy.concrete.productsr   
sympy.corer   sympy.core.evalfr   sympy.core.functionr	   r
   r   r   r   r   r   sympy.core.mulr   sympy.core.intfuncr   sympy.core.numbersr   r   r   r   r   r   r   r   sympy.core.relationalr   r   sympy.core.singletonr   sympy.core.symbolr   r   r    (sympy.functions.combinatorial.factorialsr!   r"   r#   r$   %sympy.functions.combinatorial.numbersr%   r&   r'   r(   $sympy.functions.elementary.complexesr)   r*   r+   r,   &sympy.functions.elementary.exponentialr-   r.   r/   %sympy.functions.elementary.hyperbolicr0   r1   r2   r3   #sympy.functions.elementary.integersr4   r5   (sympy.functions.elementary.miscellaneousr6   r7   r8   $sympy.functions.elementary.piecewiser9   (sympy.functions.elementary.trigonometricr:   r;   r<   r=   r>   r?   r@   rA   rB   rC   sympy.functions.special.besselrD   'sympy.functions.special.delta_functionsrE   *sympy.functions.special.elliptic_integralsrF   rG   'sympy.functions.special.gamma_functionsrH   rI   sympy.functions.special.hyperrJ   #sympy.functions.special.polynomialsrK   rL   &sympy.functions.special.zeta_functionsrM   sympy.geometry.utilrN   sympy.logic.boolalgrO   sympy.matrices.denserP   rQ   !sympy.matrices.expressions.matmulrR    sympy.ntheory.continued_fractionrS   rw  rT   rx  rU   r}  rV   r  sympy.ntheory.factor_rW   sympy.ntheory.generaterX   sympy.polys.domains.integerringrY   sympy.polys.orthopolysrZ   sympy.polys.partfracr[   sympy.polys.polytoolsr\   r]   r^   r_   sympy.series.limitsr`   sympy.series.orderra   sympy.series.residuesrb   sympy.series.seriesrc   sympy.sets.fancysetsrd   sympy.sets.setsre   rf   rg   rh   sympy.simplify.combsimpri   sympy.simplify.hyperexpandrj   sympy.simplify.powsimprk   rl   sympy.simplify.radsimprm   sympy.simplify.simplifyrn   ro   sympy.simplify.sqrtdenestrp   sympy.simplify.trigsimprq   sympy.solvers.solversrr   r9  rt   ru   'sympy.functions.special.error_functionsrv   rw   rx   ry   sympy.testing.pytestrz   r{   r|   r}   r~   sympy.utilities.iterablesr   r   r   sympy.matricesr   r   r   &sympy.matrices.expressions.blockmatrixr   r   sympy.matrices.expressionsr   r   sympy.physics.quantumr   sympy.polys.ringsr   sympy.polys.fieldsr   sympy.polys.solversr   sympy.concreter   r   sympy.integralsr   sympy.integrals.transformsr   r   r   r   r   r   r   sympy.solvers.recurrr   sympy.solvers.solvesetr   r   r   sympy.solvers.oder   r   	itertoolsr   r   sympy.series.formalr   sympy.series.fourierr   sympy.calculus.utilr   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   r   r   r  r  r  r  r  r  r  r  r!  r%  r(  r,  r1  r4  r6  r8  r;  r>  r@  rB  rD  rI  rK  rM  rO  rR  rT  rW  r`  rb  re  rg  rk  rm  ro  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  rs  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  r  r  r  r  r  r  r  r!  r#  r&  r)  r,  r.  r1  r3  r5  r7  r:  r<  r?  rA  rE  rG  rI  rL  rN  rP  rR  rT  rV  rZ  r]  rc  re  rh  rj  rm  rq  rt  rw  rz  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r.  r0  r3  r5  r7  r9  r;  r=  r?  rA  rC  rE  rG  rI  rK  rP  rR  rT  rZ  r]  r`  rj  rl  rp  rt  rx  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  r  r  r  r  r  r  r"  r%  r'  r*  r,  r.  r5  r<  rB  rF  rK  rP  rR  rT  rW  rY  r]  r`  rc  re  rg  ri  rk  rm  ro  rt  rw  ry  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  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  r  r	  r  r  r  r  r  r  r  r  r  r   r"  r$  r&  r(  r*  r,  r/  r2  r4  r6  r9  r;  r>  rC  rE  rG  rK  rM  rO  rU  rX  rZ  r]  r_  rb  rd  rg  ri  rn  rp  rr  rt  rv  ry  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   <module>r     s*    ) ( ( ( ( ( ( ( + + + + + + + + + + + + ! ! ! ! ! !                              # # # # # #                    ( ( ( ( ( ( ( ( " " " " " " 4 4 4 4 4 4 4 4 4 4            Z Z Z Z Z Z Z Z Z Z Z Z
 
 
 
 
 
 
 
 
 
 
 
 E E E E E E E E E E
 
 
 
 
 
 
 
 
 
 
 
 > > > > > > > > C C C C C C C C C C : : : : : :( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 2 2 2 2 2 2 > > > > > >        D D D D D D D D / / / / / /        : : : : : : % % % % % % # # # # # # 3 3 3 3 3 3 3 3 4 4 4 4 4 4- - - - - - - - - - - - , + + + + + - - - - - - . . . . . . 0 0 0 0 0 0 & & & & & & > > > > > > > > > > > > % % % % % %             ) ) ) ) ) ) & & & & & & ) ) ) ) ) ) D D D D D D D D D D D D , , , , , , 2 2 2 2 2 2 5 5 5 5 5 5 5 5 * * * * * * 8 8 8 8 8 8 8 8 0 0 0 0 0 0 , , , , , , ' ' ' ' ' '  : : : : : : = = = = = = ? ? ? ? ? ? ? ? ? ? 7 7 7 7 7 7 E E E E E E E E E E E E E E 0 0 0 0 0 0         3 3 3 3 3 3 3 3 3 3 N N N N N N N N ? ? ? ? ? ? ? ? , , , , , , & & & & & & ( ( ( ( ( ( - - - - - -       + + + + + + % % % % % %D D D D D D D D D D D D D D D D D D ( ' ' ' ' ' D D D D D D D D D D $ $ $ $ $ $ * * * * * * ' ' ' ' ' ' ' ' # # # # # # / / / / / / ' ' ' ' ' ' :
''

1a7=$777 1aAqHSMMHSMM< < <
N N N# # #
7 7 7K K K
  : : :       2 2 2       . . .  & & &$ $ $  : : :      [ [ [ J J J1 1 1% % %
      : : :     D D DB B B# # #
 X X X N N N H H H P P P 9 9 9 3 3 3 P P P
 ^ ^ ^ \ \ \) ) )> > > Q Q Q Y Y Y c c c# # #  . . .     B B B F F F N N N
  J J J/ / /6 6 6
 < < </ / / + + +5 5 5
+ + +" " "# # # 2X1b53q!t8#bAg-1b582=2X1b52ae8#bBh.ArE9Bq"uHDrIq"uHr!R%x"QT'!Bq!tG+bd2R7  4 4 4% % %- - -  % % %- - -0 0 0 C C C) ) ) Y Y Y9 9 9: : :   7 7 7 D D D
 K K K
K K K) ) )8 8 8" " "
P P P
$ $ $ M M M
 K K K     L L L
@ @ @4 4 4 + + +: : :X X X < < < j j j 6 6 6 - - - 6 6 6
W W W gX X  X   * * *Y Y Y f f f* * *W W W[ [ [: : :, , ,4 4 4f f f
_ _ _ ^ ^ ^( ( (
' ' '
 E E E H H HX X X B B B, , ,: : : K K K
I I I9 9 9; ; ;
  0 0 00 0 0
0 0 0. . .4 4 4Y Y Y@ @ @ ; ; ;L L L K K K D D D
 V V V E E E< < < j j jG G G
 
 
 F F F X X X3 3 3
 5 5 5   c c c
 X X X
: : : Q Q Q
 ? ? ? S S S/ / /
; ; ;5 5 5I I IH H H3 3 3Q Q Q= = =
4 4 4 q q qH H H
L L L] ] ] U U U V V V Y Y Y
W W W
B B B" " "
<3 <3 <3~	P 	P 	P   * * * 6 6 6 ; ; ;
 E E E
 O O  O
 6 6 6
 / /  /D D DH H Hl l l
P P P
; ; ;
 I I I9 9 9A A A
 D D D
0 0 0
H H H > > >
d d d > > >0 0 0   
! ! !% % %4 L L L& & &7 7 78 8 8' ' 'P P P ) ) ) L L L% % %K K K
6 
6 
6	, 	, 	,      , , ,   I I I> > >( ( (    &" " "&$ $ $   . - - -
 - - -
+ + + C C CM M M
M 
M 
M 7 7 7$    ' ' ': : : 
 
 
 N N NG G GN N N: : :C C CI I I? ? ? 0 0 0 	/ 	/ 	/ * * * > > >* J J J1 1 1+ + +
 0 0 0< < < 
$ 
$ 
$    . . . H H H . . . , , ,* * *- - -3 3 3 5 5  5 A A A    8 8 8  : : :8 8 8
J J J
A A A
7 7 7 * * * # # #       # # #   4 4 4
3 3 37 7 70 0 0
C C C
> > >, , ,C C C
 < < < X X X L L L  7 7 77 7 7
& & &
@ @ @
   0 0 0  C C C   E E EE E E2G G G   
 < < <: : : F F F ( ( (
 3 3 3
   
P P P
9 9 9
G G GC C C ; ; ; M M MN N N
 3 3 3 N N N; ; ;# # #
 M M M A A  AA A A
 Y Y Y = = = 8 8 8 = = = > >  > M M  M
 M M  M
 Q Q  Q
) ) ) = = = H H  H : : :   > > >   = = = G G G
. . .
: : :C C C R R R ? ? ?% % %
2 2 2 3 3 3) ) ) 9 9 	 9 ) ) 	 ). . .+ + +N N NF F F  0 0 0   (/ / /G G GU U U2 2 2
A A AA A A I I IR R R K K K 233
B 
B 43
B@ @ @ Y Y Y  K K K6 5 5 5 
I 
I 
I. . .$ > > >@& & &  " " "( ( (  B ? ? ? 7 7 7+ + +
G G G
 233   43 7 7 7 ; ; ;
 ; ; ;
K K K     < < <   * 
; 
; 
; 
; 
;r   