
    MZdRq                       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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.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@mAZA ddlBmCZCmDZDmEZE ddlFmGZG ddlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZT ddlUmVZV ddlWmXZXmYZY ddlZm[Z[m\Z\ ddl]m^Z^ ddl_m`Z`maZa ddlbmcZc ddldmeZe ddlfmgZg ddlhmiZimjZj dd lkmlZl dd!lmmnZompZqmrZsmtZu dd"lvmwZwmxZx 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d9lUmZ dd:lmZmZmZ dd;lbmZ dd<lmZmZmZmZmZmZ 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dIlmZmZmZmZmZ 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_ Zd` 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 Z/d Z0ed        Z1d Z2ed        Z3d Z4d Z5d Z6d Z7dedz  z  dedz  z  z
  dedz  z  z
  dedz  z  z
  dedz  z  z
  dz
  Z8dedz  z  dedz  z  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   dez  z
  dz
  Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBed        ZCd ZDd ZEd ZFd ZGed        ZHd ZIed        ZJedÄ        ZKdĄ ZLdń ZMdƄ ZNdǄ ZOdȄ ZPdɄ ZQedʄ        ZRed˄        ZSd̄ ZTd̈́ ZUed΄        ZVdτ ZWdЄ ZXedф        ZYd҄ ZZdӄ Z[edԄ        Z\edՄ        Z]edք        Z^edׄ        Z_ed؄        Z`dل Za edګ      edۄ               Zbed܄        Zcd݄ Zddބ Zeed߄        Zfd Zgd Zhd Zid Zjd Zkd Zld Zmd Zned        Zod Zpd Zqed        Zred        Zsd Zted        Zud Zvd Zwed        Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd 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        Ze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        Z/ed        Z0ed        Z1ed        Z2d Z3d Z4d Z5d Z6ed        Z7ed        Z8d Z9ed        Z:d Z;d Z<d Z=ed        Z>eed               Z?d Z@ed        ZAed        ZBed        ZCed        ZDeed               ZEeed               ZFeed               ZGeed               ZHd ZIedÄ        ZJeedĄ               ZKedń        ZLedƄ        ZMdǄ ZNedȄ        ZOdɄ ZPedʄ        ZQd˄ ZRd̄ ZSd̈́ ZTed΄        ZUedτ        ZVdЄ ZWdф ZXed҄        ZYdӄ ZZeedԄ               Z[eedՄ               Z\dք Z]dׄ Z^d؄ Z_dل Z`dڄ Zadۄ Zbed܄        Zcd݄ Zddބ Zed߄ Zfd Zgd Zhd Zied        Zjd Zked        Zl ed      d        Zmd Zned        Zoed        Zped        Zqed        Zrd Zsed        Ztd Zud Zvd Zwd Zxd Zyed        Zzed        Z{d Z|d Z} ed      ed               Z~ed        Zed        Zed        Zd Zd Zd Zed         Zed        Zed        Zy7(  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)	AlgebraicNumberEIRationaligcdnanoopizoo)EqLt)S)DummySymbolsymbols)rfbinomial	factorial
factorial2)	bernoulli	fibonacci)	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totient)
primerangenpartitions)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skipON_CI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)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                     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 y Nre   ijklm     C/usr/lib/python3/dist-packages/sympy/utilities/tests/test_wester.pytest_B1r   w   sR    aAq!Q')Aq!*<<aA#,Q1a#;< < <r   c                  ,   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 y r   )re   r   r   r   r   r   rf   r   r   r   test_B2r   |   sa    aAq!Q')Aq!*<<aA#/AAq	Aq!9#MN N Nr   c                      t        t        t        t        t        t
              t        t              z
  t        t        t        t        t
              k(  sJ y r   r   r   r   r   test_B3r      s8    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 y r   )re   r   r   r   r   r   r   r   test_B4r      sH    	!Q	!Q79q!fq!fq!fq!f56 7 6r   c                  $    t        d      dk(  sJ y )N2   l         <:.kjFt=VfvaI= )r"   r   r   r   test_C1r      s    bMIJ K Jr   c                  V    t        t        d            dddddddddd	d	d	d	d	d	d
k(  sJ y )Nr   /                        )r   r                              %   )   +   r   )rT   r"   r   r   r   test_C2r      sB    im$B2"1!qaQ1!)   r   c                  :    t        d      t        d      fdk(  sJ y )N
   	   )i   i  )r#   r   r   r   test_C3r      s    rNJqM*k999r   c                      ddk(  sJ y )Ni
  r   r   r   r   test_C4r      s    D==r   c                  &    dt        dd      k(  sJ y )N{   234r   intr   r   r   test_C5r      s    #eQ-r   c                  L    t        dd      t        dd      cxk(  rdk(  sJ  J y )N677r   1BF   i  r   r   r   r   test_C6r      s'    ua=CrN1c11111r   c                  &    t        dd      dk(  sJ y )Ni   r   r   )r,   r   r   r   test_C7r      s    ua=Ar   c                  p    t        j                  dd      dk(  sJ t        j                  dd      dk(  sJ y )Nr   r   r      )rY   invertr   r   r   test_C8r      s2    99Q?a99Q?ar   c                  :    t        t        dd      d      dk(  sJ y )N  i  iB  J   )r   r   r   r   test_C9r      s    T4 $'2---r   c                  j    d} t        dd      D ]  }| t        d|      z  }  | t        dd      k(  sJ y )Nr   r   r   r   i  i	  )rangeR)xns     r   test_C10r      s?    	A1b\ 	Qq!W$r   c                  8    t        dd      t        d      k(  sJ y )Nr   r   z
0.[142857])r   r   r   r   r   test_C11r      s    Q7ao%%%r   c                  @    t        dd      t        dd      z  dk(  sJ y )Nr   r   r   r   r   r   r   r   test_C12r      s!    Q8aAh!###r   c                      t        dd      dt        dd      z   t        dd      z  z  } dt        dd      z  }| |k(  sJ y )Nr   r   r   r   i  r   r   testgoods     r   test_C13r      sB    R8q1R;1Q722D!Q<D4<<r   c                  l    t        t        dt        d      z  dz               dt        d      z   k(  sJ y )Nr   r   r   r   rp   r5   r   r   r   test_C14r      s.    d1T!W9q=)*a$q'k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 y )N   r   r   r   r   r   r   s     r   test_C15r     sc    d2$q1T!ba!DG)m9L6L2L-M+M'M"N NNOPD7Q;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 y )Nr   r   r      r   r   r   r   s     r   test_C16r     s^    d2$q'	>Ad2hJ648CDED7T!WtAw&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 y )Nr   r   r   r   )rm   r5   r   s     r   test_C17r     sH    DGd1g%$q'DG*;<=Dqay=D4<<r   c            	          t        t        dt        d      z         t        dt        d      z
        z  j                  d            dk(  sJ y )NTcomplexr   )ro   r5   r   r   r   r   test_C18r     sC    T"tBx-(4T"X+>>FFtFTUYZZZZr   c            	          t        t        ddt        d      z  z   t        dd      z              dt        d      z   k(  sJ y )NZ   "   r   r   r   )rm   ro   r5   r   r   r   r   test_C19r     s9    8R"T!W*_1a89:a$q'k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 y )N   N   r   r   r   r   )r5   r   r   ro   )insider   s     r   test_C20r     s\    BtAwJFFAaGOa/47:VQq!W_LMDD>_R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 y )Nr   r   r   r   r   )ro   r   r5   r   r   r   r   test_C21r     sE    OR"T!W*_1a$@ABDG$% % %r   c                  p   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 y )Nr   r   r   r   r   r          0   H   r   )ro   r5   r,   r   s     r   test_C22r     s    a!DG)mSQtAwY%771qay=#b
T!W*O K ; QZ(,.tAwJO= >D719s47Q;'))D4<<r   c                  ,    dt         z  dz
  t         u sJ y )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9r   c                  *    dt        d      z  dk(  sJ y )N        r   )r5   r   r   r   test_D1r&    s    a=Cr   c                  R    t        t        d      j                               dk(  sJ y )Niz3.29683147808856e-434295)strr+   evalfr   r   r   test_D2r*    s#    s8}""$%)CCCCr   c                      t        t        t        d      z        j                  d      j                  j                  d      sJ y )N   r   l   h	a%)r+   r   r5   r)  numaer   r   r   test_D3r/    s5    r$s)|""2&**--.@AAAr   c                  l    t        t        dd            dk(  sJ t        t        dd            dk(  sJ y )Nr	  r   r  )r2   r   r1   r   r   r   test_D4r2    s3    2q?b   1R8"""r   c                      t        d      )Nz6cubic_spline([1, 2, 4, 5], [1, 4, 2, 3], x)(3) == 27/8r!  r   r   r   test_D5r4  !  s    
V
WWr   c                      t        d      )Nz,translate sum(a[i]*x**i, (i,1,n)) to FORTRANr!  r   r   r   test_D6r6  &      
L
MMr   c                      t        d      )Nz&translate sum(a[i]*x**i, (i,1,n)) to Cr!  r   r   r   test_D7r9  +      
F
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<  0  s    
 N
OOr   c                      t        d      )Nztranslate D8 to FORTRANr!  r   r   r   test_D9r>  8  s    
7
88r   c                      t        d      )Nztranslate D8 to Cr!  r   r   r   test_D10r@  =  s    
1
22r   c                      t        d      )Nz.flops(sum(product(f[i][k], (i,1,k)), (k,1,n)))r!  r   r   r   test_D11rB  B  s     N
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 y )
Nr   r   r   r   r   r   )r   r   r   r   r   test_D12rG  H  sX    AJNSAY&1,BAqD0@3sB<PQ>0QTWXY[\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_D13rI  M  s    
Z
[[r   c                  ^    t        t        d      t        dt        z   z  dt        z   z  k(  sJ y )Nr   r   r   )r    r   r   r   r   test_F1rK  W  s'    a8q!a%y!a%((((r   c                  v    t        t        t        d            t        t        dz
  z  t        dz
  z  dz  k(  sJ y )Nr   r   r   r   )r   r!   r   r   r   r   test_F2rM  [  s1    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 y Nr   r   )ri   r   r"   r#   r   r   r   test_F3rP  _  s<    AqD9Q<'*QqS1W*==>)AaC.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 y rO  )ri   r   r"   r   r   r   r   r   test_F4rR  d  sG    AqD9Q<''!A#'Aq!9*EEF)TUVWTW.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 y Nr   r   )rE   r   r   r5   r   r"   r   r   r   test_F5rU  i  sY    Qq!WR(9Q<79QqS>!aPQc(;RS\]^S_abSb;bbbbr   c                      t        d      D  cg c]  } | j                          }} ddidddddidddddig}||k(  sJ y c c} w )Nr   r   )r   r   r   )r   r   )r   copy)ppartTestpartDesireds      r   test_F6r[  n  sV    ",Q-0Q0H0q6qQ<!QQ!q!fEK{""" 1s   Ac                  $    t        d      dk(  sJ y )Nr   r   rW   r   r   r   test_F7r]  t  s    q>Qr   c                  *    t        ddd      dk(  sJ y )Nr   r   T)signedirs   r   r   r   test_F8r`  x  s    Aq&#---r   c                  $    t        d      dk(  sJ y )Nr   i@  )rU   r   r   r   test_F9rb  |  s    4=Cr   c                  <    t        t        dd            ddgk(  sJ y )N/B iDB iCB )listrV   r   r   r   test_G1rf    s!    
67+,0AAAAr   c                      t        d      )Nz$find the primitive root of 191 == 19r!  r   r   r   test_G2rh    s    
D
EEr   c                      t        d      )Nz,(a+b)**p mod p == a**p + b**p mod p; p primer!  r   r   r   test_G3rj    r7  r   c                  
   t        t        d      j                               j                  d      t	        dd      k(  sJ t        t        d t        t        t        d                              d   t	        dd      k(  sJ y )Nr   r     c                      | j                   dk  S )Nr  )qr   s    r   <lambda>ztest_G15.<locals>.<lambda>  s    ACC2I r   r1  )	r   r5   r)  limit_denominatorr   re  r   cf_ccf_ir   r   r   test_G15rt    sj    DGMMO$66r:aBiGGG	-tDaM/BCDRH	"b	  r   c                  V    t        t        t        t              d            g dk(  sJ y )Nr   )
