
    sg                        d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZ 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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lAmBZBmCZC ddlDmEZE  ej                   ed       ed            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]d/ Z^d0 Z_d1 Z`d2 Zad3 Zbd4 Zcd5 Zdd6 Zed7 Zfd8 Zgd9 Zhd: Zid; Zjd< Zkd= Zld> Zmd? Znd@ ZodA ZpdB ZqdC ZrdD ZsdE ZtdF ZudG ZvdH ZwdI ZxdJ ZydK ZzyL)MzPTests for classes defining properties of ground domains, e.g. ZZ, QQ, ZZ[x] ...     )GROUND_TYPES)	AlgebraicNumberEFloatIIntegerRationaloopi_illegal)S)exp)sqrt)sin)Poly)xyz)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warns_deprecated_sympy)product      c                 $    | j                  |      S Nunify)K0K1s     Y/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/domains/tests/test_domains.pyr8   r8   )   s    88B<    c                  j    t        d       t        d      t                 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              k(  sJ t        t         fd       t        t         fd       t        t         fd       t        t         fd       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         fd       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         fd       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         fd       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         fd       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         fd       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         fd       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         fd       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         fd       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 )Nr4      c                  $    t         t              S r6   r8   r   F3s   r;   <lambda>z#test_Domain_unify.<locals>.<lambda>1       eBm r<   c                  $    t         t              S r6   r8   r   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>2   rD   r<   c                  $    t         t              S r6   r8   r"   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>3       eBo r<   c                  $    t         t              S r6   r8   r#   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>4   rI   r<   c                  $    t         t              S r6   )r8   ALGrA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>5   s    eBn r<   c                  $    t         t              S r6   r8   r   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>6   rD   r<   c                  $    t         t              S r6   r8   r   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>7   rD   r<   c                  2    t         t        t                 S r6   r8   r   r   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>8   s    eB1&6 r<   c                  J    t         t        j                  t                    S r6   r8   r   
frac_fieldr   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>9   s    eBa0@&A r<   c                  $    t         t              S r6   r8   r   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>:   rD   r<   c                      t               S r6   r7   rB   F5s   r;   rC   z#test_Domain_unify.<locals>.<lambda>=   s    eBm r<   c                  *    t         t                 S r6   )r8   r   rZ   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>>   s    eB1&6 r<   c                  B    t         j                  t                    S r6   )r8   rV   r   rZ   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>?   s    eBa0@&A r<   c                  $    t        t               S r6   r@   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>A       eBm r<   c                  $    t        t               S r6   rF   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>K   r_   r<   c                  $    t        t               S r6   rH   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>U       eD"o r<   r3   c                  $    t        t               S r6   rK   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>b   rb   r<   c                  $    t        t               S r6   rO   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>s   r_   r<   c                  $    t        t               S r6   rQ   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>~   r_   r<   c                  2    t        t        t                  S r6   rS   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>   s    eBqE2&6 r<   c                  J    t        t        j                  t                     S r6   rU   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>   s    eBMM!,<b&A r<   c                  $    t        t               S r6   rX   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>   r_   r<   )r   r8   r0   r+   r   r   rM   r   r   r   rV   r   r"   r#   algebraic_fieldr   r   r   rZ   s   @@r;   test_Domain_unifyrj   ,   s'
   	AB	ABR=B
34
34
56
56
45
34
34
67
AB
34R=B
34
67
AB
34R=BR=BS>S   R=BR=BRUr!u$$$R]]1%&"--*::::R=B
34R=BR=BS>S   R=BR=BRUr!u$$$R]]1%&"--*::::R=B
56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   
56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   
34R=BR=BS>RR=BR=BRUr!u$$$R]]1%&"--*::::R=Ba5;;r}}Q'(BMM!Q,????
34R=BR=BS>RR=BR=BRUr!u$$$R]]1%&"--*::::R=B
67Ar!u$$$Ar!u$$$AA&&&Ar!u$$$Ar!u$$$A1"Q%'''Aa()R]]1-====Ar!!!
AB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&",,,
34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 r6   )r8   r   	poly_ringr   r   r   rV   r    r<   r;   test_Domain_unify_compositern      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 )Nr>      )r   ri   r   r8   r   r   rV   )sqrt5sqrt7sqrt57s      r;   test_Domain_unify_algebraicrt     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 )Nr3   domain)r*   r   r   r   r   r   r8   r   )	KxZZKxQQKxZZyKxQQyKKzKxKyKxys	            r;   !test_Domain_unify_FiniteExtensionr   2  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 r6   )r   r   r   unify_with_symbolsr   rm   r<   r;   rC   z0test_Domain_unify_with_symbols.<locals>.<lambda>f  s    bAh&A&A"q!f&M r<   c                  d    t        j                  t         t        t        f   t        t        f      S r6   )r   r   r   r   r   rm   r<   r;   rC   z0test_Domain_unify_with_symbols.<locals>.<lambda>g  s    b&;&;Bq!tHq!f&M r<   )r0   r+   rm   r<   r;   test_Domain_unify_with_symbolsr   e  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   rp   Fr4   r>   g      @Q	@r3      )r   r   r   r   r   rM   r   r   r	   r
   r   r   r   rm   r<   r;   test_Domain__contains__r   i  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 )Nr3   r4   r   T)r	   r   r   rV   r   rm   r<   r;   test_issue_14433r     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 r6   )rM   get_ringrm   r<   r;   rC   z&test_Domain_get_ring.<locals>.<lambda>  s     r<   )r   has_assoc_Ringr   r   r   rV   r   r   rM   r   r0   r/   rm   r<   r;   test_Domain_get_ringr     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   rM   r   r   	get_fieldrV   rm   r<   r;   test_Domain_get_fieldr     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        d      t        t        t        t        t
        t        t        t           t        t           t        t           t
        t           t        t           g} | D ]  }| D ]  }|t           j                  |      |t           k(  sJ |t        t        f   j                  |      |t        t        f   k(  sJ |j                  t              j                  |      |j                  t              k(  sJ |j                  t        t              j                  |      |j                  t        t              k(  sJ |j                  t              j                  |      |j                  t              k(  sJ |j                  t        t              j                  |      |j                  t        t              k(  sJ |j                  t              j                  |      |j                  t              k(  sJ |j                  t        t              j                  |      |j                  t        t              k(  rJ   y )Nr>   )r   r   r   rM   r   r   r   r   r   
set_domainr   rV   old_poly_ringold_frac_field)domsD1D2s      r;   test_Domain_set_domainr   5  s   qE2r3BBqE2a5"Q%A1ND 	U 	UBa5##B'2a5000ad8&&r*bAh666==#..r2bmmA6FFFF==A&11"5q!9LLLL##A&11"59I9I!9LLLL##Aq)44R8B<L<LQPQ<RRRR$$Q'2226":K:KA:NNNN$$Q*55b9R=N=NqRS=TTTT	U	Ur<   c                  R   t        d      t        t        t        t        g} t
        t        g}| |z   D ]s  }||t           |j                  t              |j                  t              |j                  t              fD ]'  }|| v r|j                  du rJ |j                  du r'J  u y )Nr>   TF)r   r   r   rM   r   r   r   r   rV   r   r   is_Exact)exactinexactDRs       r;   test_Domain_is_Exactr   C  s    UBC$E2hGW_ +AaD!,,q/1??1+=q?O?OPQ?RR 	+AEzzzT)))zzU***		++r<   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        j                         t        k(  sJ t        t           j                         t        t           k(  sJ t        t           j                         t        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        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              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 t	        j                  t        t              j                         t        j                  t        t              k(  sJ t        j                  t        t              j                         t        j                  t        t              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              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 t	        j                  t        t              j                         t        j                  t        t              k(  sJ t        j                  t        t              j                         t        j                  t        t              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              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 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 r6   )r   	get_exactr   r   r   r   r#   rM   r   r   rV   r   r   rm   r<   r;   test_Domain_get_exactr   N  s   <<>R<<>R<<>R<<>R<<>T!!!==?c!!!a5??1%%%a5??1%%%a5??1%%%a5??Q'''ad82ad8+++ad82ad8+++ad82ad8+++ad841:---==%%'2==+;;;;==%%'2==+;;;;==%%'2==+;;;;==%%'4??1+======A((*bmmAq.AAAA==A((*bmmAq.AAAA==A((*bmmAq.AAAA==A((*dooa.CCCCA((*b.>.>q.AAAAA((*b.>.>q.AAAAA((*b.>.>q.AAAAA((*d.@.@.CCCCAq!++-1A1A!Q1GGGGAq!++-1A1A!Q1GGGGAq!++-1A1A!Q1GGGGAq!++-1C1CAq1IIIIQ))+r/@/@/CCCCQ))+r/@/@/CCCCQ))+r/@/@/CCCCQ))+t/B/B1/EEEEQ",,."2C2CAq2IIIIQ",,."2C2CAq2IIIIQ",,."2C2CAq2IIIIQ",,.$2E2Ea2KKKKr<   c                  d   t        d      dft        d      dft        d      dffD ]v  \  } }| | t           | j                  t              | j                  t              | j	                  t              fD ]'  }|j
                  du sJ |j                         |k(  r'J  x t        t        t        t        t        fD ]s  }||t           |j                  t              |j                  t              |j	                  t              fD ]'  }|j
                  du sJ |j                         dk(  r'J  u y )Nr4   r>   rp   FTr   )r   r   rV   r   r   has_CharacteristicZerocharacteristicr   r   r"   r#   rM   )Fcr   r   s       r;   test_Domain_characteristicr   w  s   Q%beQZ"Q%4 +1AaD!,,q/1??1+=q?O?OPQ?RR 	+A++u444##%***	++ T4$ +AaD!,,q/1??1+=q?O?OPQ?RR 	+A++t333##%***	++r<   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)r   r   r   r3   )FTFTF)TTFTTFT)r   r   r   rV   is_unit)numsinvringinvfieldZZxQQxQQxfns          r;   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        d      t              t        dd      k(  sJ t        j                  t        dd      t               t        d      k(  sJ t	        j                  t        dd      t              t	        t        dd      t        dd            k(  sJ t        j                  t	        t        dd      t        dd            t              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e2r:   K2K3s        r;   check_elementz*test_Domain_convert.<locals>.check_element  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 r6   )r8   convert_fromonezero)r:   r   r   r   s      r;   check_domainsz*test_Domain_convert.<locals>.check_domains  s    XXb\boobffb1BFFRRHboobffb1BFFR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 r6   )r   r   rV   )r|   domainss     r;   composite_domainsz.test_Domain_convert.<locals>.composite_domains  sL    aD!A$!Q$LLOQ\\!_all1a.@
 r<   r3   r4   gLoW5l   $7q/ l                                r   r   r   g      ?g      ?   )r   ri   r   r   r#   r"   r   r   	enumerateconvertr'   	to_domainr   rV   r   r2   
from_sympy)r   r   QQ2QQ3r   ir:   r   r   K4r   xrKsKaKbr   s                  @r;   test_Domain_convertr     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---??2c7B'2a8333??2a8R(BsG333RT]B/41a"Q(3KKKK??41a"Q(3T:bdmKKK	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         t        d      ft        t        dd      ft        t        dd      ft        t        dd      ft        t	        d      ft
        t        dd      ft        t        d      ft        t        d      ft        t        j                  t        d            fg	} | D ]d  \  }}t        t        fD ]P  }|j                  |j                  |            }|j                  ||      |k(  sJ |j                  ||      |k(  rPJ  f y )Nr4   r   r3   )r   r   r"   r#   r   r   r   r   rM   r   r   to_sympyr   )elementsr   eEEelems        r;   test_EX_convertr     s     
RU	R!W	tAay	tAay	RU	R!W	RU	a	cnnT!W%&
H  11e) 	1B==A/D??1a(D000>>$+q000	11r<   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 r6   )r   r   r   r   r   r   )r:   r   s     r;   !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   rl   r   )r   s    r;   test_PolynomialRing__initr     s)    	b"BA<<>Q[[]***r<   c                  v    t        dt              \  } t        j                         | j                         k(  sJ y r   )r)   r   rV   r   )r   s    r;   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 )Nr3   r4   )r   rV   r   r   r   r	   r   r   )r|   s    r;   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 r6   )r   r   injectrm   r<   r;   rC   ztest_inject.<locals>.<lambda>  s    BqELLO r<   )r   r   r   r   r   rV   r0   r,   rm   r<   r;   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 )Nr3   r   rv   c                  .     j                  t              S r6   )dropr   )r   s   r;   rC   ztest_drop.<locals>.<lambda>  s    BGGAJ r<   )	r   r   r   r   rV   r*   r   r0   r,   )r|   r   s    @r;   	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)r   r3   r4   r   c              3   F   K   | ]  }t        j                  |        y wr6   r   of_type.0elts     r;   	<genexpr>z"test_Domain_map.<locals>.<genexpr>  s     .3rzz#.   !c              3   F   K   | ]  }t        j                  |        y wr6   r   r   s     r;   r   z"test_Domain_map.<locals>.<genexpr>   s     13rzz#1r   r   r   )r   mapalllen)seqs    r;   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   rV   r%   r   rm   r<   r;   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 Nr3   r4   r   
   r   )	r   ri   r   extminpolyr   r   domr   )algs    r;   test_Domain__algebraic_fieldr  3  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       r;   test_Domain_alg_field_from_polyr  A  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   r4   r   )	r   cyclotomic_fieldr  r	  r   r(   r
  r   r&   )r|   r   r   s      r;   test_Domain_cyclotomic_fieldr  S  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,yr3   r   r   )r)   r   r'   r   from_FractionFieldr   )	r   r   r   r   XYr  r  r  s	            r;   &test_PolynomialRing_from_FractionFieldr  a  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  r4   r3   r>      )r'   r   r)   r   r   from_PolynomialRing)r   r   r   r   r  r  r  r  s           r;   &test_FractionField_from_PolynomialRingr   y  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 y )Nr4   r   Tr>   )r   r   rm   r<   r;   test_FF_of_typer"    sN     a5==Aq"d***a5==Aq"d***r<   c                      t         t           t        t           k(  rJ t        j                  t              t        j                  t              k(  rJ y r6   )r   r   r   rV   rm   r<   r;   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        r   g      ?)r   r   r   ZerodtypeOner   evalfrm   r<   r;   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 )Nr4   c                  &     j                        S r6   )r   )r
  r   s   r;   rC   z(test_not_in_any_domain.<locals>.<lambda>  s    3;;q> r<   )listr   r   floatr   r   r   r   r   r0   r-   )r   checkr
  s   ` @r;   test_not_in_any_domainr0    s    NaS "2A,$(a$( (EBB# ; 	;AAv#)C<)!S)<>#9:		;;$(s   Bc                     t        d      }  | d      }| j                  |      r|dk(  sJ  | d      }| j                  |      r|dk(  sJ  | d      }| j                  |      r|dk(  sJ  | d      }| j                  |      r|dk(  sJ  | d      }| j                  |      r|dk(  sJ  |  | d            }| j                  |      r|dk(  sJ  |  | d            }| j                  |      r|dk(  sJ  |  | d            }| j                  |      r|dk(  sJ  |  | d            }| j                  |      r|dk(  sJ  |  | d            }| j                  |      r|dk(  sJ  | d       }| j                  |      r|dk(  sJ  | d       }| j                  |      r|dk(  sJ d | d      z   }| j                  |      r|dk(  sJ  | d      dz   }| j                  |      r|dk(  sJ  | d       | d      z   }| j                  |      r|dk(  sJ  | d       | d      z   }| j                  |      r|dk(  sJ d | d      z
  }| j                  |      r|dk(  sJ  | d      dz
  }| j                  |      r|dk(  sJ  | d       | d      z
  }| j                  |      r|dk(  sJ  | d       | d      z
  }| j                  |      r|dk(  sJ d | d      z  }| j                  |      r|dk(  sJ  | d      dz  }| j                  |      r|dk(  sJ  | d       | d      z  }| j                  |      r|dk(  sJ  | d       | d      z  }| j                  |      r|dk(  sJ d | d      z  }| j                  |      r|dk(  sJ  | d      dz  }| j                  |      r|dk(  sJ  | d       | d      z  }| j                  |      r|dk(  sJ  | d       | d      z  }| j                  |      r|dk(  sJ  | d      dz  }| j                  |      r|dk(  sJ  | d      dz  }| j                  |      r|dk(  sJ  | d      dz  }| j                  |      r|dk(  sJ t        d      } |d      dz  }|j                  |      r|dk(  sJ  |d      dz  }|j                  |      r|dk(  sJ t         | d            d	u sJ t         | d            d
u sJ t        d       d      dz  }j                  |      r|dk(  sJ  d      dz  }j                  |      r|dk(  sJ  d      dz  }j                  |      r|dk(  sJ  d      dz  }j                  |      r|dk(  sJ t        dk7  r&t	        t
        fd       t	        t
        fd       t	        t        d        t	        t        d        t        d      D ]#  t        d      D ]  t        dk7  rt               5                k  k  u sJ 	 d d d        t               5                k  k  u sJ 	 d d d        t               5                kD  kD  u sJ 	 d d d        t               5                k\  k\  u sJ 	 d d d        t	        t        fd       t	        t        fd       t	        t        fd       t	        t        fd        & t        t        d            k(  sJ  t        d             d      k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w)Nr4   r   r   r3   r   rp   l    h] l h] FTr>   r   flintc                        d      dz  S )Nr   r   rm   r[   s   r;   rC   z%test_ModularInteger.<locals>.<lambda>      bebk r<   c                        d      dz  S )Nr>   r   rm   r4  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>  r5  r<   c                      t        d      S Nr   r   rm   r<   r;   rC   z%test_ModularInteger.<locals>.<lambda>  s
    r!u r<   c                      t        d      S )Ng @r9  rm   r<   r;   rC   z%test_ModularInteger.<locals>.<lambda>  s
    r#w r<   c                  &                    k  S r6   rm   r[   n1n2s   r;   rC   z%test_ModularInteger.<locals>.<lambda>      "R&2b6/ r<   c                  &                    k  S r6   rm   r<  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>      "R&BrF*: r<   c                  &                    kD  S r6   rm   r<  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>  r?  r<   c                  &                    k\  S r6   rm   r<  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>  rA  r<   )r   r   boolr   r0   r.   
