
    \hT                        S r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJrJrJr  SS
KJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'  SSK(J)r)  SSK*J+r+J,r,  SSK-J.r.  SSK/J0r0  SSK1J2r2  SSK3J4r4J5r5  SSK6J7r7  SSK8J9r9J:r:  SSK;J<r<  SSK=J>r>J?r?J@r@JArAJBrB  SSKCJDrDJErE  SSKFJGrG  \R                  " \" S5      \" S5      5      rIS rJS rKS rLS rMS rNS rOS rPS  rQS! rRS" rSS# rTS$ rUS% rVS& rWS' rXS( rYS) rZS* r[S+ r\S, r]S- r^S. r_S/ r`S0 raS1 rbS2 rcS3 rdS4 reS5 rfS6 rgS7 rhS8 riS9 rjS: rkS; rlS< rmS= rnS> roS? rpS@ rqSA rrSB rsSC rtSD ruSE rvSF rwSG rxSH rySI rzSJ r{SK r|gL)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                 $    U R                  U5      $ Nunify)K0K1s     ^/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/domains/tests/test_domains.pyr:   r:   )   s    88B<    c                     ^ ^ [        S5      m [        S5      m[        T T 5      T :X  d   e[        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S	 j5        [        [        U 4S
 j5        [        [        U 4S j5        [        [        U 4S j5        [        TT5      T:X  d   e[        [        U U4S j5        [        [        U U4S j5        [        [        U U4S j5        [        [        U 4S j5        [        [        [        5      [        :X  d   e[        [        [
        5      [
        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        5      [        :X  d   e[        [        U 4S j5        [        [
        [        5      [
        :X  d   e[        [
        [
        5      [
        :X  d   e[        [
        [        5      [        :X  d   e[        [
        [        5      [        :X  d   e[        [
        [        5      [        :X  d   e[        [
        [        [           5      [
        [           :X  d   e[        [
        [        R                  " [        5      5      [
        R                  " [        5      :X  d   e[        [
        [        5      [        :X  d   e[        [        U 4S j5        [        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [
        5      [        :X  d   e[        [        [        5      [
        R                  " [        [!        S5      [!        S5      5      :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        5      [        :X  d   e[        [        U 4S j5        [        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [
        5      [        :X  d   e[        [        [        5      [
        R                  " [        [!        S5      [!        S5      5      :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [
        [           5      [        [           :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [
        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        5      [        :X  d   e[        [        U 4S j5        [        [        [        5      [        :X  d   e[        [        [
        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        5      [        :X  d   e[        [           R                  [        R                  " ["        5      5      [        R                  " [        ["        5      :X  d   e[        [        U 4S j5        [        [        [        5      [        :X  d   e[        [        [
        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        [           5      [        [           :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        5      [        :X  d   e[        [        U 4S j5        [        [        [           [        5      [        [           :X  d   e[        [        [           [
        5      [
        [           :X  d   e[        [        [           [        5      [        [           :X  d   e[        [        [           [        5      [        [           :X  d   e[        [        [           [        5      [        [           :X  d   e[        [        [           [        [           5      [        [           :X  d   e[        [        [           [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [           [        5      [        :X  d   e[        [        U 4S j5        [        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [
        5      [
        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        [           5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        :X  d   e[        [        U 4S j5        [        [        [        5      [        :X  d   e[        [        [
        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        5      [        :X  d   e[        [        [        [           5      [        :X  d   e[        [        [        R                  " [        5      5      [        :X  d   e[        [        [        5      [        :X  d   eg )Nr6      c                  $   > [        T [        5      $ r8   r:   r   F3s   r=   <lambda>#test_Domain_unify.<locals>.<lambda>1       eBmr>   c                  $   > [        T [        5      $ r8   r:   r   rC   s   r=   rE   rF   2   rG   r>   c                  $   > [        T [        5      $ r8   r:   r"   rC   s   r=   rE   rF   3       eBor>   c                  $   > [        T [        5      $ r8   r:   r#   rC   s   r=   rE   rF   4   rL   r>   c                  $   > [        T [        5      $ r8   )r:   ALGrC   s   r=   rE   rF   5   s    eBnr>   c                  $   > [        T [        5      $ r8   r:   r   rC   s   r=   rE   rF   6   rG   r>   c                  $   > [        T [        5      $ r8   r:   r   rC   s   r=   rE   rF   7   rG   r>   c                  2   > [        T [        [           5      $ r8   r:   r   r   rC   s   r=   rE   rF   8   s    eB1&6r>   c                  L   > [        T [        R                  " [        5      5      $ r8   r:   r   
frac_fieldr   rC   s   r=   rE   rF   9   s    eBa0@&Ar>   c                  $   > [        T [        5      $ r8   r:   r   rC   s   r=   rE   rF   :   rG   r>   c                     > [        TT 5      $ r8   r9   rD   F5s   r=   rE   rF   =   s    eBmr>   c                  *   > [        TT [           5      $ r8   )r:   r   r]   s   r=   rE   rF   >   s    eB1&6r>   c                  B   > [        TT R                  [        5      5      $ r8   )r:   rY   r   r]   s   r=   rE   rF   ?   s    eBa0@&Ar>   c                  $   > [        [        T 5      $ r8   rB   rC   s   r=   rE   rF   A       eBmr>   c                  $   > [        [        T 5      $ r8   rI   rC   s   r=   rE   rF   K   rb   r>   c                  $   > [        [        T 5      $ r8   rK   rC   s   r=   rE   rF   U       eD"or>   r5   c                  $   > [        [        T 5      $ r8   rN   rC   s   r=   rE   rF   b   re   r>   c                  $   > [        [        T 5      $ r8   rR   rC   s   r=   rE   rF   s   rb   r>   c                  $   > [        [        T 5      $ r8   rT   rC   s   r=   rE   rF   ~   rb   r>   c                  2   > [        [        [           T 5      $ r8   rV   rC   s   r=   rE   rF      s    eBqE2&6r>   c                  L   > [        [        R                  " [        5      T 5      $ r8   rX   rC   s   r=   rE   rF      s    eBMM!,<b&Ar>   c                  $   > [        [        T 5      $ r8   r[   rC   s   r=   rE   rF      rb   r>   )r   r:   r2   r-   r   r   rP   r   r   r   rY   r   r"   r#   algebraic_fieldr   r   r   r]   s   @@r=   test_Domain_unifyrm   ,   s'
   	AB	ABR=B
34
34
56
56
45
34
34
67
AB
34R=B
34
67
AB
34R=BR=BS>S   R=BR=BRUr!u$$$R]]1%&"--*::::R=B
34R=BR=BS>S   R=BR=BRUr!u$$$R]]1%&"--*::::R=B
56r?d"""t$$$r?d"""sr11!T!Wd1gFFFFr?b   r?b   r!ua(((tAw47***r}}Q'(DOOA,>>>>tq)*dooa.@@@@r?b   
56r?d"""t$$$r?d"""sr11!T!Wd1gFFFFr?b   r?b   r!ua(((tAw47***r!ua(((tAw47***r}}Q'(DOOA,>>>>tq)*dooa.@@@@r}}Q'(DOOA,>>>>tq)*dooa.@@@@r?b   
34R=BR=BS>RR=BR=BRUr!u$$$R]]1%&"--*::::R=Ba5;;r}}Q'(BMM!Q,????
34R=BR=BS>RR=BR=BRUr!u$$$R]]1%&"--*::::R=B
67Ar!u$$$Ar!u$$$AA&&&Ar!u$$$Ar!u$$$A1"Q%'''Aa()R]]1-====Ar!!!
ABq!2&"--*::::q!2&"--*::::q!3'3>>!+<<<<q!2&"--*::::q!2&"--*::::q!2a5)R]]1-====q!2==#34a8HHHHq!2&",,,
34R=BR=BS>RR=BR=BRUr!!!R]]1%&",,,R=Br>   c                  D   [        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        5      [        R                  " [        5      5      [        R                  " [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        5      [        R                  " [        [
        5      5      [        R                  " [        [
        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   e[        [        R                  " [        [
        5      [        R                  " [        [        5      5      [        R                  " [        [
        [        5      :X  d   eg r8   )r:   r   	poly_ringr   r   r   rY   r    r>   r=   test_Domain_unify_compositerq      s   a"%a888a"%a888a"%a888a"%a888R\\!_%a888R\\!_%a888R\\!_%a888R\\!_%a888a#R(BLLA,>>>>a#R(BLLA,>>>>a#R(BLLA,>>>>a#R(BLLA,>>>>R\\!Q'(BLLA,>>>>R\\!Q'(BLLA,>>>>R\\!Q'(BLLA,>>>>R\\!Q'(BLLA,>>>>q!2&"--*::::q!2&"--*::::q!2&"--*::::q!2&"--*::::R]]1%&"--*::::R]]1%&"--*::::R]]1%&"--*::::R]]1%&"--*::::q!$b)R]]1a-@@@@q!$b)R]]1a-@@@@q!$b)R]]1a-@@@@q!$b)R]]1a-@@@@R]]1a()R]]1a-@@@@R]]1a()R]]1a-@@@@R]]1a()R]]1a-@@@@R]]1a()R]]1a-@@@@a",,q/2bll1oEEEa",,q/2bll1oEEEa",,q/2bll1oEEEa",,q/2bll1oEEEa#R\\!_5a9KKKKa#R\\!_5a9KKKKa#R\\!_5a9KKKKa#R\\!_5a9KKKKa",,q!"45a9KKKKa",,q!"45a9KKKKa",,q!"45a9KKKKa",,q!"45a9KKKKa#R\\!Q%78BLLAq<QQQQa#R\\!Q%78BLLAq<QQQQa#R\\!Q%78BLLAq<QQQQa#R\\!Q%78BLLAq<QQQQq!2==#34a8HHHHq!2==#34a8HHHHq!2==#34a8HHHHq!2==#34a8HHHHq!$bmmA&672==A;NNNNq!$bmmA&672==A;NNNNq!$bmmA&672==A;NNNNq!$bmmA&672==A;NNNNq!2==A#672==A;NNNNq!2==A#672==A;NNNNq!2==A#672==A;NNNNq!2==A#672==A;NNNNq!$bmmAq&9:bmmAqRS>TTTTq!$bmmAq&9:bmmAqRS>TTTTq!$bmmAq&9:bmmAqRS>TTTTq!$bmmAq&9:bmmAqRS>TTTTa"--"23r}}Q7GGGGa"--"23r}}Q7GGGGa"--"23r}}Q7GGGGa"--"23r}}Q7GGGGa#R]]1%56"--1:MMMMa#R]]1%56"--1:MMMMa#R]]1%56"--1:MMMMa#R]]1%56"--1:MMMMa"--1"56"--1:MMMMa"--1"56"--1:MMMMa"--1"56"--1:MMMMa"--1"56"--1:MMMMa#R]]1a%89R]]1aQR=SSSSa#R]]1a%89R]]1aQR=SSSSa#R]]1a%89R]]1aQR=SSSSa#R]]1a%89R]]1aQR=SSSSq!2<<?3r}}Q7GGGGq!2<<?3r}}Q7GGGGq!2<<?3r}}Q7GGGGq!2<<?3r}}Q7GGGGq!$bll1o6"--1:MMMMq!$bll1o6"--1:MMMMq!$bll1o6"--1:MMMMq!$bll1o6"--1:MMMMq!2<<1#56"--1:MMMMq!2<<1#56"--1:MMMMq!2<<1#56"--1:MMMMq!2<<1#56"--1:MMMMq!$bll1a&89R]]1aQR=SSSSq!$bll1a&89R]]1aQR=SSSSq!$bll1a&89R]]1aQR=SSSSq!$bll1a&89R]]1aQR=SSSSr>   c                     [         R                  " [        S5      5      n [         R                  " [        S5      5      n[         R                  " [        S5      [        S5      5      nU R                  U5      U:X  d   eU R                  U [        [
        4   5      U [        [
        4   :X  d   eU [        [
        4   R                  U 5      U [        [
        4   :X  d   eU R                  U R                  [        [
        5      5      U R                  [        [
        5      :X  d   eU R                  [        [
        5      R                  U 5      U R                  [        [
        5      :X  d   eU R                  U[        [
        4   5      U[        [
        4   :X  d   eU [        [
        4   R                  U5      U[        [
        4   :X  d   eU R                  UR                  [        [
        5      5      UR                  [        [
        5      :X  d   eU R                  [        [
        5      R                  U5      UR                  [        [
        5      :X  d   eg )Nr@      )r   rl   r   r:   r   r   rY   )sqrt5sqrt7sqrt57s      r=   test_Domain_unify_algebraicrw     s   tAw'EtAw'EQa1F;;u''';;uQT{#uQT{222A;U#uQT{222;;u''1-.%2B2B1a2HHHHAq!''.%2B2B1a2HHHH;;uQT{#vad|333A;U#vad|333;;u''1-.&2C2CAq2IIIIAq!''.&2C2CAq2IIIIr>   c            	      x
   [        [        [        S-  S-
  [        [        S95      n [        [        [        S-  S-
  [        [        S95      n[        [        [        S-  S-
  [        [        [
           S95      n[        [        [        S-  S-
  [        [        [
           S95      nU R                  U 5      U :X  d   eUR                  U5      U:X  d   eUR                  U5      U:X  d   eUR                  U5      U:X  d   eU R                  [        5      U :X  d   eU R                  [        5      U:X  d   eUR                  [        5      U:X  d   eUR                  [        5      U:X  d   eU R                  [        [
           5      U:X  d   eU R                  [        [
           5      U:X  d   eUR                  [        [
           5      U:X  d   eUR                  [        [
           5      U:X  d   eUR                  [        5      U:X  d   eUR                  [        5      U:X  d   eUR                  [        5      U:X  d   eUR                  [        5      U:X  d   eUR                  [        [
           5      U:X  d   eUR                  [        [
           5      U:X  d   eUR                  [        [
           5      U:X  d   eUR                  [        [
           5      U:X  d   e[        [        [        S-  S-
  [        [        [
           S95      nUR                  [        5      U:X  d   eUR                  [        [           5      U:X  d   eUR                  [        [
           5      U:X  d   eUR                  [        [        [
        4   5      U:X  d   e[        [        [        S-  S-
  [        [        [
        [        4   S95      nUR                  [        [           5      U:X  d   eUR                  [        [        [        4   5      U:X  d   eUR                  [        [
        [        4   5      U:X  d   eUR                  [        [        [
        [        4   5      U:X  d   e[        [        [        S-  S-
  [        [        S95      n[        [        [
        S-  S-
  [
        [        S95      n[        [        [
        S-  S-
  [
        US95      nUR                  U5      U:X  d   eUR                  U5      U:X  d   eUR                  U5      U:X  d   eUR                  U5      U:X  d   eg )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8D41q!B78DDA1RU;<EDA1RU;<E::dt###::dt###;;u&&&;;u&&&::b>T!!!::b>T!!!::b>T!!!::b>T!!!::be%%%::be%%%::be%%%::be%%%;;r?e###;;r?e###;;r?e###;;r?e###;;r!u&&&;;r!u&&&;;r!u&&&;;r!u&&&QTAXqA78A772;!772a5>Q772a5>Q772ad8!!!	adQh"QT(;	<B772a5>R772ad8"""772ad8"""772aAg;2%%%	adQh"5	6B	adQh"5	6B
$q!tax26
7C88B<288B<288B<388B<3r>   c                  H    [        [        S 5        [        [        S 5        g )Nc                  d    [         [        [        4   R                  [         [        [        45      $ r8   )r   r   r   unify_with_symbolsr   rp   r>   r=   rE   0test_Domain_unify_with_symbols.<locals>.<lambda>f  s    bAh&A&A"q!f&Mr>   c                  f    [         R                  " [         [        [        4   [        [        45      $ r8   )r   r   r   r   r   rp   r>   r=   rE   r   g  s    b&;&;Bq!tHq!f&Mr>   )r2   r-   rp   r>   r=   test_Domain_unify_with_symbolsr   e  s    
MN
MNr>   c                     S[         ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[
        ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   eS[         ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[
        ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   eS[         ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[
        ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   e[        SS5      [         ;   SL d   e[        SS5      [        ;   SL d   e[        SS5      [        ;   SL d   e[        SS5      [        ;   SL d   e[        SS5      [        ;   SL d   e[        SS5      [
        ;   SL d   e[        SS5      [        [        [        4   ;   SL d   e[        SS5      [        [        [        4   ;   SL d   e[        SS5      [        [        [        4   ;   SL d   e[        SS	5      [         ;   SL d   e[        SS	5      [        ;   SL d   e[        SS	5      [        ;   SL d   e[        SS	5      [        ;   SL d   e[        SS	5      [        ;   SL d   e[        SS	5      [
        ;   SL d   e[        SS	5      [        [        [        4   ;   SL d   e[        SS	5      [        [        [        4   ;   SL d   e[        SS	5      [        [        [        4   ;   SL d   eS
[         ;   SL d   eS
[        ;   SL d   eS
[        ;   SL d   eS
[        ;   SL d   eS
[        ;   SL d   eS
[
        ;   SL d   eS
[        [        [        4   ;   SL d   eS
[        [        [        4   ;   SL d   eS
[        [        [        4   ;   SL d   eS[         ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[        ;   SL d   eS[
        ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   eS[        [        [        4   ;   SL d   e[        [
        ;   SL d   e[        [        [        [        4   ;   SL d   e[        [        [        [        4   ;   SL d   e[        * [        ;   SL d   e[        * [        ;   SL d   e[        * [
        ;   SL d   e[        * [        [        [        4   ;   SL d   e[        * [        [        [        4   ;   SL d   e[        S5      [         ;   SL d   e[        S5      [        ;   SL d   e[        S5      [        ;   SL d   e[        S5      [        ;   SL d   e[        S5      [        ;   SL d   e[        S5      [
        ;   SL d   e[        S5      [        [        [        4   ;   SL d   e[        S5      [        [        [        4   ;   SL d   e[        S5      [        [        [        4   ;   SL d   eS[        S5      -  S-   [         ;   SL d   eS[        S5      -  S-   [        ;   SL d   eS[        S5      -  S-   [        ;   SL d   eS[        S5      -  S-   [        ;   SL d   eS[        S5      -  S-   [        ;   SL d   eS[        S5      -  S-   [
        ;   SL d   eS[        S5      -  S-   [        [        [        4   ;   SL d   eS[        S5      -  S-   [        [        [        4   ;   SL d   eS[        S5      -  S-   [        [        [        4   ;   SL d   e[        S5      [         ;   SL d   e[        S5      [        ;   SL d   e[        S5      [        ;   SL d   e[        S5      [        ;   SL d   e[        S5      [        ;   SL d   e[        S5      [
        ;   SL d   e[        S5      [        [        [        4   ;   SL d   e[        S5      [        [        [        4   ;   SL d   e[        S5      [        [        [        4   ;   SL d   e[        S-  S-   [         ;   SL d   e[        S-  S-   [        ;   SL d   e[        S-  S-   [        ;   SL d   e[        S-  S-   [        ;   SL d   e[        S-  S-   [        ;   SL d   e[        S-  S-   [
        ;   SL d   e[        S-  S-   [        [           ;   SL d   e[        S-  S-   [        [           ;   SL d   e[        S-  S-   [        [           ;   SL d   e[        S-  S-   [        [        [        4   ;   SL d   e[        S-  S-   [        [        [        4   ;   SL d   e[        S-  S-   [        [        [        4   ;   SL d   e[        S-  [        S-  -   [         ;   SL d   e[        S-  [        S-  -   [        ;   SL d   e[        S-  [        S-  -   [        ;   SL d   e[        S-  [        S-  -   [        ;   SL d   e[        S-  [        S-  -   [        ;   SL d   e[        S-  [        S-  -   [
        ;   SL d   e[        S-  [        S-  -   [        [           ;   SL d   e[        S-  [        S-  -   [        [           ;   SL d   e[        S-  [        S-  -   [        [           ;   SL d   e[        S-  [        S-  -   [        [        [        4   ;   SL d   e[        S-  [        S-  -   [        [        [        4   ;   SL d   e[        S-  [        S-  -   [        [        [        4   ;   SL d   e[        SS5      [        -  [        S-   -  [        -
  [        [        [        [        4   ;   SL d   eg )Nr   T   rs   Fr6   r@   g      @Q	@r5      )r   r   r   r   r   rP   r   r   r	   r
   r   r   r   rp   r>   r=   test_Domain__contains__r   i  st   GGGGGHAqDMd"""AqDMd"""AqDMd""""H"H"H"H"H#I$"QT(Nt###"QT(Nt###"QT(Nt###"H"H"H"H"H#I$"QT(Nt###"QT(Nt###"QT(Nt###ROr!d***ROr!e+++ROr!d***ROr!d***ROr!d***ROs"t+++ROr!Q$x'E111ROr!Q$x'D000ROr!Q$x'D000QNb T)))QNb U***QNb T)))QNb T)))QNb T)))QNc!d***QNbAh&5000QNbAh&4///QNbAh&4///2I$2I$2I$2I$2I$3J42ad8O$$$2ad8O$$$2ad8O$$$BJ4BJ5   BJ4BJ4BJ4CKD   Bq!tH&&&Bq!tH%%%Bq!tH%%%#I%"QT(Nu$$$"QT(Nu$$$C2I%C2I%C3J5   C2ad8O%%%C2ad8O%%%GrMd"""GrMe###GrMe###GrMd"""GrMd"""GsNu$$$Gr!Q$xE)))Gr!Q$xE)))Gr!Q$xD(((d1gIMRD(((d1gIMRE)))d1gIMRE)))d1gIMRD(((d1gIMRD(((d1gIMS T)))d1gIMR1X%%///d1gIMR1X%%///d1gIMR1X%$...FbLT!!!FbLU"""FbLU"""FbLT!!!FbLT!!!FcMe###FbAh5(((FbAh5(((FbAh4'''qD1HNt###qD1HNu$$$qD1HNu$$$qD1HNu$$$qD1HNu$$$qD1HO%%%qD1H1$&&&qD1H1$&&&qD1H1$&&&qD1H1a4 T)))qD1H1a4 T)))qD1H1a4 T)))qD1a4K2$&&&qD1a4K2%'''qD1a4K2%'''qD1a4K2%'''qD1a4K2%'''qD1a4K35(((qD1a4K2a5 U***qD1a4K2a5 U***qD1a4K2a5 U***qD1a4K2ad8#,,,qD1a4K2ad8#,,,qD1a4K2ad8#,,,QN1a!e$q(Bq!QwK7EAAAr>   c                     [        SS5      [        -  [        R                  " S[        -  5      ;   SL d   eS[        -  [        R                  " [        5      ;   SL d   e[        S-  [        S-  -   [        R                  " S[        -  S[        -  5      ;   SL d   e[        [        -   [        R                  " S[        -  [        5      ;   SL d   e[        [        -
  [        R                  " [        S[        -  5      ;   SL d   eg )Nr5   r6   r   T)r	   r   r   rY   r   rp   r>   r=   test_issue_14433r     s    QN1ac 22t;;;aC2==##,,,TAqD[R]]1Q3!44===Ur}}QqS!,,555Ur}}Q!,,555r>   c                     [         R                  SL d   e[        S5      R                  SL d   e[        S5      R                  SL d   e[        R                  SL d   e[        R                  SL d   e[
        R                  SL d   e[        R                  SL d   e[        R                  SL d   e[        [           R                  SL d   e[         R                  " [        5      R                  SL d   eg )NFr@   T   )
r   is_Fieldr   r   r   r   r   rP   r   rY   rp   r>   r=   test_Domain_is_fieldr     s    ;;%a5>>T!!!a5>>U""";;$;;$;;$;;$<<4a5>>U"""==$$,,,r>   c                     [         R                  SL d   e[        R                  SL d   e[         [           R                  SL d   e[        [           R                  SL d   e[         [        [        4   R                  SL d   e[        [        [        4   R                  SL d   e[         R
                  " [        5      R                  SL d   e[        R
                  " [        5      R                  SL d   e[         R
                  " [        [        5      R                  SL d   e[        R
                  " [        [        5      R                  SL d   e[        R                  SL d   e[        R                  SL d   e[        R                  SL d   e[         R                  " 5       [         :X  d   e[        R                  " 5       [         :X  d   e[         [           R                  5       [         [           :X  d   e[        [           R                  5       [        [           :X  d   e[         [        [        4   R                  5       [         [        [        4   :X  d   e[        [        [        4   R                  5       [        [        [        4   :X  d   e[         R
                  " [        5      R                  5       [         [           :X  d   e[        R
                  " [        5      R                  5       [        [           :X  d   e[         R
                  " [        [        5      R                  5       [         [        [        4   :X  d   e[        R
                  " [        [        5      R                  5       [        [        [        4   :X  d   e[        R                  " 5       [        :X  d   e[        R                  " 5       [        :X  d   e[        [        S 5        g )NTFc                  *    [         R                  5       $ r8   )rP   get_ringrp   r>   r=   rE   &test_Domain_get_ring.<locals>.<lambda>)  s
    r>   )r   has_assoc_Ringr   r   r   rY   r   r   rP   r   r2   r1   rp   r>   r=   test_Domain_get_ringr   
  s   $$$$$$a54'''a54'''ad8""d***ad8""d***==**d222==**d222==A--555==A--555%%%%%%&&&;;=B;;=Ba5>>r!u$$$a5>>r!u$$$ad8"QT(***ad8"QT(***==$$&"Q%///==$$&"Q%///==A'')R1X555==A'')R1X555;;=B;;=B
;./r>   c                     [         R                  SL d   e[        R                  SL d   e[        R                  SL d   e[        R                  SL d   e[
        R                  SL d   e[        [           R                  SL d   e[        [           R                  SL d   e[        [        [        4   R                  SL d   e[        [        [        4   R                  SL d   e[         R                  " 5       [         :X  d   e[        R                  " 5       [        :X  d   e[        R                  " 5       [        :X  d   e[        R                  " 5       [        :X  d   e[
        R                  5       [
        :X  d   e[        [           R                  5       [        R                  " [        5      :X  d   e[        [           R                  5       [        R                  " [        5      :X  d   e[        [        [        4   R                  5       [        R                  " [        [        5      :X  d   e[        [        [        4   R                  5       [        R                  " [        [        5      :X  d   eg )NT)
r   has_assoc_Fieldr   r   r   rP   r   r   	get_fieldrY   rp   r>   r=   test_Domain_get_fieldr   ,  s   %%%%%%%%%%%%$&&&a5  D(((a5  D(((ad8##t+++ad8##t+++<<>R<<>R<<>R<<>R==?c!!!a5??a 0000a5??a 0000ad82==A#6666ad82==A#6666r>   c                     [        S5      [        [        [        [        [
        [        [        [           [        [           [        [           [
        [           [        [           /n U  GH  nU  GH  nU[           R                  U5      U[           :X  d   eU[        [        4   R                  U5      U[        [        4   :X  d   eUR                  [        5      R                  U5      UR                  [        5      :X  d   eUR                  [        [        5      R                  U5      UR                  [        [        5      :X  d   eUR                  [        5      R                  U5      UR                  [        5      :X  d   eUR                  [        [        5      R                  U5      UR                  [        [        5      :X  d   eUR                  [        5      R                  U5      UR                  [        5      :X  d   eUR                  [        [        5      R                  U5      UR                  [        [        5      :X  a  GM   e   GM     g )Nr@   )r   r   r   rP   r   r   r   r   r   
set_domainr   rY   old_poly_ringold_frac_field)domsD1D2s      r=   test_Domain_set_domainr   B  s   qE2r3BBqE2a5"Q%A1NDBa5##B'2a5000ad8&&r*bAh666==#..r2bmmA6FFFF==A&11"5q!9LLLL##A&11"59I9I!9LLLL##Aq)44R8B<L<LQPQ<RRRR$$Q'2226":K:KA:NNNN$$Q*55b9R=N=NqRS=TTTT  r>   c                  ^   [        S5      [        [        [        [        /n [
        [        /nX-    Hy  nX"[           UR                  [        5      UR                  [        5      UR                  [        5      4 H,  nX ;   a  UR                  SL d   eM  UR                  SL a  M,   e   M{     g )Nr@   TF)r   r   r   rP   r   r   r   r   rY   r   r   is_Exact)exactinexactDRs       r=   test_Domain_is_Exactr   P  s    UBC$E2hG_aD!,,q/1??1+=q?O?OPQ?RRAzzzT)))zzU***	 S r>   c                     [         R                  " 5       [         :X  d   e[        R                  " 5       [        :X  d   e[        R                  " 5       [        :X  d   e[        R                  " 5       [        :X  d   e[
        R                  " 5       [        :X  d   e[        R                  5       [        :X  d   e[        [           R                  5       [        [           :X  d   e[        [           R                  5       [        [           :X  d   e[        [           R                  5       [        [           :X  d   e[
        [           R                  5       [        [           :X  d   e[        [        [        4   R                  5       [        [        [        4   :X  d   e[        [        [        4   R                  5       [        [        [        4   :X  d   e[        [        [        4   R                  5       [        [        [        4   :X  d   e[
        [        [        4   R                  5       [        [        [        4   :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[
        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[
        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[
        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[
        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[
        R                  " [        5      R                  5       [        R                  " [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   e[
        R                  " [        [        5      R                  5       [        R                  " [        [        5      :X  d   eg r8   )r   	get_exactr   r   r   r   r#   rP   r   r   rY   r   r   rp   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((*bmmAq.AAAA==A((*bmmAq.AAAA==A((*bmmAq.AAAA==A((*dooa.CCCCA((*b.>.>q.AAAAA((*b.>.>q.AAAAA((*b.>.>q.AAAAA((*d.@.@.CCCCAq!++-1A1A!Q1GGGGAq!++-1A1A!Q1GGGGAq!++-1A1A!Q1GGGGAq!++-1C1CAq1IIIIQ))+r/@/@/CCCCQ))+r/@/@/CCCCQ))+r/@/@/CCCCQ))+t/B/B1/EEEEQ",,."2C2CAq2IIIIQ",,."2C2CAq2IIIIQ",,."2C2CAq2IIIIQ",,.$2E2Ea2KKKKr>   c                  v   [        S5      S4[        S5      S4[        S5      S44 Hy  u  pX [           U R                  [        5      U R                  [        5      U R	                  [        5      4 H*  nUR
                  SL d   eUR                  5       U:X  a  M*   e   M{     [        [        [        [        [        4 Hw  nX3[           UR                  [        5      UR                  [        5      UR	                  [        5      4 H*  nUR
                  SL d   eUR                  5       S:X  a  M*   e   My     g )Nr6   r@   rs   FTr   )r   r   rY   r   r   has_CharacteristicZerocharacteristicr   r   r"   r#   rP   )Fcr   r   s       r=   test_Domain_characteristicr     s   Q%beQZ"Q%4aD!,,q/1??1+=q?O?OPQ?RRA++u444##%*** S 5 T4$aD!,,q/1??1+=q?O?OPQ?RRA++t333##%*** S %r>   c                  Z   / SQn / SQn/ SQn[         [           [        [           [        R                  " [        5      pTnU  Vs/ s H"  n[         R                  " [        U5      5      PM$     snU:X  d   eU  Vs/ s H"  n[        R                  " [        U5      5      PM$     snU:X  d   eU  Vs/ s H  ocR	                  U" U5      5      PM     snU:X  d   eU  Vs/ s H  odR	                  U" U5      5      PM     snU:X  d   eU  Vs/ s H  oeR	                  U" U5      5      PM     snU:X  d   eUR	                  U" [        5      5      SL d   eUR	                  U" [        5      5      SL d   eUR	                  U" [        5      5      SL d   eg s  snf s  snf s  snf s  snf s  snf )N)r   r   r   r5   )FTFTF)TTFTTFT)r   r   r   rY   is_unit)numsinvringinvfieldZZxQQxQQxfns          r=   test_Domain_is_unitr     s[   D/G.HUBqE2==#3dC'+,t!BJJr!ut,777'+,t!BJJr!ut,888)-.AKKA.'999)-.AKKA.(:::+/04aLLa!40H<<<;;s1v%''';;s1v%'''<<Q D((( -,..0s   )F:)F0 F F#
 F(c            	        ^ S mU4S jn S n[         R                  " [        S5      5      n[         R                  " [        S5      5      n[        [         X#[        [
        [        [        /n[        U5       H6  u  pVXES   H)  nU" U5       H  nU" U5       H  n	U " X5        M     M     M+     M8     [         R                  " S5      [        SS5      :X  d   e[        S	[        5      u  p[        R                  " X-
  5      S
:X  d   e[        R                  " X-
  U
R                  5       5      S
:X  d   e[        R                  " [        SS5      5      [        SS5      :X  d   e[        R                  " [	        SS5      5      [        SS5      :X  d   e[         R                  " [        S5      [        5      [        SS5      :X  d   e[        R                  " [        SS5      [         5      [        S5      :X  d   e[        R                  " [        SS5      [        5      [	        [        SS5      [        SS5      5      :X  d   e[        R                  " [	        [        SS5      [        SS5      5      [        5      [        SS5      :X  d   e[         R                  " [        5      n[        R                  " [        5      n[         [           n[        [           n	XgX/n[        X5       HC  u  pUR                  UR!                  [        5      U5      UR!                  [        5      :X  a  MC   e   UR                  [        SS5      [         5      U" [        SS5      5      :X  d   eg )Nc           
         [        U [        5      (       a2  [        U[        5      (       a  U R                  UR                  :X  d   eOx[        U [        5      (       a2  [        U[        5      (       a  U R                  UR                  :X  d   eO1[        U 5      [        U5      L d   U < SU< SU< SU< SU< 3	5       eX:X  d   U < SU< SU< SU< SU< 3	5       eg )Nz, z:  z -> )
isinstancer(   r'   r+   r*   type)e1e2r<   K2K3s        r=   check_element*test_Domain_convert.<locals>.check_element  s    b+&&b+..277bgg3EEE3EK((b+..288rxx3GGG3G8tBx'U"b"bRT)UU'xE"b"b"EExr>   c                   > U R                  U5      nT" UR                  U R                  U 5      UR                  XU5        T" UR                  UR                  U5      UR                  XU5        T" UR                  U R                  U 5      UR                  XU5        T" UR                  UR                  U5      UR                  XU5        g r8   )r:   convert_fromonezero)r<   r   r   r   s      r=   check_domains*test_Domain_convert.<locals>.check_domains  s    XXb\boobffb1BFFRRHboobffb1BFFRRHboobggr2BGGRRHboobggr2BGGRRHr>   c           
          U U [            U [           U [         [        4   U R                  [         5      U R                  [        5      U R                  [         [        5      /nU$ r8   )r   r   rY   )r   domainss     r=   composite_domains.test_Domain_convert.<locals>.composite_domains  sL    aD!A$!Q$LLOQ\\!_all1a.@
 r>   r5   r6   gLoW5l   $7q/ l                                r   r   r   g      ?g      ?   )r   rl   r   r   r#   r"   r   r   	enumerateconvertr'   	to_domainr   rY   r   r4   
from_sympy)r   r   QQ2QQ3r   ir<   r   r   K4r   xrKsKaKbr   s                  @r=   test_Domain_convertr     s   FI 

T!W
%C


T!W
%CCdD"b1D4r(B'++B/B!") 0 ,  ! ::f$46y!zzzzbMEA::bg!###::bgq{{}-222::d1aj!R1X---::d1aj!R1X---??2c7B'2a8333??2a8R(BsG333RT]B/41a"Q(3KKKK??41a"Q(3T:bdmKKK	q	B	q	B	AB	AB
"	B"/r}}Q/4a8HHHH " ??2a8R(Br!QxL888r>   c                  .   [         [        S5      4[        [        SS5      4[        [        SS5      4[        [        SS5      4[        [	        S5      4[
        [        SS5      4[        [        S5      4[        [        S5      4[        [        R                  [        S5      5      4/	n U  Hf  u  p[        [        4 HQ  nUR                  UR                  U5      5      nUR                  X!5      U:X  d   eUR                  XC5      U:X  a  MQ   e   Mh     g )Nr6   r   r5   )r   r   r"   r#   r   r   r   r   rP   r   r   to_sympyr   )elementsr   eEEelems        r=   test_EX_convertr     s     
RU	R!W	tAay	tAay	RU	R!W	RU	a	cnnT!W%&
H e)B==A/D??1(D000>>$+q000  r>   c                     [         R                  " [        5      n [         [           nU R                  [        5      U R                  UR                  [        5      U5      :X  d   eUR                  [        5      UR                  U R                  [        5      U 5      :X  d   e[         R                  " [        [        5      n [         [           nU R                  [        5      U R                  UR                  [        5      U5      :X  d   e[
        R                  " [        [        5      n [         [           nU R                  [        5      U R                  UR                  [        5      U5      :X  d   eg 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::a=BJJrzz!}b9999			!Q	B	AB::a=BJJrzz!}b9999 
		!Q	B	AB::a=BJJrzz!}b9999r>   c                  z    [        S[        5      u  n [        R                  " 5       U R                  5       :X  d   eg N )r'   r   ro   r   )r   s    r=   test_PolynomialRing__initr     s)    	b"BA<<>Q[[]***r>   c                  z    [        S[        5      u  n [        R                  " 5       U R                  5       :X  d   eg r   )r*   r   rY   r   )r   s    r=   test_FractionField__initr     s)    	r2BA==?akkm+++r>   c                  d   [         R                  " [        5      n U R                  [        SS5      [         5      U R	                  [        SS5      5      :X  d   e[         R                  " [        5      n U R                  [        S5      [        5      U R	                  [        S5      5      :X  d   eg )Nr5   r6   )r   rY   r   r   r   r	   r   r   )r   s    r=   test_FractionField_convertr     sv    
aA99R1Xr"all8Aq>&BBBB
aA99RUB1<<
#;;;;r>   c                     [         R                  " [        [        [        5      [         [        [        [        4   :X  d   e[         [           R                  [        [        5      [         [        [        [        4   :X  d   e[         R
                  " [        5      R                  [        [        5      [         R
                  " [        [        [        5      :X  d   e[        [        S 5        g )Nc                  B    [         [           R                  [        5      $ r8   )r   r   injectrp   r>   r=   rE   test_inject.<locals>.<lambda>  s    BqELLOr>   )r   r   r   r   r   rY   r2   r.   rp   r>   r=   test_injectr     s    99Q1Aq!G,,,a5<<1Aq!G,,,==""1a(BMM!Q,BBBB
?34r>   c                  0  ^ [         R                  " [        5      [         :X  d   e[         [           R                  [        5      [         :X  d   e[         [        [        4   R                  [        5      [         [           :X  d   e[         R                  " [        5      R                  [        5      [         :X  d   e[         R                  " [        [        5      R                  [        5      [         R                  " [        5      :X  d   e[         [           [           R                  [        5      [         [           :X  d   e[         [           [           R                  [        5      [         [           :X  d   e[         R                  " [        5      [           R                  [        5      [         [           :X  d   e[         R                  " [        5      [           R                  [        5      [         R                  " [        5      :X  d   e[        [        [        S-  S-
  [        [         [           S95      m[        [        [        S-  S-
  [        [         S95      n TR                  [        5      U :X  d   e[        [        U4S j5        g )Nr5   r   ry   c                  .   > T R                  [        5      $ r8   )dropr   )r   s   r=   rE   test_drop.<locals>.<lambda>(  s    BGGAJr>   )	r   r   r   r   rY   r,   r   r2   r.   )r   r   s    @r=   	test_dropr    s   771:a5::a=Bad8==r!u$$$==  #r)))==A##A&"--*::::a58==r!u$$$a58==r!u$$$==A##A&"Q%///==A##A&"--*::::	ad1fa16	7BQT!VQr23A771:??
?./r>   c                      [         R                  " / SQ5      n [        S U  5       5      (       d   e[         R                  " / SQ/5      n [        S U S    5       5      (       a  [        U 5      S:X  d   eg )N)r   r5   r6   r   c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr8   r   of_type.0elts     r=   	<genexpr>"test_Domain_map.<locals>.<genexpr>.  s     .#3rzz##   #%c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr8   r  r  s     r=   r
  r  2  s     1&3rzz#&r  r   r   )r   mapalllen)seqs    r=   test_Domain_mapr  +  s^    
&&
C.#.....
&&,
 C1#a&111c#h!mCCmr>   c                     [         [        [        4   [         [        [        4   :H  SL d   e[        [        [        4   [        [        [        4   :H  SL d   e[         [        [        4   [        [        [        4   :H  SL d   e[        [        [        4   [         [        [        4   :H  SL d   e[         R                  " [        [        5      [         R                  " [        [        5      :H  SL d   e[        R                  " [        [        5      [        R                  " [        [        5      :H  SL d   e[         R                  " [        [        5      [        R                  " [        [        5      :H  SL d   e[        R                  " [        [        5      [         R                  " [        [        5      :H  SL d   e[        5       [           [        [           :X  d   eg )NTF)r   r   r   r   rY   r%   r   rp   r>   r=   test_Domain___eq__r  5  sJ   q!tH1a4 T)))q!tH1a4 T)))q!tH1a4 U***q!tH1a4 U***MM!Q2==A#664???MM!Q2==A#664???MM!Q2==A#665@@@MM!Q2==A#665@@@;q>RU"""r>   c                  l   [         R                  " [        S5      5      n U R                  R                  [        [        S-  S-
  5      :X  d   eU R                  [        :X  d   e[        R                  " [        S5      5      n U R                  R                  [        [        S-  S-
  5      :X  d   eU R                  [        :X  d   eU R                  [        S5      5      n U R                  R                  [        [        S-  S[        S-  -  -
  S-   5      :X  d   eU R                  [        :X  d   eg Nr5   r6   r   
   r   )	r   rl   r   extminpolyr   r   domr   )algs    r=   test_Domain__algebraic_fieldr  E  s    


T!W
%C77??d1a4!8n,,,77b==


T!W
%C77??d1a4!8n,,,77b==


d1g
&C77??d1a4"QT'>A#5666677b==r>   c                  B   [        [        S-  S-
  5      n [        [        S-  S-
  5      n[        [        S-  S[        S-  -  -
  S-   5      n[        R                  " U 5      nUR                  R
                  U :X  d   eUR                  [        :X  d   e[        R                  " U 5      nUR                  R
                  U :X  d   eUR                  [        :X  d   eUR                  U5      nUR                  R
                  U:X  d   eUR                  [        :X  d   eg 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77??a77b==

 
 
#C77??a77b==

!
!!
$C77??a77b==r>   c                      [         R                  " S5      n U R                  R                  [	        [        S5      5      :X  d   eU R                  [        :X  d   e[        R                  " S5      nUR                  R                  [	        [        S5      5      :X  d   eUR                  [        :X  d   eUR                  S5      n[        UR                  U R                  5      c   eUR                  [        :X  d   eg )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55==D!4555555B;;
AA55==D!3444455B;;	1AQUUAEE*66655B;;r>   c                     [        S[        5      u  pn[        S[        5      u  p4nUS-  US-  -   US-   -  nUS-  US-  -   S-  nUS-  US-  -   nUR                  5       R	                  X`R                  5       5      b   eUR                  5       R	                  XpR                  5       5      US-  S-  US-  S-  -   :X  d   eUR                  5       R	                  XR                  5       5      US-  US-  -   :X  d   e[        S[
        5      u  pn[        S[
        5      u  p4nUS-  US-  -   US-   -  nUS-  US-  -   S-  nUS-  US-  -   nUR                  5       R	                  X`R                  5       5      b   eUR                  5       R	                  XpR                  5       5      US-  S-  US-  S-  -   :X  d   eUR                  5       R	                  XR                  5       5      US-  US-  -   :X  d   eg )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  s   5"FA%_FA	
A1q1uA	
A1aA	
A1A;;=++A{{}=EEE;;=++A{{}=Aa!Q$q&PPP;;=++A{{}=A1LLL5"FA%_FA	
A1q1uA	
A1aA	
A1A;;=++A{{}=EEE;;=++A{{}=Aa!Q$q&PPP;;=++A{{}=A1LLLr>   c                     [        S[        5      u  pn[        S[        5      u  p4nSUS-  -  SUS-  -  -   nUS-  S-  US-  S-  -   nUR	                  5       R                  X`R	                  5       5      SUS-  -  SUS-  -  -   :X  d   eUR	                  5       R                  XpR	                  5       5      SUS-  -  SUS-  -  -   S-  :X  d   eg )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    %_FA5"FA	!Q$1a4A	1QAaA;;=,,Q>!AqD&1QPQT6/QQQ;;=,,Q>1QT6AaQRdF?TVBVVVVr>   c                      [        S5      R                  [        S5      " S5      5      SL d   e[        S5      R                  [        S5      " S5      5      SL d   eg )Nr6   r   Tr@   )r   r  rp   r>   r=   test_FF_of_typer2    sJ     a5==Aq"d***a5==Aq"d***r>   c                      [         [           [        [           :X  a   e[         R                  " [        5      [        R                  " [        5      :X  a   eg r8   )r   r   r   rY   rp   r>   r=   test___eq__r4    s:    !u1~}}Q2==#33333r>   c                     [         R                  " [        R                  5      [         R                  " S5      :X  d   e[         R                  " [        S5      5      [         R                  " S5      :X  d   e[         R                  " [        R
                  5      [         R                  " S5      :X  d   e[         R                  " [        S5      5      [         R                  " S5      :X  d   e[         R                  " [        S5      5      [         R                  " [        S5      R                  5       5      :X  d   eg )Nr   g        r   g      ?)r   r   r   ZerodtypeOner   evalfrp   r>   r=   test_RealField_from_sympyr:    s    ::aff!,,,::af#...::aee+++::af#...::c!f#a&,,.!9999r>   c                  R  ^ ^ [        [        5      [        /-   [        S S  V s/ s H  n [        U 5      PM     sn -   n[        [
        [        [        [        4 HF  mU H=  m T [        :X  a  T[        :X  a  M  T T;  d	   T T45       e[        [        UU 4S j5        M?     MH     g s  sn f )Nr6   c                  &   > T R                  T5      $ r8   )r   )r  r   s   r=   rE   (test_not_in_any_domain.<locals>.<lambda>  s    3;;q>r>   )listr   r   floatr   r   r   r   r   r2   r/   )r   checkr  s   ` @r=   test_not_in_any_domainrA    s    NaS "2A,$(&Qa,$( (EBB#AAv#)C<)!S)<>#9:	  $$(s   B$c                    ^^^ [        S5      n U " S5      nU R                  U5      (       a  US:X  d   eU " S5      nU R                  U5      (       a  US:X  d   eU " S5      nU R                  U5      (       a  US:X  d   eU " S5      nU R                  U5      (       a  US:X  d   eU " S5      nU R                  U5      (       a  US:X  d   eU " U " S5      5      nU R                  U5      (       a  US:X  d   eU " U " S5      5      nU R                  U5      (       a  US:X  d   eU " U " S5      5      nU R                  U5      (       a  US:X  d   eU " U " S5      5      nU R                  U5      (       a  US:X  d   eU " U " S5      5      nU R                  U5      (       a  US:X  d   eU " S5      * nU R                  U5      (       a  US:X  d   eU " S5      * nU R                  U5      (       a  US:X  d   eSU " S5      -   nU R                  U5      (       a  US:X  d   eU " S5      S-   nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -   nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -   nU R                  U5      (       a  US:X  d   eSU " S5      -
  nU R                  U5      (       a  US:X  d   eU " S5      S-
  nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -
  nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -
  nU R                  U5      (       a  US:X  d   eSU " S5      -  nU R                  U5      (       a  US:X  d   eU " S5      S-  nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -  nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -  nU R                  U5      (       a  US:X  d   eSU " S5      -  nU R                  U5      (       a  US:X  d   eU " S5      S-  nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -  nU R                  U5      (       a  US:X  d   eU " S5      U " S5      -  nU R                  U5      (       a  US:X  d   eU " S5      S-  nU R                  U5      (       a  US:X  d   eU " S5      S-  nU R                  U5      (       a  US:X  d   eU " S5      S-  nU R                  U5      (       a  US:X  d   e[        S5      nU" S5      S-  nUR                  U5      (       a  US:X  d   eU" S5      S-  nUR                  U5      (       a  US:X  d   e[        U " S5      5      S	L d   e[        U " S5      5      S
L d   e[        S5      mT" S5      S-  nTR                  U5      (       a  US:X  d   eT" S5      S-  nTR                  U5      (       a  US:X  d   eT" S5      S-  nTR                  U5      (       a  US:X  d   eT" S5      S-  nTR                  U5      (       a  US:X  d   e[        S:w  a(  [	        [
        U4S j5        [	        [
        U4S j5        [	        [        S 5        [	        [        S 5        [        S5       GH0  m[        S5       GH  m[        S:w  a  [        5          T" T5      T" T5      :  TT:  L d   e S S S 5        [        5          T" T5      T" T5      :*  TT:*  L d   e S S S 5        [        5          T" T5      T" T5      :  TT:  L d   e S S S 5        [        5          T" T5      T" T5      :  TT:  L d   e S S S 5        M  [	        [        UUU4S j5        [	        [        UUU4S j5        [	        [        UUU4S j5        [	        [        UUU4S j5        GM     GM3     [        [        S5      5      T:X  d   eT" [        S5      5      T" S5      :X  d   eg ! , (       d  f       GN2= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       GM  = f)Nr6   r   r   r5   r   rs   l    h] l h] FTr@   r   flintc                     > T " S5      S-  $ )Nr   r   rp   r^   s   r=   rE   %test_ModularInteger.<locals>.<lambda>      bebkr>   c                     > T " S5      S-  $ )Nr@   r   rp   rE  s   r=   rE   rF    rG  r>   c                      [        S5      $ Nr   r   rp   r>   r=   rE   rF    s    r!ur>   c                      [        S5      $ )Ng @rK  rp   r>   r=   rE   rF    s    r#wr>   c                  &   > T " T5      T " T5      :  $ r8   rp   r^   n1n2s   r=   rE   rF  '      "R&2b6/r>   c                  &   > T " T5      T " T5      :*  $ r8   rp   rN  s   r=   rE   rF  (      "R&BrF*:r>   c                  &   > T " T5      T " T5      :  $ r8   rp   rN  s   r=   rE   rF  )  rQ  r>   c                  &   > T " T5      T " T5      :  $ r8   rp   rN  s   r=   rE   rF  *  rS  r>   )r   r  boolr   r2   r0   
ValueErrorranger3   	TypeErrorr   r   )rD   aF7r^   rO  rP  s      @@@r=   test_ModularIntegerr\    sO   	AB
1A::a==Q!V##
1A::a==Q!V##
1A::a==Q!V##
1A::a==Q!V##
1A::a==Q!V##
2a5	A::a==Q!V##
2a5	A::a==Q!V##
2a5	A::a==Q!V##
2a5	A::a==Q!V##
2a5	A::a==Q!V##	AA::a==Q!V##	AA::a==Q!V##	BqE	A::a==Q!V##
1	A::a==Q!V##
11A::a==Q!V##
11A::a==Q!V##	BqE	A::a==Q!V##
1	A::a==Q!V##
11A::a==Q!V##
11A::a==Q!V##	"Q%A::a==Q!V##
1aA::a==Q!V##
1beA::a==Q!V##
1beA::a==Q!V##	"Q%A::a==Q!V##
1aA::a==Q!V##
1beA::a==Q!V##
1beA::a==Q!V##
1qA::a==Q!V##
1qA::a==Q!V##
1qA::a==Q!V##	AB
1|A::a==Q!V##
1}A::a==Q!V##1;%1;$	AB
1A::a==Q!V##
1A::a==Q!V##
1A::a==Q!V##
1A::a==Q!V##w}12}12
:}%
:'Ah(Bw&+-rFRVOb999 .+-rFbf,"(;;; .+-rFRVOb999 .+-rFbf,"(;;; .- y"9:y":;y"9:y":;  $ gaj>Rgaj>RU"""! .-------s0   0`6a
a7a+6
a
a
a(+
a;c                      [        [        SS-  SS-  5      5      S:X  d   e[        [        SS-  S5      5      S:X  d   eg )Nr5   i  r6   i  i d   l   UU*UU*UU*U)intr   rp   r>   r=   test_QQ_intr`  1  sB    r!T'1d7#$...r!S&!}!????r>   c                      [        S5      S:  d   e[        S5      S:  d   e[        S5      S:  d   e[        S5      S:  d   e[        S5      S:  d   e[        S5      S:  d   eg )Nr   Jz5vIh%<=+=V瞯<#B;Ww'&l7)r   rp   r>   r=   test_RR_doublerh  6  sn    d8ee9ue9ue9ue9ue9ur>   c                  2   [        S5      n [        S5      nU R                  S:X  d   eUR                  S:X  d   e[        U 5      S-
  S:  d   e[        U5      S-
  S:  d   e[        UR                  S9nU" U 5      S-
  S:  d   eU" U5      S-
  S:  d   eg )Nz1.01z1.00000000000000000000015   P   r   rb  )prec)r   _precr   r%   )f1f2RR2s      r=   test_RR_Floatrq  ?  s    	vB	)	*B88r>>88r>>b6!8eb6!8e

"Cr719ur719ur>   c                     [        S5      R                  S:  d   e[        S5      R                  S:  d   e[        S5      R                  S:  d   e[        S5      R                  S:  d   e[        S5      R                  S:  d   e[        S5      R                  S:  d   e[        S5      R                  S:  d   e[        S	5      R                  S:  d   e[        S
5      R                  S:  d   e[        S5      R                  S:  d   e[        S5      R                  S:  d   e[        S5      R                  S:  d   eg )Nr   rb  rc  rd  re  rf  rg  y        Q	@y        vIh%<=y        +=y        V瞯<y        #B;y        Ww'&l7)r   realimagrp   r>   r=   test_CC_doubleru  L  s
   d8==5   e9>>E!!!e9>>E!!!e9>>E!!!e9>>E!!!e9>>E!!!e9>>E!!!f:??U"""f:??U"""f:??U"""f:??U"""f:??U"""r>   c                  
  ^^ [         R                  n SSU -   SU -
  SSU -  -
  4 Vs/ s H  n[        R                  " U5      PM     snu  p#pE[        R                  " X#5      U:X  d   e[        R                  " X$5      U:X  d   e[        R
                  " X#5      U:X  d   e[        R
                  " X$5      U:X  d   e[        SS5      [        SS5      :w  d   e[        SS5      S:w  d   e[        [        S5      S-  S5      [        S5      S-  :w  d   e[        SS5      R                  5       S:X  d   e[        SS5      R                  5       S:X  d   e[        R                  " [        SS5      5      [        [        SS5      [        S5      5      :X  d   e[        R                  " [        SS5      [        5      [        [        SS5      [        S5      5      :X  d   e[        [        4 G	H  mT" SS5      m[        T5      S:X  d   eTR                  5       T:X  d   eTR                  [        5      S:X  d   eTR                  S5      S	:X  d   eTR                  SU -  5      S
:X  d   e[        T5      [        S5      :X  d   eT" SS5      T" SS5      :X  d   eT" SS5      T" SS5      :w  d   eT" SS5      T" S5      :X  d   eTT-   T" SS5      :X  d   eTT-
  T" SS5      :X  d   eST-
  T* S-   s=:X  a  T" SS5      :X  d   e   eST-   TS-   s=:X  a  T" SS5      :X  d   e   eTT-  T" SS5      :X  d   eST-  TS-  s=:X  a  T" SS5      :X  d   e   eTS-  T" SS5      :X  d   eTS-  T:X  d   eTS-  TT-  s=:X  a  T" SS5      :X  d   e   eTS-  TT-  T-  s=:X  a  T" SS5      :X  d   e   eST-  TS-  s=:X  a*  [        [        S5      S-  [        S5      * S-  5      :X  d   e   eTS-  [        SS5      :X  d   eTS-  [        [        S5      S-  S5      :X  d   eTS-  [        S[        S5      S-  5      :X  d   eST-  [        [        S5      S-  [        S5      * S-  5      :X  d   e[        TS5      u  pgSU-  U-   T:X  d   e[        ST5      u  pgTU-  U-   T" SS5      :X  d   eT" SS5      T" SS5      p2TR                  X#5      u  pEnUTR	                  X#5      :X  d   eXB-  XS-  -   U:X  d   e[!        ["        U4S j5        [!        ["        U4S j5        [!        ["        U4S j5        [!        ["        U4S j5        [!        ["        U4S j5        [!        [$        U4S j5        [!        [$        U4S j5        [!        [$        U4S j5        [!        [$        U4S j5        [!        [$        U4S  j5        [!        [$        U4S! j5        [!        [$        U4S" j5        [!        [$        U4S# j5        [!        [$        U4S$ j5        [!        [$        U4S% j5        TR'                  [        S5      5      T" SS5      :X  d   eTR)                  T" SS5      5      [        S5      :X  d   e[!        [*        U4S& j5        TR-                  [.        5      n	[1        U	[2        5      (       d   eU	R4                  T:X  d   e[7        U	R8                  5      S:X  a%  U	R8                  S   R;                  5       [.        :X  d   eT[        L a\  TR=                  5       n
[1        U
[>        5      (       d   eU
R4                  [        :X  d   eU
R@                  RB                  S   U :X  d   eT" SS5      T" SS5      T" SS5      T" SS5      4 H[  nTRE                  U5      S'L d   eTRG                  U5      S'L d   eTRI                  U5      S'L d   eTRK                  U5      S'L a  M[   e   [L        [        [?        [        U 5      /nU[O        5       [Q        5       /-  n[R        S(:X  a  U[U        5       [W        5       /-  nU HL  nTR                  U" S5      5      T" SS5      :X  d   eTR                  U" S5      U5      T" SS5      :X  a  ML   e   [        [        4 HN  nTR                  U" SS5      5      T" SS5      :X  d   eTR                  U" SS5      U5      T" SS5      :X  a  MN   e   T[        :X  a  [Y        T5      S):X  d   eTS-  T" SS5      :X  d   eST-  T" SS*5      :X  d   eST-  T" SS5      :X  d   eTS-  T" SS5      :X  d   eUT" SS5      :X  d   eUT" SS5      :X  d   eTR[                  5       T:X  d   eTR]                  5       [        :X  d   eGM  [Y        T5      S+:X  d   eTR[                  5       [        :X  d   eTR]                  5       T:X  d   eTS-  T" S[        S5      S-  5      :X  d   eST-  T" [        S,5      S-  [        S-5      * S-  5      :X  d   eST-  T" SS5      :X  d   eTS-  T" SS5      :X  d   eUT" [        S5      S-  [        S5      * S-  5      :X  d	   TU45       eUT" SS5      :X  d   eT" [        S5      S-  [        S5      S-  5      nTR_                  U5      [        SS.5      :X  d   eTRa                  U5      [        S5      :X  a  G	M   e   g s  snf )/Nr@   r5   r6   r   r   r   z3 + 4*I)NN)r5   r   )r   r5   )r6   r   r   r      r      	   r$  i,      c                     > T S-  $ rJ  rp   qs   r=   rE   'test_gaussian_domains.<locals>.<lambda>  	    !a%r>   c                     > T S-  $ rJ  rp   r~  s   r=   rE   r    r  r>   c                     > T S-  $ rJ  rp   r~  s   r=   rE   r    s	    !q&r>   c                     > [        T S5      $ rJ  divmodr~  s   r=   rE   r        &A,r>   c                     > [        T S5      $ rJ  r  r~  s   r=   rE   r    r  r>   c                     > T [         -   $ r8   r   r~  s   r=   rE   r    	    !a%r>   c                     > T [         -
  $ r8   r  r~  s   r=   rE   r    r  r>   c                     > [         T -   $ r8   r  r~  s   r=   rE   r    	    !a%r>   c                     > [         T -
  $ r8   r  r~  s   r=   rE   r    r  r>   c                     > T [         -  $ r8   r  r~  s   r=   rE   r    r  r>   c                     > [         T -  $ r8   r  r~  s   r=   rE   r    r  r>   c                     > T [         -  $ r8   r  r~  s   r=   rE   r    r  r>   c                     > [         T -  $ r8   r  r~  s   r=   rE   r    r  r>   c                     > T [         -  $ r8   r  r~  s   r=   rE   r    s	    !q&r>   c                     > [         T -  $ r8   r  r~  s   r=   rE   r    s	    !q&r>   c                  .   > T R                  [        5      $ r8   )r   r   )Gs   r=   rE   r    s    q||B'7r>   Fgmpyz
ZZ_I(3, 4)r   z
QQ_I(3, 4)$   0   r  )1r   ImaginaryUnitr"   r   gcdlcmr#   quadrantr   strparent_get_xyr   hashr  gcdexr2   ZeroDivisionErrorrY  r   r   r/   r   r   r   r$   rz   r  gensas_expras_AlgebraicFieldr!   r  argsis_negativeis_positiveis_nonnegativeis_nonpositiver   r   r    r   r   r   reprr   r   numerdenom)r   r   rZ  br   dr   rr   PRAFqir   r   q2r  r  s                  @@r=   test_gaussian_domainsr  \  s
   	A,-q1ua!eQ1W+EF+Ea$,,q/+EFJA!88A>Q88A>Q88A>Q88A>Q1:a###1:??!Q?ad1f$$$1: A%%%A;!Q&&&<<1a!T"Q(BqE%::::<<1a"%bAh1)>>>>D\aG1v"""xxzQyy},,,yy|v%%%yy1~'''Aw$v,&&&Aw!Aq'!!!Aw!Aq'!!!Aw!A$1u!Q1u!Q1u!a+1Q8+++++1uA(1a(((((1u"b	!!!1uA)1b)))))Av1a   Av{{AvQ+!B)+++++AvQ1abk111111uR;4!R1Q4#;;;;;;1uQ
"""1uQqT!VQ'''sd1ad1fo%%%sd1Q47QrUF2I....a|sQw!||a|sQw!Aq'!!!Aw!R1''!-aAEE!Kuqu}!!! -0 -0 .1 "67 "67y-(y-(y-(y-(y-(y-(y-(y-(y.)y.)||AaD!Qq!W,,,zz!Aq'"ad***~78XXa["n----yyA~~277|q RWWQZ%7%7%9Q%>>>9$$&Bb.111199?"?66;;q>Q&&&R8Qq!Wa2h!Q8B==$---==$---##B'5000##B'5000	 9 r>"a01 	IK--6!	79--GA99QqT?a1g---99QqT1%1a000  tA99Qq!W%1a00099Qq!Wa(AaG333  97l***a41Q7?"?q5AaH$$$6Qq!W$$$q5Ab!H$$$!Q<<!Q<<::<1$$$;;=D(((7l***::<4''';;=A%%%a41Q!Q<'''q5AaeBh2r	22226Qq!W$$$q5AaG###!A$r'AaD58,,3qe3,!Q<<1Q461Q46"B772;$q"+---772;$q')))i  Gs    l c                     [         R                  [        R                  L d   e[         R                  [        R
                  L d   e[        S5      [        R                  " S5      :X  d   e[        S5      R                  [        R
                  L d   e[        S5      [        R
                  L d   eS[        [        [        [        -  -   [        -  5      -  [        SS[        -  -   5      s=:X  a#  S[        [        [        -  -   [        -  -  :w  d   e   eS[        [        [        [        -  -   [        -  5      -  S[        [        [        -  -   [        -  -  s=:X  a  S[        -   :w  d   e   e[         R                  " [        S5      [        5      [         R                  L d   e[        R                  " [        S5      [         5      [        R                  :X  d   e[         R                  " [        R
                  5      [        R
                  L d   e[         R                  " [         R                  5      [        R
                  L d   e[        [        S 5        [         R                   " 5       [         :X  d   e[         R"                  " [        5      [         :X  d   e[        R"                  " [         5      [         :X  d   eg )Nr   r5   c                  .    [         R                  " / 5      $ r8   )r   r   rp   r>   r=   rE   test_EX_EXRAW.<locals>.<lambda>  s    5#3#3B#7r>   )r   r   r   r6  r   r8  r   
Expressionexr   r   r   r   r   r2   r/   r   r:   rp   r>   r=   test_EX_EXRAWr    s   ::99a5BMM!$$$$a588quu8quu RQqS!_1qs7>q1qs7A+>>>>>UA!GQ;1q1Q3wk?=q1u=====beR(EII555??58U+rvv555AEE"aee+++>>%))$---
>78??%%%;;r?e###88E?e###r>   c                      [        S5      [        [        5      [        S5      /n [        U 5      [        S5      [        S5      [        [        5      /:X  d   eg )Nr   r6   )r   r   sorted)r   s    r=   test_EX_orderingr    s@    1r!ube$H(1r!ube4444r>   c                  P   [         [        [        4 HI  n U R                  U " S5      5      U " S5      :X  d   eU R                  U " S5      5      U " S5      :X  a  MI   e   [        [
        4 H  n U R                  [        5      nU R                  U " S5      5      U " S5      :X  d   eU R                  U " S5      U-  5      U* :X  d   eU R                  U " S5      * 5      U " S5      :X  d   eU R                  U " S5      * U-  5      U:X  a  M   e   [         [           n U R                  U " [        S-   5      5      U " S5      :X  d   eU R                  U " [        * S-   5      5      U " S5      :X  d   e[        [           n U R                  U R                  [        [        -  5      5      [	        SS5      :X  d   e[        R                  " [        [        5      n U R                  [        5      nX-  U R                  :X  d   eU R                  U-   XR                  -
  -  U* :X  d   eg )Nr5   r   r   r   r   )r   r   r   canonical_unitr"   r#   r   r   r   rY   r   r   )r   r   s     r=   test_canonical_unitr    s   "b\!%1---"&!B%///  D\LLO!%1---!Q'A2---1&!B%///1a(A---  	1AAa!eH%1---Aqb1fI&!B%///QAALL1-.$q"+===1A	QA5AEE>>EEAIEE	"qb(((r>   c                      [         R                  n SU -   S4 Vs/ s H  n[        R                  " U5      PM     snu  p#[        R                  " U5      S:X  d   e[        R                  " U5      S:X  d   eg s  snf Nr5   r@   F)r   r  r   r   r  r   r   rZ  r  s       r=   test_Domain_is_negativer    d    	A$%E1:.:aBJJqM:.DA>>!%%%>>!%%% /    A8c                      [         R                  n SU -   S4 Vs/ s H  n[        R                  " U5      PM     snu  p#[        R                  " U5      S:X  d   e[        R                  " U5      S:X  d   eg s  snf r  )r   r  r   r   r  r  s       r=   test_Domain_is_positiver  "  r  r  c                      [         R                  n SU -   S4 Vs/ s H  n[        R                  " U5      PM     snu  p#[        R                  " U5      S:X  d   e[        R                  " U5      S:X  d   eg s  snf r  )r   r  r   r   r  r  s       r=   test_Domain_is_nonnegativer  )  h    	A$%E1:.:aBJJqM:.DAQ5(((Q5((( /r  c                      [         R                  n SU -   S4 Vs/ s H  n[        R                  " U5      PM     snu  p#[        R                  " U5      S:X  d   e[        R                  " U5      S:X  d   eg s  snf r  )r   r  r   r   r  r  s       r=   test_Domain_is_nonpositiver  0  r  r  c                      [         [           n U R                  [        5      nU R                  [        S5      5      US-  :X  d   eU R	                  [        S5      5      US-  :X  d   eg )Nr6   )r   r   r   r   r   )r   eKs     r=   test_exponential_domainr  7  sV    
1A	
aB<<A27***99SVa'''r>   c                     [         R                  " [        S5      5      n U R                  R                  b   e[        [        S5      SS9n[         R                  " U5      n U R                  R                  R                  S:X  d   e[         R                  " USS9n U R                  R                  R                  S:X  d   e[         R                  " [        S5      [        S5      5      n U R                  R                  b   e[         R                  " U[        S5      5      n U R                  R                  b   e[         R                  " [        S5      [        S5      SS9n U R                  R                  R                  S:X  d   e[         R                  " U5      n U R                  U " / SQ5      5      nUR                  UR                  L d   eg )Nr5   alpha)aliasthetar6   )r   r5   r6   )r   rl   r   r  r  r   name
to_alg_num)kr  betas      r=   test_AlgebraicField_aliasr  >  sh   
47#A55;; DG73E
5!A55;;w&&& 	50A55;;w&&& 	47DG,A55;; 	5$q'*A55;; 	47DG7;A55;;w&&& 	5!A<<)%D::$$$r>   c                     [         R                  " [        S5      5      SL d   e[         R                  " [        S5      5      [        S5      :X  d   e[         R                  " [        S5      5      SL d   e[         R                  " [        S5      5      b   e[         R                  " [        S5      5      SL d   e[         R                  " [        S5      5      [        S5      :X  d   e[         R                  " [        S5      5      SL d   e[         R                  " [        S5      5      b   e[        R                  " [        SS5      5      SL d   e[        R                  " [        SS5      5      [        S	S5      :X  d   e[        R                  " [        S
S5      5      SL d   e[        R                  " [        S
S5      5      [        S	S5      :X  d   e[        R                  " [        SS5      5      SL d   e[        R                  " [        SS5      5      [        S	S5      :X  d   e[        R                  " [        SS5      5      SL d   e[        R                  " [        SS5      5      b   e[        R                  " [        SS5      5      SL d   e[        R                  " [        SS5      5      b   e[        R                  " [        S5      5      SL d   e[        R                  " [        S5      5      [        S5      :X  d   e[        R                  " [        S5      5      SL d   e[        R                  " [        S5      5      [        S5      :X  d   e[        R                  " [        SS5      5      SL d   e[        R                  " [        SS5      5      b   e[        R                  " [	        S5      5      SL d   e[        R                  " [	        S5      5      [	        S5      :X  d   e[        R                  " [	        S5      5      SL d   e[        R
                  " [        R                  " [	        S5      5      [	        S5      SS9(       d   e[        R                  " [	        S5      5      SL d   e[        R                  " [	        S5      5      [	        S5      :X  d   e[        R                  " [	        S5      5      SL d   e[        R                  " [	        S5      5      b   e[        R                  " [        S5      5      SL d   e[        R
                  " [        R                  " [        S5      5      [        S5      SS9(       d   e[        R                  " [        S5      5      SL d   e[        R                  " [        S5      5      [        S5      :X  d   e[        R                  " [        S5      5      SL d   e[        R                  " [        S5      5      [        SS5      :X  d   e[        R                  " [        SS5      5      SL d   e[        R                  " [        SS5      5      [        SS5      :X  d   e[        R                  " [        SS5      5      SL d   e[        R                  " [        SS5      5      [        SS5      :X  d   e[        S5      n U R                  U " S5      5      SL d   eU R                  U " S5      5      U " S5      :X  d   eU R                  U " S5      5      SL d   eU R                  U " S5      5      U " S5      :X  d   e[        S5      nUR                  U" S5      5      SL d   eUR                  U" S5      5      U" S	5      :X  d   eUR                  U" S	5      5      SL d   eUR                  U" S	5      5      b   eUR                  U" S5      5      SL d   eUR                  U" S5      5      U" S5      :X  d   eg )Nr   Tr5   *   Fr   r   rz  r6      rw  irx     r@   ig      @g      @g;f?re  )	tolerancer   r   rs   )r   	is_squareexsqrtr   r   almosteqr   r   )F2r[  s     r=   test_exsqrtr  _  s   <<1$&&&99RUr!u$$$<<25(((99RV$$$<<1$&&&99RUr!u$$$<<25(((99RV$$$<<1a!T)))99R1X"Q(***<<2q	"d***99RAY2a8+++<<2r
#t+++99RBZ Bq!H,,,<<2q	"e+++99RAY'''<<1a!U***99R1X&&&<<1$&&&99RUr!u$$$<<1$&&&99RUr!u$$$<<3
#u,,,99RQZ (((<<4!T)))99RX"S')))<<1$&&&;;ryyA',>)?5QQQ<<1$&&&99RUr!u$$$<<25(((99RV$$$<<1$&&&;;ryyA',>)?5QQQ<<1$&&&99RUr!u$$$<<24'''99RV1a(((<<1a!T)))99R1X"Q(***<<2r
#t+++99RBZ Bq"I---	AB<<1$&&&99RUr!u$$$<<1$&&&99RUr!u$$$	AB<<1$&&&99RUr!u$$$<<1%'''99RU###<<1$&&&99RUr!u$$$r>   N)}__doc__sympy.external.gmpyr   sympy.core.numbersr   r   r   r   r   r	   r
   r   r   sympy.core.singletonr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   sympy.polys.polytoolsr   	sympy.abcr   r   r   sympy.polys.domainsr   r   r   r   r   r   r   r   r   r   r   r    "sympy.polys.domains.algebraicfieldr!   #sympy.polys.domains.gaussiandomainsr"   r#   "sympy.polys.domains.polynomialringr$   sympy.polys.domains.realfieldr%   !sympy.polys.numberfields.subfieldr&   sympy.polys.ringsr'   r(   sympy.polys.specialpolysr)   sympy.polys.fieldsr*   r+   sympy.polys.agca.extensionsr,   sympy.polys.polyerrorsr-   r.   r/   r0   r1   sympy.testing.pytestr2   r3   	itertoolsr4   rl   rP   r:   rm   rq   rw   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`  rh  rq  ru  r  r  r  r  r  r  r  r  r  r  r  rp   r>   r=   <module>r     s   V ,      " 6 9 8 &  # # # # = : = 3 ? / 4 1 7  @ a$q'*xtwTrJ&1fOIBX6
-0D7,U+&LR+)<9~1*:"+
,
<50 D# $M0W+4
:;y#x@

# D*N$25
)4&&))(%B;%r>   