r   r   r  r   i$  r   r   r   r   r   )re  r   rs  r   r   r   r   test_G16rv    s!    tBx#$(IIIIr   c                  0    t        ddd      dg dgk(  sJ y )Nr   r   r   r   )r   r   r   r   )cf_pr   r   r   test_G17ry    s    1b>a....r   c                      t        ddd      dggk(  sJ t        dgg      j                         t        j                  t        d      dz  z   k(  sJ y )Nr   r   r   )rx  cf_rr   r   Halfr5   r   r   r   test_G18r}    sL    1a=aSE!!!!;166DGAI#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 y )NsTr   positiver   r   r   r   r   r   r   )r   rs  r+   re  r   )r  its     r   test_G19r    sk    TD1A	s1Q3x!|c!A#hl+	,Br11ac1Q31bd";;;;r   c                  n    t        ddd      } t        d| z  gg      | t        | dz  dz         z   k(  sJ y )Nr  Tr  r   r   )r   r{  r5   r  s    r   test_G20r    s;    TD1A!A#=AQTAX....r   c                  Z    t        ddd      } t        | d| dz  dz         d| z  ggk(  sJ y )Nr  Tr  r   r   )r   rx  r  s    r   	test_G20br    s7    TD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 y rO  )ro   r   rk   r   r   r   test_H1r    sR    AadFxAE
3333Qq!tVQU 4444r   c                  L    t        ddt        z  z        dt        dz   z  k(  sJ y )Nr   r   )rl   r   r   r   r   test_H2r    s%    1q!t8AE
***r   c                  4    dt         t         dz   z  z  dk(  sJ y Nr1  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 y )Nr   r   r   r   r   r   r   )r]   r   typer   args)exprs    r   test_H4r    sZ    !A#(D:99Q<199Q<1Q37"""r   @   r     r   ~   r   .   r   r   <   Q   r     r   r   r   '   S   4   6   r   F   r      r   [   V   c                  @    t        t        t        t              dk(  sJ y 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 y r   )r^   r   r  rn  r  r   r   r   test_H6r    s'    vb1f~vb1f~.!333r   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   }t        | |t         t        t              dk(  sJ y )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 y )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  rn  s      r   test_H8r    sR   	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 y )Nr   F)zeror   r   r   r   )r   r   r^   )r   r  r  s      r   test_H9r    sb    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 y )Nr   r   r   r   r   )r   r_   r  s     r   test_H10r    sd    	
1a4!AqD&1a4	!	#a	'B	
A!Q$	Q	BRQ1$$$r   c                  \    t        t        t        z  t        t        z  t              dk(  sJ y Nr   )r_   r  rn  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 y )Nr   r   )r   ro   )r-  dens     r   test_H12r    sG    
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 y rT  )ro   r+   r   r   r   r   test_H13r    s:    SVaZC!HqL12c!A#hl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 y )&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]   )rX  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 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        t        t        dz  t        dz  z   dz
        D  cg c]  } t        | z
   c}        t        dz  t        dz  z   dz
  k(  sJ y c c} w )Nr   r   r   )ro   r   r   r   rs    r   test_H15r    sU    C!Q$A+/)BCA!a%CDEAPQSTPTWXXXXCs   Ac                  l   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 y )Nd   r   r   r   r   r   r   r  r  r   r   (      r]   r   r   r   r   test_H16r    sL   !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 9r   c                  z    t        t        t        t        t        z              t        t        z  z
        dk(  sJ y r  )ro   r]   r   r  r  r   r   r   test_H17r    s+    F6"r'?+be34999r   c                  (   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 y )	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9DaC!A#I!ac	"AEAaCK0!a%!A#+>D4<<r   c                      t        d      } t        | dz
        j                  t        | dz  dz
              | dz   k(  sJ y )Nar   r   )r   r\   r   r  s    r   test_H19r  *  s<    AA;d1a4!8n-Q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  0  s    
 C 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  6  s    
 J 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 y )Nr   r   r   r   r   modulusr  r   r   r   test_H22r  <  sA    !Q$1a4-!#Q/AEA:Q
3J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 y )Nr   r   r   r   r   r   r   r   i  r  )r   r]   r   r   s     r   test_H23r  @  ss    	2	AA	
AA!Q$A+1,q!t3ad:QTAAEFA!U#q(((r   c                     t        t        j                  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 y )
NT)funcphi)aliasr   r   r   r   	extension)r   r   GoldenRatior   r]   r   )r  s    r   test_H24r  F  sx    
!--..D.9
GC!Q$1a4-!#s3	
S1q53;Q-q3w78 8 8r   c                  |    t         dt        dz  z  z
  dt        dz  z  z   dz  } t        t	        |             | k(  sJ y )Nr   r   r  r   r  r  r]   r   )es    r   test_H25r  L  s<    	
Qq!tVa1f	#A&)!!!r   c                  0   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 y )Nr   r   r  F)r   )r   r?   r   r;   r  r@   r  r]   )r   s    r   test_H26r  Q  sy    A3q619$qQ{2R78A!E"Aw3q619'<qQ{'JR&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 y )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  V  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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 y )Nr   r   r  r  r   r  )r]   r   r  r   r   r   test_H29r  e  sD    !AqD&2a46/Bq!tG+Q7AEAE?JJJr   c                  B   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 y )Nr   r  r   r   )r]   r   r  r5   r   r   )r   answers     r   test_H30r  j  s    !Q$A+b2D!ea!a1gXQ	!3445q1qAwh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 y )Nr   r   r   r   r   )r   r[   r  s     r   test_H31r  p  su    	
A!a!Q$1a4-!A#-12A	QUQJa!e$qAE{2A8q==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  v  s    
 K L Lr   c                      t        dd      \  } }}t        | t        ||            t        |t        ||             z   t        |t        | |            z   j                         j                         dk(  sJ y )NzA, B, CF)commutativer   )r   r   doitr   )ABCs      r   test_H33r
  |  sr    iU3GAq!q*Q*+
Q
1a(
)*
Q
1a(
)*+/46&&(a@ @ @r   c                  x    t        t        t        dd      z        t        ddt        d      z  z          k(  sJ y )Nr   r   r   r   r   )r@   r   r   r5   r   r   r   test_I1r    s3    r!Ar({Q47] 33333r   c                  V    t        dt        d      z   dz        t        d       k(  sJ y )Nr   r   r   r   )r5   r;   r   r   r   test_I2r    s'    SVQCF7***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 y )Nr   r   r   r1  )r;   r   r   r?   r   r   r   test_I3r    s:    qt9sAaC!GR<>**rAgk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 y )Nr   r1  r   )r   r;   r   r   r?   r   r   r   r   r   test_I4r    sT    #bQrTl#c"Q$s1R4y.&99199Q<HRRSGVWK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 y )Nr   r   r   r   r  r   )r?   r   r   r   r   r   test_I5r    sD    1QAa!Q$q&(1R4/25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ir   c                      t        dt        z        t        t              z  t        t              dz  dt        t              dz  z  z
  k(  sJ y Nr   r   r;   r   r?   r   r   r   test_I7r    s9    qs8CF?c!fai!CFAI+5555r   c                  ~    t        dt        z        t        t              z  dt        dt        z        z  dz
  k(  sJ y )Nr   r   r   )r;   r   r   r   r   test_I8r    s0    qs8CF?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 y r  r  r   r   r   test_I9r    s;     qs8CF?c!fai!CFAI+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 y Nr   r   r  )rq   r@   r   r;   r?   r   r   r   r   test_I10r!    sN    SVQY]SVRZ/CFAIA	4IA4MNOSV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k7  sJ y )Nr   r   r  r   )r`   r@   r   r;   r?   r   r   r   test_I11r$    sU     #a&!)a-#a&"*,QSVQY1F1JKQPQRVW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 y r   )r   r@   r   r;   r?   r   )ress    r   test_I12r'    sT     A	AA
*s1vqy3q619/Dq/HI1
MC#::r   c                  8    t        d      t        dd      k(  sJ y )Nr   ii  )r$   r   r   r   r   test_J1r)    s    R=AeSM)))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 y Nr   )r   rC   r   r  rD   r   r   r   test_J2r,    sF    
1ad#Q'Jq!Q$,?*QPQSTPTBU,UWX+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_J3r.    s    
d
eer   c                  X    t        t        dd            dt        t              z  k(  sJ y )Nr1  r   r  )rE   r   r5   r   r   r   r   test_J4r0    s"    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 y )Nr   r   r   r   )rF   r   r,   r5   r   r   r   r   r   test_J5r2    sG    Q!Q SVGd1gbjl$:Z$G#dSTg,$VVVVr   c                  f    t        j                  dd      j                  t        dd            sJ y )Nr   y      ?      ?z0.04157988694396212z0.24739764151330632)mpmathrA   r.  r   r   r   r   test_J6r5    s*    >>!V$'',ACX(YZZZr   c                  n    t        t        t        dd      t        dz              dt        dz  z  k(  sJ y )Nr	  r   r   )ro   rA   r   r   r   r   r   test_J7r7    s.    GAbGRT*+r2q5z999r   c                      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 y Nr   r   r   )	rA   r   r  r?   r;   r5   r   ro   r   )rX  rn  s     r   test_J8r:    sW    !AA	QCF	DAaL(AKNA%&!+++r   c                  r    t        dt              j                  t              t        dt               k(  sJ y )Nr   r   )rA   r  r   r   r   r   test_J9r<    s)    1a=a gamO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 y )Nzmu, nuTr   r   r   r   )r   rH   r5   r   rE   )munus     r   test_J10r@    sk    Xt,FB"b!$2d2hub2gq[1_7M(MeVXUX[]U]`aUacdTdNe(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 y )Nr   r   r   r   )ro   rH   r   r   r5   r   r   r   test_J11rB    sT    N1a+,!Aq'$q1a4x.9PRSTUWXTXRX[\R\9]0^^^^r   c                      t        t        dt              dt        z  t        dt              z  z
  t        dt              z         dk(  sJ y )Ni  r   i  i  r   )ro   rI   r   r   r   r   test_J12rD    s?    JtQ'!A#jq.A*AAJtUVDWWX\]]]]r   c                  H    t        ddd      } t        | d      d| z  k(  sJ y )Nr  TF)r   negativer1  )r   rI   r  s    r   test_J13rG    s)    TE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 y r  )rG   r   r|  r   r  rj   r9   )rX  s    r   test_J14rI    sC    qvvqvv1a	1a40Aq>T!WQY&&&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_J15rK    s    
  D  E  Er   c                      t        d      )Nz&diff(zeta(x), x) @ x=0 == -log(2*pi)/2r!  r   r   r   test_J16rM    r:  r   c            
      n   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 y )Nr   r   r   r   r   r   )	r   r   r   rB   r   r   r   r   r	   r   r   r   test_J17rO    s    QAqy\*a!eQY"77!A$tJqSTuDUWX?Y:YY\]_`bc[deijklmnoprsmtkuiux|  ~H  IJ  KL  IM  OP  ~Q  ST  VW  yX  jX  X  X  Xr   c                      t        d      )Nz define an antisymmetric functionr!  r   r   r   test_J18rQ    s    