ValueErrorranger1   	TypeErrorr   r   )rB   aF7r[   r=  r>  s      @@@r;   test_ModularIntegerrJ    s3   	AB
1A::a=Q!V##
1A::a=Q!V##
1A::a=Q!V##
1A::a=Q!V##
1A::a=Q!V##
2a5	A::a=Q!V##
2a5	A::a=Q!V##
2a5	A::a=Q!V##
2a5	A::a=Q!V##
2a5	A::a=Q!V##	AA::a=Q!V##	AA::a=Q!V##	BqE	A::a=Q!V##
1	A::a=Q!V##
11A::a=Q!V##
11A::a=Q!V##	BqE	A::a=Q!V##
1	A::a=Q!V##
11A::a=Q!V##
11A::a=Q!V##	"Q%A::a=Q!V##
1aA::a=Q!V##
1beA::a=Q!V##
1beA::a=Q!V##	"Q%A::a=Q!V##
1aA::a=Q!V##
1beA::a=Q!V##
1beA::a=Q!V##
1qA::a=Q!V##
1qA::a=Q!V##
1qA::a=Q!V##	AB
1|A::a=Q!V##
1}A::a=Q!V##1;%1;$	AB
1A::a=Q!V##
1A::a=Q!V##
1A::a=Q!V##
1A::a=Q!V##w}12}12
:}%
:'Ah <( 	<Bw&+- :rFRVOb999:+- <rFbf,"(;;;<+- :rFRVOb999:+- <rFbf,"(;;;< < y"9:y":;y"9:y":;	<<$ gaj>Rgaj>RU"""!: :< <: :< <s0   ]8]$]](]]]%(]2c                  ~    t        t        ddz  ddz              dk(  sJ t        t        ddz  d            dk(  sJ y )Nr3   i  r4   i  i d   l   UU*UU*UU*U)intr   rm   r<   r;   test_QQ_intrN    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 )Nr   Jz5vIh%<=+=V瞯<#B;Ww'&l7)r   rm   r<   r;   test_RR_doublerV  $  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   r   rP  )prec)r   _precr   r%   )f1f2RR2s      r;   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 )Nr   rP  rQ  rR  rS  rT  rU  y        Q	@y        vIh%<=y        +=y        V瞯<y        #B;y        Ww'&l7)r   realimagrm   r<   r;   test_CC_doublerc  :  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                     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 ]]   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  tJ        t        t=        t        |       g}|tM               tO               gz  }tP        d(k(  r|tS               tU               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(  rtW              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 jY                         k(  sJ j[                         t        k(  rJ tW              d+k(  sJ jY                         t        k(  sJ j[                         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^J  y c c}w )/Nr>   r3   r4   r   r   r   z3 + 4*I)NN)r3   r   )r   r3   )r4   r   r         r      	   r  i,      c                       dz  S r8  rm   qs   r;   rC   z'test_gaussian_domains.<locals>.<lambda>|      !a% r<   c                       dz  S r8  rm   rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>}  ro  r<   c                       dz  S r8  rm   rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>~  s    !q& r<   c                      t         d      S r8  divmodrm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>      &A, r<   c                      t         d      S r8  rs  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  ru  r<   c                       t         z   S r6   r   rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>      !a% r<   c                       t         z
  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  ry  r<   c                      t          z   S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>      !a% r<   c                      t          z
  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r|  r<   c                       t         z  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  ry  r<   c                      t          z  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r|  r<   c                       t         z  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  ry  r<   c                      t          z  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r|  r<   c                       t         z  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  s    !q& r<   c                      t          z  S r6   rx  rm  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  s    !q& r<   c                  .     j                  t              S r6   )r   r   )Gs   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  s    q||B'7 r<   Fgmpyz
