
    QiT                        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l3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZE ddlFmGZG  ejH         ed           ed                    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^d. Z_d/ Z`d0 Zad1 Zbd2 Zcd3 Zdd4 Zed5 Zfd6 Zgd7 Zhd8 Zid9 Zjd: Zkd; Zld< Zmd= Znd> Zod? Zpd@ ZqdA ZrdB ZsdC ZtdD ZudE ZvdF ZwdG ZxdH ZydI ZzdJ Z{dK Z|dLS )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PolyElement)cyclotomic_poly)fieldFracElement)FiniteExtension)UnificationFailedGeneratorsErrorCoercionFailedNotInvertibleDomainError)raiseswarns_deprecated_sympy)product      c                 ,    |                      |          S Nunify)K0K1s     ~/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/polys/domains/tests/test_domains.pyr:   r:   )   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 )Nr6      c                  .    t           t                    S r8   r:   r   F3s   r=   <lambda>z#test_Domain_unify.<locals>.<lambda>1       eBmm r>   c                  .    t           t                    S r8   r:   r   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>2   rF   r>   c                  .    t           t                    S r8   r:   r"   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>3       eBoo r>   c                  .    t           t                    S r8   r:   r#   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>4   rK   r>   c                  .    t           t                    S r8   )r:   ALGrC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>5   s    eBnn r>   c                  .    t           t                    S r8   r:   r   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>6   rF   r>   c                  .    t           t                    S r8   r:   r   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>7   rF   r>   c                  D    t           t          t                             S r8   r:   r   r   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>8   s    eB1&6&6 r>   c                  R    t           t          j        t                              S r8   r:   r   
frac_fieldr   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>9   s    eBa0@0@&A&A r>   c                  .    t           t                    S r8   r:   r   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>:   rF   r>   c                  $    t                     S r8   r9   rD   F5s   r=   rE   z#test_Domain_unify.<locals>.<lambda>=   s    eBmm r>   c                  :    t           t                             S r8   )r:   r   r\   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>>   s    eB1&6&6 r>   c                  T    t                               t                              S r8   )r:   rX   r   r\   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>?   s    eBa0@0@&A&A r>   c                  .    t          t                     S r8   rB   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>A       eBmm r>   c                  .    t          t                     S r8   rH   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>K   ra   r>   c                  .    t          t                     S r8   rJ   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>U       eD"oo r>   r5   c                  .    t          t                     S r8   rM   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>b   rd   r>   c                  .    t          t                     S r8   rQ   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>s   ra   r>   c                  .    t          t                     S r8   rS   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>~   ra   r>   c                  D    t          t          t                              S r8   rU   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>   s    eBqE2&6&6 r>   c                  R    t          t          j        t                               S r8   rW   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>   s    eBM!,<,<b&A&A r>   c                  .    t          t                     S r8   rZ   rC   s   r=   rE   z#test_Domain_unify.<locals>.<lambda>   ra   r>   )r   r:   r2   r-   r   r   rO   r   r   r   rX   r   r"   r#   algebraic_fieldr   r   r   r\   s   @@r=   test_Domain_unifyrl   ,   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 r8   )r:   r   	poly_ringr   r   r   rX   r    r>   r=   test_Domain_unify_compositerp      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   rk   r   r:   r   r   rX   )sqrt5sqrt7sqrt57s      r=   test_Domain_unify_algebraicrv     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 )Nr5   domain)r,   r   r   r   r   r   r:   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 r8   )r   r   r   unify_with_symbolsr   ro   r>   r=   rE   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 r8   )r   r   r   r   r   ro   r>   r=   rE   z0test_Domain_unify_with_symbols.<locals>.<lambda>g  s    b&;Bq!tHq!f&M&M r>   )r2   r-   ro   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   rr   Fr6   r@   g      @Q	@r5      )r   r   r   r   r   rO   r   r   r	   r
   r   r   r   ro   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 )Nr5   r6   r   T)r	   r   r   rX   r   ro   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          d          j        du sJ t          d          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          j        du sJ t          t                   j        du sJ t          j	        t                    j        du sJ d S )NFr@   T   )
r   is_Fieldr   r   r   r   r   rO   r   rX   ro   r>   r=   test_Domain_is_fieldr     s    ;%a55>T!!!!a55>U"""";$;$;$;$<4a5>U""""=$,,,,,,r>   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 r8   )rO   get_ringro   r>   r=   rE   z&test_Domain_get_ring.<locals>.<lambda>)  s     r>   )r   has_assoc_Ringr   r   r   rX   r   r   rO   r   r2   r1   ro   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   rO   r   r   	get_fieldrX   ro   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   rO   r   r   r   r   r   
set_domainr   rX   old_poly_ringold_frac_field)domsD1D2s      r=   test_Domain_set_domainr   B  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   rO   r   r   r   r   rX   r   r   is_Exact)exactinexactDRs       r=   test_Domain_is_Exactr   P  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 r8   )r   	get_exactr   r   r   r   r#   rO   r   r   rX   r   r   ro   r>   r=   test_Domain_get_exactr   [  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 )Nr6   r@   rr   FTr   )r   r   rX   r   r   has_CharacteristicZerocharacteristicr   r   r"   r#   rO   )Fcr   r   s       r=   test_Domain_characteristicr     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   r5   )FTFTF)TTFTTc                 P    g | ]#}t          j        t          |                    $S ro   )r   is_unit.0ns     r=   
<listcomp>z'test_Domain_is_unit.<locals>.<listcomp>  (    ,,,!BJr!uu,,,r>   c                 P    g | ]#}t          j        t          |                    $S ro   )r   r   r   s     r=   r   z'test_Domain_is_unit.<locals>.<listcomp>  r   r>   c                 L    g | ] }                      |                    !S ro   r   )r   r   ZZxs     r=   r   z'test_Domain_is_unit.<locals>.<listcomp>  -    ...ACKKA...r>   c                 L    g | ] }                      |                    !S ro   r   )r   r   QQxs     r=   r   z'test_Domain_is_unit.<locals>.<listcomp>  r   r>   c                 L    g | ] }                      |                    !S ro   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   rX   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                    r(t          |t                    r| j        |j        k    sJ nst          | t                    r(t          |t                    r| j        |j        k    sJ n6t          |           t          |          u sJ | d|d|d|d|	            | |k    sJ | d|d|d|d|	            d S )Nz, z:  z -> )
isinstancer(   r'   r+   r*   type)e1e2r<   K2K3s        r=   check_elementz*test_Domain_convert.<locals>.check_element  s    b+&& 	Vb+..E27bg3E3E3E3E3EK(( 	Vb+..G28rx3G3G3G3G3G88tBxx'''"""bbb"""bbbRTRT)U'''Rxxx"""bbb"""bbb""Exxxxxr>   c                    |                      |          } |                    | j        |           |j        | ||            |                    |j        |          |j        | ||            |                    | j        |           |j        | ||            |                    |j        |          |j        | ||           d S r8   )r:   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 r8   )r   r   rX   )r~   domainss     r=   composite_domainsz.test_Domain_convert.<locals>.composite_domains  sS    aD!A$!Q$LLOOQ\\!__all1a.@.@
 r>   r5   r6   gLoW5l   $7q/ l                                r   r   r   g      ?g      ?   )r   rk   r   r   r#   r"   r   r   	enumerateconvertr'   	to_domainr   rX   r   r4   
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 )Nr6   r   r5   )r   r   r"   r#   r   r   r   r   rO   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 r8   )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   rn   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   rX   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 )Nr5   r6   )r   rX   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 r8   )r   r   injectro   r>   r=   rE   ztest_inject.<locals>.<lambda>  s    BqELLOO r>   )r   r   r   r   r   rX   r2   r.   ro   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 )Nr5   r   rx   c                  8                          t                    S r8   )dropr   )r   s   r=   rE   ztest_drop.<locals>.<lambda>(  s    BGGAJJ r>   )	r   r  r   r   rX   r,   r   r2   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   r5   r6   r   c              3   >   K   | ]}t          j        |          V  d S r8   r   of_typer   elts     r=   	<genexpr>z"test_Domain_map.<locals>.<genexpr>.  s*      ..3rz#......r>   c              3   >   K   | ]}t          j        |          V  d S r8   r  r
  s     r=   r  z"test_Domain_map.<locals>.<genexpr>2  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   rX   r%   r   ro   r>   r=   test_Domain___eq__r  5  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 Nr5   r6   r   
   r   )	r   rk   r   extminpolyr   r   domr   )algs    r=   test_Domain__algebraic_fieldr  E  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"  S  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   r6   r   )	r   cyclotomic_fieldr  r  r   r)   r  r   r&   )r~   r   r   s      r=   test_Domain_cyclotomic_fieldr&  e  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,yr5   r   r   )r*   r   r'   r   from_FractionFieldr   )	r   r   r   r   XYr  r   r!  s	            r=   &test_PolynomialRing_from_FractionFieldr,  s  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(  r6   r5   r@      )r'   r   r*   r   r   from_PolynomialRing)r   r   r   r   r*  r+  r  r   s           r=   &test_FractionField_from_PolynomialRingr0    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 )Nr6   r   Tr@   )r   r	  ro   r>   r=   test_FF_of_typer2    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 r8   )r   r   r   rX   ro   r>   r=   test___eq__r4    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   evalfro   r>   r=   test_RealField_from_sympyr:    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 ro   )float)r   r   s     r=   r   z*test_not_in_any_domain.<locals>.<listcomp>  s+     $( $( $(a$( $( $(r>   r6   c                  .                                    S r8   )r   )r  r   s   r=   rE   z(test_not_in_any_domain.<locals>.<lambda>  s    3;;q>> r>   )
listr   r   r   r   r   r   r   r2   r/   )checkr  r   s    @@r=   test_not_in_any_domainrA    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 )Nr6   r   r   r5   r   rr   l    h] l h] FTr@   r   flintc                         d          dz  S )Nr   r   ro   r]   s   r=   rE   z%test_ModularInteger.<locals>.<lambda>      bbeebk r>   c                         d          dz  S )Nr@   r   ro   rE  s   r=   rE   z%test_ModularInteger.<locals>.<lambda>  rF  r>   c                       t          d          S Nr   r   ro   r>   r=   rE   z%test_ModularInteger.<locals>.<lambda>  s    r!uu r>   c                       t          d          S )Ng @rJ  ro   r>   r=   rE   z%test_ModularInteger.<locals>.<lambda>  s    r#ww r>   c                  4                            k     S r8   ro   r]   n1n2s   r=   rE   z%test_ModularInteger.<locals>.<lambda>'      ""R&&22b66/ r>   c                  4                            k    S r8   ro   rM  s   r=   rE   z%test_ModularInteger.<locals>.<lambda>(      ""R&&BBrFF*: r>   c                  4                            k    S r8   ro   rM  s   r=   rE   z%test_ModularInteger.<locals>.<lambda>)  rP  r>   c                  4                            k    S r8   ro   rM  s   r=   rE   z%test_ModularInteger.<locals>.<lambda>*  rR  r>   )r   r	  boolr   r2   r0   
ValueErrorranger3   	TypeErrorr   r   )rD   aF7r]   rN  rO  s      @@@r=   test_ModularIntegerr[    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 )Nr5   i  r6   i  i d   l   UU*UU*UU*U)intr   ro   r>   r=   test_QQ_intr_  1  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   ro   r>   r=   test_RR_doublerg  6  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   ra  )prec)r   _precr   r%   )f1f2RR2s      r=   test_RR_Floatrp  ?  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   ra  rb  rc  rd  re  rf  y        Q	@y        vIh%<=y        +=y        V瞯<y        #B;y        Ww'&l7)r   realimagro   r>   r=   test_CC_doublert  L  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 
] 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  dd           dd          }}                    ||          \  }}}|                    ||          k    sJ ||z  ||z  z   |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.                    }t1          |t2                    sJ |j        k    sJ t7          |j                  dk    r(|j        d                                         t.          k    sJ t
          u rU                                }	t1          |	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 gtL          t          t?          t          |           g}|tO                      tQ                      gz  }tR          d)k    r|tU                      tW                      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    rtY                    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 	tY                    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 0                    |          t          d          k    sJ 
d S )0Nc                 6    g | ]}t          j        |          S ro   )r"   r   r   r   s     r=   r   z)test_gaussian_domains.<locals>.<listcomp>^  s     FFFa$,q//FFFr>   r@   r5   r6   r   r   r   z3 + 4*I)NN)r5   r   )r   r5   )r6   r   r   r      r      	   r$  i,      c                       dz  S rI  ro   qs   r=   rE   z'test_gaussian_domains.<locals>.<lambda>      !a% r>   c                       dz  S rI  ro   r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                       dz  S rI  ro   r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  s    !q& r>   c                  $    t           d          S rI  divmodr  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>      &A,, r>   c                  $    t           d          S rI  r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                       t           z   S r8   r   r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>      !a% r>   c                       t           z
  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                      t            z   S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>      !a% r>   c                      t            z
  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                       t           z  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                      t            z  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                       t           z  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                      t            z  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  r  r>   c                       t           z  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  s    !q& r>   c                      t            z  S r8   r  r  s   r=   rE   z'test_gaussian_domains.<locals>.<lambda>  s    !q& r>   c                  8                          t                    S r8   )r   r   )Gs   r=   rE   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  )1r   ImaginaryUnitr"   gcdlcmr#   quadrantr   r   strparent_get_xyr   hashr  gcdexr2   ZeroDivisionErrorrX  r   r   r/   r   r   r   r$   ry   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   rY  br   dr   rr   PRAFqir   r~   q2r  r  s                 @@r=   test_gaussian_domainsr  \  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\ t* t*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''!!!!qAww!R1''!Q--1aAEE!QKK1uq1u}!!!! ----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'')))))it* t*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   r5   c                  *    t          j        g           S r8   )r   r   ro   r>   r=   rE   ztest_EX_EXRAW.<locals>.<lambda>  s    5#3B#7#7 r>   )r   r   r   r6  r   r8  r   
Expressionexr   r   r   r   r   r2   r/   r   r:   ro   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   r6   )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 )Nr5   r   r   r   r   )r   r   r   canonical_unitr"   r#   r   r   r   rX   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           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 ro   r   r   rw  s     r=   r   z+test_Domain_is_negative.<locals>.<listcomp>       ...aBJqMM...r>   r5   r@   F)r   r  r   r  r   rY  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 ro   r  rw  s     r=   r   z+test_Domain_is_positive.<locals>.<listcomp>$  r  r>   r5   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 ro   r  rw  s     r=   r   z.test_Domain_is_nonnegative.<locals>.<listcomp>+  r  r>   r5   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 ro   r  rw  s     r=   r   z.test_Domain_is_nonpositive.<locals>.<listcomp>2  r  r>   r5   r@   F)r   r  r   r  r  s      r=   test_Domain_is_nonpositiver  0  r  r>   c                  
   t           t                   } |                     t                    }|                     t          d                    |dz  k    sJ |                     t          d                    |dz  k    sJ d S )Nr6   )r   r   r   r   r   )r~   eKs     r=   test_exponential_domainr  7  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 )Nr5   alpha)aliasthetar6   )r   r5   r6   )r   rk   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   Tr5   *   Fr   r   r{  r6      rx  iry     r@   ig      @g      @g;f?rd  )	tolerancer   r   rr   )r   	is_squareexsqrtr   r   almosteqr   r   )F2rZ  s     r=   test_exsqrtr  _  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'   r(   sympy.polys.specialpolysr)   sympy.polys.fieldsr*   r+   sympy.polys.agca.extensionsr,   sympy.polys.polyerrorsr-   r.   r/   r0   r1   sympy.testing.pytestr2   r3   	itertoolsr4   rk   rO   r:   rl   rp   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r"  r&  r,  r0  r2  r4  r:  rA  r[  r_  rg  rp  rt  r  r  r  r  r  r  r  r  r  r  r  ro   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 1 1 1 1 1 1 1 1 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+ + +) ) )<9 <9 <9~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* D* D*N$ $ $25 5 5
) ) )4& & && & &) ) )) ) )( ( (% % %B;% ;% ;% ;% ;%r>   