@
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 y )Nzz1, z2Tr
  )r   r(   r   r'   )z1z2s     r   test_K1rU    sa    Xt,FBb1R4i=RVGbf,,,,b1R4i=BrFRVO+++r   c            
          t        dt        d      z
  t        t        dt        d      z  dz
        z  z         dk(  sJ y )Nr   r   r   r  r   )absr5   r   r   r   r   test_K2rX    s8    q47{QtAd1gIN3334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 y )Nza, bTrealr   r   )r   ro   rW  r   r5   r  bs     r   test_K3r^  !  s^    6%DAqC1qs7QqS=)*+qadacAg\6I1J/JJJJr   c            	          t        ddt        z  z         j                  d      t        d      t        t        t	        dd            z  z   k(  sJ y )Nr   r   Tr
  r   )r,   r   r   r:   r   r   r   r   test_K4r`  '  sA    q1Q3w<t,A4!Q=0HHHHr   c                  4   t        dd      \  } }t        | t        |z  z         j                  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 y )Nzx, yTrZ  r
  r   )r   r@   r   r   r?   r;   r.   r/   r   r  s     r   test_K5rc  +  s    6%DAqq1Q3w<t,QqS3qs8QqS	< 2tAaCy[#ac(T!A#Y"6728 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              k7  sJ y r+  )r5   r   r  rW  r  r   r   r   test_K6re  1  s    !CFAIQA/4!9T!W3DDDD!CFAIQA/47:::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 y )Nr  TF)r[  rF  r   )r   r5   r   rW  r  ro   )r  r  sexprs      r   test_K7rh  6  sV    $/A!CFAIQA/DTNEDGr   c                      t        dd      } t        t        d| z        dt        |       z  z
        dk7  sJ t        ddd      } t        t        d| z        dt        |       z  z
        dk(  sJ y )Nr  Tr
  r   r   F)r  rF  r   ro   r5   r  s    r   test_K8rl  =  sl    T"AD1I$q'	)*a///TE2AD1I$q'	)*a///r   c                  t    t        dd      } t        t        d| z        dt        |       z  z
        dk(  sJ y )Nr  Tr  r   r   rj  rk  s    r   test_K9ro  D  6    d#AD1I$q'	)*a///r   c                  t    t        dd      } t        t        d| z        dt        |       z  z         dk(  sJ y )Nr  T)rF  r   r   rj  rk  s    r   test_K10rr  I  rp  r   c                  D    t        d      dt        dd      z  z
  dk(  sJ y )Ni  i;r   r   r   r5   r   r   r   r   test_L1ru  R  s$    91a((A---r   c                  D    t        d      dt        dd      z  z
  dk(  sJ y )Nrd  l   ^|E!or   r   r   rt  r   r   r   test_L2rw  V  s$    <9qAw..!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 y )Nr   r   r   r   r   r   )ro   r   r   r   r   test_L3ry  Z  s]    Q!QZ!Qq!W*,q01a1aj1a1g:6M3NNQRRSWXXXXr   c                      t        t        t              dz  t        t              t        t              dz  z  z   t        t              z
        dk(  sJ y r9  )rq   r;   r   r?   r   r   r   test_L4r{  ^  s<    CFAIAs1vqy 003q69:a???r   c                      t        t        t        dd      t        z  t        dz  z               t        t        t                    z
  dk(  sJ y )Nr   r   r   r   )r,   r@   r   r   r   r-   r   r   r   test_L5r}  b  s:    s1Q719r!t#$%c!f5:::r   c                      t        t        t        dz  t        dz  z               t	        t        t                    z
  j                  t              j                  t        di      dk(  sJ y )Nr   r   r   )r,   r@   r   r   r-   r   subsr   r   r   test_L6r  g  sL    AaC"Q$J 5Q=066q9>>1vF!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 y )Nr   r   r   r   )ro   r,   r5   r   r   r   r   test_L7r  k  sE    C47QacAd1gIo.A)BCDEJJJr   c            	      4   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 y )Nr   r   r   r   )ro   r   r5   r   r   r   test_L8r  p  s    QqS1T!W9_q(DGQtAwY],CD
DG)a-1aQi!m,	-.01$q'	:<=> ?BC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 y )Nr  Tr
  r   r   r   )r   ro   rE   ry   r;   r   rk  s    r   test_L9r  v  sc    T"AAAJuQx'Q/AbDF;b!eDQK>OOPTUUUUr   c                  v    t        t        d      dz  t        dd      z   t        t        dz  dz   d      k(  sJ y rO  )r   r   r   r   r   test_M1r  ~  s5    Aq>!hq!n,1q!0D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 y )Nr   r  r   !   r   c              3   T   K   | ]   }|j                  d       j                   " yw)Tr
  N)r   is_real).0r  s     r   	<genexpr>ztest_M2.<locals>.<genexpr>  s!     ;!qxxx%--;s   &()r   r   all)sols    r   test_M2r    sG     1QT6Bq!tG#bd*R/
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 y )Nr   r   r   r      r   $   r   gr(?gr(?g<n=e?)r   r   re   r5   r   r   r   r   test_M5r    s   AqD1QT6MAadF*R1W4r!t;b@!D	RZ]abc]dRdfnquvwqxfx{  AB  |C  {C  FP  {P  ST  UY  Z[  U\  S\  ]e  Se  {e  hl  mn  ho  go  r|  g|  @  AE  FG  AH  H  IQ  Q  gQ  TX  YZ  T[  S[  ^h  Sh  kl  mq  rs  mt  kt  u}  k}  S}  @D  EF  @G  G  JT  T  WX  Y]  ^_  Y`  W`  ai  Wi  i  Ij  j  j  jr   c                     t        t        t        dz  dz
  t                    t        dd      D  ch c]H  } t	        | t
        z  t        dd      z        t        t        | t
        z  t        dd      z        z  z   J c} k(  sJ y c c} w )Nr   r   r   r   )	setr   r   r   r;   r   r   r   r?   r  s    r   test_M6r    sr    x1q!$%:?1+FQQrT!Aq'\	Qs1R4!Q<00	0FG G GFs   AB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 y )Nr   r   r  r   \   r      r      r      r      r  r   r  )r  rr   r   r5   r   r   r   r   test_M7r    sD   uQTAadF]R1W,r!Q$w6QTAC1HLAqDq5 " #	DGAIdDaQi001455a77	DGDaQ47] 33344Q66	DGAId4QtAwY/!344Q66	DGDaQ47] 33344Q66	DGAId4QtAwY/!344Q66	DGDaQ47] 33344Q66	DGDaQ47] 33344Q66	DGAIdDaQi001455a77	'


 

 

r   c                  B   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 y )Nr   r  Tr
  r   r   )	r   r   r   r+   r   Realsre   r,   r5   )r   r  s     r   test_M8r    s    sAT"AC!HqQx'!+a/AGG<#a!eaQi'(*CA$q'	0A,B1,DE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Wr   c                  l    t        t        t              t        z
  t              t        d       gk(  sJ y )Nr1  )rr   r+   r   r*   r   r   r   test_M10r    s'    Q!QXb\M?222r   c                  f    t        t        t        z  t        z
  t              t        dd      k(  sJ y r  )r   r   re   r   r   r   test_M11r    s&    AqD1Ha Ib!$4444r   c                     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 y )Nr   r   r   r1  r   )rr   r   r?   r;   r   r   r,   r5   r   r   r   test_M12r    s     !a%#a&!)a-!++C!HaK7;
BqD"Q$3s1tAw;aAQK(8&8
Qs1tAw;aAQK(8&8!8@   r   c                      t        d      } t        t        t              t	        t              z
  t              t        t        | | t        z  t        t        dd      z  z
        t        j                        k(  sJ y )Nr   r   r   )r   r   r?   r   r;   rd   r   r   r   r   Integersr  s    r   test_M13r    sU    c
AQ#a&!,1R4"QqRSW*CT9UWXWaWa0b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 y )Nr   r   r   )	r   r   r@   r   rd   r   r   r   r  r  s    r   test_M14r    sF    c
AQ!Q'8F1adRTk4JAJJ+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 y )Nr   c              3   @   K   | ]  }j                  |        y wr   )dummy_eq)r  r   gots     r   r  ztest_M15.<locals>.<genexpr>  s      :1s||A :s   r   r   r   )r   r   r?   r   r   r|  anyrh   rd   r   r   r  r   )r   r  s    @r   test_M15r    s    c
A
3q6AFF?
#C :hva1R"Q$/<1Q3r6BqAwJ./<	>hva1R"Qq!W*!45qzzB1Q3r6BqD=)1::6	8)9 : : : :r   c                      t        d      } t        t        t              t	        t              z
  t              t        t        | | t        z        t        j                        k(  sJ y )Nr   )
r   r   r?   r   r@   rd   r   r   r   r  r  s    r   test_M16r    sA    c
ACFSVOQ'8F1adOQZZ+PPPPr   c                  z    t        t        t              t        t              z
  t              t	        d      k(  sJ y r  )r   r9   r   r:   re   r   r   r   test_M17r    s(    a47*A.)A,>>>r   c                      t        t        t              t        t              z
  t              t	        t        t        d      dz
  dz              k(  sJ y )Nr   r   r   )r   r7   r   r:   re   r5   r   r   r   test_M18r    s:    a47*A.)D$q'A+q<Q2RRRRr   c                  f    t        t        dz
  t        t        dd      z  z  t              dgk(  sJ y Nr   r   r   )rr   r   r   r   r   r   test_M19r    s,    !a%AaG#Q'A3...r   c                  p    t        t        t        dz  dz         t        z
  dz   t              t        k(  sJ y rO  )r   r5   r   EmptySetr   r   r   test_M20r    s-    DANQ&*A.(:::r   c                  d    t        t        t        t              z   dz
        t        d      k(  sJ y rO  )r   r   r5   re   r   r   r   test_M21r    s%    AQK!O$	!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 y )Nr   r   r   r   r   )r   r5   r   r   re   r   r   r   test_M22r    s@    Ad1gI!Qq!W*,q01YqBx5HHHHr   c            	         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 y )Nr   Tr
  r   r   r   r1  )r   rr   r5   r   r   r|  r   ro  s    r   test_M23r    s~    T"AQtA1H~%%&	
4a"##T(2q/DGAI*E%F+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   j                         |j                         k(  sJ y Nr   r   r   )rr   r!   r   r   r,   r   )solutionr  s     r   test_M24r    s[    Q!Q1,,a0HAq1uI"FA;6==?222r   c                      t        dd      \  } }}}t        d      }t        | ||z  z  |||z  z  z
  |      d   j                         t        || z        t        ||z        z  j                         k(  sJ y )Nz:dTrn  r   r   )r   rr   r   r,   )r  r]  cdr   s        r   test_M25r    st    -JAq!QA1a4!AqD&!$Q'..0S1Xc!A#h5F4N4N4PPPPr   c                      t        t        t        t                    t        t        t                    z
        dt	        d      gk(  sJ y )Nr   r   )rr   r5   r,   r   r+   r   r   r   test_M26r    s2    c!fDG,-!SV<<<r   c                     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 y )	Nr   TrZ  r]  r   r   r   r  )	r   rr   r,   r7   r9   r   r?   r;   r+   )r   r]  s     r   test_M27r     s    $A$A T$q!Aq'zA~./!34q8! 
3s3r7Q;'((1Q723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 y )Nr   r   r   r   )assume)gOqg0eg?)r   r   r+   r   r[  r   r   r   test_M28r  *  sD    1sAE19~-!Q$6!&&)LPppppr   c                      t        d      } t        t        | dz
        dz
  t        j                        t        dd      k(  sJ y )Nr   r   r   domainr1  r   )r   r   rW  r   r  re   ro  s    r   test_M29r  /  s7    ACAJN1773yQ7GGGGr   c                      t        t        dt        z  dz         t        t        dz
        z
  t              t        dd      k(  sJ y )Nr   r   r1  )r   rW  r   re   r   r   r   test_M30r  4  s9     QqS1WAE
2A6)B: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 y )Nr   r   r  r   )r   rW  r   r3   re   r   r   r   r   test_M31r  ;  sO     SVc1"q&!a%&88!<	!BPQ(TUVWYZT[@\\\\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 y )Nr   r   r   r1  r   r3   r   re   r   r   r   test_M32r  B  sF     QAXq)3rAqD!8+<<a@IbRSDT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 y )Nr   r   r   r  g,r  r   r   r   test_M33r  I  s?     QAXq)AqDF2A6)B	ST: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 y )Nr  Tr
  r   r   r   )r   r   r   r&   re   rk  s    r   test_M34r  R  sX    T"AQUaK1q5IaL"881Q3>BiPQTUVWTWPWFXXXXr   c                      t        dd      \  } }t        d| z  d|z  z
  t        |z  z
  dt        z  z   j                         ||       t	        d      k(  sJ y )Nx yTrZ  r   r   )r   r   )r   r   r   as_real_imagre   rb  s     r   test_M35r  X  sT    5t$DAqQqS1Q3Y1_qs*88:AqAYvEVVVVr   c                      t        t        t              dz  t        t              z   dz
  t        t                    t        dd      k(  sJ y )Nr   r  r   )r   r   r   re   r   r   r   test_M36r  ]  s9     AaD!GadNQ&!-2q1AAAAr   c                     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 y )Nr   r   r   r   r   )r   r   r  r  re   r   r   r   test_M37r  d  sm    QUQY]AaC!GacMB$6AaC!b8HJAqRSTA261a.!" " "r   c            1      |   t        d      \  } }}t        | ||gt              j                         }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 y )Nza, b, czk1:50r   r  r   )r   r   rY   	to_domainr   gensr   )8r  r]  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"%//1FGV$D
 4899	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2r   c                  z   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 y )
Nr   Tr
  r   r   r   r  r   r1  )r   rr   r5   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Aq!R 1aAq!"4aAq1vQ	!3Qb4719n9M8MNaAq1vQ	!3QR$q'!)^8LM$q'!Q!Aa1 4a$rDGAI~:N9NO$q'!Q!Aa1 4ab4719n9MN	PP P Pr   c                  P    t        t        t        z  t        t        z  kD        sJ y r   )r   r   r   r   r   r   test_N1r*    s    q"ur1u}r   c                      t        dd      } t        | dz  | z
  dz   dkD        du sJ t        | dz  | z
  dz   dkD        du sJ y )Nr   TrZ  r   r   r   Fr   r   ro  s    r   test_N2r-    sV    $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 y )Nr   TrZ  r1  r   )r   r   rL   r   rW  ro  s    r   test_N3r/    s9    $As2b!9bAh'Q!555r   c                  t    t        dd      \  } }t        d| dz  z  d|dz  z  kD  | |kD  |dkD  z        du sJ y )Nr  TrZ  r   r   r,  rb  s     r   test_N4r1    sH    5t$DAqqAv!Q$Q1q5 12d:::r   c                      t        dd      \  } }}t        || dz  z  ||dz  z  kD  | |kD  |dkD  z  |dkD  z        du sJ y )Nzx y kTrZ  r   r   r,  )r   r  r   s      r   test_N5r3    sS    gD)GAq!qAv!Q$Q1q5 1QU ;<DDDr   c                      t        dd      \  } }}}t        || |z  z  |||z  z  kD  | |kD  |dkD  z  |dkD  z  |dkD  z        du sJ y )Nzx y k nTrZ  r   r,  )r   r  r   r   s       r   test_N6r5    s`     .JAq!QqAv!Q$Q1q5 1QU ;q1u EF$NNNr   c                  b    t        dd      \  } }t        |dkD  | dkD  || dz
  k\  z        du sJ y )Nr  TrZ  r   r   r,  rb  s     r   test_N7r7    s<    5t$DAqq1uq1ua!e,-555r   c                      t        dd      \  } }}t        t        | |      t        ||      z  | |k\  ||k\  z  || k\  z        sJ y )Nr   TrZ  )r   r   r   r'  s      r   test_N8r9    sT     gD)GAq!r!Qx"Q("Q16"a1f-/ / /r   c            	          t        d      } t        t        | dz
        dkD  t        j                        t        t        t         ddd      t        dt        d            k(  sJ y )	Nr   r   r   r  r1  FTr   )r   r   rW  r   r  rh   rg   r   ro  s    r   test_N9r;    s[    sACAJN1773uXrc2uVZ=[-5aT-B8D D D Dr   c                     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 y )
Nr   r   r   r   r   r   r   r  T)r   r   r   r   r  rh   rg   r   )r   rX  s     r   test_N10r=    s    sA	
QQQQ'Q/AF1IM!''2eHbS!TSW<X,4Q4,F,4Q4,F7H 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 y )Nr   r   r   r  Tr   )r   r   r   r  rh   rg   r   ro  s    r   test_N11r?    sO    sAAq1uIN1773uXrc1dTX=Y[cdegi[j7kkkkr   c                      t        d      } t        t        |       dk  t        j                        t        dddd      k(  sJ y )Nr   r   r  r   r   FT)r   r   r5   r   r  rg   ro  s    r   test_N12rA    s7    sADGaK0HQ5$4OOOOr   c                      t        d      } t        t        |       dk  t        j                        t        j                  k(  sJ y )Nr   r   r  )r   r   r?   r   r  ro  s    r   test_N13rC    s0    sACFQJqww/177:::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 y )Nr   r   r  r   T)	r   r   r?   r   r  rh   rg   r   r   ro  s    r   test_N14rE    sf    sA CFQJ!''2eHbS"Q$PTVZ<[)1"Q$D$)G7I I I Ir   c                      t        d      \  } }t        t        d| z  t        |      dz
  z  dz         dk  | t        j
                         y )Nr tr   r   )r   r   rW  r;   r   r  r  ts     r   test_N15rJ    s?    5>DAqS1c!fqj!A%&!+Q8r   c                      t        d      \  } }t        | dz  t        |      dz
  dz  z  t        |      dz  z  dk  | t        j
                         y )NrG  r   r   r   )r   r   r;   r?   r   r  rH  s     r   test_N16rL    sF    5>DAqadc!fqj1_%c!fai/!3Q@r   c                      t        t        t        z   dkD  t        t        z
  dk  ft        t        f      t        t              t        k  k(  sJ y r  )r   r   r  rW  r   r   r   test_N17rN    s:     QUQYA	*QF3A
