
    sg(                        d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ d Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*ed        Z+d Z,d Z-d Z.d  Z/y!)"z Test sparse rational functions.     )fieldsfield	FracFieldFracElement)ring)ZZQQ)lex)raisesXFAIL)symbolsE)Rational)explog)sqrtc                     t        dt        t              } t        dt        t              }t        dt        t              }| j                  | j                  d   k(  sJ | j
                  | j                  d   k(  sJ | j                  |j                  k(  sJ | j
                  |j
                  k(  sJ | j                  |j                  k7  sJ | j
                  |j
                  k7  sJ y )Nx,yx,y,zr      )r   r   r
   xgensy)F1F2F3s      P/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_fields.pytest_FracField___init__r      s    	5"c	"B	5"c	"B	7B	$B442771:442771:44244<<44244<<44244<<44244<<    c                  H    t        dt              \  } }}}t        |       sJ y Nr   r   r	   hashFr   r   zs       r   test_FracField___hash__r'      s!    w#JAq!Q7N7r   c                  .   t        dt              d   t        dt              d   k(  sJ t        dt              d   t        dt              d   u sJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ t        dt              d   t        dt              d   k7  sJ t        dt              d   t        dt              d   usJ y )Nr   r   r   )r   r	   r    r   r   test_FracField___eq__r*      s~   "a E'2$6q$9999"a E'2$6q$9999"a E'2$6q$9999"a gr(:1(===="a E'2$6q$9999"a gr(:1(===="a E%$4Q$7777"a eR(8(;;;;A%"4Q"7777AeGR&8&;;;;r   c                     t        d      } t        t        t        t        |             t        |       ft        t
              }|j                  \  }}}t        t        |       t        t        |       dz   t        t        |       dz         dz  z         dz  z  t        |       dz   z        ||dz  |dz  z  |z  fk(  sJ t        | t        d| z        t        |       | t        dd      z  ft        t
              }|j                  \  }}}}t        | dz
  t        |       z  d| dz  z  z   t        d| z  t        |       dz  z         z  | dz  z        |d|j                  dz  z  |z  |j                  |z  |z  z   d|z  |z  z
  |dz  z  fk(  sJ t        | t        |       t        | t        |       z         ft        t
              }|j                  \  }}}t        | dz   | | t        |       z   t        dd      z  z  z  d| t        |       dz  z  z  z
        ||j                  |dz  z  |j                  |z  z
  |dz  z   ||z  z
  |j                  dz  |dz  z  |z  |j                  |dz  z  |z  z   z  fk(  sJ y )Nr   r               )r   r   r   r   r   r
   r   r   r   r	   r   r   )	r   r%   eexexex_lgx3srts	            r   test_sfieldr7   .   sf   A1c#a&k3q6*B4A&&KAtR#a&SVaZ#c!fqj/!*;;<a??Q!LMq!tD!G|B      	1c!A#hA2a84b#>AFFMAr2rAaCQ<!Q$&AaCAqL(99!Q$>?	
QqssAvXb[133r6"9$qtBw.A567 7 7 	1c!fd1s1v:./S9AJAr31q5Q!c!f*r!Qx!7781a#a&!)m;LLMBE	ACCG#b!e+bf4SS!VBE\#BE	#-/ 00 0 0r   c                  T    t        dt              \  } }}}t        ||z  |z        sJ y r!   r"   r$   s       r   test_FracElement___hash__r9   A   s*    w#JAq!Q!A;;r   c                      t        dt              \  } }}}||z  dz  |z  }|j                         }||k(  sJ d|j                  d<   ||k7  sJ y )Nr   r,      )r   r   r   )r   r   copynumer)r%   r   r   r&   fgs         r   test_FracElement_copyr@   E   sV    w#JAq!Q	!AaA	A6M6AGGI6M6r   c                     t        dt              \  } }}}d|dz  z  |z  ||z  |z  z
  d|dz  z  dz   z  | j                  \  }}ddz  z  |z  |z  |z  z
  d|dz  z  dz   z  }|k7  sJ j                         |k(  sJ t        d      \  }}ddz  z  |z  |z  |z  z
  d|dz  z  dz   z  }|k7  sJ j                  ||      |k(  sJ t	        t
        fd       y )Nr   r,   r-   r;   r   c                  &    j                         S N)as_expr)Xr>   s   r   <lambda>z*test_FracElement_as_expr.<locals>.<lambda>_   s    qyy| r   )r   r   r   rD   r   
