
    g                        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jF         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 ZzdLS )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                 ,    |                      |          S Nunify)K0K1s     b/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/domains/tests/test_domains.pyr8   r8   )   s    88B<<    c                  &    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                                       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          
                    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 d S )Nr4      c                  .    t           t                    S r6   r8   r   F3s   r;   <lambda>z#test_Domain_unify.<locals>.<lambda>1       eBmm 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oo 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nn 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                  D    t           t          t                             S r6   r8   r   r   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>8   s    eB1&6&6 r<   c                  R    t           t          j        t                              S r6   r8   r   
frac_fieldr   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>9   s    eBa0@0@&A&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mm r<   c                  :    t           t                             S r6   )r8   r   rZ   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>>   s    eB1&6&6 r<   c                  T    t                               t                              S r6   )r8   rV   r   rZ   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>?   s    eBa0@0@&A&A r<   c                  .    t          t                     S r6   r@   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>A       eBmm 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"oo 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                  D    t          t          t                              S r6   rS   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>   s    eBqE2&6&6 r<   c                  R    t          t          j        t                               S r6   rU   rA   s   r;   rC   z#test_Domain_unify.<locals>.<lambda>   s    eBM!,<,<b&A&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333444
3333444
5555666
5555666
4444555
3333444
3333444
6666777
AAAABBB
3333444R==B
33333444
66666777
AAAAABBB
3333444R==BR==BS>>S    R==BR==BRUr!u$$$$R]1%%&&"-*:*:::::R==B
3333444R==BR==BS>>S    R==BR==BRUr!u$$$$R]1%%&&"-*:*:::::R==B
5555666r??d""""t$$$$r??d""""sr1!T!WWd1ggFFFFFFr??b    r??b    r!ua((((tAw47****r}Q''((DOA,>,>>>>>tq))**doa.@.@@@@@r??b    
5555666r??d""""t$$$$r??d""""sr1!T!WWd1ggFFFFFFr??b    r??b    r!ua((((tAw47****r!ua((((tAw47****r}Q''((DOA,>,>>>>>tq))**doa.@.@@@@@r}Q''((DOA,>,>>>>>tq))**doa.@.@@@@@r??b    
3333444R==BR==BS>>RR==BR==BRUr!u$$$$R]1%%&&"-*:*:::::R==Ba5;;r}Q''((BM!Q,?,?????
3333444R==BR==BS>>RR==BR==BRUr!u$$$$R]1%%&&"-*:*:::::R==B
666677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AAABBBq!!2&&"-*:*:::::q!!2&&"-*:*:::::q!!3''3>>!+<+<<<<<q!!2&&"-*:*:::::q!!2&&"-*:*:::::q!!2a5))R]1-=-=====q!!2=#3#344a8H8HHHHHq!!2&&",,,,
3333444R==BR==BS>>RR==BR==BRUr!!!!R]1%%&&",,,,R==Br<   c                  FG   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 d S r6   )r8   r   	poly_ringr   r   r   rV   r    r<   r;   test_Domain_unify_compositern      s   a"%%a8888a"%%a8888a"%%a8888a"%%a8888R\!__%%a8888R\!__%%a8888R\!__%%a8888R\!__%%a8888a##R((BLA,>,>>>>>a##R((BLA,>,>>>>>a##R((BLA,>,>>>>>a##R((BLA,>,>>>>>R\!Q''((BLA,>,>>>>>R\!Q''((BLA,>,>>>>>R\!Q''((BLA,>,>>>>>R\!Q''((BL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//22bl1ooEEEEa",q//22bl1ooEEEEa",q//22bl1ooEEEEa",q//22bl1ooEEEEa##R\!__55a9K9KKKKKa##R\!__55a9K9KKKKKa##R\!__55a9K9KKKKKa##R\!__55a9K9KKKKKa",q!"4"455a9K9KKKKKa",q!"4"455a9K9KKKKKa",q!"4"455a9K9KKKKKa",q!"4"455a9K9KKKKKa##R\!Q%7%788BLAq<Q<QQQQQa##R\!Q%7%788BLAq<Q<QQQQQa##R\!Q%7%788BLAq<Q<QQQQQa##R\!Q%7%788BLAq<Q<QQQQQq!!2=#3#344a8H8HHHHHq!!2=#3#344a8H8HHHHHq!!2=#3#344a8H8HHHHHq!!2=#3#344a8H8HHHHHq!$$bmA&6&6772=A;N;NNNNNq!$$bmA&6&6772=A;N;NNNNNq!$$bmA&6&6772=A;N;NNNNNq!$$bmA&6&6772=A;N;NNNNNq!!2=A#6#6772=A;N;NNNNNq!!2=A#6#6772=A;N;NNNNNq!!2=A#6#6772=A;N;NNNNNq!!2=A#6#6772=A;N;NNNNNq!$$bmAq&9&9::bmAqRS>T>TTTTTq!$$bmAq&9&9::bmAqRS>T>TTTTTq!$$bmAq&9&9::bmAqRS>T>TTTTTq!$$bmAq&9&9::bmAqRS>T>TTTTTa"-"2"233r}Q7G7GGGGGa"-"2"233r}Q7G7GGGGGa"-"2"233r}Q7G7GGGGGa"-"2"233r}Q7G7GGGGGa##R]1%5%566"-1:M:MMMMMa##R]1%5%566"-1:M:MMMMMa##R]1%5%566"-1:M:MMMMMa##R]1%5%566"-1:M:MMMMMa"-1"5"566"-1:M:MMMMMa"-1"5"566"-1:M:MMMMMa"-1"5"566"-1:M:MMMMMa"-1"5"566"-1:M:MMMMMa##R]1a%8%899R]1aQR=S=SSSSSa##R]1a%8%899R]1aQR=S=SSSSSa##R]1a%8%899R]1aQR=S=SSSSSa##R]1a%8%899R]1aQR=S=SSSSSq!!2<??33r}Q7G7GGGGGq!!2<??33r}Q7G7GGGGGq!!2<??33r}Q7G7GGGGGq!!2<??33r}Q7G7GGGGGq!$$bl1oo66"-1:M:MMMMMq!$$bl1oo66"-1:M:MMMMMq!$$bl1oo66"-1:M:MMMMMq!$$bl1oo66"-1:M:MMMMMq!!2<1#5#566"-1:M:MMMMMq!!2<1#5#566"-1:M:MMMMMq!!2<1#5#566"-1:M:MMMMMq!!2<1#5#566"-1:M:MMMMMq!$$bl1a&8&899R]1aQR=S=SSSSSq!$$bl1a&8&899R]1aQR=S=SSSSSq!$$bl1a&8&899R]1aQR=S=SSSSSq!$$bl1a&8&899R]1aQR=S=SSSSSSSr<   c                     t          j        t          d                    } t          j        t          d                    }t          j        t          d          t          d                    }|                     |          |k    sJ |                     | t          t
          f                   | t          t
          f         k    sJ | t          t
          f                             |           | t          t
          f         k    sJ |                     |                     t          t
                              |                     t          t
                    k    sJ |                     t          t
                                        |           |                     t          t
                    k    sJ |                     |t          t
          f                   |t          t
          f         k    sJ | t          t
          f                             |          |t          t
          f         k    sJ |                     |                    t          t
                              |                    t          t
                    k    sJ |                     t          t
                                        |          |                    t          t
                    k    sJ d S )Nr>      )r   ri   r   r8   r   r   rV   )sqrt5sqrt7sqrt57s      r;   test_Domain_unify_algebraicrt     s   tAww''EtAww''EQa11F;;u'''';;uQT{##uQT{2222A;U##uQT{2222;;u''1--..%2B2B1a2H2HHHHHAq!!''..%2B2B1a2H2HHHHH;;uQT{##vad|3333A;U##vad|3333;;u''1--..&2C2CAq2I2IIIIIAq!!''..&2C2CAq2I2IIIIIIIr<   c            	      H   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
                                       }|                     |           | k    sJ |                    |          |k    sJ |                    |          |k    sJ |                    |          |k    sJ |                     t                    | k    sJ |                     t                    |k    sJ |                    t                    |k    sJ |                    t                    |k    sJ |                     t          t
                             |k    sJ |                     t          t
                             |k    sJ |                    t          t
                             |k    sJ |                    t          t
                             |k    sJ |                    t                    |k    sJ |                    t                    |k    sJ |                    t                    |k    sJ |                    t                    |k    sJ |                    t          t
                             |k    sJ |                    t          t
                             |k    sJ |                    t          t
                             |k    sJ |                    t          t
                             |k    sJ t          t          t          dz  dz
  t          t          t
                                       }|                    t                    |k    sJ |                    t          t                             |k    sJ |                    t          t
                             |k    sJ |                    t          t          t
          f                   |k    sJ t          t          t          dz  dz
  t          t          t
          t          f                             }|                    t          t                             |k    sJ |                    t          t          t          f                   |k    sJ |                    t          t
          t          f                   |k    s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
          |                    }|                    |          |k    sJ |                    |          |k    sJ |                    |          |k    sJ |                    |          |k    sJ d S )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7788D41q!B7778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778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55	6	6B	adQh"555	6	6B
$q!tax2666
7
7C88B<<288B<<288B<<388B<<3r<   c                  ^    t          t          d            t          t          d            d S )Nc                  ~    t           t          t          f                             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&M r<   c                  r    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&M r<   )r0   r+   rm   r<   r;   test_Domain_unify_with_symbolsr   e  s2    
MMNNN
MMNNNNNr<   c                  v   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 d S )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  sG   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OOr!d****ROOr!e++++ROOr!d****ROOr!d****ROOr!d****ROOs"t++++ROOr!Q$x'E1111ROOr!Q$x'D0000ROOr!Q$x'D0000QNNb T))))QNNb U****QNNb T))))QNNb T))))QNNb T))))QNNc!d****QNNbAh&50000QNNbAh&4////QNNb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%%%%GGrMd""""GGrMe####GGrMe####GGrMd""""GGrMd""""GGsNu$$$$GGr!Q$xE))))GGr!Q$xE))))GGr!Q$xD((((d1ggIMRD((((d1ggIMRE))))d1ggIMRE))))d1ggIMRD((((d1ggIMRD((((d1ggIMS T))))d1ggIMR1X%%////d1ggIMR1X%%////d1ggIMR1X%$....FFbLT!!!!FFbLU""""FFbLU""""FFbLT!!!!FFbLT!!!!FFcMe####FFbAh5((((FFbAh5((((FFb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NN1a!e$q(Bq!QwK7EAAA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 d S )Nr3   r4   r   T)r	   r   r   rV   r   rm   r<   r;   test_issue_14433r     s    QNN1ac 2 22t;;;;aC2=###,,,,TAqD[R]1Q3!444====Ur}QqS!,,,5555Ur}Q!,,,555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                   	                                t           t                   k    sJ t          t                   	                                t          t                   k    sJ t           t          t          f         	                                t           t          t          f         k    sJ t          t          t          f         	                                t          t          t          f         k    sJ t          j        t                    	                                t           t                   k    sJ t          j        t                    	                                t          t                   k    sJ t          j        t          t                    	                                t           t          t          f         k    sJ t          j        t          t                    	                                t          t          t          f         k    sJ t          j	                    t          k    sJ t          j	                    t          k    sJ t          t          d            d S )NTFc                  4    t                                           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2=*d2222=A-5555=A-5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5=A''))R1X5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
                                          t
          k    sJ t          t                                                   t          j	        t                    k    sJ t          t                                                   t          j	        t                    k    sJ t          t          t          f                                         t          j	        t          t                    k    sJ t          t          t          f                                         t          j	        t          t                    k    sJ d S )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00a5??a 0 00000ad82=A#6#66666ad82=A#6#666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 ]Y}|t                   	                    |          |t                   k    sJ |t          t          f         	                    |          |t          t          f         k    sJ |                    t                    	                    |          |                    t                    k    sJ |                    t          t                    	                    |          |                    t          t                    k    sJ |                    t                    	                    |          |                    t                    k    sJ |                    t          t                    	                    |          |                    t          t                    k    sJ |                    t                    	                    |          |                    t                    k    sJ |                    t          t                    	                    |          |                    t          t                    k    sJ [bd S )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/   qEE2r3BBqE2a5"Q%A1ND 	U 	U 	U 	UBa5##B''2a50000ad8&&r**bAh6666==##..r22bmmA6F6FFFFF==A&&11"55q!9L9LLLLL##A&&11"559I9I!9L9LLLLL##Aq))44R88B<L<LQPQ<R<RRRRR$$Q''22266":K:KA:N:NNNNN$$Q**55b99R=N=NqRS=T=TTTTTT	U	U 	Ur<   c                  r   t          d          t          t          t          t          g} t
          t          g}| |z   D ]z}||t                   |                    t                    |	                    t                    |
                    t                    fD ]}|| v r|j        du sJ |j        du sJ {d S )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    UUBC$E2hGW_ + +AaD!,,q//1??1+=+=q?O?OPQ?R?RR 	+ 	+AEzzzT)))))zU*****		++ +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                                          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          f                                         t          t          t          f         k    sJ t          t          t          f                                         t          t          t          f         k    sJ t          t          t          f                                         t          t          t          f         k    sJ t
          t          t          f                                         t          t          t          f         k    sJ t          j
        t                                                    t          j
        t                    k    sJ t          j
        t                                                    t          j
        t                    k    sJ t	          j
        t                                                    t          j
        t                    k    sJ t          j
        t                                                    t          j
        t                    k    sJ t          j
        t          t                                                    t          j
        t          t                    k    sJ t          j
        t          t                                                    t          j
        t          t                    k    sJ t	          j
        t          t                                                    t          j
        t          t                    k    sJ t          j
        t          t                                                    t          j
        t          t                    k    sJ t          j        t                                                    t          j        t                    k    sJ t          j        t                                                    t          j        t                    k    sJ t	          j        t                                                    t          j        t                    k    sJ t          j        t                                                    t          j        t                    k    sJ t          j        t          t                                                    t          j        t          t                    k    sJ t          j        t          t                                                    t          j        t          t                    k    sJ t	          j        t          t                                                    t          j        t          t                    k    sJ t          j        t          t                                                    t          j        t          t                    k    sJ t          j        t                                                    t          j        t                    k    sJ t          j        t                                                    t          j        t                    k    sJ t	          j        t                                                    t          j        t                    k    sJ t          j        t                                                    t          j        t                    k    sJ t          j        t          t                                                    t          j        t          t                    k    sJ t          j        t          t                                                    t          j        t          t                    k    sJ t	          j        t          t                                                    t          j        t          t                    k    sJ t          j        t          t                                                    t          j        t          t                    k    sJ d S 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((**bmAq.A.AAAAA=A((**bmAq.A.AAAAA=A((**bmAq.A.AAAAA=A((**doa.C.CCCCCA((**b.>q.A.AAAAAA((**b.>q.A.AAAAAA((**b.>q.A.AAAAAA((**d.@.C.CCCCCAq!!++--1A!Q1G1GGGGGAq!!++--1A!Q1G1GGGGGAq!!++--1A!Q1G1GGGGGAq!!++--1CAq1I1IIIIIQ))++r/@/C/CCCCCQ))++r/@/C/CCCCCQ))++r/@/C/CCCCCQ))++t/B1/E/EEEEEQ"",,.."2CAq2I2IIIIIQ"",,.."2CAq2I2IIIIIQ"",,.."2CAq2I2IIIIIQ"",,..$2Ea2K2KKKKKKKr<   c                     t          d          dft          d          dft          d          dffD ]\  } }| | t                   |                     t                    |                     t                    |                     t                    fD ]'}|j        du sJ |                                |k    sJ (t          t          t          t          t          fD ]}||t                   |                    t                    |                    t                    |                    t                    fD ]'}|j        du sJ |                                dk    sJ (d S )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  sX   Q%%beeQZ"Q%%4 + +1AaD!,,q//1??1+=+=q?O?OPQ?R?RR 	+ 	+A+u4444##%%*****	+ T4$ + +AaD!,,q//1??1+=+=q?O?OPQ?R?RR 	+ 	+A+t3333##%%*****	++ +r<   c                  J   g d} g d}g d}t           t                   t          t                   t          j        t                    cd | D             |k    sJ d | D             |k    sJ fd| D             |k    sJ fd| D             |k    sJ fd| D             |k    sJ                      t                              d	u sJ                      t                              d	u sJ                      t                              d
u sJ d S )N)r   r   r   r3   )FTFTF)TTFTTc                 P    g | ]#}t          j        t          |                    $S rm   )r   is_unit.0ns     r;   
<listcomp>z'test_Domain_is_unit.<locals>.<listcomp>  (    ,,,!BJr!uu,,,r<   c                 P    g | ]#}t          j        t          |                    $S rm   )r   r   r   s     r;   r   z'test_Domain_is_unit.<locals>.<listcomp>  r   r<   c                 L    g | ] }                      |                    !S rm   r   )r   r   ZZxs     r;   r   z'test_Domain_is_unit.<locals>.<listcomp>  -    ...ACKKA...r<   c                 L    g | ] }                      |                    !S rm   r   )r   r   QQxs     r;   r   z'test_Domain_is_unit.<locals>.<listcomp>  r   r<   c                 L    g | ] }                      |                    !S rm   r   )r   r   QQxfs     r;   r   z'test_Domain_is_unit.<locals>.<listcomp>  s-    000aDLLa!!000r<   FT)r   r   r   rV   r   )numsinvringinvfieldr   r   r   s      @@@r;   test_Domain_is_unitr     si   D///G...HUBqE2=#3#3NCd,,t,,,7777,,t,,,8888.......'9999.......(::::00004000H<<<<;;ss1vv%'''';;ss1vv%''''<<Q  D((((((r<   c            	         d fd} d }t          j        t          d                    }t          j        t          d                    }t          t           ||t          t
          t          t          g}t          |          D ]:\  }}||d          D ]*} ||          D ]} ||          D ]}	 | ||	           +;t          j	        d          t          dd          k    sJ t          d	t                    \  }
}t          j	        ||z
            d
k    sJ t          j	        ||z
  |
                                          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 ]Q\  }}|                    |                    t                    |          |                    t                    k    sJ R|                    t          dd          t                      |t          dd                    k    sJ d S )Nc           
          t          |           t          |          u sJ | d|d|d|d|	            | |k    sJ | d|d|d|d|	            d S )Nz, z:  z -> )type)e1e2r:   K2K3s        r;   check_elementz*test_Domain_convert.<locals>.check_element  sx    Bxx488###bbb"""bbb"""bb%Q###Rxxx"""bbb"""bbb""Exxxxxr<   c                    |                      |          } |                    | j        |           |j        | ||            |                    |j        |          |j        | ||            |                    | j        |           |j        | ||            |                    |j        |          |j        | ||           d S r6   )r8   convert_fromonezero)r:   r   r   r   s      r;   check_domainsz*test_Domain_convert.<locals>.check_domains  s    XXb\\boobfb11BFRRHHHboobfb11BFRRHHHboobgr22BGRRHHHboobgr22BGRRHHHHHr<   c           
         | | t                    | t                   | t           t          f         |                     t                     |                     t                    |                     t           t                    g}|S r6   )r   r   rV   )r|   domainss     r;   composite_domainsz.test_Domain_convert.<locals>.composite_domains  sS    aD!A$!Q$LLOOQ\\!__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 F FI I I I I   
T!WW
%
%C

T!WW
%
%CCdD"b1D4 * *2qrr( 	* 	*B''++ * *++B// * *B!M"b))))**	*
 :f$46y!z!zzzzzbMMEAr:b2g!####:b2gq{{}}--2222:d1ajj!!R1XX----:d1ajj!!R1XX----?2c77B''2a883333?2a88R((BsGG3333RT]]B//41a"Q((3K3KKKKK?41a"Q((33T::bdmmKKKK	q		B	q		B	AB	AB
b"b	B"b// I IBr}}Q//44a8H8HHHHHH??2a88R((BBr!QxxLL888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          	                    t          d                    fg	} | D ]v\  }}t          t          fD ]b}|	                    |                    |                    }|                    ||          |k    sJ |                    ||          |k    sJ cwd S )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UU	R!WW	tAayy	tAayy	RUU	R!WW	RUU	a	cnnT!WW%%&
H  1 11e) 	1 	1B==A//D??1a((D0000>>$++q00000	11 1r<   c                     t          j        t                    } t           t                   }|                     t                    |                     |                    t                    |          k    sJ |                    t                    |                    |                     t                    |           k    sJ t          j        t          t                    } t           t                   }|                     t                    |                     |                    t                    |          k    sJ t          j        t          t                    } t           t                   }|                     t                    |                     |                    t                    |          k    sJ d S 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99::a==BJJrzz!}}b999999		!Q		B	AB::a==BJJrzz!}}b999999 
	!Q		B	AB::a==BJJrzz!}}b99999999r<   c                      t          dt                    \  } t          j                    |                                 k    sJ d S N )r'   r   rl   r   )r   s    r;   test_PolynomialRing__initr     s6    	b"BA<>>Q[[]]******r<   c                      t          dt                    \  } t          j                    |                                 k    sJ d S r   )r)   r   rV   r   )r   s    r;   test_FractionField__initr     s6    	r2BA=??akkmm++++++r<   c                     t          j        t                    } |                     t          dd          t                     |                     t          dd                    k    sJ t          j        t                    } |                     t          d          t                    |                     t          d                    k    sJ d S )Nr3   r4   )r   rV   r   r   r   r	   r   r   )r|   s    r;   test_FractionField_convertr     s    
aA99R1XXr""all8Aq>>&B&BBBBB
aA99RUUB1<<

#;#;;;;;;;r<   c                  (   t          j        t          t          t                    t           t          t          t          f         k    sJ t           t                                       t          t                    t           t          t          t          f         k    sJ t          j        t                                        t          t                    t          j        t          t          t                    k    sJ t          t          d            d S )Nc                  V    t           t                                       t                    S r6   )r   r   injectrm   r<   r;   rC   ztest_inject.<locals>.<lambda>  s    BqELLOO r<   )r   r   r   r   r   rV   r0   r,   rm   r<   r;   test_injectr     s    9Q1Aq!G,,,,a5<<1Aq!G,,,,=""1a((BM!Q,B,BBBBB
?3344444r<   c                  @   t          j        t                    t           k    sJ t           t                                       t                    t           k    sJ t           t          t          f                             t                    t           t                   k    sJ t          j        t                                        t                    t           k    sJ t          j        t          t                                        t                    t          j        t                    k    sJ t           t                   t                                       t                    t           t                   k    sJ t           t                   t                                       t                    t           t                   k    sJ t          j        t                    t                                       t                    t           t                   k    sJ t          j        t                    t                                       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                               }                     t                    | k    sJ t          t          fd           d S )Nr3   r   rv   c                  8                          t                    S r6   )dropr   )r   s   r;   rC   ztest_drop.<locals>.<lambda>  s    BGGAJJ r<   )	r   r   r   r   rV   r*   r   r0   r,   )r|   r   s    @r;   	test_dropr   	  s   71::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66	7	7BQT!VQr2223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 d S )N)r   r3   r4   r   c              3   >   K   | ]}t          j        |          V  d S r6   r   of_typer   elts     r;   	<genexpr>z"test_Domain_map.<locals>.<genexpr>  s*      ..3rz#......r<   c              3   >   K   | ]}t          j        |          V  d S r6   r  r  s     r;   r  z"test_Domain_map.<locals>.<genexpr>   s*      113rz#111111r<   r   r   )r   mapalllen)seqs    r;   test_Domain_mapr    s    
&

C..#........
&,,,
 
 C11#a&11111Cc#hh!mmmmmmr<   c                  D   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 d S )NTF)r   r   r   r   rV   r%   r   rm   r<   r;   test_Domain___eq__r  #  su   q!tH1a4 T))))q!tH1a4 T))))q!tH1a4 U****q!tH1a4 U****M!Q2=A#6#664????M!Q2=A#6#664????M!Q2=A#6#665@@@@M!Q2=A#6#665@@@@;;q>RU""""""r<   c                  R   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 |                     t          d                    } | j        j        t          t          dz  dt          dz  z  z
  dz             k    sJ | j        t          k    sJ d S Nr3   r4   r   
   r   )	r   ri   r   extminpolyr   r   domr   )algs    r;   test_Domain__algebraic_fieldr  3  s    

T!WW
%
%C7?d1a4!8nn,,,,7b====

T!WW
%
%C7?d1a4!8nn,,,,7b====


d1gg
&
&C7?d1a4"QT'>A#56666667b======r<   c                     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        |k    sJ |j        t          k    sJ d S 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7?a7b====

 
#
#C7?a7b====

!
!!
$
$C7?a7b======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 |                    d          }t          |j        | j                  J |j        t          k    sJ d S )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5=D!4!45555555B;;;;
AA5=D!3!34444445B;;;;	1AQUAE**6665B;;;;;;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 |                                                    ||                                           |dz  dz  |dz  dz  z   k    s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 |                                                    ||                                           |dz  dz  |dz  dz  z   k    sJ |                                                    ||                                           |dz  |dz  z   k    sJ d S )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  s4   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P;;==++Aq{{}}==A1L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P;;==++Aq{{}}==A1LLL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   }|                                                    ||                                           d|dz  z  d|dz  z  z   k    sJ |                                                    ||                                           d|dz  z  d|dz  z  z   dz  k    sJ d S )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;;==,,Q>>1QT6AaQRdF?TVBVVVVVVVr<   c                      t          d                               t          d          d                    du sJ t          d                               t          d          d                    du sJ d S )Nr4   r   Tr>   )r   r  rm   r<   r;   test_FF_of_typer+    sl     a55==Aq""d****a55==Aq""d******r<   c                      t           t                   t          t                   k    rJ t          j        t                    t          j        t                    k    rJ d S r6   )r   r   r   rV   rm   r<   r;   test___eq__r-    sB    !u1~~~~}Q2=#3#3333333r<   c                  r   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                                                    k    sJ d S )Nr   g        r   g      ?)r   r   r   ZerodtypeOner   evalfrm   r<   r;   test_RealField_from_sympyr3    s    :af!,,,,:aff#....:ae++++:aff#....:c!ff#a&&,,..!9!9999999r<   c                  H   t          t                    t          gz   d t          d d         D             z   } t          t          t
          t          t          fD ]G| D ]Bt          k    rt          k    rvsJ f            t          t          fd           CHd S )Nc                 ,    g | ]}t          |          S rm   )float)r   r   s     r;   r   z*test_not_in_any_domain.<locals>.<listcomp>  s+     $( $( $(a$( $( $(r<   r4   c                  .                                    S r6   )r   )r  r   s   r;   rC   z(test_not_in_any_domain.<locals>.<lambda>  s    3;;q>> r<   )
listr   r   r   r   r   r   r   r0   r-   )checkr  r   s    @@r;   test_not_in_any_domainr:    s    NNaS  $( $("2A2,$( $( $( (EBB# ; ; 	; 	;AAvv#))C<<<!S<<<>#9#9#9#9#9::::		;; ;r<   c                     t          d          }  | d          }|                     |          r|dk    sJ  | d          }|                     |          r|dk    sJ  | d          }|                     |          r|dk    sJ  | d          }|                     |          r|dk    sJ  | d          }|                     |          r|dk    sJ  |  | d                    }|                     |          r|dk    sJ  |  | d                    }|                     |          r|dk    sJ  |  | d                    }|                     |          r|dk    sJ  |  | d                    }|                     |          r|dk    sJ  |  | d                    }|                     |          r|dk    sJ  | d           }|                     |          r|dk    sJ  | d           }|                     |          r|dk    sJ d | d          z   }|                     |          r|dk    sJ  | d          dz   }|                     |          r|dk    sJ  | d           | d          z   }|                     |          r|dk    sJ  | d           | d          z   }|                     |          r|dk    sJ d | d          z
  }|                     |          r|dk    sJ  | d          dz
  }|                     |          r|dk    sJ  | d           | d          z
  }|                     |          r|dk    sJ  | d           | d          z
  }|                     |          r|dk    sJ d | d          z  }|                     |          r|dk    sJ  | d          dz  }|                     |          r|dk    sJ  | d           | d          z  }|                     |          r|dk    sJ  | d           | d          z  }|                     |          r|dk    sJ d | d          z  }|                     |          r|dk    sJ  | d          dz  }|                     |          r|dk    sJ  | d           | d          z  }|                     |          r|dk    sJ  | d           | d          z  }|                     |          r|dk    sJ  | d          dz  }|                     |          r|dk    sJ  | d          dz  }|                     |          r|dk    sJ  | d          dz  }|                     |          r|dk    sJ t          d          } |d          dz  }|                    |          r|dk    sJ  |d          dz  }|                    |          r|dk    sJ t           | d                    d	u sJ t           | d                    d
u sJ t          d           d          dz  }                    |          r|dk    sJ  d          dz  }                    |          r|dk    sJ  d          dz  }                    |          r|dk    sJ  d          dz  }                    |          r|dk    sJ t          dk    r0t	          t
          fd           t	          t
          fd           t	          t          d            t	          t          d            t          d          D ]t          d          D ]t          dk    rt                      5                        k     k     u sJ 	 d d d            n# 1 swxY w Y   t                      5                        k    k    u sJ 	 d d d            n# 1 swxY w Y   t                      5                        k    k    u sJ 	 d d d            n# 1 swxY w Y   t                      5                        k    k    u sJ 	 d d d            n# 1 swxY w Y   -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 d S )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>      bbeebk r<   c                         d          dz  S )Nr>   r   rm   r>  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>  r?  r<   c                       t          d          S Nr   r   rm   r<   r;   rC   z%test_ModularInteger.<locals>.<lambda>  s    r!uu r<   c                       t          d          S )Ng @rC  rm   r<   r;   rC   z%test_ModularInteger.<locals>.<lambda>  s    r#ww r<   c                  4                            k     S r6   rm   r[   n1n2s   r;   rC   z%test_ModularInteger.<locals>.<lambda>      ""R&&22b66/ r<   c                  4                            k    S r6   rm   rF  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>      ""R&&BBrFF*: r<   c                  4                            k    S r6   rm   rF  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>  rI  r<   c                  4                            k    S r6   rm   rF  s   r;   rC   z%test_ModularInteger.<locals>.<lambda>  rK  r<   )r   r  boolr   r0   r.   
ValueErrorranger1   	TypeErrorr   r   )rB   aF7r[   rG  rH  s      @@@r;   test_ModularIntegerrT    s
   	AB
1A::a==#Q!VVVV
1A::a==#Q!VVVV
1A::a==#Q!VVVV
1A::a==#Q!VVVV
1A::a==#Q!VVVV
22a55		A::a==#Q!VVVV
22a55		A::a==#Q!VVVV
22a55		A::a==#Q!VVVV
22a55		A::a==#Q!VVVV
22a55		A::a==#Q!VVVV	AA::a==#Q!VVVV	AA::a==#Q!VVVV	BBqEE	A::a==#Q!VVVV
1	A::a==#Q!VVVV
11A::a==#Q!VVVV
11A::a==#Q!VVVV	BBqEE	A::a==#Q!VVVV
1	A::a==#Q!VVVV
11A::a==#Q!VVVV
11A::a==#Q!VVVV	""Q%%A::a==#Q!VVVV
1aA::a==#Q!VVVV
1bbeeA::a==#Q!VVVV
1bbeeA::a==#Q!VVVV	""Q%%A::a==#Q!VVVV
1aA::a==#Q!VVVV
1bbeeA::a==#Q!VVVV
1bbeeA::a==#Q!VVVV
1qA::a==#Q!VVVV
1qA::a==#Q!VVVV
1qA::a==#Q!VVVV	AB
1|A::a==#Q!VVVV
1}A::a==#Q!VVVV1;;%1;;$	AB
1A::a==#Q!VVVV
1A::a==#Q!VVVV
1A::a==#Q!VVVV
1A::a==#Q!VVVVw}1111222}1111222
:}}%%%
:'''Ahh < <(( 	< 	<Bw&&+-- : :BrFFRRVVOb99999: : : : : : : : : : : : : : :+-- < <BrFFbbff,"(;;;;;< < < < < < < < < < < < < < <+-- : :BrFFRRVVOb99999: : : : : : : : : : : : : : :+-- < <BrFFbbff,"(;;;;;< < < < < < < < < < < < < < < y"9"9"9"9"9"9:::y":":":":":":;;;y"9"9"9"9"9"9:::y":":":":":":;;;;	<" gajj>>R2gajj>>RRUU""""""sH   !__
_
!```&!aaa-!bb"bc                      t          t          ddz  ddz                      dk    sJ t          t          ddz  d                    dk    sJ d S )Nr3   i  r4   i  i d   l   UU*UU*UU*U)intr   rm   r<   r;   test_QQ_intrX    sY    r!T'1d7##$$....r!S&!}}!???????r<   c                     t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ t          d          dk    sJ d S )Nr   Jz5vIh%<=+=V瞯<#B;Ww'&l7)r   rm   r<   r;   test_RR_doubler`  $  s    d88ee99ue99ue99ue99ue99ur<   c                  P   t          d          } t          d          }| j        dk    sJ |j        dk    sJ t          |           dz
  dk    sJ t          |          dz
  dk     sJ t          |j                  } ||           dz
  dk    sJ  ||          dz
  dk    sJ d S )Nz1.01z1.00000000000000000000015   P   r   rZ  )prec)r   _precr   r%   )f1f2RR2s      r;   test_RR_Floatri  -  s    	vB	)	*	*B8r>>>>8r>>>>b66!8eb66!8e

"
"
"C3r7719u3r7719ur<   c                  v   t          d          j        dk    sJ t          d          j        dk    sJ t          d          j        dk    sJ t          d          j        dk    sJ t          d          j        dk    sJ t          d          j        dk    sJ t          d          j        dk    sJ t          d	          j        dk    sJ t          d
          j        dk    sJ t          d          j        dk    sJ t          d          j        dk    sJ t          d          j        dk    sJ d S )Nr   rZ  r[  r\  r]  r^  r_  y        Q	@y        vIh%<=y        +=y        V瞯<y        #B;y        Ww'&l7)r   realimagrm   r<   r;   test_CC_doublerm  :  s4   d88=5    e99>E!!!!e99>E!!!!e99>E!!!!e99>E!!!!e99>E!!!!e99>E!!!!f::?U""""f::?U""""f::?U""""f::?U""""f::?U""""""r<   c                     t           j        } d dd| z   d| z
  dd| z  z
  fD             \  }}}}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          k    sJ t          dd          dk    sJ t          t          d          dz  d          t          d          dz  k    sJ t          dd                                          dk    sJ t          dd                                          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 
]Q dd          t                    dk    sJ 
                                k    sJ                     t                    d	k    sJ                     d          d
k    sJ                     d| z            dk    sJ t                    t          d          k    sJ  dd           dd          k    sJ  dd           dd          k    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n J dz   dz   cxk    r dd          k    sn J z   dd          k    sJ dz  dz  cxk    r dd          k    sn J dz   dd          k    sJ dz  k    sJ dz  z  cxk    r dd          k    sn J dz  z  z  cxk    r dd          k    sn J dz  dz  cxk    r5t          t          d          dz  t          d           dz            k    sn 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&                               t          d                     dd          k    sJ                      dd                    t          d          k    sJ t          t(          fd'                               t,                    }t/          |t0                    sJ |j        k    sJ t5          |j                  dk    r(|j        d                                         t,          k    sJ t
          u rU                                }t/          |t<                    sJ |j        t          k    sJ |j        j         d         | k    sJ  dd           dd           dd           dd          fD ]f}	!                    |	          d(u sJ "                    |	          d(u sJ #                    |	          d(u sJ $                    |	          d(u sJ gtJ          t          t=          t          |           g}
|
tM                      tO                      gz  }
tP          d)k    r|
tS                      tU                      gz  }
|
D ]_}                     |d                     dd          k    sJ                      |d          |           dd          k    sJ `t          t
          fD ]a}                     |dd                     dd          k    sJ                      |dd          |           dd          k    sJ b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 ,                                k    sJ -                                t
          k    sJ tW                    d,k    sJ ,                                t          k    s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            }.                    |          t          dd/          k    sJ /                    |          t          d          k    sJ 
Sd S )0Nc                 6    g | ]}t          j        |          S rm   )r"   r   r   r   s     r;   r   z)test_gaussian_domains.<locals>.<listcomp>L  s     FFFa$,q//FFFr<   r>   r3   r4   r   r   r   z3 + 4*I)NN)r3   r   )r   r3   )r4   r   r         r      	   r  i,      c                       dz  S rB  rm   qs   r;   rC   z'test_gaussian_domains.<locals>.<lambda>|      !a% r<   c                       dz  S rB  rm   ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>}  r{  r<   c                       dz  S rB  rm   ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>~  s    !q& r<   c                  $    t           d          S rB  divmodry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>      &A,, r<   c                  $    t           d          S rB  r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r  r<   c                       t           z   S r6   r   ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>      !a% r<   c                       t           z
  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r  r<   c                      t            z   S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>      !a% r<   c                      t            z
  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r  r<   c                       t           z  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r  r<   c                      t            z  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r  r<   c                       t           z  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r  r<   c                      t            z  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  r  r<   c                       t           z  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  s    !q& r<   c                      t            z  S r6   r  ry  s   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  s    !q& r<   c                  8                          t                    S r6   )r   r   )Gs   r;   rC   z'test_gaussian_domains.<locals>.<lambda>  s    q||B'7'7 r<   Fgmpyz
ZZ_I(3, 4)r   z
QQ_I(3, 4)$   0   r  )0r   ImaginaryUnitr"   gcdlcmr#   quadrantr   r   strparent_get_xyr   hashr  r0   ZeroDivisionErrorrQ  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   rR  br   dr   rPRAFqir   r|   q2r  rz  s                @@r;   test_gaussian_domainsr  J  s   	AFFAq1ua!eQ1W+EFFFJAq!Q8Aq>>Q8Aq>>Q8Aq>>Q8Aq>>Q1::a####1::????!Q??add1f$$$$1::  A%%%%A;;!!Q&&&&<1a!!T"Q((BqEE%:%:::::<1a"%%bAhh1)>)>>>>>D\ o* o*AaGG1vv""""xxzzQyy}},,,,yy||v%%%%yy1~~''''Aww$v,,&&&&qAww!!Aq''!!!!qAww!!Aq''!!!!qAww!!A$$1u!Q1u!Q1u!a++++11Q88++++++1uA((((1a((((((1u"b		!!!!1uA))))1b))))))Av1a    Av{{{{AvQ++++!!B))++++++AvQ1111aabkk1111111uR;;;;4!R1Q44#;#;;;;;;;1uQ

""""1uQqTT!VQ''''sd1add1foo%%%%sd1Q447QrUUF2I......a||1sQw!||||a||1sQw!!Aq''!!!! ----000 ----000 ....111 "6"6"6"6777 "6"6"6"6777y----(((y----(((y----(((y----(((y----(((y----(((y----(((y----(((y....)))y....)))||AaDD!!QQq!WW,,,,zz!!Aq''""add****~7777888XXa[["n-----yA~~~~27||q  RWQZ%7%7%9%9Q%>%>%>%>99$$&&Bb.111119????6;q>Q&&&&1R88QQq!WWaa2hh!Q8 	1 	1B==$$----==$$----##B''50000##B''500000r>"a001 	IKK--6!!		799--G 	1 	1A99QQqTT??aa1gg----99QQqTT1%%1a00000t 	4 	4A99QQq!WW%%1a000099QQq!WWa((AAaGG333339977l****a411Q77????q5AAaHH$$$$6QQq!WW$$$$q5AAb!HH$$$$!Q<<<<!Q<<<<::<<1$$$$;;==D(((((77l****::<<4'''';;==A%%%%a411Q!Q<<''''q5AAaeeBh2r	2222226QQq!WW$$$$q5AAaGG####!A$$r'AaDD58,,,,,qe,,,!Q<<<<1Q4461Q446""B772;;$q"++----772;;$q'')))))_o* o*r<   c                  r   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  k    sn 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   k    sn 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 d S )Nr   r3   c                  *    t          j        g           S r6   )r   r   rm   r<   r;   rC   ztest_EX_EXRAW.<locals>.<lambda>  s    5#3B#7#7 r<   )r   r   r   r/  r   r1  r   
Expressionexr   r   r   r   r   r0   r-   r   r8   rm   r<   r;   test_EX_EXRAWr    s   :9a55BM!$$$$$$a558qu88qu RQqS!__1qs7>>>>q1qs7A+>>>>>>UA!GQ;1q1Q3wk?====q1u======beeR((EI5555?588U++rv5555AE""ae++++>%)$$----
>77888?%%%%;r??e####8E??e######r<   c                      t          d          t          t                    t          d          g} t          |           t          d          t          d          t          t                    gk    sJ d S )Nr   r4   )r   r   sorted)r   s    r;   test_EX_orderingr    sX    1r!uubee$H(1r!uubee4444444r<   c                     t           t          t          fD ]\} |                      | d                     | d          k    sJ |                      | d                     | d          k    sJ ]t          t
          fD ]} |                     t                    }|                      | d                     | d          k    sJ |                      | d          |z            | k    sJ |                      | d                      | d          k    sJ |                      | d           |z            |k    sJ t           t                   } |                      | t          dz                        | d          k    sJ |                      | t           dz                        | d          k    sJ t          t                   } |                     |                     t          t          z                      t	          dd          k    sJ t	          j	        t          t                    } |                     t                    }||z  | j        k    sJ | j        |z   || j        z
  z  | k    sJ d S )Nr3   r   r   r   r   )r   r   r   canonical_unitr"   r#   r   r   r   rV   r   r   )r|   r   s     r;   test_canonical_unitr    se   "b\ 0 0!%%1----"&&!!B%%/////D\ . .LLOO!%%1----!Q''A2----1&&!!B%%////1a((A-----
1AAAa!eHH%%1----AAqb1fII&&!!B%%////QAALL1--..$q"++====1A	QAq5AE>>>>EAIAE	"qb((((((r<   c                      t          t          d                                                    dk    sJ t          t          d                                                    dk    sJ d S )Nr3   r   r   )r  r   r  r   rm   r<   r;   test_issue_18278r    sV    r!uu||~~$&&&&r!uu||~~$&&&&&&r<   c                      t           j        } d d| z   dfD             \  }}t          j        |          dk    sJ t          j        |          dk    sJ d S )Nc                 6    g | ]}t          j        |          S rm   r   r   rp  s     r;   r   z+test_Domain_is_negative.<locals>.<listcomp>       ...aBJqMM...r<   r3   r>   F)r   r  r   r  r   rR  r  s      r;   test_Domain_is_negativer  	  d    	A..AE1:...DAq>!%%%%>!%%%%%%r<   c                      t           j        } d d| z   dfD             \  }}t          j        |          dk    sJ t          j        |          dk    sJ d S )Nc                 6    g | ]}t          j        |          S rm   r  rp  s     r;   r   z+test_Domain_is_positive.<locals>.<listcomp>  r  r<   r3   r>   F)r   r  r   r  r  s      r;   test_Domain_is_positiver    r  r<   c                      t           j        } d d| z   dfD             \  }}t          j        |          dk    sJ t          j        |          dk    sJ d S )Nc                 6    g | ]}t          j        |          S rm   r  rp  s     r;   r   z.test_Domain_is_nonnegative.<locals>.<listcomp>  r  r<   r3   r>   F)r   r  r   r  r  s      r;   test_Domain_is_nonnegativer    f    	A..AE1:...DAqQ5((((Q5((((((r<   c                      t           j        } d d| z   dfD             \  }}t          j        |          dk    sJ t          j        |          dk    sJ d S )Nc                 6    g | ]}t          j        |          S rm   r  rp  s     r;   r   z.test_Domain_is_nonpositive.<locals>.<listcomp>   r  r<   r3   r>   F)r   r  r   r  r  s      r;   test_Domain_is_nonpositiver    r  r<   c                  
   t           t                   } |                     t                    }|                     t          d                    |dz  k    sJ |                     t          d                    |dz  k    sJ d S )Nr4   )r   r   r   r   r   )r|   eKs     r;   test_exponential_domainr  %  sn    
1A	
aB<<A27****99SVVa''''''r<   c                  B   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        |          } |                      | g d                    }|j        |j        u sJ d S )Nr3   alpha)aliasthetar4   )r   r3   r4   )r   ri   r   r  r  r   name
to_alg_num)kr  betas      r;   test_AlgebraicField_aliasr  ,  sz   
477##A5; DGG7333E
5!!A5;w&&&& 	5000A5;w&&&& 	477DGG,,A5; 	5$q''**A5; 	477DGG7;;;A5;w&&&& 	5!!A<<)))%%D:$$$$$$r<   c                  |   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          } |                      | d                    du sJ |                      | d                     | d          k    sJ |                      | d                    du sJ |                      | d                     | d          k    sJ t          d          }|                     |d                    du sJ |                     |d                     |d	          k    sJ |                     |d	                    du sJ |                     |d	                    J |                     |d                    du sJ |                     |d                     |d          k    sJ d S )Nr   Tr3   *   Fr   r   ru  r4      rr  irs     r>   ig      @g      @g;f?r]  )	tolerancer   r   rp   )r   	is_squareexsqrtr   r   almosteqr   r   )F2rS  s     r;   test_exsqrtr  M  s   <1$&&&&9RUUr!uu$$$$<25((((9RVV$$$<1$&&&&9RUUr!uu$$$$<25((((9RVV$$$<1a!!T))))9R1XX"Q((****<2q		""d****9RAYY2a88++++<2r

##t++++9RBZZ  Bq!HH,,,,<2q		""e++++9RAYY'''<1a!!U****9R1XX&&&<1$&&&&9RUUr!uu$$$$<1$&&&&9RUUr!uu$$$$<3

##u,,,,9RQZZ  (((<4!!T))))9RXX"S''))))<1$&&&&;ryA'',>)?)?5QQQQQQ<1$&&&&9RUUr!uu$$$$<25((((9RVV$$$<1$&&&&;ryA'',>)?)?5QQQQQQ<1$&&&&9RUUr!uu$$$$<24''''9RVV1a((((<1a!!T))))9R1XX"Q((****<2r

##t++++9RBZZ  Bq"II----	AB<<1$&&&&99RRUUrr!uu$$$$<<1$&&&&99RRUUrr!uu$$$$	AB<<1$&&&&99RRUUrr!uu$$$$<<1%''''99RRUU###<<1$&&&&99RRUUrr!uu$$$$$$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-  r3  r:  rT  rX  r`  ri  rm  r  r  r  r  r  r  r  r  r  r  r  r  rm   r<   r;   <module>r     s   V V , , , , , ,                                            " " " " " " 6 6 6 6 6 6 9 9 9 9 9 9 8 8 8 8 8 8 & & & & & &          # # # # # # # # # # # # # # # # # # # # # # # # # # # # = = = = = = : : : : : : : : = = = = = = 3 3 3 3 3 3 ? ? ? ? ? ? " " " " " " 4 4 4 4 4 4 $ $ $ $ $ $ 7 7 7 7 7 7              @ ? ? ? ? ? ? ?      ba$$q''**  x x xtwT wT wTrJ J J&1 1 1fO O OIB IB IBX6 6 60 0 0D7 7 7,U U U+ + +&L &L &LR+ + +) ) )79 79 79t1 1 1*: : :"+ + +
, , ,
< < <5 5 50 0 0 D D D# # #     $  M M M0W W W+ + +4 4 4
: : :; ; ;y# y# y#x@ @ @
  
 
 
# # # * * *D$ $ $25 5 5
) ) )4' ' '
& & && & &) ) )) ) )( ( (% % %B;% ;% ;% ;% ;%r<   