CCCr   c                      t        dt        z   ddt        z  f      } t        t        | j	                  | j
                                    t        d      k(  sJ y )Nr   r  r   r  )r   r   r5   r   dotHMs    r   test_O1rT    sC    Ar1Q3 AquuQSSz"#tBx///r   c                  r    t        d      j                  t        d            t        dgdgdgg      k(  sJ y )N)r   r   r  )r   r   r   r   r	  r   )r   crossr   r   r   test_O2rW  $  sI    *##F9$56&2$CE$CD#BG ;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_O3rZ  +        = > >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   }
|j                  |
      j                         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 y )Nr   )
CoordSys3DDelr   r   r   r  )sympy.vectorr]  r^  base_vectorsbase_scalarsrV  r  )r]  r^  r   delopr   r   r   r   r  r  Fs              r   test_O4rd  1  s    ,3AEEannGAq!ann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cr   c                      t        d      rY  r!  r   r   r   test_O5rf  :  r[  r   c                  H   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 y )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_O10rj  C  s    			F9-vi/@AAq>f c c c&# $ % Ryk Ryk bzl&, - % s|n }o s|n&. /0 0 0 0r   c                  b    t        ddd       j                  d      t        ddddg      k(  sJ y )Nr   c                     || z
  S r   r   )r   r   s     r   rp  ztest_P1.<locals>.<lambda>T  s
    QU r   r1  r   r   )r   diagonalr   r   r   test_P1rn  S  s;    !Q*+44R8F	1r2h=   r   c                      t        g dg dg dg      } | j                  d       | j                  d       | t        ddgddgg      k(  sJ y )N)r   r   r   )r   r   r   )r   r   r   r   r   r   r   )r   row_delcol_delrR  s    r   test_P2rr  X  sT    	9i01AIIaLIIaLAA  ! ! ! !r   c                  D   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 y )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   rp  ztest_P3.<locals>.<lambda>n  s    {40 r   )r   r   r   )irF  r   r  r  )iiir   r   ru  )r   r   r   r   ry  r{  )r  r   r   r  rz  rF  )r   r  r  r  ry  )r   rt  r   ru  irx  )r   r   Tr   