ValueError)	r%   r   r   r&   YZr?   rE   r>   s	          @@r   test_FracElement_as_exprrJ   O   s   w#JAq!Q	
1a4AaCE	AadFQJ'AiiGAq!	
1a4AaCE	AadFQJ'A6M699;!gGAq!	
1a4AaCE	AadFQJ'A6M699Q1"""
:+,r   c            	      \   t        d      \  } }t        | |ft              \  }}}j                  d      }|dk(  rt	        |j
                        sJ j                  t        dd            }| d      dz  k(  rt	        |j
                        sJ j                        }||k(  rt	        |j
                        sJ j                  t        dd      z        }||t        dd      z  k(  rt	        |j
                        sJ j                  dz        }|d|z  k(  rt	        |j
                        sJ j                  | z  |z        }|||z  |z  k(  rt	        |j
                        sJ j                  | z  |z        }|||z  |z  k(  rt	        |j
                        sJ j                  | z  |z  | z  z   z         }|||z  |z  ||z  z   |z   k(  rt	        |j
                        sJ j                  | z  |z  | z  z   z   | z  dz   z        }|||z  |z  ||z  z   |z   ||z  dz   z  k(  rt	        |j
                        sJ j                  dz  | z  |z  dz  | dz  z  z   dz         }||dz  |z  |z  |dz  |dz  z  z   dz   k(  rt	        |j
                        sJ t        t        fd       t        t        fd       t	        t        dz     j                         j                  d z        t              sJ t	        t        dz     j                         j                  dz        t              sJ t	        t        t        t        dd               j                         j                  t              t              sJ y )	Nr   r   r,   r;   r-   c                  ,     j                  dz        S )Nr-   )	from_exprr%   r   s   r   rF   z,test_FracElement_from_expr.<locals>.<lambda>   s    q{{1a40 r   c                  D     j                  dz  t        d      z         S )Nr;   r-   )rM   r   rN   s   r   rF   z,test_FracElement_from_expr.<locals>.<lambda>   s    q{{1Q3a=9 r   i)r   r   r   rM   
isinstancedtyper   r   rG   	get_fieldconvertr   r   r   )r   r&   rE   rH   rI   r>   r%   r   s         @@r   test_FracElement_from_exprrT   a   sy   gGAq!1ay"%JAq!Q	AA6jAGG,,,	HQN#A!Q;:a111	AA6jAGG,,,	HQqM!O$A(1a.  Z177%;;;	AaCA!8
1agg...	AaCEA!A:*Q000	AaCEA!A:*Q000	AaCEAaCK!O$A!A!aJq!''$:::	QqSUQqS[1_qsQw/0A1Q1q1Q37++
1agg0FFF	AqDF1Hq!tAqDy(1,-A1Qq1a419$q((Z177-CCC
:01
:9:bAh((*221r7;  bAh((*221r7;  bXa^,-779AA!D  r   c                     t        d      \  } }}t        j                  | |      }|j                  |      } || |z         }|j                   |j	                  |      | |z         k(  sJ |j                  j                          || |z         gk(  sJ |j                   |j	                  |      d      k(  sJ t        j                  | |      }|j                  |      } || |z         }|j                   |j	                  |      | |z         k(  sJ |j                  j                          || |z         gk(  sJ |j                   |j	                  |      d      k(  sJ  | || |z               }|j                   |j	                  |      | |z         k(  sJ |j                  j                          || |z         gk(  sJ |j                   |j	                  |      d      k(  sJ  | || |z               }|j                   |j	                  |      | |z         k(  sJ |j                  j                          || |z         gk(  sJ |j                   |j	                  |      d      k(  sJ y )Nza b xr   )r   r   
frac_fieldr=   	poly_ringcoeffsdenom)abr   r   r   fracr   F4s           r   test_FracField_nestedr^      s6   gGAq!	q!	B	q	Ba!e9D::aQ////::2a!e9+---::a++++	a	B	q	Ba!e9D::aQ////::2a!e9+---::a++++bQi=D::aQ////::2a!e9+---::a++++bQi=D::aQ////::2a!e9+---::a++++r   c                     t        dt              \  } }} | d      d|z  cxk  rd|dz  z  cxk  rd|dz  z  k  sJ  J  | d      d|z  cxk  rd|dz  z  cxk  rd|dz  z  k  sJ  J d|z  d|z  cxk  rd|z  cxk  r||z  cxk  rd|dz  z  k  sJ  J d|z  d|z  cxk  rd|z  cxk  r||z  cxk  rd|dz  z  k  sJ  J d|dz  z  d|dz  z  cxkD  rd|z  cxkD  r | d      kD  sJ  J d|dz  z  d|dz  z  cxk\  rd|z  cxk\  r | d      k\  sJ  J d|dz  z  ||z  cxkD  rd|z  cxkD  rd|z  cxkD  r	d|z  kD  sJ  J d|dz  z  ||z  cxk\  rd|z  cxk\  rd|z  cxk\  r	d|z  k\  sJ  J y )Nr   r   r-   r,   )r   r   )r%   r   r   s      r   test_FracElement__lt_le_gt_ge__ra      s   E2GAq!Q4!A#'!Q$'1a4'''''Q41Q3*!AqD&*AadF*****a4!A#*!*ac*AadF*****a41Q3.!A#.1.!Q$.....QT6AadF'QqS'1Q4'''''QT6Qq!tV*qs*ad*****QT6AaC*!A#*!*bd*****QT6QqS.AaC.1Q3."Q$.....r   c                  x    t        dt              \  } }}d|z  dz
  |z  }d|z  dz   |z  }| |k(  sJ | |k(  sJ y )Nr   r;   	   r`   )r   r	   )r%   r   r   r>   r?   s        r   test_FracElement___neg__rd      sP    5"FAq	
1q!A	A1A27N727N7r   c                     t        dt              \  } }}d|z  d|z  }}||z   ||z   cxk(  r||z   ||z  z  k(  sJ  J || j                  j                  d   z   | j                  j                  d   |z   cxk(  r	d|z  k(  sJ  J t        dt              \  } }}|dz   d|z   k(  sJ |t        dd      z   t        dd      |z   cxk(  rd|z  dz   dz  k(  sJ  J t        dt              \  }}}t        d|      \  }}}}	}
||z  |z   |||z  z   z  }t        |j                        d||z  d	k(  sJ t        |j                        d||z  d
k(  sJ t        dt              \  }}}t        d|      \  }}}}	}
||z  |z   |||z  z   z  }t        |j                        d||z  d	k(  sJ t        |j                        d||z  d
k(  sJ y )Nr   r   r   r-   r,   r;   u,vx,y,z,t)r   r   r   r   r   r   r   r   )r   r   r   r   ri   r   r	   r   r   r   dictr=   rY   r%   r   r   r>   r?   FuvuvFxyztr&   tRuvs               r   test_FracElement___add__rt      s   5"FAqQ3!qAq5AE*a!eac]*****qvv{{1~Q!!3:qs:::::5"FAqq5AE>>r!Aw;"Qq'A+4!A#'144444UBHC19c*NE1Qq	
1q1qs7A=1AaC@@@@=1AaC@@@@E2HC19c*NE1Qq	
1q1qs7A=1AaC@@@@=1AaC@@@@r   c                  |   t        dt              \  } }}d|z  d|z  }}||z
  | |z   ||z  z  k(  sJ || j                  j                  d   z
  | j                  j                  d   |z
  cxk(  rdk(  sJ  J t        dt              \  } }}|dz
  d|z
   k(  sJ |t        dd      z
  t        dd      |z
   cxk(  rd|z  dz
  dz  k(  sJ  J t        dt              \  }}}t        d|      \  }}}}	}
||z  |z
  |||z  z
  z  }t        |j                        d||z  d	k(  sJ t        |j                        d| |z  d
k(  sJ t        dt              \  }}}t        d|      \  }}}}	}
||z  |z
  |||z  z
  z  }t        |j                        d||z  d	k(  sJ t        |j                        d| |z  d
k(  sJ y )Nr   r   r   r,   r;   rf   rg   rh   rj   rk   rm   s               r   test_FracElement___sub__rw      s   5"FAqQ3!qAq5aR!VacN"""qvv{{1~Q!!38q888885"FAqq5a!eHr!Aw;BqGaK.7QqS1WaK77777UBHC19c*NE1Qq	
1q1qs7A="AaC@@@@=1A2a4@@@@E2HC19c*NE1Qq	
1q1qs7A="AaC@@@@=1A2a4@@@@r   c                     t        dt              \  } }}d|z  d|z  }}||z  ||z  cxk(  rd||z  z  k(  sJ  J || j                  j                  d   z  | j                  j                  d   |z  cxk(  r	|dz  k(  sJ  J t        dt              \  } }}|dz  d|z  k(  sJ |t        dd      z  t        dd      |z  cxk(  r|t        dd      z  k(  sJ  J t        dt              \  }}}t        d|      \  }}}}	}
|dz   |z  |z  dz   |dz
  |	z  |
|z  |z  z
  dz
  z  }t        |j                        |dz   dd	k(  sJ t        |j                        |dz
  | |z  d
dk(  sJ t        dt              \  }}}t        d|      \  }}}}	}
|dz   |z  |z  dz   |dz
  |	z  |
|z  |z  z
  dz
  z  }t        |j                        |dz   dd	k(  sJ t        |j                        |dz
  | |z  d
dk(  sJ y )Nr   r   r   r-   r,   r;   rf   rg   )r   r   r   r   ri   rv   ))r   r   r   r   )r   r   r   r   ri   )	r   r	   r   r   r   r   rl   r=   rY   rm   s               r   test_FracElement___mul__rz      s0   5"FAqQ3!qAQ3!A# AaC     QVV[[^qvv{{1~a/71a4777775"FAqQ3!A#::R!W91Q	5Qx1~%555555UBHC19c*NE1Qq
a%1qAE19qs1u,q01A=1q5BBBB=1q51TVWWWWE2HC19c*NE1Qq
a%1qAE19qs1u,q01A=1q5BBBB=1q51TVWWWWr   c                     t        dt              \  } }dz  d|z  }}||z  |z  k(  sJ | j                  j                  d   z  | j                  j                  d   z  cxk(  rdk(  sJ  J t        dt              \  } }dz  dz  k(  sJ t        dd      z  t        dd      z  dz  cxk(  rt        dd      z  k(  sJ  J t        t        fd       t        t        fd       t        t        fd	       t        d
t              \  }}}t        d|      \  }}}}	||z  |z  z  }t        |j                        d||z  ik(  sJ t        |j                        ddik(  sJ |z  ||z  z  }t        |j                        ddik(  sJ t        |j                        d||z  ik(  sJ t        d
t              \  }
}}t        d|
      \  }}}}	||z  |z  z  }t        |j                        d||z  ik(  sJ t        |j                        ddik(  sJ |z  ||z  z  }t        |j                        ddik(  sJ t        |j                        d||z  ik(  sJ y )Nr   r   r   r,   r;   rv   c                       dz  S Nr   r)   r   s   r   rF   z.test_FracElement___truediv__.<locals>.<lambda>  s    ac r   c                      d  z
  z  S Nr   r)   r~   s   r   rF   z.test_FracElement___truediv__.<locals>.<lambda>      aQi r   c                         z
  z  S rC   r)   r~   s   r   rF   z.test_FracElement___truediv__.<locals>.<lambda>  r   r   rf   rg   ri   ry   )r   r	   r   r   r   r   r   ZeroDivisionErrorrl   r=   rY   )r%   r   r>   r?   rn   ro   rp   rq   r&   rr   rs   r   s              @r   test_FracElement___truediv__r     su   5"FAqQ3!qAQ3!A#::QVV[[^qvv{{1~a/41444445"FAqQ3!A#::R!W9AaR;1Xa^+;;;;;;
k*
/0
/0UBHC19c*NE1Qq	
1qsA=\1Q3////=\1----	
1qsA=\1----=\1Q3////E2HC19c*NE1Qq	
1qsA=\1Q3////=\1----	
1qsA=\1----=\1Q3////r   c                      t        dt              \  } }dz  d|z  }}|dz  ddz  z  k(  sJ |dz  d|dz  z  k(  sJ ||z  dz  ddz  |dz  z  z  k(  sJ ||z  dz  |z  dz  k(  sJ t        t        fd       y )Nr   r   r,   c                        z
  dz  S )Nr   r)   r~   s   r   rF   z*test_FracElement___pow__.<locals>.<lambda>@  s    q1urk r   )r   r	   r   r   )r%   r   r>   r?   r   s       @r   test_FracElement___pow__r   5  s    5"FAqQ3!qAa41QT6>>a41QT6>>aC!8q!Q$q!t)}$$$aC"91q   
12r   c                      t        dt              \  } }}}|dz  |z   |dz   z  j                  |      d|z  |dz   z  k(  sJ y )Nr   r-   r   )r   r   diffr$   s       r   test_FracElement_diffr   B  sL    Wb!HAq1TAXA$$Q'1Q3A;666r   c                      t        dt              \  } }}}|dz  d|z  z   |z   ddd      }|dk(  rt        |t              rJ t	        t
        fd       y )Nr   r-   r,   r   r.   c                        ddd      S )Nr   r   r)   )r>   s   r   rF   z+test_FracElement___call__.<locals>.<lambda>N  s    a1aj r   )r   r   rP   r   r   r   )r%   r   r   r&   rr>   s        @r   test_FracElement___call__r   G  s[    Wb!HAq1	
A!QA	!Q
A6*Q444
01r   c                      t        dt              \  } }}t        dt              d   }|dz  d|z  z   z  j                  |d      d|j                  z  |j                  z  k(  sJ t        t        fd       y )Nr   zy,zr   r-   r,   c                  (     j                  d      S r}   )evaluater>   r&   s   r   rF   z+test_FracElement_evaluate.<locals>.<lambda>V  s    ajjA&6 r   )r   r   r   r   r&   r   r   )r%   r   r   Fyzr>   r&   s       @@r   test_FracElement_evaluater   P  sr    Wb!HAq1
r
1
C	
A!QA::aqwsuu},,,
67r   c                      t        dt              \  } }}|dz  d|z  z   z  j                  |d      d|z  z  k(  sJ t        t        fd       y )Nr   r-   r,   r   c                  (     j                  d      S r}   )subsr   s   r   rF   z'test_FracElement_subs.<locals>.<lambda>]  s    affQl r   )r   r   r   r   r   )r%   r   r   r>   r&   s      @@r   test_FracElement_subsr   X  sX    Wb!HAq1	
A!QA66!Q<1Q3q5   
23r   c                       y rC   r)   r)   r   r   test_FracElement_composer   _  s    r   c                      t        d      t        dt              \  } }}j                  |       dk(  sJ j                  |      dk(  sJ t	        t
        fd       t	        t
        fd       y )NrZ   zx y zr   r   c                  &     j                  d      S r   index)r%   s   r   rF   z&test_FracField_index.<locals>.<lambda>h      qwwqz r   c                  &     j                        S rC   r   )r%   rZ   s   r   rF   z&test_FracField_index.<locals>.<lambda>i  r   r   )r   r   r	   r   r   rG   )r   r   r&   r%   rZ   s      @@r   test_FracField_indexr   b  sa    Aw#JAq!Q771:??771:??
:)*
:)*r   N)0__doc__sympy.polys.fieldsr   r   r   r   sympy.polys.ringsr   sympy.polys.domainsr   r	   sympy.polys.orderingsr
   sympy.testing.pytestr   r   
sympy.corer   r   sympy.core.numbersr   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.miscellaneousr   r   r'   r*   r7   r9   r@   rJ   rT   r^   ra   rd   rt   rw   rz   r   r   r   r   r   r   r   r   r)   r   r   <module>r      s    & D D " & % . ! ' = 9
< 0&-$*Z,6/A4A4X4$0L37
 2 284		r   