
    MZdF                        d 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 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 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$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZD  ej                   ed       ed            ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd  ZNd! ZOd" ZPd# ZQd$ ZRd% ZSd& ZTd' ZUd( ZVd) ZWd* ZXd+ ZYd, ZZd- Z[d. Z\d/ Z]d0 Z^d1 Z_d2 Z`d3 Zad4 Zbd5 Zcd6 Zdd7 Zed8 Zfd9 Zgd: Zhd; Zid< Zjd= Zkd> Zld? Zmd@ ZndA ZodB ZpdC ZqdD ZrdE ZsyF)GzPTests for classes defining properties of ground domains, e.g. ZZ, QQ, ZZ[x] ...     )	AlgebraicNumberEFloatIIntegerRationaloopi_illegal)S)exp)sqrt)sin)Poly)xyz)HAS_GMPY)ZZQQRRCCFFGFEXEXRAWZZ_gmpy	ZZ_pythonQQ_gmpy	QQ_python)AlgebraicField)ZZ_IQQ_I)PolynomialRing)	RealField)field_isomorphism)ring)cyclotomic_poly)field)FiniteExtension)UnificationFailedGeneratorsErrorCoercionFailedNotInvertibleDomainError)raises)product      c                 $    | j                  |      S N)unify)K0K1s     H/usr/lib/python3/dist-packages/sympy/polys/domains/tests/test_domains.pyr6   r6   )   s    88B<    c                      t        d      } t        | |       | k(  sJ t        | t              t        k(  sJ t        | t              t        k(  sJ t        | t              t        k(  sJ t        | t
              t
        k(  sJ t        | t              t        k(  sJ t        | t        t                 t        t           k(  sJ t        | t        j                  t                    t        j                  t              k(  sJ t        | t              t        k(  sJ t        t        |       t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t
              t
        k(  sJ t        t        t              t        k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t              t        k(  sJ t        t        |       t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t
              t
        k(  sJ t        t        t              t        k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t              t        k(  sJ t        t        |       t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        j                  t        t        d      t        d            k(  sJ t        t        t
              t        k(  sJ t        t        t              t        k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t              t        k(  sJ t        t        |       t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        j                  t        t        d      t        d            k(  sJ t        t        t
              t        k(  sJ t        t        t              t        k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t              t        k(  sJ t        t
        |       t
        k(  sJ t        t
        t              t
        k(  sJ t        t
        t              t
        k(  sJ t        t
        t              t
        k(  sJ t        t
        t
              t
        k(  sJ t        t
        t              t        k(  sJ t        t
        t        t                 t
        t           k(  sJ t        t
        t        j                  t                    t        j                  t              k(  sJ t        t
        t              t        k(  sJ t
        t           j                  t        j                  t                    t        j                  t        t              k(  sJ t        t        |       t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t
              t        k(  sJ t        t        t              t        k(  sJ t        t        t        t                 t        t           k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t              t        k(  sJ t        t        t           |       t        t           k(  sJ t        t        t           t              t        t           k(  sJ t        t        t           t              t        t           k(  sJ t        t        t           t              t        t           k(  sJ t        t        t           t
              t
        t           k(  sJ t        t        t           t              t        t           k(  sJ t        t        t           t        t                 t        t           k(  sJ t        t        t           t        j                  t                    t        j                  t              k(  sJ t        t        t           t              t        k(  sJ t        t        j                  t              |       t        j                  t              k(  sJ t        t        j                  t              t              t        j                  t              k(  sJ t        t        j                  t              t              t        j                  t              k(  sJ t        t        j                  t              t              t        j                  t              k(  sJ t        t        j                  t              t
              t        j                  t              k(  sJ t        t        j                  t              t              t        j                  t              k(  sJ t        t        j                  t              t        t                 t        j                  t              k(  sJ t        t        j                  t              t        j                  t                    t        j                  t              k(  sJ t        t        j                  t              t              t        k(  sJ t        t        |       t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t
              t        k(  sJ t        t        t              t        k(  sJ t        t        t        t                 t        k(  sJ t        t        t        j                  t                    t        k(  sJ t        t        t              t        k(  sJ y )Nr3   r2   )r   r6   r   r   ALGr   r   r   
frac_fieldr   r"   r#   algebraic_fieldr   r   r   )F3s    r9   test_Domain_unifyr@   ,   s
   	ABR=BR=BR=BS>S   R=BR=BRUr!u$$$R]]1%&"--*::::R=BR=BR=BR=BS>S   R=BR=BRUr!u$$$R]]1%&"--*::::R=BR=BR=BR=BS>S   R=BR=BRUr!u$$$R]]1%&"--*::::R=Br?d"""r?d"""t$$$r?d"""sr11!T!Wd1gFFFFr?b   r?b   r!ua(((tAw47***r}}Q'(DOOA,>>>>tq)*dooa.@@@@r?b   r?d"""r?d"""t$$$r?d"""sr11!T!Wd1gFFFFr?b   r?b   r!ua(((tAw47***r!ua(((tAw47***r}}Q'(DOOA,>>>>tq)*dooa.@@@@r}}Q'(DOOA,>>>>tq)*dooa.@@@@r?b   R=BR=BR=BS>RR=BR=BRUr!u$$$R]]1%&"--*::::R=Ba5;;r}}Q'(BMM!Q,????R=BR=BR=BS>RR=BR=BRUr!u$$$R]]1%&"--*::::R=BAr!u$$$Ar!u$$$Ar!u$$$AA&&&Ar!u$$$Ar!u$$$A1"Q%'''Aa()R]]1-====Ar!!!q!2&"--*::::q!2&"--*::::q!2&"--*::::q!3'3>>!+<<<<q!2&"--*::::q!2&"--*::::q!2a5)R]]1-====q!2==#34a8HHHHq!2&",,,R=BR=BR=BS>RR=BR=BRUr!!!R]]1%&",,,R=Br:   c                  B   t        t        j                  t              t              t        j                  t              k(  sJ t        t        j                  t              t              t	        j                  t              k(  sJ t        t	        j                  t              t              t	        j                  t              k(  sJ t        t	        j                  t              t              t	        j                  t              k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t        j                  t                    t	        j                  t              k(  sJ t        t        t	        j                  t                    t	        j                  t              k(  sJ t        t        t	        j                  t                    t	        j                  t              k(  sJ t        t        j                  t        t
              t              t        j                  t        t
              k(  sJ t        t        j                  t        t
              t              t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t              t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t              t	        j                  t        t
              k(  sJ t        t        t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t        t        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        j                  t              t              t        j                  t              k(  sJ t        t        j                  t              t              t	        j                  t              k(  sJ t        t	        j                  t              t              t	        j                  t              k(  sJ t        t	        j                  t              t              t	        j                  t              k(  sJ t        t        t        j                  t                    t        j                  t              k(  sJ t        t        t        j                  t                    t	        j                  t              k(  sJ t        t        t	        j                  t                    t	        j                  t              k(  sJ t        t        t	        j                  t                    t	        j                  t              k(  sJ t        t        j                  t        t
              t              t        j                  t        t
              k(  sJ t        t        j                  t        t
              t              t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t              t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t              t	        j                  t        t
              k(  sJ t        t        t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t        t        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        j                  t              t        j                  t                    t        j                  t              k(  sJ t        t        j                  t              t	        j                  t                    t	        j                  t              k(  sJ t        t	        j                  t              t        j                  t                    t	        j                  t              k(  sJ t        t	        j                  t              t	        j                  t                    t	        j                  t              k(  sJ t        t        j                  t        t
              t        j                  t                    t        j                  t        t
              k(  sJ t        t        j                  t        t
              t	        j                  t                    t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t        j                  t                    t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t	        j                  t                    t	        j                  t        t
              k(  sJ t        t        j                  t              t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t        j                  t              t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t	        j                  t              t        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t	        j                  t              t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        j                  t        t
              t        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t        j                  t        t
              t	        j                  t        t                    t	        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t        j                  t        t                    t	        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t	        j                  t        t                    t	        j                  t        t
        t              k(  sJ t        t        j                  t              t        j                  t                    t        j                  t              k(  sJ t        t        j                  t              t	        j                  t                    t	        j                  t              k(  sJ t        t	        j                  t              t        j                  t                    t	        j                  t              k(  sJ t        t	        j                  t              t	        j                  t                    t	        j                  t              k(  sJ t        t        j                  t        t
              t        j                  t                    t        j                  t        t
              k(  sJ t        t        j                  t        t
              t	        j                  t                    t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t        j                  t                    t	        j                  t        t
              k(  sJ t        t	        j                  t        t
              t	        j                  t                    t	        j                  t        t
              k(  sJ t        t        j                  t              t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t        j                  t              t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t	        j                  t              t        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t	        j                  t              t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        j                  t        t
              t        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t        j                  t        t
              t	        j                  t        t                    t	        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t        j                  t        t                    t	        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t	        j                  t        t                    t	        j                  t        t
        t              k(  sJ t        t        j                  t              t        j                  t                    t        j                  t              k(  sJ t        t        j                  t              t	        j                  t                    t        j                  t              k(  sJ t        t	        j                  t              t        j                  t                    t        j                  t              k(  sJ t        t	        j                  t              t	        j                  t                    t	        j                  t              k(  sJ t        t        j                  t        t
              t        j                  t                    t        j                  t        t
              k(  sJ t        t        j                  t        t
              t	        j                  t                    t        j                  t        t
              k(  sJ t        t	        j                  t        t
              t        j                  t                    t        j                  t        t
              k(  sJ t        t	        j                  t        t
              t	        j                  t                    t	        j                  t        t
              k(  sJ t        t        j                  t              t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t        j                  t              t	        j                  t        t
                    t        j                  t        t
              k(  sJ t        t	        j                  t              t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t	        j                  t              t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        j                  t        t
              t        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t        j                  t        t
              t	        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t	        j                  t        t                    t	        j                  t        t
        t              k(  sJ t        t        j                  t              t        j                  t                    t        j                  t              k(  sJ t        t        j                  t              t	        j                  t                    t        j                  t              k(  sJ t        t	        j                  t              t        j                  t                    t        j                  t              k(  sJ t        t	        j                  t              t	        j                  t                    t	        j                  t              k(  sJ t        t        j                  t        t
              t        j                  t                    t        j                  t        t
              k(  sJ t        t        j                  t        t
              t	        j                  t                    t        j                  t        t
              k(  sJ t        t	        j                  t        t
              t        j                  t                    t        j                  t        t
              k(  sJ t        t	        j                  t        t
              t	        j                  t                    t	        j                  t        t
              k(  sJ t        t        j                  t              t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t        j                  t              t	        j                  t        t
                    t        j                  t        t
              k(  sJ t        t	        j                  t              t        j                  t        t
                    t        j                  t        t
              k(  sJ t        t	        j                  t              t	        j                  t        t
                    t	        j                  t        t
              k(  sJ t        t        j                  t        t
              t        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t        j                  t        t
              t	        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t        j                  t        t                    t        j                  t        t
        t              k(  sJ t        t	        j                  t        t
              t	        j                  t        t                    t	        j                  t        t
        t              k(  sJ y r5   )r6   r   	poly_ringr   r   r   r=   r    r:   r9   test_Domain_unify_compositerD      s   a"%a888a"%a888a"%a888a"%a888R\\!_%a888R\\!_%a888R\\!_%a888R\\!_%a888a#R(BLLA,>>>>a#R(BLLA,>>>>a#R(BLLA,>>>>a#R(BLLA,>>>>R\\!Q'(BLLA,>>>>R\\!Q'(BLLA,>>>>R\\!Q'(BLLA,>>>>R\\!Q'(BLLA,>>>>q!2&"--*::::q!2&"--*::::q!2&"--*::::q!2&"--*::::R]]1%&"--*::::R]]1%&"--*::::R]]1%&"--*::::R]]1%&"--*::::q!$b)R]]1a-@@@@q!$b)R]]1a-@@@@q!$b)R]]1a-@@@@q!$b)R]]1a-@@@@R]]1a()R]]1a-@@@@R]]1a()R]]1a-@@@@R]]1a()R]]1a-@@@@R]]1a()R]]1a-@@@@a",,q/2bll1oEEEa",,q/2bll1oEEEa",,q/2bll1oEEEa",,q/2bll1oEEEa#R\\!_5a9KKKKa#R\\!_5a9KKKKa#R\\!_5a9KKKKa#R\\!_5a9KKKKa",,q!"45a9KKKKa",,q!"45a9KKKKa",,q!"45a9KKKKa",,q!"45a9KKKKa#R\\!Q%78BLLAq<QQQQa#R\\!Q%78BLLAq<QQQQa#R\\!Q%78BLLAq<QQQQa#R\\!Q%78BLLAq<QQQQq!2==#34a8HHHHq!2==#34a8HHHHq!2==#34a8HHHHq!2==#34a8HHHHq!$bmmA&672==A;NNNNq!$bmmA&672==A;NNNNq!$bmmA&672==A;NNNNq!$bmmA&672==A;NNNNq!2==A#672==A;NNNNq!2==A#672==A;NNNNq!2==A#672==A;NNNNq!2==A#672==A;NNNNq!$bmmAq&9:bmmAqRS>TTTTq!$bmmAq&9:bmmAqRS>TTTTq!$bmmAq&9:bmmAqRS>TTTTq!$bmmAq&9:bmmAqRS>TTTTa"--"23r}}Q7GGGGa"--"23r}}Q7GGGGa"--"23r}}Q7GGGGa"--"23r}}Q7GGGGa#R]]1%56"--1:MMMMa#R]]1%56"--1:MMMMa#R]]1%56"--1:MMMMa#R]]1%56"--1:MMMMa"--1"56"--1:MMMMa"--1"56"--1:MMMMa"--1"56"--1:MMMMa"--1"56"--1:MMMMa#R]]1a%89R]]1aQR=SSSSa#R]]1a%89R]]1aQR=SSSSa#R]]1a%89R]]1aQR=SSSSa#R]]1a%89R]]1aQR=SSSSq!2<<?3r}}Q7GGGGq!2<<?3r}}Q7GGGGq!2<<?3r}}Q7GGGGq!2<<?3r}}Q7GGGGq!$bll1o6"--1:MMMMq!$bll1o6"--1:MMMMq!$bll1o6"--1:MMMMq!$bll1o6"--1:MMMMq!2<<1#56"--1:MMMMq!2<<1#56"--1:MMMMq!2<<1#56"--1:MMMMq!2<<1#56"--1:MMMMq!$bll1a&89R]]1aQR=SSSSq!$bll1a&89R]]1aQR=SSSSq!$bll1a&89R]]1aQR=SSSSq!$bll1a&89R]]1aQR=SSSSr:   c                     t        j                  t        d            } t        j                  t        d            }t        j                  t        d      t        d            }| j                  |      |k(  sJ | j                  | t        t
        f         | t        t
        f   k(  sJ | t        t
        f   j                  |       | t        t
        f   k(  sJ | j                  | j                  t        t
                    | j                  t        t
              k(  sJ | j                  t        t
              j                  |       | j                  t        t
              k(  sJ | j                  |t        t
        f         |t        t
        f   k(  sJ | t        t
        f   j                  |      |t        t
        f   k(  sJ | j                  |j                  t        t
                    |j                  t        t
              k(  sJ | j                  t        t
              j                  |      |j                  t        t
              k(  sJ y )N      )r   r>   r   r6   r   r   r=   )sqrt5sqrt7sqrt57s      r9   test_Domain_unify_algebraicrK     s   tAw'EtAw'EQa1F;;u''';;uQT{#uQT{222A;U#uQT{222;;u''1-.%2B2B1a2HHHHAq!''.%2B2B1a2HHHH;;uQT{#vad|333A;U#vad|333;;u''1-.&2C2CAq2IIIIAq!''.&2C2CAq2IIIIr:   c            	      n
   t        t        t        dz  dz
  t        t                    } t        t        t        dz  dz
  t        t                    }t        t        t        dz  dz
  t        t        t
                       }t        t        t        dz  dz
  t        t        t
                       }| j                  |       | k(  sJ |j                  |      |k(  sJ |j                  |      |k(  sJ |j                  |      |k(  sJ | j                  t              | k(  sJ | j                  t              |k(  sJ |j                  t              |k(  sJ |j                  t              |k(  sJ | j                  t        t
                 |k(  sJ | j                  t        t
                 |k(  sJ |j                  t        t
                 |k(  sJ |j                  t        t
                 |k(  sJ |j                  t              |k(  sJ |j                  t              |k(  sJ |j                  t              |k(  sJ |j                  t              |k(  sJ |j                  t        t
                 |k(  sJ |j                  t        t
                 |k(  sJ |j                  t        t
                 |k(  sJ |j                  t        t
                 |k(  sJ t        t        t        dz  dz
  t        t        t
                       }|j                  t              |k(  sJ |j                  t        t                 |k(  sJ |j                  t        t
                 |k(  sJ |j                  t        t        t
        f         |k(  sJ t        t        t        dz  dz
  t        t        t
        t        f               }|j                  t        t                 |k(  sJ |j                  t        t        t        f         |k(  sJ |j                  t        t
        t        f         |k(  sJ |j                  t        t        t
        t        f         |k(  sJ t        t        t        dz  dz
  t        t                    }t        t        t
        dz  dz
  t
        t                    }t        t        t
        dz  dz
  t
        |            }|j                  |      |k(  sJ |j                  |      |k(  sJ |j                  |      |k(  sJ |j                  |      |k(  sJ y )Nr2   domain)r*   r   r   r   r   r   r6   r   )	KxZZKxQQKxZZyKxQQyKKzKxKyKxys	            r9   !test_Domain_unify_FiniteExtensionrX   *  s'   41q!B78D41q!B78DDA1RU;<EDA1RU;<E::dt###::dt###;;u&&&;;u&&&::b>T!!!::b>T!!!::b>T!!!::b>T!!!::be%%%::be%%%::be%%%::be%%%;;r?e###;;r?e###;;r?e###;;r?e###;;r!u&&&;;r!u&&&;;r!u&&&;;r!u&&&QTAXqA78A772;!772a5>Q772a5>Q772ad8!!!	adQh"QT(;	<B772a5>R772ad8"""772ad8"""772aAg;2%%%	adQh"5	6B	adQh"5	6B
$q!tax26
7C88B<288B<288B<388B<3r:   c                  H    t        t        d        t        t        d        y )Nc                  d    t         t        t        f   j                  t         t        t        f      S r5   )r   r   r   unify_with_symbolsr   rC   r:   r9   <lambda>z0test_Domain_unify_with_symbols.<locals>.<lambda>^  s    bAh&A&A"q!f&M r:   c                  d    t        j                  t         t        t        f   t        t        f      S r5   )r   r[   r   r   r   rC   r:   r9   r\   z0test_Domain_unify_with_symbols.<locals>.<lambda>_  s    b&;&;Bq!tHq!f&M r:   )r0   r+   rC   r:   r9   test_Domain_unify_with_symbolsr^   ]  s    
MN
MNr:   c                     dt         v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt
        v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ dt         v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt
        v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ dt         v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt
        v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ t        dd      t         v du sJ t        dd      t        v du sJ t        dd      t        v du sJ t        dd      t        v du sJ t        dd      t        v du sJ t        dd      t
        v du sJ t        dd      t        t        t        f   v du sJ t        dd      t        t        t        f   v du sJ t        dd      t        t        t        f   v du sJ t        dd	      t         v du sJ t        dd	      t        v du sJ t        dd	      t        v du sJ t        dd	      t        v du sJ t        dd	      t        v du sJ t        dd	      t
        v du sJ t        dd	      t        t        t        f   v du sJ t        dd	      t        t        t        f   v du sJ t        dd	      t        t        t        f   v du sJ d
t         v du sJ d
t        v du sJ d
t        v du sJ d
t        v du sJ d
t        v du sJ d
t
        v du sJ d
t        t        t        f   v du sJ d
t        t        t        f   v du sJ d
t        t        t        f   v du sJ dt         v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt        v du sJ dt
        v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ dt        t        t        f   v du sJ t        t
        v du sJ t        t        t        t        f   v du sJ t        t        t        t        f   v du sJ t         t        v du sJ t         t        v du sJ t         t
        v du sJ t         t        t        t        f   v du sJ t         t        t        t        f   v du sJ t        d      t         v du sJ t        d      t        v du sJ t        d      t        v du sJ t        d      t        v du sJ t        d      t        v du sJ t        d      t
        v du sJ t        d      t        t        t        f   v du sJ t        d      t        t        t        f   v du sJ t        d      t        t        t        f   v du sJ dt        d      z  dz   t         v du sJ dt        d      z  dz   t        v du sJ dt        d      z  dz   t        v du sJ dt        d      z  dz   t        v du sJ dt        d      z  dz   t        v du sJ dt        d      z  dz   t
        v du sJ dt        d      z  dz   t        t        t        f   v du sJ dt        d      z  dz   t        t        t        f   v du sJ dt        d      z  dz   t        t        t        f   v du sJ t        d      t         v du sJ t        d      t        v du sJ t        d      t        v du sJ t        d      t        v du sJ t        d      t        v du sJ t        d      t
        v du sJ t        d      t        t        t        f   v du sJ t        d      t        t        t        f   v du sJ t        d      t        t        t        f   v du sJ t        dz  dz   t         v du sJ t        dz  dz   t        v du sJ t        dz  dz   t        v du sJ t        dz  dz   t        v du sJ t        dz  dz   t        v du sJ t        dz  dz   t
        v du sJ t        dz  dz   t        t           v du sJ t        dz  dz   t        t           v du sJ t        dz  dz   t        t           v du sJ t        dz  dz   t        t        t        f   v du sJ t        dz  dz   t        t        t        f   v du sJ t        dz  dz   t        t        t        f   v du sJ t        dz  t        dz  z   t         v du sJ t        dz  t        dz  z   t        v du sJ t        dz  t        dz  z   t        v du sJ t        dz  t        dz  z   t        v du sJ t        dz  t        dz  z   t        v du sJ t        dz  t        dz  z   t
        v du sJ t        dz  t        dz  z   t        t           v du sJ t        dz  t        dz  z   t        t           v du sJ t        dz  t        dz  z   t        t           v du sJ t        dz  t        dz  z   t        t        t        f   v du sJ t        dz  t        dz  z   t        t        t        f   v du sJ t        dz  t        dz  z   t        t        t        f   v du sJ t        dd      t        z  t        dz   z  t        z
  t        t        t        t        f   v du sJ y )Nr   T   rG   Fr3   rF   g      @Q	@r2      )r   r   r   r   r   r<   r   r   r   r	   r   r   r   rC   r:   r9   test_Domain__contains__re   a  st   GGGGGHAqDMd"""AqDMd"""AqDMd""""H"H"H"H"H#I$"QT(Nt###"QT(Nt###"QT(Nt###"H"H"H"H"H#I$"QT(Nt###"QT(Nt###"QT(Nt###ROr!d***ROr!e+++ROr!d***ROr!d***ROr!d***ROs"t+++ROr!Q$x'E111ROr!Q$x'D000ROr!Q$x'D000QNb T)))QNb U***QNb T)))QNb T)))QNb T)))QNc!d***QNbAh&5000QNbAh&4///QNbAh&4///2I$2I$2I$2I$2I$3J42ad8O$$$2ad8O$$$2ad8O$$$BJ4BJ5   BJ4BJ4BJ4CKD   Bq!tH&&&Bq!tH%%%Bq!tH%%%#I%"QT(Nu$$$"QT(Nu$$$C2I%C2I%C3J5   C2ad8O%%%C2ad8O%%%GrMd"""GrMe###GrMe###GrMd"""GrMd"""GsNu$$$Gr!Q$xE)))Gr!Q$xE)))Gr!Q$xD(((d1gIMRD(((d1gIMRE)))d1gIMRE)))d1gIMRD(((d1gIMRD(((d1gIMS T)))d1gIMR1X%%///d1gIMR1X%%///d1gIMR1X%$...FbLT!!!FbLU"""FbLU"""FbLT!!!FbLT!!!FcMe###FbAh5(((FbAh5(((FbAh4'''qD1HNt###qD1HNu$$$qD1HNu$$$qD1HNu$$$qD1HNu$$$qD1HO%%%qD1H1$&&&qD1H1$&&&qD1H1$&&&qD1H1a4 T)))qD1H1a4 T)))qD1H1a4 T)))qD1a4K2$&&&qD1a4K2%'''qD1a4K2%'''qD1a4K2%'''qD1a4K2%'''qD1a4K35(((qD1a4K2a5 U***qD1a4K2a5 U***qD1a4K2a5 U***qD1a4K2ad8#,,,qD1a4K2ad8#,,,qD1a4K2ad8#,,,QN1a!e$q(Bq!QwK7EAAAr:   c                     t        dd      t        z  t        j                  dt        z        v du sJ dt        z  t        j                  t              v du sJ t        dz  t        dz  z   t        j                  dt        z  dt        z        v du sJ t        t        z   t        j                  dt        z  t              v du sJ t        t        z
  t        j                  t        dt        z        v du sJ y )Nr2   r3   rd   T)r   r   r   r=   r   rC   r:   r9   test_issue_14433rg     s    QN1ac 22t;;;aC2==##,,,TAqD[R]]1Q3!44===Ur}}QqS!,,555Ur}}Q!,,555r:   c                  ~   t         j                  du sJ t        j                  du sJ t         t           j                  du sJ t        t           j                  du sJ t         t        t        f   j                  du sJ t        t        t        f   j                  du sJ t        j
                  t              j                  du sJ t        j
                  t              j                  du sJ t        j
                  t        t              j                  du sJ t        j
                  t        t              j                  du sJ t        j                  du sJ t        j                  du sJ t        j                  du sJ t        j                         t         k(  sJ t        j                         t         k(  sJ t         t           j                         t         t           k(  sJ t        t           j                         t        t           k(  sJ t         t        t        f   j                         t         t        t        f   k(  sJ t        t        t        f   j                         t        t        t        f   k(  sJ t        j
                  t              j                         t         t           k(  sJ t        j
                  t              j                         t        t           k(  sJ t        j
                  t        t              j                         t         t        t        f   k(  sJ t        j
                  t        t              j                         t        t        t        f   k(  sJ t        j                         t        k(  sJ t        j                         t        k(  sJ t        t        d        y )NTFc                  *    t         j                         S r5   )r<   get_ringrC   r:   r9   r\   z&test_Domain_get_ring.<locals>.<lambda>  s     r:   )r   has_assoc_Ringr   r   r   r=   r   r   r<   rj   r0   r/   rC   r:   r9   test_Domain_get_ringrl     s   $$$$$$a54'''a54'''ad8""d***ad8""d***==**d222==**d222==A--555==A--555%%%%%%&&&;;=B;;=Ba5>>r!u$$$a5>>r!u$$$ad8"QT(***ad8"QT(***==$$&"Q%///==$$&"Q%///==A'')R1X555==A'')R1X555;;=B;;=B
;./r:   c                     t         j                  du sJ t        j                  du sJ t        j                  du sJ t        j                  du sJ t
        j                  du sJ t        t           j                  du sJ t        t           j                  du sJ t        t        t        f   j                  du sJ t        t        t        f   j                  du sJ t        j                         t         k(  sJ t        j                         t        k(  sJ t        j                         t        k(  sJ t	        j                         t        k(  sJ t
        j                         t
        k(  sJ t        t           j                         t        j                  t              k(  sJ t        t           j                         t        j                  t              k(  sJ t        t        t        f   j                         t        j                  t        t              k(  sJ t        t        t        f   j                         t        j                  t        t              k(  sJ y )NT)
r   has_assoc_Fieldr   r   r   r<   r   r   	get_fieldr=   rC   r:   r9   test_Domain_get_fieldrp     s   %%%%%%%%%%%%$&&&a5  D(((a5  D(((ad8##t+++ad8##t+++<<>R<<>R<<>R<<>R==?c!!!a5??a 0000a5??a 0000ad82==A#6666ad82==A#6666r:   c                     t        j                         t         k(  sJ t        j                         t        k(  sJ t        j                         t        k(  sJ t	        j                         t        k(  sJ t
        j                         t
        k(  sJ t        t           j                         t        t           k(  sJ t        t           j                         t        t           k(  sJ t        t        t        f   j                         t        t        t        f   k(  sJ t        t        t        f   j                         t        t        t        f   k(  sJ t        j                  t              j                         t        j                  t              k(  sJ t        j                  t              j                         t        j                  t              k(  sJ t        j                  t        t              j                         t        j                  t        t              k(  sJ t        j                  t        t              j                         t        j                  t        t              k(  sJ y r5   )	r   	get_exactr   r   r   r<   r   r   r=   rC   r:   r9   test_Domain_get_exactrs   -  s   <<>R<<>R<<>R<<>R==?c!!!a5??1%%%a5??1%%%ad82ad8+++ad82ad8+++==%%'2==+;;;;==%%'2==+;;;;==A((*bmmAq.AAAA==A((*bmmAq.AAAAr:   c                  .   g d} g d}g d}t         t           t        t           t        j                  t              }}}| D cg c]   }t        j                  t        |            " c}|k(  sJ | D cg c]   }t        j                  t        |            " c}|k(  sJ | D cg c]  }|j	                   ||             c}|k(  sJ | D cg c]  }|j	                   ||             c}|k(  sJ | D cg c]  }|j	                   ||             c}|k(  sJ |j	                   |t                    du sJ |j	                   |t                    du sJ |j	                   |t                    du sJ y c c}w c c}w c c}w c c}w c c}w )N)rb   r   rd   r2   )FTFTF)TTFTTFT)r   r   r   r=   is_unit)numsinvringinvfieldZZxQQxQQxfns          r9   test_Domain_is_unitr~   =  sO   D/G.HUBqE2==#3dC'+,!BJJr!u,777'+,!BJJr!u,888)-.ACKKA.'999)-.ACKKA.(:::+/0aDLLa!0H<<<;;s1v%''';;s1v%'''<<Q D((( -,..0s   %E>5%F&FF:Fc                     d fd} d }t        j                  t        d            }t        j                  t        d            }t        t         ||t        t
        t        t        g}t        |      D ]2  \  }}||d  D ]%  } ||      D ]  } ||      D ]  }	 | ||	         ' 4 t        j                  d      t        dd      k(  sJ t        d	t              \  }
}t        j                  ||z
        d
k(  sJ t        j                  ||z
  |
j                               d
k(  sJ t        j                  t        dd            t        dd      k(  sJ t        j                  t	        dd            t        dd      k(  sJ t        j                  t              }t        j                  t              }t         t           }t        t           }	||||	g}t        ||      D ]B  \  }}|j                  |j!                  t              |      |j!                  t              k(  rBJ  |j                  t        dd      t                |t        dd            k(  sJ y )Nc           
          t        |       t        |      u sJ | d|d|d|d|	       | |k(  sJ | d|d|d|d|	       y )Nz, z:  z -> )type)e1e2r8   K2K3s        r9   check_elementz*test_Domain_convert.<locals>.check_elementN  sD    Bx48#Qb"b"b%QQ#RxE"b"b"EExr:   c                    | j                  |      } |j                  | j                  |       |j                  | ||        |j                  |j                  |      |j                  | ||        |j                  | j                  |       |j                  | ||        |j                  |j                  |      |j                  | ||       y r5   )r6   convert_fromonezero)r8   r   r   r   s      r9   check_domainsz*test_Domain_convert.<locals>.check_domainsR  s    XXb\boorvvr2RVVRRHboorvvr2RVVRRHboobggr2BGGRRHboobggr2BGGRRHr:   c           
          | | t            | t           | t         t        f   | j                  t               | j                  t              | j                  t         t              g}|S r5   )r   r   r=   )rS   domainss     r9   composite_domainsz.test_Domain_convert.<locals>.composite_domainsY  sL    aD!A$!Q$LLOQ\\!_all1a.@
 r:   r2   r3   gLoW5l   $7q/ l                                r   r   rd   )r   r>   r   r   r#   r"   r   r   	enumerateconvertr'   	to_domainr=   r   r1   r   
from_sympy)r   r   QQ2QQ3domsir8   r   r   K4RxrKsKaKbr   s                  @r9   test_Domain_convertr   L  s   FI 

T!W
%C


T!W
%CCdD"b1D4 *2qr( 	*B'+ *+B/ *B!"b)**	** ::f$46y!zzzzbMEAr::b2g!###::b2gq{{}-222::d1aj!R1X---::d1aj!R1X---	q	B	q	B	AB	AB
b"b	B"b/ IBr}}Q/4a8HHHHI ??2a8R(Br!QxL888r:   c                     t        j                  t              } t         t           }| j                  t              | j                  |j                  t              |      k(  sJ |j                  t              |j                  | j                  t              |       k(  sJ t        j                  t        t              } t         t           }| j                  t              | j                  |j                  t              |      k(  sJ t        j                  t        t              } t         t           }| j                  t              | j                  |j                  t              |      k(  sJ y r5   )r   old_poly_ringr   r   r   r   )r8   r   s     r9   !test_GlobalPolynomialRing_convertr     s    			!	B	AB::a=BJJrzz!}b9999::a=BJJrzz!}b9999			!Q	B	AB::a=BJJrzz!}b9999 
		!Q	B	AB::a=BJJrzz!}b9999r:   c                  v    t        dt              \  } t        j                         | j                         k(  sJ y N )r'   r   rB   r   )r   s    r9   test_PolynomialRing__initr     s)    	b"BA<<>Q[[]***r:   c                  v    t        dt              \  } t        j                         | j                         k(  sJ y r   )r)   r   r=   r   )Fs    r9   test_FractionField__initr     s)    	r2BA==?akkm+++r:   c                  \   t        j                  t              } | j                  t        dd      t               | j	                  t        dd            k(  sJ t        j                  t              } | j                  t        d      t              | j	                  t        d            k(  sJ y )Nr2   r3   )r   r=   r   r   r   r   r   r   )rS   s    r9   test_FractionField_convertr     sv    
aA99R1Xr"all8Aq>&BBBB
aA99RUB1<<
#;;;;r:   c                     t        j                  t        t        t              t         t        t        t        f   k(  sJ t         t           j                  t        t              t         t        t        t        f   k(  sJ t        j
                  t              j                  t        t              t        j
                  t        t        t              k(  sJ t        t        d        y )Nc                  B    t         t           j                  t              S r5   )r   r   injectrC   r:   r9   r\   ztest_inject.<locals>.<lambda>  s    BqELLO r:   )r   r   r   r   r   r=   r0   r,   rC   r:   r9   test_injectr     s    99Q1Aq!G,,,a5<<1Aq!G,,,==""1a(BMM!Q,BBBB
?34r:   c                     t        j                  t              t         k(  sJ t         t           j                  t              t         k(  sJ t         t        t        f   j                  t              t         t           k(  sJ t        j                  t              j                  t              t         k(  sJ t        j                  t        t              j                  t              t        j                  t              k(  sJ t         t           t           j                  t              t         t           k(  sJ t         t           t           j                  t              t         t           k(  sJ t        j                  t              t           j                  t              t         t           k(  sJ t        j                  t              t           j                  t              t        j                  t              k(  sJ t        t        t        dz  dz
  t        t         t                       t        t        t        dz  dz
  t        t                     } j                  t              | k(  sJ t        t        fd       y )Nr2   rd   rM   c                  .     j                  t              S r5   )dropr   )rV   s   r9   r\   ztest_drop.<locals>.<lambda>  s    BGGAJ r:   )	r   r   r   r   r=   r*   r   r0   r,   )rS   rV   s    @r9   	test_dropr     s   771:a5::a=Bad8==r!u$$$==  #r)))==A##A&"--*::::a58==r!u$$$a58==r!u$$$==A##A&"Q%///==A##A&"--*::::	ad1fa16	7BQT!VQr23A771:??
?./r:   c                      t        j                  g d      } t        d | D              sJ t        j                  g dg      } t        d | d   D              rt        |       dk(  sJ y )N)rd   r2   r3      c              3   F   K   | ]  }t        j                  |        y wr5   r   of_type.0elts     r9   	<genexpr>z"test_Domain_map.<locals>.<genexpr>  s     .3rzz#.   !c              3   F   K   | ]  }t        j                  |        y wr5   r   r   s     r9   r   z"test_Domain_map.<locals>.<genexpr>  s     13rzz#1r   r   rd   )r   mapalllen)seqs    r9   test_Domain_mapr     sX    
&&
C.#....
&&,
 C1#a&11c#h!mCCmr:   c                     t         t        t        f   t         t        t        f   k(  du sJ t        t        t        f   t        t        t        f   k(  du sJ t         t        t        f   t        t        t        f   k(  du sJ t        t        t        f   t         t        t        f   k(  du sJ t        j                  t        t              t        j                  t        t              k(  du sJ t        j                  t        t              t        j                  t        t              k(  du sJ t        j                  t        t              t        j                  t        t              k(  du sJ t        j                  t        t              t        j                  t        t              k(  du sJ t               t           t        t           k(  sJ y )NTF)r   r   r   r   r=   r%   r   rC   r:   r9   test_Domain___eq__r     sJ   q!tH1a4 T)))q!tH1a4 T)))q!tH1a4 U***q!tH1a4 U***MM!Q2==A#664???MM!Q2==A#664???MM!Q2==A#665@@@MM!Q2==A#665@@@;q>RU"""r:   c                  \   t        j                  t        d            } | j                  j                  t        t        dz  dz
        k(  sJ | j                  t        k(  sJ t        j                  t        d            } | j                  j                  t        t        dz  dz
        k(  sJ | j                  t        k(  sJ | j                  t        d            } | j                  j                  t        t        dz  dt        dz  z  z
  dz         k(  sJ | j                  t        k(  sJ y Nr2   r3   r   
   rd   )	r   r>   r   extminpolyr   r   domr   )algs    r9   test_Domain__algebraic_fieldr     s    


T!W
%C77??d1a4!8n,,,77b==


T!W
%C77??d1a4!8n,,,77b==


d1g
&C77??d1a4"QT'>A#5666677b==r:   c                  2   t        t        dz  dz
        } t        t        dz  dz
        }t        t        dz  dt        dz  z  z
  dz         }t        j                  |       }|j                  j
                  | k(  sJ |j                  t        k(  sJ t        j                  |       }|j                  j
                  | k(  sJ |j                  t        k(  sJ |j                  |      }|j                  j
                  |k(  sJ |j                  t        k(  sJ y r   )r   r   r   alg_field_from_polyr   r   r   r   )fghr   s       r9   test_Domain_alg_field_from_polyr     s    QTAXAQTAXAQTBq!tG^a A

 
 
#C77??a77b==

 
 
#C77??a77b==

!
!!
$C77??a77b==r:   c                     t        j                  d      } | j                  j                  t	        t        d            k(  sJ | j                  t        k(  sJ t        j                  d      }|j                  j                  t	        t        d            k(  sJ |j                  t        k(  sJ |j                  d      }t        |j                  | j                        J |j                  t        k(  sJ y )N   r3   r   )	r   cyclotomic_fieldr   r   r   r(   r   r   r&   )rS   r   r   s      r9   test_Domain_cyclotomic_fieldr     s    
BA55==D!4555555B;;
AA55==D!3444455B;;	1AQUUAEE*66655B;;r:   c                     t        dt              \  } }}t        dt              \  }}}|dz  |dz  z   |dz   z  }|dz  |dz  z   dz  }|dz  |dz  z   }|j                         j	                  || j                               J |j                         j	                  || j                               |dz  dz  |dz  dz  z   k(  sJ |j                         j	                  || j                               |dz  |dz  z   k(  sJ t        dt
              \  } }}t        dt
              \  }}}|dz  |dz  z   |dz   z  }|dz  |dz  z   dz  }|dz  |dz  z   }|j                         j	                  || j                               J |j                         j	                  || j                               |dz  dz  |dz  dz  z   k(  sJ |j                         j	                  || j                               |dz  |dz  z   k(  sJ y )Nx,yr2   rd   r   )r)   r   r'   r   from_FractionFieldr   )	r   r   r   r   XYr   r   r   s	            r9   &test_PolynomialRing_from_FractionFieldr     s   5"FAq%_FAq	
A1q1uA	
A1aA	
A1A;;=++Aq{{}=EEE;;=++Aq{{}=Aa!Q$q&PPP;;=++Aq{{}=A1LLL5"FAq%_FAq	
A1q1uA	
A1aA	
A1A;;=++Aq{{}=EEE;;=++Aq{{}=Aa!Q$q&PPP;;=++Aq{{}=A1LLLr:   c                     t        dt              \  } }}t        dt              \  }}}d|dz  z  d|dz  z  z   }|dz  dz  |dz  dz  z   }|j	                         j                  || j	                               d|dz  z  d|dz  z  z   k(  sJ |j	                         j                  || j	                               d|dz  z  d|dz  z  z   dz  k(  sJ y )Nr   r3   r2   rF      )r'   r   r)   r   r   from_PolynomialRing)r   r   r   r   r   r   r   r   s           r9   &test_FractionField_from_PolynomialRingr     s    %_FAq5"FAq	!Q$1a4A	1QAaA;;=,,Q>!AqD&1QPQT6/QQQ;;=,,Q>1QT6AaQRdF?TVBVVVVr:   c                     t        d      j                   t        d      d            du sJ t        d      j                   t        d      d            du sJ t        d      j                   t        d      d            du sJ y )Nr3   rd   TrF   rG   F)r   r   rC   r:   r9   test_FF_of_typer   #  sq    a5==Aq"d***a5==Aq"d***a5==Aq"e+++r:   c                      t         t           t        t           k(  rJ t        j                  t              t        j                  t              k(  rJ y r5   )r   r   r   r=   rC   r:   r9   test___eq__r   )  s:    !u1~}}Q2==#33333r:   c                  b   t        j                  t        j                        t        j                  d      k(  sJ t        j                  t        d            t        j                  d      k(  sJ t        j                  t        j
                        t        j                  d      k(  sJ t        j                  t        d            t        j                  d      k(  sJ t        j                  t        d            t        j                  t        d      j                               k(  sJ y )Nr   g        rd   g      ?)r   r   r   ZerodtypeOner   evalfrC   r:   r9   test_RealField_from_sympyr   .  s    ::aff!,,,::af#...::aee+++::af#...::c!f#a&,,.!9999r:   c                  8    t        t              t        gz   t        d d D  cg c]  } t        |        c} z   }t        t
        t        t        t        fD ]=  |D ]6    t        k(  r
t        k(  r vs	J  f       t        t         fd       8 ? y c c} w )Nr3   c                  &     j                        S r5   )r   )r   r   s   r9   r\   z(test_not_in_any_domain.<locals>.<lambda>>  s    3;;q> r:   )listr   r   floatr   r   r   r   r   r0   r-   )r   checkr   s   ` @r9   test_not_in_any_domainr   6  s    NaS "2A,$(a$( (EBB# ; 	;AAv#)C<)!S)<>#9:		;;$(s   Bc                  N   t        d      }  | d      }t        || j                        r|dk(  sJ  | d      }t        || j                        r|dk(  sJ  | d      }t        || j                        r|dk(  sJ  | d      }t        || j                        r|dk(  sJ  | d      }t        || j                        r|dk(  sJ  |  | d            }t        || j                        r|dk(  sJ  |  | d            }t        || j                        r|dk(  sJ  |  | d            }t        || j                        r|dk(  sJ  |  | d            }t        || j                        r|dk(  sJ  |  | d            }t        || j                        r|dk(  sJ  | d       }t        || j                        r|dk(  sJ  | d       }t        || j                        r|dk(  sJ d | d      z   }t        || j                        r|dk(  sJ  | d      dz   }t        || j                        r|dk(  sJ  | d       | d      z   }t        || j                        r|dk(  sJ  | d       | d      z   }t        || j                        r|dk(  sJ d | d      z
  }t        || j                        r|dk(  sJ  | d      dz
  }t        || j                        r|dk(  sJ  | d       | d      z
  }t        || j                        r|dk(  sJ  | d       | d      z
  }t        || j                        r|dk(  sJ d | d      z  }t        || j                        r|dk(  sJ  | d      dz  }t        || j                        r|dk(  sJ  | d       | d      z  }t        || j                        r|dk(  sJ  | d       | d      z  }t        || j                        r|dk(  sJ d | d      z  }t        || j                        r|dk(  sJ  | d      dz  }t        || j                        r|dk(  sJ  | d       | d      z  }t        || j                        r|dk(  sJ  | d       | d      z  }t        || j                        r|dk(  sJ d | d      z  }t        || j                        r|dk(  sJ  | d      dz  }t        || j                        r|dk(  sJ  | d       | d      z  }t        || j                        r|dk(  sJ  | d       | d      z  }t        || j                        r|dk(  sJ  | d      dz  }t        || j                        r|dk(  sJ  | d      dz  }t        || j                        r|dk(  sJ  | d      dz  }t        || j                        r|dk(  sJ t        d      } |d      dz  }t        ||j                        r|dk(  sJ  |d      dz  }t        ||j                        r|dk(  sJ  |d      t        d      z  }t        ||j                        r|dk(  sJ t	         | d            d	u sJ t	         | d            d
u sJ t        d       d      dz  }t        |j                        r|dk(  sJ  d      dz  }t        |j                        r|dk(  sJ  d      dz  }t        |j                        r|dk(  sJ  d      dz  }t        |j                        r|dk(  sJ  d       d      k  d
u sJ  d       d      k  d
u sJ  d       d      kD  d	u sJ  d       d      k\  d	u sJ  d       d      k  d	u sJ  d       d      k  d	u sJ  d       d      kD  d
u sJ  d       d      k\  d
u sJ  d       d      k  d
u sJ  d       d      k  d
u sJ  d       d      kD  d	u sJ  d       d      k\  d	u sJ  d       d      k  d	u sJ  d       d      k  d	u sJ  d       d      kD  d
u sJ  d       d      k\  d
u sJ  d      dk  d
u sJ  d      dk  d
u sJ  d      dkD  d	u sJ  d      dk\  d	u sJ  d      dk  d	u sJ  d      dk  d	u sJ  d      dkD  d
u sJ  d      dk\  d
u sJ  d      dk  d
u sJ  d      dk  d
u sJ  d      dkD  d	u sJ  d      dk\  d	u sJ  d      dk  d	u sJ  d      dk  d	u sJ  d      dkD  d
u sJ  d      dk\  d
u sJ t        t        fd       t        t        fd       t        t        d        t        t        d        y )Nr3   r   rd   r2   r   rG   l    h] l h] FTrF   rb   c                        d      dz  S )Nr   rb   rC   F5s   r9   r\   z%test_ModularInteger.<locals>.<lambda>      "Q%"+ r:   c                        d      dz  S )NrF   rb   rC   r   s   r9   r\   z%test_ModularInteger.<locals>.<lambda>  r   r:   c                      t        d      S Nr   r   rC   r:   r9   r\   z%test_ModularInteger.<locals>.<lambda>  s
    r!u r:   c                      t        d      S )Ng @r   rC   r:   r9   r\   z%test_ModularInteger.<locals>.<lambda>  s
    r#w r:   )r   
isinstancer   r   boolr0   r.   
ValueError)r?   aF7r   s      @r9   test_ModularIntegerr   A  s	   	AB
1Aa"qAv--
1Aa"qAv--
1Aa"qAv--
1Aa"qAv--
1Aa"qAv--
2a5	Aa"qAv--
2a5	Aa"qAv--
2a5	Aa"qAv--
2a5	Aa"qAv--
2a5	Aa"qAv--	AAa"qAv--	AAa"qAv--	BqE	Aa"qAv--
1	Aa"qAv--
11Aa"qAv--
11Aa"qAv--	BqE	Aa"qAv--
1	Aa"qAv--
11Aa"qAv--
11Aa"qAv--	"Q%Aa"qAv--
1aAa"qAv--
1beAa"qAv--
1beAa"qAv--	"Q%Aa"qAv--
1aAa"qAv--
1beAa"qAv--
1beAa"qAv--	BqE	Aa"qAv--
1	Aa"qAv--
11Aa"qAv--
11Aa"qAv--
1qAa"qAv--
1qAa"qAv--
1qAa"qAv--	AB
1|Aa"qAv--
1}Aa"qAv--
1qtAa"qAv--1;%1;$	AB
1Aa"qAv--
1Aa"qAv--
1Aa"qAv--
1Aa"qAv--qEBqEMd"""qERUNt###qEBqEMe###qERUNu$$$qEBqEMe###qERUNu$$$qEBqEMd"""qERUNt###qEBqEMd"""qERUNt###qEBqEMe###qERUNu$$$qEBqEMe###qERUNu$$$qEBqEMd"""qERUNt###qEAI$qEQJ4qEAI%qEQJ5   qEAI%qEQJ5   qEAI$qEQJ4qEAI$qEQJ4qEAI%qEQJ5   qEAI%qEQJ5   qEAI$qEQJ4
=-.
=-.
:}%
:'r:   c                  ~    t        t        ddz  ddz              dk(  sJ t        t        ddz  d            dk(  sJ y )Nr2   i  r3   i  i d   l   UU*UU*UU*U)intr   rC   r:   r9   test_QQ_intr    sB    r!T'1d7#$...r!S&!}!????r:   c                      t        d      dkD  sJ t        d      dkD  sJ t        d      dkD  sJ t        d      dkD  sJ t        d      dkD  sJ t        d      dkD  sJ y )Nrc   Jz5vIh%<=+=V瞯<#B;Ww'&l7)r   rC   r:   r9   test_RR_doubler    sn    d8ee9ue9ue9ue9ue9ur:   c                  ,   t        d      } t        d      }| j                  dk(  sJ |j                  dk(  sJ t        |       dz
  dkD  sJ t        |      dz
  dk  sJ t        |j                        } ||       dz
  dkD  sJ  ||      dz
  dkD  sJ y )Nz1.01z1.00000000000000000000015   P   rd   r  )prec)r   _precr   r%   )f1f2RR2s      r9   test_RR_Floatr    s    	vB	)	*B88r>>88r>>b6!8eb6!8e

"Cr719ur719ur:   c                  t   t        d      j                  dkD  sJ t        d      j                  dkD  sJ t        d      j                  dkD  sJ t        d      j                  dkD  sJ t        d      j                  dkD  sJ t        d      j                  dkD  sJ t        d      j                  dkD  sJ t        d	      j                  dkD  sJ t        d
      j                  dkD  sJ t        d      j                  dkD  sJ t        d      j                  dkD  sJ t        d      j                  dkD  sJ y )Nrc   r  r  r  r	  r
  r  y        Q	@y        vIh%<=y        +=y        V瞯<y        #B;y        Ww'&l7)r   realimagrC   r:   r9   test_CC_doubler    s
   d8==5   e9>>E!!!e9>>E!!!e9>>E!!!e9>>E!!!e9>>E!!!e9>>E!!!f:??U"""f:??U"""f:??U"""f:??U"""f:??U"""r:   c                  d   t         j                  } dd| z   d| z
  dd| z  z
  fD cg c]  }t        j                  |       c}\  }}}}t        j                  ||      |k(  sJ t        j                  ||      |k(  sJ t        j
                  ||      |k(  sJ t        j
                  ||      |k(  sJ t        dd      t        dd      k7  sJ t        dd      dk7  sJ t        t        d      dz  d      t        d      dz  k7  sJ t        dd      j                         dk(  sJ t        dd      j                         dk(  sJ t        j                  t        dd            t        t        dd      t        d            k(  sJ t        j                  t        dd      t              t        t        dd      t        d            k(  sJ t        t        fD ]K   dd      t              dk(  sJ j                         k(  sJ j                  t              dk(  sJ j                  d      d	k(  sJ j                  d| z        d
k(  sJ t              t        d      k(  sJ  dd       dd      k(  sJ  dd       dd      k7  sJ  dd       d      k(  sJ z    dd      k(  sJ z
   dd      k(  sJ dz
   dz   cxk(  r dd      k(  sJ  J dz   dz   cxk(  r dd      k(  sJ  J z   dd      k(  sJ dz  dz  cxk(  r dd      k(  sJ  J dz   dd      k(  sJ dz  k(  sJ dz  z  cxk(  r dd      k(  sJ  J dz  z  z  cxk(  r dd      k(  sJ  J dz  dz  cxk(  r)t        t        d      dz  t        d       dz        k(  sJ  J dz  t        dd      k(  sJ dz  t        t        d      dz  d      k(  sJ dz  t        dt        d      dz        k(  sJ dz  t        t        d      dz  t        d       dz        k(  sJ t        d      \  }}d|z  |z   k(  sJ t        d      \  }}|z  |z    dd      k(  sJ t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t"        fd       t        t"        fd       t        t"        fd       t        t"        fd       t        t"        fd        t        t"        fd!       t        t"        fd"       t        t"        fd#       t        t"        fd$       t        t"        fd%       j%                  t        d             dd      k(  sJ j'                   dd            t        d      k(  sJ t        t(        fd&       j+                  t,              }t/        |t0              sJ |j2                  k(  sJ t5        |j6                        dk(  r$|j6                  d   j9                         t,        k(  sJ t        u rUj;                         }	t/        |	t<              sJ |	j2                  t        k(  sJ |	j>                  j@                  d   | k(  sJ  dd       dd       dd       dd      fD ]V  }
jC                  |
      d'u sJ jE                  |
      d'u sJ jG                  |
      d'u sJ jI                  |
      d'u rVJ  tK               tM               t=        t        |       g}tN        r|tQ               tS               gz  }|D ]I  }j                   |d             dd      k(  sJ j                   |d      |       dd      k(  rIJ  t        t        fD ]K  }j                   |dd             dd      k(  sJ j                   |dd      |       dd      k(  rKJ  t        k(  rtU              d(k(  sJ dz   dd      k(  sJ dz   dd)      k(  sJ dz   dd      k(  sJ dz   dd      k(  sJ | dd      k(  sJ | dd      k(  sJ jW                         k(  sJ jY                         t        k(  rJ tU              d*k(  sJ jW                         t        k(  sJ jY                         k(  sJ dz   dt        d      dz        k(  sJ dz   t        d+      dz  t        d,       dz        k(  sJ dz   dd      k(  sJ dz   dd      k(  sJ | t        d      dz  t        d       dz        k(  s	J |f       | dd      k(  sJ  t        d      dz  t        d      dz        }j[                  |      t        dd-      k(  sJ j]                  |      t        d      k(  rLJ  y c c}w ).NrF   r2   r3   r   r   rb   z3 + 4*I)NN)r2   r   )r   r2   )r3   r   rd         r`      	   r   i,      c                       dz  S r   rC   qs   r9   r\   z'test_gaussian_domains.<locals>.<lambda>3      !a% r:   c                       dz  S r   rC   r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>4  r%  r:   c                       dz  S r   rC   r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>5  s    !q& r:   c                      t         d      S r   divmodr#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>6      &A, r:   c                      t         d      S r   r)  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>7  r+  r:   c                       t         z   S r5   r   r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>8      !a% r:   c                       t         z
  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>9  r/  r:   c                      t          z   S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>:      !a% r:   c                      t          z
  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>;  r2  r:   c                       t         z  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda><  r/  r:   c                      t          z  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>=  r2  r:   c                       t         z  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>>  r/  r:   c                      t          z  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>?  r2  r:   c                       t         z  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>@  s    !q& r:   c                      t          z  S r5   r.  r#  s   r9   r\   z'test_gaussian_domains.<locals>.<lambda>A  s    !q& r:   c                  .     j                  t              S r5   )r   r
   )Gs   r9   r\   z'test_gaussian_domains.<locals>.<lambda>E  s    q||B'7 r:   Fz
ZZ_I(3, 4)ru   z
QQ_I(3, 4)$   0   r   )/r   ImaginaryUnitr"   r   gcdlcmr#   quadrantr   strparent_get_xyr
   hashr*  r0   ZeroDivisionError	TypeErrorr   to_sympyr-   r   r   r   r$   rN   r   gensas_expras_AlgebraicFieldr!   r   argsis_negativeis_positiveis_nonnegativeis_nonpositiver   r    r   r   r   reprrj   ro   numerdenom)r   r   r   bcdr   rPRAFqir   rS   q2r;  r$  s                 @@r9   test_gaussian_domainsr\    s	   	A,-q1ua!eQ1W+EFa$,,q/FJAq!Q88Aq>Q88Aq>Q88Aq>Q88Aq>Q1:a###1:??!Q?ad1f$$$1: A%%%A;!Q&&&<<1a!T"Q(BqE%::::<<1a"%bAh1)>>>>D\ i*aG1v"""xxzQyy},,,yy|v%%%yy1~'''Aw$v,&&&Aw!Aq'!!!Aw!Aq'!!!Aw!A$1u!Q1u!Q1u!a+1Q8+++++1uA(1a(((((1u"b	!!!1uA)1b)))))Av1a   Av{{AvQ+!B)+++++AvQ1abk111111uR;4!R1Q4#;;;;;;1uQ
"""1uQqT!VQ'''sd1ad1fo%%%sd1Q47QrUF2I....a|1sQw!||a|1sQw!Aq'!!! -0 -0 .1 "67 "67y-(y-(y-(y-(y-(y-(y-(y-(y.)y.)||AaD!Qq!W,,,zz!Aq'"ad***~78XXa["n---yyA~~277|q RWWQZ%7%7%9Q%>>>9$$&Bb.11199?"?66;;q>Q&&&R8Qq!Wa2h!Q8 	1B==$---==$---##B'5000##B'5000		1 ;	^B-BC	79--G 	1A99QqT?a1g---99QqT1%1a000	1 t 	4A99Qq!W%1a00099Qq!Wa(AaG333	4 97l***a41Q7?"?q5AaH$$$6Qq!W$$$q5Ab!H$$$!Q<<!Q<<::<1$$$;;=D(((7l***::<4''';;=A%%%a41Q!Q<'''q5AaeBh2r	22226Qq!W$$$q5AaG###!A$r'AaD58,,3qe3,!Q<<1Q461Q46"B772;$q"+---772;$q')))Si* Gs   h-c                  `   t         j                  t        j                  u sJ t         j                  t        j
                  u sJ t        d      t        j                  d      k(  sJ t        d      j                  t        j
                  u sJ t        d      t        j
                  u sJ dt        t        t        t        z  z   t        z        z  t        ddt        z  z         cxk(  r"dt        t        t        z  z   t        z  z  k7  sJ  J dt        t        t        t        z  z   t        z        z  dt        t        t        z  z   t        z  z  cxk(  rdt        z   k7  sJ  J t        j                  t        d      t              t         j                  u sJ t        j                  t        d      t               t        j                  k(  sJ t        j                  t        j
                        t        j
                  u sJ t        j                  t         j                        t        j
                  u sJ t        t        d        t        j                          t         k(  sJ t        j"                  t              t         k(  sJ t        j"                  t               t         k(  sJ y )Nrd   r2   c                  ,    t        j                  g       S r5   )r   r   rC   r:   r9   r\   ztest_EX_EXRAW.<locals>.<lambda>  s    5#3#3B#7 r:   )r   r   r   r   r   r   r   
Expressionexr   r   r   r   rH  r0   r-   ro   r6   rC   r:   r9   test_EX_EXRAWra  }  s   ::99a5BMM!$$$$a588quu8quu RQqS!_1qs7>q1qs7A+>>>>>UA!GQ;1q1Q3wk?=q1u=====beR(EII555??58U+rvv555AEE"aee+++>>%))$---
>78??%%%;;r?e###88E?e###r:   c                  4   t         t        t        fD ]F  } | j                   | d             | d      k(  sJ | j                   | d             | d      k(  rFJ  t        t
        fD ]  } | j                  t              }| j                   | d             | d      k(  sJ | j                   | d      |z        | k(  sJ | j                   | d              | d      k(  sJ | j                   | d       |z        |k(  rJ  t         t           } | j                   | t        dz                | d      k(  sJ | j                   | t         dz                | d      k(  sJ t        t           } | j                  | j                  t        t        z              t	        dd      k(  sJ t	        j                  t        t              } | j                  t              }||z  | j                  k(  sJ | j                  |z   || j                  z
  z  | k(  sJ y )Nr2   rd   ru   rb   r   )r   r   r   canonical_unitr"   r#   r   r   r   r=   r   r   )rS   r   s     r9   test_canonical_unitrd    s   "b\ 0!%1---"&!B%///0 D\ .LLO!%1---!Q'A2---1&!B%///1a(A---. 	1AAa!eH%1---Aqb1fI&!B%///QAALL1-.$q"+===1A	QAq5AEE>>EEAIAEE	"qb(((r:   c                      t        t        d      j                               dk(  sJ t        t        d      j                               dk(  sJ y )Nr2   r   r   )rB  r   rC  r   rC   r:   r9   test_issue_18278rf    s<    r!u||~$&&&r!u||~$&&&r:   c                      t         j                  } d| z   dfD cg c]  }t        j                  |       c}\  }}t        j                  |      dk(  sJ t        j                  |      dk(  sJ y c c}w Nr2   rF   F)r   r>  r   r   rM  r   r   r   rT  s       r9   test_Domain_is_negativerj    b    	A$%E1:.aBJJqM.DAq>>!%%%>>!%%% /   A1c                      t         j                  } d| z   dfD cg c]  }t        j                  |       c}\  }}t        j                  |      dk(  sJ t        j                  |      dk(  sJ y c c}w rh  )r   r>  r   r   rN  ri  s       r9   test_Domain_is_positivern    rk  rl  c                      t         j                  } d| z   dfD cg c]  }t        j                  |       c}\  }}t        j                  |      dk(  sJ t        j                  |      dk(  sJ y c c}w rh  )r   r>  r   r   rO  ri  s       r9   test_Domain_is_nonnegativerp    f    	A$%E1:.aBJJqM.DAqQ5(((Q5((( /rl  c                      t         j                  } d| z   dfD cg c]  }t        j                  |       c}\  }}t        j                  |      dk(  sJ t        j                  |      dk(  sJ y c c}w rh  )r   r>  r   r   rP  ri  s       r9   test_Domain_is_nonpositivers    rq  rl  c                      t         t           } | j                  t              }| j                  t        d            |dz  k(  sJ | j	                  t        d            |dz  k(  sJ y )Nr3   )r   r   r   r   r   )rS   eKs     r9   test_exponential_domainrv    sV    
1A	
aB<<A27***99SVa'''r:   c                     t        j                  t        d            } | j                  j                  J t        t        d      d      }t        j                  |      } | j                  j                  j                  dk(  sJ t        j                  |d      } | j                  j                  j                  dk(  sJ t        j                  t        d      t        d            } | j                  j                  J t        j                  |t        d            } | j                  j                  J t        j                  t        d      t        d      d      } | j                  j                  j                  dk(  sJ t        j                  |      } | j                   | g d            }|j                  |j                  u sJ y )Nr2   alpha)aliasthetar3   )rd   r2   r3   )r   r>   r   r   ry  r   name
to_alg_num)krx  betas      r9   test_AlgebraicField_aliasr    sh   
47#A55;; DG73E
5!A55;;w&&& 	50A55;;w&&& 	47DG,A55;; 	5$q'*A55;; 	47DG7;A55;;w&&& 	5!A<<)%D::$$$r:   N)t__doc__sympy.core.numbersr   r   r   r   r   r   r	   r
   r   sympy.core.singletonr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   sympy.polys.polytoolsr   	sympy.abcr   r   r   sympy.external.gmpyr   sympy.polys.domainsr   r   r   r   r   r   r   r   r   r   r   r    "sympy.polys.domains.algebraicfieldr!   #sympy.polys.domains.gaussiandomainsr"   r#   "sympy.polys.domains.polynomialringr$   sympy.polys.domains.realfieldr%   !sympy.polys.numberfields.subfieldr&   sympy.polys.ringsr'   sympy.polys.specialpolysr(   sympy.polys.fieldsr)   sympy.polys.agca.extensionsr*   sympy.polys.polyerrorsr+   r,   r-   r.   r/   sympy.testing.pytestr0   	itertoolsr1   r>   r<   r6   r@   rD   rK   rX   r^   re   rg   rl   rp   rs   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r\  ra  rd  rf  rj  rn  rp  rs  rv  r  rC   r:   r9   <module>r     s   V      " 6 9 8 &   (# # # # = : = 3 ? " 4 $ 7  ( ba$q'*pdwTrJ&1fOIBX60D7,B )29j:"+
,
<50 D# $M.W,4
:;U(n@
# y*x$2)4'
&&))(%r:   