ValueError)	r  A11A12A21A221A222A22r  rw  s	           @r   test_P3r  `  s    	 	A AaC1H+C
 
!C
Cac1Q3hK<DnD
d|n
%
'
'CT3K#s$D
:01tA###""""$ % % % %r   c                      t        d      )Nz*Block matrix diagonalization not supportedr!  r   r   r   test_P4r  z  s    
J
KKr   c                  X    t        ddgddgg      } | dz  t        ddgddgg      k(  sJ y )Nr   r   r   r   r   r   r   )r   rR  s    r   test_P5r    sM    BA 	AEVaVV% & & & &r   c                  R   t        t        t              t        t              gt        t               t        t              gg      } | j	                  t        d      t        t        t               t        t               gt        t              t        t               gg      k(  sJ y r+  )r   r;   r   r?   r   rR  s    r   test_P6r    s    QQ a&#a&!# 	$A66!Q<6SVGc!fW#5$'FSVG#4#6 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 y )N)r   r   r   )r   r   r   )r   r   )rE  r   rx  r   r   r   r   r   r   r   r   r   r   r   )r   r   r  r  rR  s    r   test_P7r    s    Ax	&)  	 &(5(7 !8	8	9A AEQ!a[0!QqS1W+1Q382LAaC"H1Q3846 7 8 8 8 8r   c                      t        ddt        z  gdt        z  dgg      } | j                  t        j                        dk(  sJ y )Nr   r  r  r   )ordr   )r   r   normr   InfinityrR  s    r   test_P8r    sC    BqD	Aq	 	A66ajj6!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        |j                  d            | dz  |dz  z   |dz  z   t	        |       t	        |      z  t	        |      z  z  k(  sJ y )Na b cT)nonzeror   fror   )r   r   r]   r  rW  r  r]  r  rS  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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 y )Nr   r   r   r   r   r   )r   r   r   rQ  rR  s    r   test_P10r    sw    A!G1qs7Q! 	"A 33&1aAaCj/qs7A,( ) ) ) )r   c                      t        t        t        gdt        t        z  gg      j                         dt        dz  dz
  z  t        t        dgdt        z  t        t        z  gg      z  k(  sJ y Nr   r   r1  )r   r   r  invr   r   r   test_P11r    sr     Aq6qs8 !ce1a4!8fq"g?A!tQqSk>K 7L (LL L Lr   c            	         t        t        t        gdt        t        z  gg      j                  d      } t	        t        |             }t        || |z  d      t        |t        t        t        z  t         gdt        gg      d      k(  sJ y )Nr   ADJF)evaluater1  )r   r   r  r  r^   tuplerO   )rS  r  s     r   test_P11_workaroundr    s     	AAaC!"&&u-AE!HA!QqS5)VAv	
1qb	
q	? 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 y )Nr  r  r  r1  )r   r   r   r   r   r   )r  r  r  r  s       r   test_P12r    s    
ua
#C
ua
#C
ua
#Cc3Z A&,. 	/A!##+CEEz#~cee7K/L0:1a0@#%%/H/J #K K K Kr   c            	         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      } | j                         \  }}}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 y )Nr   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   LUdecompositionro   )rS  ri  U_s       r   test_P13r    s(   Aq1u=Q1qs
QadQqSj1n=Q1q1a42a4"(<=? 	@A !GAq!A;&"3#$q5!"3#$q5!a%"3"5 6 6 6 6 A;&1a!eQU"3#$!QU"3#$!QU"3"5 6 6 6 6r   c                      t        g dg dg dg dg      } | j                         \  }}|t        g dg dg dg dg      k(  sJ y )	N)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r1  r   r   )r   r   r   r   r1  )r   r   r   r   r   )r   r   r   r   r   )r   rref)rS  r   r  s      r   test_P14r    sW    ! 	"A 668DAq))))+ , , , ,r   c                  V    t        g dg dg dg      } | j                         dk(  sJ y )N)r1  r   r   r	  )r   r  r   r   )r   r   r  r  r   )r   rankrR  s    r   test_P15r    s-    ! 	"A 668q==r   c                      t        dt        d      z  dgdt        d      z  dt        d      z  gg      } | j                         dk(  sJ y )Nr   r   r   r  r   r   )r   r5   r  rR  s    r   test_P16r    sI    47A47BtAwJ') 	*A668q==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      }|j	                         dk(  sJ y )NrI  TrZ  r   r   )r   r   r?   r;   r  )rI  rS  s     r   test_P17r    s    $A	QqS3qs8	
AQO	SV	#a!SVQY-&7Q%?@B CA 668q==r   c                      t        g dg dg dg      } | j                         t        dgdgdgdgg      t        dgdgdgdgg      gk(  sJ y )	N)r   r   r  r   )r  r   r   r   )r1  r   r   r   r   r   r   r  )r   	nullspacerR  s    r   test_P18r    sy      	!A ;;=VaS&'S&'S&'S%* + $aS&(T&'S&'S%* +	, , , ,r   c            
      p   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      }|j                         | 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 y )Nw)r   r   r   r   r   r   )r   r   r   r  r  det)r  rS  s     r   test_P19r    s   A%qQ1%Aq!tQT1a4(Aq!tQT1a4(* 	+A 557q!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Hr   c                      t        g dg dg dg      } | j                  t              j                         t        dz  dt        dz  z  z
  dt        z  z
  dz   k(  sJ y )N)r   r  r  )r  r   r   )r   r  rD  r   r   r   r   )r   charpolyr   as_exprrR  s    r   test_P21r    sX     	A ::a=  "adQq!tVmac&9A&====r   c                  p    d} dt         z
  t        |       z  }|j                         t          dz   | ik(  sJ y )Nr  r   )r   r   	eigenvals)r  rS  s     r   test_P22r  !  s6    A	
QAA;;=aR!VQK'''r   c                      t        g dg dg dg dg dg      } | j                         t        d      dt        d      dt        d	      dt        d
      dt        d      dik(  sJ y )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   rR  s    r   test_P23r  '  sn     	A ;;=	#	#	#	-!	.1   r   c                     t        g dg dg dg dg dg dg dg dg      } | j                         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 y )Nc     @  rE  r   r    q   r  r|  rE  r  r  r  r  =   1   r   r  r  r  r  r  r   ru  ;   r{  rE  r  r  r        r  r  r|  r  ru  r  r  r  r  r  rE  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  rR  s    r   test_P24r  6  s    ??@@@@@@B 	CA ;;=	#	
Q	
	&	1	
 !	
a	&	1   r   c                      t        t        g dg dg dg dg dg dg dg dg            } t        | j                  d	
            }t        g d      }t	        ||      D ]  \  }}t        ||z
        dk  rJ  y )Nr  r  r  r  r  r  r  r  T)multiple)gMcdr%  gyP9?     @@r  gx5F27ߏ@g     @gMcd@g-q=)r   r   sortedr  ziprW  )MFev_1ev_2r   r  s        r   test_P25r  I  s    	
6CCCCCCCCE F 
GB ",,,-.D	89D D$ "11q5zE!!!"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	      }|j                  d      t        d      dt        d      dik(  sJ y )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   r1  r1  r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r1  r1  )	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a4rS  s         r   test_P26r  \  s     !12BBB"rcB3bS1q1q999999999; 	<A ;;U;3	
	
8$ $ $ $r   c                  j   t        d      } t        | ddddgg ddd| ddgddd| dgg dg      }|j                         | 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 y )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  rS  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      } | j                         \  }}|t        g dg dg dg d	g d
g      k(  sJ y )N)r   r   r   r   r1  )r   r   r  r   r  )r   r   r1  r   r  )r   r1  r   r   r   )r   r1  r   r1  r   )r1  r   r   r   r   )r   r   r   r   r   r  )r   r   r   r   r   r  )r   jordan_form)rS  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Br   c            	      (   t        ddgddgg      } t        |       j                  t              j	                         t        t
        t        d      z  t
         t        d      z  gt
        t        d      z  t
        t        d      z  gg      k(  sJ y )Nr   r  r   )r   r+   rewriter;   ro   r   r?   rR  s    r   test_P32r    s    BA 	Aq6>>#'')VaAh3q6	5J67Ah3q65J5L .M M M Mr   c                     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        j                  t              j                         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 y )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   r?   )r  rI  rS  s      r   test_P33r    s   5>DAq&qq!A#&&BqD!AqD&A&( 	)A qs8C '')V	
BqD1S1X:a<!A#a%!C!H*"4bQqSk!mac6IJ	
3qs8aAc!A#h1!4qQqSzJ	
Qs1Q3xZ\AaCRAaC[1_s1Q3xzJ	
Bs1Q3xK!C!HQqSJ	5L .M M M Mr   c                     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 y )Nr  TrZ  r   r   r   )r   r   r?   r;   r  s       r   test_P34r    s3   gD)GAq!Aq!Q"Aq!Q"Aq!Q"Aq!Q"Aq!Q"Aq!Q"$ 	%A q6Vc!fc!faAq9QAq!4CFAq!4As1vs1vAwqyAAq#a&#a&9Aq!SV46 7 7 7 7r   c                  r    t         dz  t        g dg dg dg      z  } t        |       t        d      k(  sJ y )Nr   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r?   r   rR  s    r   test_P35r    s<    
1VY  ! 	!A
 q6SVr   c                  d    t        ddgddgg      } t        |       t        ddgddgg      k(  sJ y )Nr   r   r   r   r   r   )r   r5   rR  s    r   test_P36r    sM    QB 	A7fq!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 y )N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r|  r   rR  s    r   test_P37r    sU    	 	A aff9AaGQ(7(7 9 : : : :r   c                      t        g dg dg dg      } t        t              5  | t        j                  z   J # 1 sw Y   y xY w)Nr  )r   r   r   )r   r   AssertionErrorr   r|  rR  s    r   test_P38r    sE    i A 
	 	166	 	t s	   :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Mr   c            	      $   t        dd      \  } }t        | t        |      z  | t        |      z  g      }|j	                  t        | |g            t        t        |      |  t        |      z  gt        |      | t        |      z  gg      k(  sJ y )NrG  TrZ  )r   r   r;   r?   jacobian)r  rI  rS  s      r   test_P40r#    s    5t$DAq#a&!CF(#$A::faVn%#a&1"SV)1D25a&1SV81D1F *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 y )NrG  TrZ  r   )r   rM   r?   r   r;   rH  s     r   test_P41r%    s    5t$DAq1a4A;!u%Ac!fH!CF
1K23A#c!f*q!teCFl1K1M *N N N Nr   c                      t        t        t              t        t              gt              j	                         dk(  sJ y r  )rN   r;   r   r?   ro   r   r   r   test_P42r'  
  s-    c!fc!f%q)224999r   c            	         d } t        dd      \  }}t        |t        |      z  |t        |      z  g      } | |||g      t        t        |      | t        |      z  gt        |      |t        |      z  gg      k(  sJ y )Nc                     t        |D cg c]  }| j                  |      j                   c}      j                  S c c}w r   r   r   r}  )rS  Yvs      r   __my_jacobianztest_P43.<locals>.__my_jacobian  s-    A.qqvvay{{./111.s   "=rG  TrZ  )r   r   r;   r?   )r-  r  rI  rS  s       r   test_P43r.    s    25t$DAq#a&!CF(#$AAa5!Vc!fqbQi-@.1!fqQx-@-B &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 y )Nc           	          t        |D cg c]  }t        | |       c}      }t        |D cg c]  }|j                  j                  |       c}      S c c}w c c}w r   r*  )r   r+  r,  Vs       r   __my_hessianztest_P44.<locals>.__my_hessian  sG    *1DAJ*+Q//00 +/s
   A"ArG  TrZ  r   )r   r?   r   r;   )r2  r  rI  s      r   test_P44r3    s    1 5t$DAq1SVaV,/0Qx1Q3s1v:,F-.qSQZ!Q$s1v,F8H 1I I I Ir   c                      d }  | t        t              t        t              gt              j                         dk(  sJ y )Nc           	          t        t        dt        |             D cg c]+  }t        |       j                  j	                  t
        |      - c}      }|j                         S c c}w r  )r   r   lenr}  r   r   r  )r+  r,  r   rS  s       r   __my_wronskianz test_P45.<locals>.__my_wronskian"  sH    E!SV4DEqF1IKK$$Q*EF Fs   0A$r   )r;   r   r?   ro   )r7  s    r   test_P45r8  !  s4     3q63q6*A.77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      }|j                          t	        d      )	Nzi j nTr  xnr   r   r   zUnknown result)r   r   r   r  r"  )r   r   r   r:  Sms        r   test_R1r<  *  s    gtd;GAq!	dAq	!B	bAhR1X1a!e}5a77!;aAE]	KB GGI
.
//r   c                  6   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                  
       y )Nzm bzi nTr  r:  r   ynr   r   r  )r   r   r   r   r   r   r  )	r   r]  r   r   r:  r>  r   f1f2s	            r   test_R2rA  4  s    5>DAq5$6DAq	dAq	!B	dAq	!BR1X"QT(
"Q&*Q1q5M:A	aB	aBb"X1vagg.r   c                      t        ddd      \  } }d|z  t        d| z  |      dz  z  }t        ||dt        f      }|j	                         }|j                         }|d| z  t        d| z  |       z  k(  sJ y )Nn kTr  r1  r   r   )r   r!   r   r   r  ri   )r   r   skr;  r}  T2s         r   test_R3rF  A  s~    5$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_R4rH  M  s    & <
==r   c                  b   t        ddd      \  } }}}}d|z  t        | |z   | |z         t        ||z   ||z         z  t        || z   ||z         z  z  }t        ||dt        f      }|j	                         }|t        | |z   |z         t        |       t        |      z  t        |      z  z  k(  sJ y )Nz	a b c n kTr  r1  r   )r   r!   r   r   r  r"   )r  r]  r  r   r   rD  r;  r}  s           r   test_R5rJ  c  s    KEMAq!Q'HQUAE*a!eQU+,,4QUAE,BC 
DB	R!Q	B
	A	!A#a% )A,y|";IaL"H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      }|j                         |d    || dz   df   z   k(  sJ y )	NrC  Tr  gnr   r   r   )r   r   )r   r   r   r  )r   r   rL  r;  s       r   test_R6rM  m  s    5$6DAq	dAE1	%B	R1X1q5!8$q!QUm	4B779D	Bq1uaxL0000r   c                      t        ddd      \  } }t        |dz  |d| f      j                         }|j                         | dz  | dz   dz  z  dz  k(  sJ y )NrC  Tr  r   r   r   r   )r   r   r  r]   )r   r   r}  s      r   test_R7rO  t  s\    5$6DAqAqD!Aa A88:Aq1uqj****r   c                      t        ddd      \  } }t        |dz  t        | |      z  |d| f      }|j                         }|j	                         | | dz   z  d| dz
  z  z  k(  sJ y NrC  Tr  r   r   )r   r   r!   r  ri   r   r   r;  r}  s       r   test_R8rS  y  si    5$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      }|j                         j	                         d| dz   z  dz
  | dz   z  k(  sJ y NrC  Tr  r   r   )r   r   r!   r  ro   )r   r   r;  s      r   test_R9rV    sl    5$6DAq	XaQ!Aq!a%=	1B779AAJNQU#;;;;r   c                     t        ddd      \  } }}}t        t        | |      t        |||z
        z  |d|f      }|j                         }|j	                         j                  t              }|t        || z         t        |      t        || z   |z
        z  z  k(  sJ |t        || z   |      j                  t              k(  sJ |j                  t              }|t        || z   |      k(  sJ y )Nzn m r kTr  r   )r   r   r!   r  ri   r  r"   )r   r   r  r   r;  r}  rE  T3s           r   test_R10rY    s    D4@JAq!Q	Xa^HQA..Aq		:B
	A	
		i	(B1q5!9Q<	!a%!)0D#DEEEE!a%#++I6666 
H	B!a%####r   c                      t        ddd      \  } }t        | |      t        |      z  }t        ||d| f      }|j	                         }|t        d| z        k(  sJ y )NrC  Tr  r   r   )r   r!   r%   r   r  )r   r   rD  r;  r}  s        r   test_R11r[    s]    5$6DAq	!Q	!	$B	R!Q	B
	A 	!A#r   c                      t        ddd      \  } }t        t        |      dz  |d| f      }|j                         }|t        |       t        | dz         z  k(  sJ y )NrC  Tr  r   r   r   )r   r   r%   r  rR  s       r   test_R12r]    sY    5$6DAq	Yq\1_q!Qi	(B
	A	!Yq1u-----r   c                  8   t        ddd      \  } }t        t        |t        z        |d| f      }|j	                         }|j                         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 y rU  )r   r   r?   r   r  ro   r<   r;   rR  s       r   test_R13r_    s    5$6DAq	S1X1ay	!B
	A::<3qs8A:AqsQwKM(:Ac!A#hJ(GGGGGr   c                      t        ddd      \  } }t        t        d|z  dz
  t        z        |d| f      }|j	                         }|j                         t        | t        z        dz  t        t              z  k(  sJ y rQ  )r   r   r?   r   r  ro   rR  s       r   test_R14ra    sk    5$6DAq	S!A#'11ay	)B
	A::<3qs8Q;s1v----r   c            	          t        ddd      \  } }t        t        | |z
  |      |dt        | dz        f      }|j	                         }|j                         t        | dz         k(  sJ y )NrC  Tr  r   r   r   )r   r   r!   r2   r  ro   r%   rR  s       r   test_R15rc    sb    5$6DAq	Xa!eQ!Qac
!3	4B
	A::<9QU++++r   c                      t        ddd      } t        d| dz  z  d| dz  z  z   | dt        f      }|j                         t	        d      t
        dz  dz  z   k(  sJ y )Nr   Tr  r   r   r   r   )r   r   r   r  ry   r   )r   r;  s     r   test_R16re    s[    TD1A	Qq!tVa1f_q!Rj	)B779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 y )	Nr   Tr  r   r   r   g3@V瞯<)r   rW  floatr   r   r   s    r   test_R17rj    sZ    TD1AuS1a4!AqD&1a*56#$ %',- - -r   c                      t        ddd      } t        dd| z  | dz  z  z  | dt        f      }|j                         }|j	                         t        d      dz   dz  t        dz  dz  z   k(  sJ y )Nr   Tr  r   r   r   )r   r   r   r  ro   r,   r   r   r;  r}  s      r   test_R18rm    sl    TD1A	Q1QT	]Q2J	'B
	A::<CFAI:a<"a%(2222r   c                     t        ddd      } t        dd| z  dz   d| z  dz   z  d| z  dz   z  z  | dt        f      }|j                         }|j	                         t        d       dz  t        d      t        z  d	z  z   k(  sJ y )
Nr   Tr  r   r   r   r   r   r   )r   r   r   r  ro   r,   r5   r   rl  s      r   test_R19ro    s     	TD1A	Q1q1Q37#QqS1W-.Ar
	;B
	A::<CF719tAwrz"}4444r   c                     t        ddd      \  } }t        t        | d|z        |dt        f      }|j	                         }|j                         d| dz  z  t        t        | z  dz        z  dz  d| dz
  z  dz  z   k(  sJ y )NrC  Tr  r   r   r   r   )r   r   r!   r   r  ro   r;   r   rR  s       r   test_R20rq    s    5$6DAq	Xa11bz	*B
	A::<1qs8C1QK/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      }|j	                         }|j                         dk(  sJ y )Nr   Tr  r   )r   r   r5   r   r  ro   rl  s      r   test_R21rs    sh    TD1A	QQAY47T!a%[#89:Q2J	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      }|j                         }|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 y )	NrC  Tr  r   r   r1  r   r   )r   r   r"   r   r  r   r  r5   rR  s       r   test_R23ru    s    5$6DAq	S)A,	!a	!ac'0B BCA#Q3!a%.)+,ac2,8:;Q
EB 		A41QT	AadF*QqSU2Q677777r   c                      t        ddd      \  } }t        t        |d|z  dz
  z  |d| f      | dt        f      }|j	                         t
        dz  k(  sJ y )Nzm kTr  r   r   )r   r   r   r   r  r   )r   r   r;  s      r   test_R24rw    sW    5$6DAq	WQ!a[1a),q!Rj	9B7791r   c                      t        ddd      } t        t        | dz        | ddf      }|j                         j	                         dt        d      z  t        dz  z  dz  k(  sJ y )	Nr   Tr  r   r   r   i  i  )r   r   rE   r  ro   r5   r   )r   Prs     r   test_S1rz    s]    TD1A	qsaAY	'B7793tAw;r1u#4T#9999r   c                  |    t        ddd      \  } }t        ||d| f      j                         t        |       k(  sJ y NrC  Tr  r   )r   r   r  r"   r   r   s     r   test_S2r~  	  s<    5$6DAq1q!Qi %%'9Q<777r   c                      t        ddd      \  } }t        t        |z  |d| f      j                         j	                         t        | | dz   z  dz  z  k(  sJ y rU  )r   r   r   r  ro   r}  s     r   test_S3r    sV    5$6DAq1a4!Q#((*335QAYq[9IIIIr   c                      t        ddd      \  } }t        dd|z  z   |d| dz
  f      j                         j                         | k(  sJ y r|  )r   r   r  ro   r}  s     r   test_S4r    sM    5$6DAq1qs7Q1a4L)..099;q@@@r   c                     t        ddd      \  } }t        d|z  dz
  d|z  z  |d| f      j                         j                         t	        | t
        j                  z         t        t              t	        | dz         z  z  k(  sJ y rQ  )	r   r   r  	gammasimprE   r   r|  r5   r   r}  s     r   test_S5r    s{    5$6DAqQqS1WqsOaAY/446@@B!aff*tBxa!e456 7 6r   c                     t        ddd      \  } }t        t        dz  dt        z  t        |t        z  | z        z  z
  dz   |d| dz
  f      j                         j                         t        d| z  z  dz
  t        dz  dz
  z  k(  sJ y rQ  )r   r   r   r;   r   r  ro   r}  s     r   test_S6r    s    5$6DAqAqD!A#c!B$q&k/)A-1a!e}=BBDMMOAaC1q!tax() * )r   c                      t        ddd      } t        | dz  dz
  | dz  dz   z  | dt        f      }|j                         }|j	                         t        dd      k(  sJ y )Nr   Tr  r   r   r   )r   r   r   r  ro   r   r   ry  r}  s      r   test_S7r  &  s\    TD1A	!Q$(QTAX&Ar
	3B
	A::<1Q7"""r   c                      t        ddd      } t        ddd| z  dz  z  z
  | dt        f      }|j                         }|j	                         dt
        z  k(  sJ y )Nr   Tr  r   r   )r   r   r   r  ro   r   r  s      r   test_S8r  .  sU    TD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      }|j                         }|j	                         t        d      k(  sJ y )Nr   Tr  r   r1  r   )r   r   r   r  ro   r5   r  s      r   test_S9r  7  sa    TD1A	bAE]AaC!G,,q!Rj	9B
	A ::<47"""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      }|j	                         }|j                         dk(  sJ y )Nr   Tr  r   r   r1  )r   r   r   r   r  ro   r  s      r   test_S10r  A  sh    TD1A	!QU)a-!#aQi!ma&781a*	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 y r  )r`   r   r   r   r;   r   r   r|  r   r   r   test_T1r  J  sQ    !ac'Aq"%***!c!f*ad"Aq)QVV333r   c                  n    t        dt        z  dt        z  z   dt        z  z  t        t              dk(  sJ y )Nr   r   r   )r`   r   r   r   r   r   test_T2r  O  s.    !Q$A+1%q"-222r   c                      t        t        t              t        t              t        t              z   z  t        t              dk(  sJ y r  )r`   r,   r   r?   r   r   r   r   test_T3r  S  s.    QQ#a&)1b1Q666r   c                     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 y )Nr  r   r   )r`   r+   r   r   r   r   r   test_T4r  W  sq    #aQBiaR3r!Q$wA+?!?@Aq6%),Q0 0 0r   c                  j   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 y )Nr   r   r   )r`   r   r,   r+   r   r   r   r   r   test_T5r  \  s    !CF(3qQx!Q$/223s1a4c#a1fSVm,--<. 8/ 40 012B8;<Q7C C Cr   c                      t        dt        z  t        t              dt        z  z  z  t        t              t	        d      k(  sJ y Nr   r1  )r`   r   r"   r   r+   r   r   r   test_T6r  a  s3    1y|ac**Ar2c"g===r   c                  v    t        dt        z  t        t        dz         dt        z  z  z  t        t               y r  )r`   r   rE   r   r   r   r   test_T7r  e  s(    	!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 y )Nza zTrn  r   )r   r`   rE   r+   r,   r   )r  r  s     r   test_T8r  i  sM    54(DAqq1ueAh&sA2c!f9~5q"=BBBr   c                      t        dd      \  } }t        t        d|fd| |z        |t              t	        |       k(  sJ y )Nzz kTrn  r   )r   )r   r`   rG   r   r+   )r  r   s     r   test_T9r  n  s@    54(DAq 1vtQqS)1b1SV;;;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 y r  )r`   ry   r   r   r2   r   r   r   r   test_T10r  v  sL     a1a!e9$a+yA%(