ZZ_I(3, 4)r   z
QQ_I(3, 4)$   0   r  )0r   ImaginaryUnitr"   r   gcdlcmr#   quadrantr   strparent_get_xyr   hashrt  r0   ZeroDivisionErrorrG  r   r   r-   r   r   
isinstancer$   rw   r   gensas_expras_AlgebraicFieldr!   r  argsis_negativeis_positiveis_nonnegativeis_nonpositiver   r   r    r   r   r   reprr   r   numerdenom)r   r   rH  br   dr   rPRAFqir   r|   q2r  rn  s                 @@r;   test_gaussian_domainsr  J  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\ o*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 r>"a01 	IK--6!	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')))_o* 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 )Nr   r3   c                  ,    t        j                  g       S r6   )r   r   rm   r<   r;   rC   ztest_EX_EXRAW.<locals>.<lambda>  s    5#3#3B#7 r<   )r   r   r   r&  r   r(  r   
Expressionexr   r   r   r   r   r0   r-   r   r8   rm   r<   r;   test_EX_EXRAWr    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                      t        d      t        t              t        d      g} t        |       t        d      t        d      t        t              gk(  sJ y )Nr   r4   )r   r   sorted)r   s    r;   test_EX_orderingr    s@    1r!ube$H(1r!ube4444r<   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 )Nr3   r   r   r   r   )r   r   r   canonical_unitr"   r#   r   r   r   rV   r   r   )r|   r   s     r;   test_canonical_unitr    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 )Nr3   r   r   )r  r   r  r   rm   r<   r;   test_issue_18278r    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 Nr3   r>   F)r   r  r   r   r  r   r   rH  r  s       r;   test_Domain_is_negativer  	  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 r  )r   r  r   r   r  r  s       r;   test_Domain_is_positiver    r  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 r  )r   r  r   r   r  r  s       r;   test_Domain_is_nonnegativer    f    	A$%E1:.aBJJqM.DAqQ5(((Q5((( /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 r  )r   r  r   r   r  r  s       r;   test_Domain_is_nonpositiver    r  r  c                      t         t           } | j                  t              }| j                  t        d            |dz  k(  sJ | j	                  t        d            |dz  k(  sJ y )Nr4   )r   r   r   r   r   )r|   eKs     r;   test_exponential_domainr  %  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 )Nr3   alpha)aliasthetar4   )r   r3   r4   )r   ri   r   r  r  r   name
to_alg_num)kr  betas      r;   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<   c                  4   t        j                  t        d            du sJ t        j                  t        d            t        d      k(  sJ t        j                  t        d            du sJ t        j                  t        d            J t        j                  t        d            du sJ t        j                  t        d            t        d      k(  sJ t        j                  t        d            du sJ t        j                  t        d            J t        j                  t        dd            du sJ t        j                  t        dd            t        d	d      k(  sJ t        j                  t        d
d            du sJ t        j                  t        d
d            t        d	d      k(  sJ t        j                  t        dd            du sJ t        j                  t        dd            t        d	d      k(  sJ t        j                  t        dd            du sJ t        j                  t        dd            J t        j                  t        dd            du sJ t        j                  t        dd            J t        j                  t        d            du sJ t        j                  t        d            t        d      k(  sJ t        j                  t        d            du sJ t        j                  t        d            t        d      k(  sJ t        j                  t        dd            du sJ t        j                  t        dd            J t	        j                  t	        d            du sJ t	        j                  t	        d            t	        d      k(  sJ t	        j                  t	        d            du sJ t	        j
                  t	        j                  t	        d            t	        d      d      sJ t	        j                  t	        d            du sJ t	        j                  t	        d            t	        d      k(  sJ t	        j                  t	        d            du sJ t	        j                  t	        d            J t        j                  t        d            du sJ t        j
                  t        j                  t        d            t        d      d      sJ t        j                  t        d            du sJ t        j                  t        d            t        d      k(  sJ t        j                  t        d            du sJ t        j                  t        d            t        dd      k(  sJ t        j                  t        dd            du sJ t        j                  t        dd            t        dd      k(  sJ t        j                  t        dd            du sJ t        j                  t        dd            t        dd      k(  sJ t        d      } | j                   | d            du sJ | j                   | d             | d      k(  sJ | j                   | d            du sJ | j                   | d             | d      k(  sJ t        d      }|j                   |d            du sJ |j                   |d             |d	      k(  sJ |j                   |d	            du sJ |j                   |d	            J |j                   |d            du sJ |j                   |d             |d      k(  sJ y )Nr   Tr3   *   Fr   r   ri  r4      rf  irg     r>   ig      @g      @g;f?rS  )	tolerancer   r   rp   )r   	is_squareexsqrtr   r   almosteqr   r   )F2rI  s     r;   test_exsqrtr  M  s   <<1$&&&99RUr!u$$$<<25(((99RV$$$<<1$&&&99RUr!u$$$<<25(((99RV$$$<<1a!T)))99R1X"Q(***<<2q	"d***99RAY2a8+++<<2r
#t+++99RBZ Bq!H,,,<<2q	"e+++99RAY'''<<1a!U***99R1X&&&<<1$&&&99RUr!u$$$<<1$&&&99RUr!u$$$<<3
#u,,,99RQZ (((<<4!T)))99RX"S')))<<1$&&&;;ryyA',>)?5QQQ<<1$&&&99RUr!u$$$<<25(((99RV$$$<<1$&&&;;ryyA',>)?5QQQ<<1$&&&99RUr!u$$$<<24'''99RV1a(((<<1a!T)))99R1X"Q(***<<2r
#t+++99RBZ Bq"I---	AB<<1$&&&99RUr!u$$$<<1$&&&99RUr!u$$$	AB<<1$&&&99RUr!u$$$<<1%'''99RU###<<1$&&&99RUr!u$$$r<   N){__doc__sympy.external.gmpyr   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.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   r1   	itertoolsr2   ri   rM   r8   rj   rn   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r"  r$  r*  r0  rJ  rN  rV  r_  rc  r  r  r  r  r  r  r  r  r  r  r  r  rm   r<   r;   <module>r     s   V ,      " 6 9 8 &  # # # # = : = 3 ? " 4 $ 7  @ ba$q'*xtwTrJ&1fOIBX60D7,U+&LR+)79t1*:"+
,
<50 D# $M0W+4
:;y#x@

# *D$25
)4'
&&))(%B;%r<   