9JQPQSUJ/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 y r|  )r   r`   r   r   r   rE   r}  s     r   test_T11r  {  sR    5$6DAqAq!ac'Q1I667B?58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 y )Nx tTrZ  r   r   r   )r   r`   r   r+   )r   rI  s     r   test_T12r    sb    5t$DAqYsAqD5zAq!9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 y )
Nr   TrZ  r   -dir+r1  r   )r   r`   rW  ro  s    r   test_T13r    sU    $A!CF(Aqc*!CF(Aqc*,02Aw7 7 7r   c                  z    t        dd      } t        t        t        |              | dd      t        dz  k(  sJ y )Nr   TrZ  r   r  r  r   )r   r`   r:   r,   r   ro  s    r   test_T14r    s5    $As1vg1#."Q$666r   c                  d    t        dd      } t        t        |       |       t        |       k(  sJ y )Nr   TrZ  )r   r   rW  r)   ro  s    r   test_U1r    s*    $AA?d1g%%%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 y )Nr   r1  r   r   r   r6   r   )r   s    r   test_U2r    sV    q)aRQK!Q!V56A!a=Ir1q5kAqAv;????r   c            	         t        t        t        t        dz  dz
  t        dk(  ft        dz  t        dk7  f            } t        t        t         | t              t                    } |t              dt        dz  z  k(  sJ  |d      dk(  sJ y r  r  )r   r?  s     r   test_U3r    sp    q)QTAXqAv.AqAv?@A	4!a=	!Ba5AadF??a5A::r   c                      t        ddd      } t        dd      }t        || z  ||       }|j                  t              t        |       k(  sJ y )Nr   Tr  r   rZ  )r   r   r  r"   )r   r   r  s      r   test_U4r    sI    TD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        |             j	                  | d      |k(  sJ |j                         |k(  sJ y )NrI  r   )r   r	   r   r   r   r  )rI  anss     r   test_U5r    s    A1QqT7AaD!*QqTAq6"::1QqT7QqT1I&z!A$':A'==	>  QqT7<<1$$$88:r   c                     t        d      } t        t        t              t         | t              t        t              f      }|j                  t              t        t        t                    t        t        t              t              z  t         | t                    t         | t              t              z  z
  k(  sJ y )Nr  )r
   r   r   r  r   r   r   r	   )r  r}  s     r   test_U6r    s~    A!A$AaD!A$(A66!9	!A$
1Q4##a!gj1q.A&AAC C Cr   c                  N    t        dd      \  } }t        t        | |             y )Nzp tTrZ  )r   r   r   )rX  rI  s     r   test_U7r    s!    5t$DAq
 	1aMr   c                      t        dd      \  } }t        | |z        | z   }t        ||z
  ||       | t        | |z        z  dz   | t        | |z        z  dz   z  k(  sJ y )Nr  TrZ  r   )r   r;   rK   r?   )r   r  eqs      r   test_U8r    sg    5t$DAq	QqSAB RAA2c!A#h;?Qs1Q3xZ!^"DDDDr   c            	         t        dd      \  } }t        t        | |      |       t        t        | |      |      z   }|j                  t        | |      t	        | dz  |dz  z               }|j                         j                         }|| |z   t        t        t	        |       |       | | dz  |dz  z         z  dz  k(  sJ y )Nr  TrZ  r   )	r   r   r   r  r   r  r]   r   r	   )r   r  sus2s3s        r   test_U9r    s     5t$DAq	a1gq	D1a!,	,B	1a!AqD1a4K.	)B				B !a%j1q11adQTkBB1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 y )Nr   r   r   r   r1  r  )rb   r  r   r   r   r   test_U10r    s=    AqD1H1q1q512Ar:aAh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 y )Nr   r   r  r   r   r   )r   r   r   r   r   r   test_U13r    s:    1a4!8a<#r!QqV)|A~'9999r   c                      t        d      )Nz$minimize(), maximize() not supportedr!  r   r   r   test_U14r  	  s     D
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 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 y )Nr   TrZ  r   r   )r   r   rW  r6   ro  s    r   test_V1r  	  sM    $ASVQ9q!teAgqAv->Aa#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 y )Nr   r   T)r   r6   r   r   r   r   test_V2r  !	  s_    YAE{QQK8! 
AaQ'!Q$q&$89 9 9r   c                      t        dt        dz  dz   z  t              j                         j                         dt        dz  dz   z  k(  sJ y )Nr   r   r   )r   r   r   ro   r   r   r   test_V3r  &	  sA    Q1q\!$))+446!QTAX,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 y )Nr   r   r   )r   r   r5   r-   r,   r   r   r   test_V4r  *	  s=    QT$q1a4x.(!,adCF0BBBBr   c                      t        dt        z  dz
  dz  dt        z  dz
  t        dd      z  z  t              j                         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 y )	Nr   r   r   r   r   ir  -   )r   r   r   ro   r   r   r   test_V5r  .	  s     qsQwlAaC!Ga1g#55q9BBD2a4Z"QT'!AqsQw1a&8$89: ; :r   c            
      z   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 y )Nr   r   r   r   r  )r   r+   r   r   r5   r,   r   r   r   test_V6r  5	  s     a3qs8aQBqD	k12A6$r(#ac(
T"X%&Qs1Q3xZ$r(-B)CC;EFHd;L L M Lr   c                  $   t        t        t              dz  t        t              dz  z        } | j	                         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 y )Nr   r   r  r   )r   r/   r   r.   ro   r   r0   r1s    r   test_V7r  <	  sj    	47A:d1gqj(	)B;;=AaAhJa!QtAwY)??!DG)A+MMMMr   c                      t        d      )Nz'Integrate with assumption not supportedr!  r   r   r   
test_V8_V9r  A	  s     1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 y )Nr   r   r   r   )r   r;   r   r?   r,   r@   r   r   r   test_V10r  R	  sO    QAc!fHqQx/0!4Ac!A#hJN8KA8M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 y )Nr   r   r   T)forcer   r   )	r   r;   r   r?   r]   rn   r,   r@   r   r  r2s     r   test_V11r  V	  s~    	1a!CF(lQs1vX-.	2B	Br&#ac(Q,QqSA.1a8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 y )Nr   r   r   r   r1  r   )r   r;   r   r?   r@   r  s    r   test_V12r  ]	  sK    	1a!CF(lQs1vX-.	2BS1X\""""r   c            
          t        dddt        t              z  z   dt        t              z  z   z  t              } | j	                         dt        d      z  t        t        d      dt        t        dz        z  dz   z  dz        z  dz  k(  sJ y )Nr   r   r   r   r   r   )r   r;   r   r?   ro   r5   r:   r@   r  s    r   test_V13r  b	  sw    	1a!CF(lQs1vX-.	2B ;;=Ad2hJtDHaAaCj1n,Eb,H'II"LLLLr   c            	      t   t        t        t        t        dz  t        dz  z
              t              } | j                         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 y r+  )r   r,   rW  r   r  ro   r  s    r   test_V14r  j	  s     
3s1a4!Q$;'(!	,BKKMQs3q!tq!t|#455AE
l+-.s1q5z\:<=aC@ @ A @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 y Nr   r   )r   r   r8   r  ro   r  s    r   test_V15r  s	  sY    	1T!A#Y;	"BB!A#A1d1Q3i 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 y )Nr   r   r   r   r   )r   r;   r   rv   r?   rw   r   r   r   test_V16r  x	  sk     S1Xb1g%q)R!WS1X-=a-?2ac7RPQRSPSWCTVXBX-XXXXr   c            	         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 y r  )r   r   r   r   r   ro   r  s    r   test_V17r  }	  s    	D1qM!A$&qT$qtQ-'(*+A$'AaD!G*;=>?
AB B!A$1+!qt4Q6671<<<r   c                  l    t        dt        t        z
  z  t        t        dz
  t        dz   f      dk(  sJ y )Nr   r   )r   r   r  r   r   r   test_W1r  	  s0    
 QAYAE1q5 12a777r   c                  x    t        dt        t        z
  dz  z  t        t        dz
  t        dz   f      t        u sJ y rT  )r   r   r  r   r   r   r   test_W2r  	  s4     QAz\Aq1ua!e#45<<<r   c                  |    t        t        t        dt        z  z   dz
        t        ddf      t        dd      k(  sJ y Nr   r   r   r   r   r   r5   r   r   r   r   r   test_W3r	  	  s6    
 T!ac'A+&Aq	2a1g===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 y )Nr   r   r  r   r   r  r   r   r   test_W4r  	  G     T!ac'A+&Aq	2bajlQq!W6L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 y )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 y )Nr   r  r   )r   r5   r;   r   r   r   r   r   r   test_W6r  	  sN     T!aAaCj.)!+aAb!Hrc!e-DEaPPPr   c                      t        dd      } t        t        t              t        dz  | dz  z   z  t        t         t        f      }|j                         t        t        |        z  | z  k(  sJ y )Nr  Trn  r   )r   r   r;   r   r   ro   r   r+   )r  r  s     r   test_W7r  	  sY    d#A	3q61a4!Q$;'!bS"	6B;;=BsA2wJqL(((r   c                      t        d      )Nz1Integrate with assumption 0 < a < 1 not supportedr!  r   r   r   test_W8r  	  s     ;= =r   c                  J   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      } | j                         }|dt        z  t        t        d       dz  dz         t        t        d      dz  dz         z   z  k(  sJ y )	Nr   r   r   r   r   r  r   g      ?)r   r   r   r  r   r5   r  s     r   test_W9r  	  s    
 
1QT61q51a4<!Q$.A56RC	EB	BBd1gXaZ#-.d1gai#o1FFGGGGr   c            	          t        t        dt        z   t        dz  z   t        dz  z   z  t        t         t        f      } | j                         }|dt        z  t        d      dz  dz   z  t        t        t        dd      z        z  dz  k(  sJ y )Nr   r   r   r   g      ?)r   r   r   r  r   r5   r=   r   r  s     r   test_W10r  	  sx    
 
1a!eadlQT)*QRL	9B	B2tAwqy3'BqAwJ7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 y r  )r   r5   r   r   r   r   r   test_W11r  	  sL     d1q!t8na!Q$h/!R<T!W  r   c                  N   t        dd      } t        dd      }t        t        t        |  t        dz  z  d|z  t        z  z         z  t        t         t        f      }|j                         t        t              |z  t        |dz  | z        z  | t        dd      z  z  k(  sJ y )NrX  Trn  rn  rZ  r   r   )	r   r   r   r+   r   ro   r5   r   r   )rX  rn  r  s      r   test_W12r  	  s    d#A$A	1S!AqD1Q3q5))AsB<	8B;;=DHQJs1a46{21a1g:====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 y )Nr   r   r   )r   r,   r   r   r  s    r   test_W13r  	  sN     
1SV8aQi'#c!A#h-7!Q	CB:r   c                      t        t        t              t        z  t        dt        z  t        z        z  t        t
         t
        f      dk(  sJ y r  )r   r?   r   r+   r   r   r   r   r   test_W14r   	  s8    SVAXc!A#a%j(1rc2,71<<<r   c                      t        t        t        t                    t	        dt
        z  t        z        z  t        ddf      t        dd      k(  sJ y )Nr   r   r   r   )r   r,   rE   r   r;   r   r   r   r   r   test_W15r"  	  s>     Sq]3qtAv;.Aq	:a2h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 y )Nr   r   r   r1  r  #   )r   r   rZ   r   r   r   r   test_W16r%  	  sM    a!eaZa 33M!Q4GGQZ!$%b"I. . .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 y )Na bTrn  r   r   r   )r   r   r+   r   rA   r   r5   r\  s     r   test_W17r(  	  so    54(DAqS!AYwq!A#.Q !1T!Q$q!t)a-%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 y r  )r   rA   r   r   r   r   r   r   test_W18r*  
  s4    gamAo)Aq":6!QrT(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 y )Nr   r   r   r   )r   rv   r   rA   r5   r   r;   r   r   r   test_W19r,  
  sH     RU71aQqS	k22Q2J?CFQJPQ>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 y )Nr   r   r   r   r  r   l   r   gUUUUUU'@r   )r   r   rJ   r   r   ry   r,   r   r   r   test_W20r/  
  s     ad71aQi001a)<UF2I"c
"T!WQY.!eVAX#a& 3q619,t3SV;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 y )Nr   r   r   r   g5?rg  )rW  r   r   r   rJ   r   r   r   test_W21r1  
  sP    q1a41a!e9 551ayAB
 $% % %r   c                  N   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 y )Nzt uTrZ  r   r   )r   Tr   )	r   r   r   r6   rL   r   r;   r?   r4   )rI  ur  s      r   test_W22r4  
  s    5t$DAqq)QAFAF 34i@AAQqT#a&[1a),		
AE

c!Qi.3s1ay>	)4012 2 2 2r   c                  "   t        dd      \  } }t        t        t        t        dz  t        dz  z   z  t        | |f      t        t         t        f      }|j                  t              j                         t         | z  t        |z  z   k(  sJ y Nr'  Trn  r   )r   r   r   r  r   collectr   cancel)r  r]  r  s      r   test_W23r9  #
  sp    54(DAq	9Q1q!t_q!Qi81rc2,	GB::b>  "rc!ebdl222r   c                      t        dd      \  } }t        t        t        t        dz  t        dz  z   z  t        t         t        f      t        | |f      }|j                  t              t        |  |z   z  k(  sJ y r6  )r   r   r   r  r   r7  r   )r  r]  r  s      r   	test_W23br;  *
  sc    54(DAq	9Q1q!t_q2#rl;aAY	GB::b>R!a[(((r   c            	         t         rt        d       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
  j                         dk(  sJ y )	NToo slow for CI.r  TrZ  r   r   r   r   )r~   r}   r   r   r5   r-   ro   )r   r  r  s      r   test_W24r>  1
  s       5t$DAq	9T!Q$A+.Aq	:Q1I	FB$q'E!H$a''113q888r   c            
         t         rt        d       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
  j                         dk(  sJ y )Nr=  za x yTrZ  r   r   r   )r~   r}   r   r   r?   r5   r   ro   )r  r   r  i1i2s        r   test_W25rB  =
  s      gD)GAq!	As1vd1s1vqyQ23q619<<==	
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 y )
Nr  TrZ  r   r   r1  r   r  r  )r   r   rW  r   rb  s     r   test_W26rD  J
  sV    5t$DAqYs1q!t8}q!Qi8QZ!$%b"I. . .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 y )Nr  r   r   r   )r   r   r  r   r  )r  r]  r  s      r   test_W27rF  P
  s    gGAq!YyQ1a!A#g!m3D,EF !1aQqSk2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 y )Nv cTrZ  r   r   r   r   x0r   r   r   r   r   r   r   rc   r5   ra   )r,  r  s     r   test_X1rL  W
  s    5t$DAq1T!qsQh,''qA6adFBq!tGqAvqAv.AqAv>BQq!tWLM N Mr   c                      t        dd      \  } }t        dt        d| |z  dz  z
        z  | dd      }d|dz  z  j                  | dd      | dz   |dz  z  dz   t        | dz        z   k(  sJ y )	NrH  TrZ  r   r   r   r   rI  rK  )r,  r  s1s      r   test_X2rO  ]
  s    5t$DAq	$qAaC!8|$$aA	3Bb!eGA!q)adU1a4Z!^a1g-EEEEr   c                  T   t        t              j                         t        t              j                         z  j                         } t	        t              j                         }|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 y )Nr   r   r   r  r   )r?   r   rc   r;   r@   ra   )rN  r  s     r   test_X3rQ  c
  s{    
a&--/#a&--/
)	1	1	3B	QBQT!Va1fRi'!AqD'11118O8r   c                  8   t        t        t              t        z        j                         } | 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              j                         | k(  sJ y )Nr   r   r      )r,   r?   r   rc   ra   )rN  s    r   test_X4rT  j
  sw    	SVAX			B!Q$q1a48#a1g----vc!fQh '')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       y )Nr  za b c dTrZ  r   r   rI  )	r
   r   rc   r   r   r   r   r   r  )r  r  r]  r  r  s        r   test_X5rV  p
  si     	A.JAq!Q 4!A#?QqsV#i!A#Aq	&BBar   c                  "   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 y )Nr'  F)r  scalarr   r   rI  r   )r   rc   r+   r   ra   r\  s     r   test_X6rY  
  s     5eE:DAq3Aqy>C!Hs1Q3x$77qAFdQBqDFQqSUN#a1g-. / .r   c                     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 y )Nr   r   r   r  r   r   i  r   i v  r   i u )rc   r   r+   r   ra   r   r   r   test_X7r[  
  s     1aQ!n%q!Q/1r7Q!W3DaH4!tCx4 "#Q$u*4-/0!tG|4<>?1g4F F G 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 y )Nr   TrZ  r   r   r   rI  r   r   r      )r   rc   r5   r>   r   r   ra   ro  s    r   test_X8r^  
  s    
 	$A4A<r!tAv3d1r!Aq'z>""a"Qq!W*nqAw%>r%AAAaG^a1g%c)*,-q2a1g:~.AAr!Aq'z?,STT U Tr   c                  D   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 y )Nr   r   rI  r   r   r   r   )rc   r   r,   ra   r   r   r   test_X9r`  
  s    1a4qA&!aAh,Ac!fai9I*IqDQN1+ Ac!fai0+1 1 2 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 y Nzz wr   r   rI  r   rc   r,   r/   r.   ra   r  r  s     r   test_X10re  
  s    5>DAq3tAw<#d1q5k"22A!qAQL3q6!Ad1gId1g$55!Q$?@ A @r   c            	         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 y rb  rc  rd  s     r   test_X11rg  
  s|    5>DAq3tAwa!e,-qQ!<QL3q6!Ad1gId1g$55!Q$?@ A @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 y )Nza b xTrZ  r   r   rI  )r   rc   r,   r+   ra   )r  r]  r   s      r   test_X12ri  
  s     gD)GAq! 3q619S!AY&a15UQJs1vqA!Ga!e#4Q#66AEA:FGH I 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 y )Nr   r   rI  )rc   r5   r   r   ra   r   r   r   test_X13rk  
  sG    $qAvz"A"2d1gai!AaC!R/6QQQQr   c                     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 y )Nr   r   r  )rc   r   r!   r   r   r5   r   ra   r   r   r   test_X14rm  
  so     !A!H*Xac1--QUa!$%tBxQ'7$81QqS1b'?$J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 y )Nr  TrZ  r   rI  r   r   r   r   r   r	  )r   r   r+   r   rc   ra   )r   rI  e1s      r   test_X15rp  
  s     5t$DAq 
3r719q!Rj	)B2qR1%adFQq!tVOa1f$qs*Qq2wB-@@A B Ar   c                  L   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 y )Nr   r   rI  r   r   r   )rc   r;   r   r  ra   r   r   r   test_X16rr  
  s    3q1u:q1ua0AQ
14DadQT!Vmad1a4i'!AqD&01a47A>5? ? @ ?r   c            	      2   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 y )Nr1  r   r   )	r   r,   r?   r   r   r   r$   r"   r   r   r   r   test_X17rt  
  s}     s3q6!8}R!GA!aL 1Q3/AaC8!IacN:JKaQRTVZXY Y Yr   c            
      ,   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 y )Nr   r   r   r   r   )r   r   r+   r   r?   r   r   r|  r   r   r"   r   ri  s    r   test_X18rv  
  s{    . 	c
AsA2ws1v~AqM#a1gail++AqD01=1bzJK K Kr   c                      t        d      )NzTSolve using series not supported. Inverse Taylor series expansion also not supportedr!  r   r   r   test_X19rx    s      4 5 5r   c                      t        d      )Nz'Symbolic Pade approximant not supportedr!  r   r   r   test_X20rz    s     G
HHr   c                     t        dd      } t        ddd      }t        t        t        |  | f      }|j                  j                  dk(  sJ |j
                  j                  j                  |j
                  j                  d   d      dk(  sJ |j
                  j                  j                  |j
                  j                  d   |      d| z  t        z  d|z  z  |z  t        |t        z  t        z  | z        z  k(  sJ y	)
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 )`.
    rX  Trn  r   )r  r   r   r  r1  N)
r   r   r   anformulabnr  	variablesr   r?   )rX  r   r  s      r   test_X21r  &  s    
 	d#AdD1Aq1qb!*%A 44<<1 44<<QTT^^A.2a77744<<QTT^^A.2
1R2'AAbDF1H-. . .r   c                      t        d      )NzFourier series not supportedr!  r   r   r   test_X22r  8  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 y )	NrI  Trn  r  rZ  r  r   r   )r   r   r;   rI  r  r  rc  r  s        r   test_Y1r  Y  sg    d#A$AAQUAI1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 y )
NrI  Trn  r  rZ  r  r   r   ro   )r   r   r;   )rI  r  r  r   s       r   test_Y2r  a  sc    d#A$AA!!QTQUQJ%6"7A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 y )
NrI  Trn  r  rZ  r  r  r   r   )r   r   r/   r.   r  s        r   test_Y3r  i  sq    d#A$AAQqS	$qs) 3QD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 y )	NrI  Trn  r  r   r  r   r  )r   r   rx   r5   r+   )rI  r  rc  r  s       r   test_Y4r  q  sa    d#AAAd1gI1tDGAq!!c"T!W*oa'''''r   c            	         t        dd      } t        d      }t        d      }t        t         ||       | d       ||       z   dt	        | dz
        t	        | dz
        z
  z  z
  | |d	      \  }}}||dz  t         ||       | |      z  | |d
      z  z
  t         ||       | |      z   t        t         ||       |       | d
      z
  ddt        |      z
  z  t        d|z        z  |z  z   z
  j                  d      }|d
k(  sJ y )NrI  Trn  r  r  r   r   r   r  r   r  F)r  )
r   r
   r   r   ru   r   r   r	   r+   ro   )rI  r  r  rc  r  Ds         r   
test_Y5_Y6r  x  s    	d#AAAQqT1a 01Q4 7"#Yq1u%5	!a%8H%H"I!J !1t5GAq! 
ad#AaD!Q//!AaD&8QqT1a()+/
1Q40CQ+JKq3q6zN3r!t9$Q&' 
()1u)=  6M6r   c                  l   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 y )
NrI  Trn  r  rZ  r  r   r   r1  )r   r   r   r   ru   r   r+   )rI  r  r  rc  r  s        r   test_Y7r    s    
 	d#A$AAAc2')A!G2D*D+,a*'6 %6 !678!=GAq!
 #rAgc1"Q$q&k)!+aBZ881Q3>>>>r   c                  R    t        dt        t              t        t              k(  sJ y r  )r   r   r  rB   r   r   r   test_Y8r    s    Q1%A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 y )Nr  r   r   r   )r   r+   r   r  r5   r   r   r   r   test_Y9r    sQ    c"QT'lAq1HS"a%1Q'')* + *r   c            	      6   t        t        t              t        dt        t              z        z  t        t              j                         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 y )	Nr  rE  r   r  r   r   r  r  )r   rW  r   r+   r  r8  r   r   r   r   test_Y10r    s    c!fSCF^3Q:AACAXad]R"RU(1a4-"RU(1a4-"?""DEF G 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 y )Nx sr   )r   r   r   r<   r   r  rc  r  s       r   test_Y11r    sI     5>DAq
  1q5	1a0GAq!3r!t9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 y )Nr  r   r   r   )r   r   rA   rE   r  s       r   test_Y12r    sn     5>DAq wq!}QT11a8GAq!QUE!A#J&uaRTAX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      j	                         t        dz  t        t        dz
  z  z   dz   k(  sJ y )Nr  r   r   r   )r
   r   r   r   ro   r  s    r   test_Z1r    s    A1QU8a!a%j(1Q4/!3QqTaD!QqT1%''/xzQTAq1uI5E5IJ K 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 y )Nr  r   r   r   r   r   r   )r
   r   r   r  s    r   test_Z2r    sr    A1Q41Qq1uX:!AE(
23QqTAaD!QqT1;MN1uq!t|  r   c            	         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 y )Nr  r   r   r   r   )r
   r   r5   r   r   )r  expectedr  s      r   test_Z3r    s    A 1a$q'!)#a'1a$q'"*)<=1a$q'!)#a'aad1f)<=>H
11q5Aa!eH,-qtadAqtQ5G
HC(??r   c            
      H   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 y )Nr  r  r   r   r   r   )r
   r   r   r   )r  r  r  s      r   test_Z4r    s[    	AA 	qtAAaC(1qs83a!Q$h?!a%HA!H%q1qs8|4Qq1uX=>@AB CQ4!A$1Q4!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              j                  | ||          j                  |||         }|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   r?   r   r   rhsr;   r   rr   r  r"  )C1C2r  r  f0r?  
const_dictresults           r   test_Z5r    s2    WFB 
AaD!Q	!AaD&	(3qs8	3B
QqT
C	377	Ba5Bs1Q3xK2!8S1X"55555	41q>	"B1r!u~&JUZZJrN+00Z^DFaRAaC[]S1XaZ////    r   c                  L   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 y )NrI  Trn  r  r   r   )r   r	   r   r?   r   r   )rI  r  r  rc  r  s        r   test_Z6r    s     	d#AA	AaD!Q	!AaD&	(3qs8	3BAq)GAq! A&qtQ22qtQ**+-.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.numbersr   r   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%   $sympy.functions.elementary.complexesr&   r'   r(   r)   &sympy.functions.elementary.exponentialr*   r+   r,   %sympy.functions.elementary.hyperbolicr-   r.   r/   r0   #sympy.functions.elementary.integersr1   r2   (sympy.functions.elementary.miscellaneousr3   r4   r5   $sympy.functions.elementary.piecewiser6   (sympy.functions.elementary.trigonometricr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   sympy.functions.special.besselrA   'sympy.functions.special.delta_functionsrB   *sympy.functions.special.elliptic_integralsrC   rD   'sympy.functions.special.gamma_functionsrE   rF   sympy.functions.special.hyperrG   #sympy.functions.special.polynomialsrH   rI   &sympy.functions.special.zeta_functionsrJ   sympy.geometry.utilrK   sympy.logic.boolalgrL   sympy.matrices.denserM   rN   !sympy.matrices.expressions.matmulrO    sympy.ntheory.continued_fractionrP   rr  rQ   rs  rR   rx  rS   r{  sympy.ntheory.factor_rT   rU   sympy.ntheory.generaterV   sympy.ntheory.partitions_rX   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   r4  rt   ru   'sympy.functions.special.error_functionsrv   rw   rx   ry   sympy.testing.pytestrz   r{   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   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*  r/  r2  r4  r6  r9  r<  r>  r@  rB  rG  rI  rK  rM  rP  rR  rU  r[  r]  r`  rb  rf  rh  rj  rt  rv  ry  r}  r  r  r  r  r  r  r  r  r  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r2  r5  r7  r:  r<  r@  rB  rD  rG  rI  rK  rM  rO  rQ  rU  rX  r^  r`  rc  re  rh  rl  ro  rr  ru  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/  r1  r3  r5  r7  r9  r;  r=  r?  rA  rC  rE  rJ  rL  rN  rT  rW  rZ  rd  rf  rj  rn  rr  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.  r3  r8  r<  rA  rF  rH  rJ  rM  rO  rS  rV  rY  r[  r]  r_  ra  rc  re  rj  rm  ro  rq  rs  ru  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  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  r9  r;  r>  rB  rD  rF  rL  rO  rQ  rT  rV  rY  r[  r^  r`  re  rg  ri  rk  rm  rp  rr  rt  rv  rx  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   <module>r     s   ) + + !       ( " 4 4  F
 
 E E
 
 > C C :( ( ( 2 > D / : % # 3 4- - 5 - 1 . 0 & > > %   ) & ) D D , 2 5 * 8 0 , '  : = ? ? 7  0  3 3 N ? , & ( -  + %  ( D D $ * ' # / ' ::
'
1a=$7 1aAqSMSM<
N#
7K
: 2 .&$:[ J J1%
   : : DB#
 X X N N H H P P 9 9 3 3 P P
 ^ ^ \ \)> Q Q Y Y c c#. B F F N N
J/6
 < </ + +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%-%-0 C C) Y9:  7 D D
 K K
K)8"
P
$ M M
 K K L L
@4 + +:X < < j j 6 6 - - 6 6
W gX  X  *Y f f*W[:,4f
_ ^ ^(
'
 E E H HX B B,: K K
I9;
00
0.4Y@ ; ;L K K D D
 V V E E< j jG
 F F X X
3
 5 5 c c
 X X
: Q Q
 ? ? S S/
;5IH3Q=
4 q qH
L] U U V V Y Y
W
B"
<3~	P * * 6 6 ; ;
 E E
 O  O
 6 6
 /  /DHl
P
;
 I I9A
 D D
0
H > >
d > >0 
!%4 L L&78'P ) ) L L%K
6	,, I I>(&"&$ . - -
 - -
+ C CM
M 7 7$   ' ': 
 
 N NGN:CI? 0 0 	/ 	/ * * > >* J J1+
 0 0< 
$ 
$   . . H H . . , ,*-3 5  5 A A   8 8:8
J
A
7 * * # #     # #  4
370
C
>,C
 < < X X L L77
&
@
 0 0C  EE2G  
 < <: F F ( (
 3 3
  
P
9
GC ; ; M MN
 3 3 N;#
 M M A  AA
 Y Y = = 8 8 = = >  > M  M
 M  M
 Q  Q
) = = H  H : :  >  = G G
.
:C R R ? ?%
2 3 3) 9  9 )  ).+NF0  (/GU2
AA I IR K K 23
B 4
B@ Y Y  K K6 5 5 
I 
I.$ > >@&"(0 ? ? 7 7+
G
 23  4 7 7 ; ;
 ; ;
K < <  * 
; 
;r   