
    g              
       >   U d Z ddlmZ ddlmZ ddlZddlmZmZm	Z	m
Z
 ddlmZ ddlmZ ee	ee
ee
f                  ed<   eeeefgZ	 dd	lmZmZ e                    e e ed
                    e e ed
                    f           n# e$ r Y nw xY wd ZdS )z
test_pythonmpq.py

Test the PythonMPQ class for consistency with gmpy2's mpq type. If gmpy2 is
installed run the same tests for both.
    )Fraction)DecimalN)CallableListTupleType)raises)	PythonMPQrational_types)mpqmpz   c            	         t           D 
]\  } fd} | d                    dk    sJ  | dd                    dk    sJ  |  dd                              dk    sJ  | d                    dk    sJ  | d                    dk    sJ  | t          dd                              dk    sJ t          u r' | t          d	                              dk    sJ t	          t
          fd
           t	          t
          fd            | dd                    dk    sJ  | dd                    dk    sJ  | dd                    dk    sJ  | dd                    dk    sJ  | dd                    dk    sJ t           dd                    dk    sJ t           dd                    dk    sJ t           dd                    dk    sJ t           dd                    dk    sJ t           dd                    dk    sJ t           dd                    dk    sJ t          u r?t           dd                    dk    sJ t           dd                    dk    sJ n>t           dd                    dk    sJ t           dd                    dk    sJ t           dd                    du sJ t           d                     d!u sJ  dd           dd          k    du sJ  dd           dd          k    d!u sJ  dd           dd          k    d!u sJ  dd           dd          k    du sJ t           dd                    t          t          dd                    k    sJ  dd          }t          j        t          j        |                    |k    sJ  dd           dd          k     du sJ  dd           dd          k     d!u sJ  dd           dd          k     d!u sJ  dd           dd          k     du sJ  dd           dd          k     d!u sJ  dd           dd          k    du sJ  dd           dd          k    du sJ  dd           dd          k    d!u sJ  dd           dd          k    du sJ  dd           dd          k    d!u sJ  dd           dd          k    d!u sJ  dd           dd          k    d!u sJ  dd           dd          k    du sJ  dd           dd          k    d!u sJ  dd           dd          k    du sJ  dd           dd          k    d!u sJ  dd           dd          k    du sJ  dd           dd          k    du sJ  dd           dd          k    d!u sJ  dd           dd          k    du sJ t           dd                    t           dd                    cxk    r dd          k    sn J  dd          
  dd          k    sJ  dd            dd          k    sJ  dd           dd"          z    d#d$          k    sJ  dd          dz    dd          k    sJ d dd          z    dd          k    sJ t	          t
          fd%           t	          t
          fd&            dd           dd"          z
   dd$          k    sJ  dd          dz
   dd          k    sJ d dd          z
   dd          k    sJ t	          t
          fd'           t	          t
          fd(            dd           dd"          z   d)d$          k    sJ  dd          dz   dd          k    sJ d dd          z   dd          k    sJ t	          t
          fd*           t	          t
          fd+            dd          dz   d,d-          k    sJ  dd          dz   dd          k    sJ  dd          dz   d,d-          k    sJ  dd          dz   dd          k    sJ t          u r0t	          t
          fd.           t	          t
          fd/           t	          t
          fd0           t	          t
          fd1            dd           dd"          z   d2d3          k    sJ  dd          dz   dd          k    sJ d dd          z   dd          k    sJ t	          t
          fd4           t	          t
          fd5           t	          t           fd6           t          u rt	          t
          fd7           t	          t
          fd8           t	          t
          fd9           t	          t
          fd:           t	          t
          fd;           t	          t
          fd<           
d S )=Nc                     t          |           sJ t          | j                  sJ t          | j                  sJ | j        | j        fS N)
isinstance	numeratordenominator)qTQTZs    _/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/external/tests/test_pythonmpq.pycheck_Qztest_PythonMPQ.<locals>.check_Q#   sX    a$$$$$ak2.....amR00000;--       )r   r      )r   r   g      ?)r      z0.5z0.6c                        g           S r    Qs   r   <lambda>z test_PythonMPQ.<locals>.<lambda>6   s    !!B%% r   c                        g g           S r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>7   s    !!B)) r   r   )r   r   )r$   r         )r   r   r   g      @g      2z1/2zMPQ(2,1)zMPQ(1,2)zmpq(2,1)zmpq(1,2)Tr   F         c                       g   d          z   S Nr   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>       "qqtt) r   c                         d          g z   S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>       !!A$$) r   c                       g   d          z
  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r0   r   c                         d          g z
  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r2   r   
   c                       g   d          z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r0   r   c                         d          g z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r2   r      	   c                  "    d  dd          z  S )Nr   r   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>       a11Q77l r   c                  6      dd            dd          z  S )Nr   r8   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>        aa1gg1a&8 r   c                       g   d          z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    "!* r   c                         d          g z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    !!A$$"* r         c                       g   d          z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r0   r   c                         d          g z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r2   r   c                  4      dd            d          z  S )Nr   r   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    !!Aq''AAaDD. r   c                  6      dd            dd          z  S Nr   r   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r=   r   c                  6      dd            dd          z  S rF   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s     aa1gg!Q&7 r   c                  "    d  dd          z  S Nr   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r;   r   c                  "    d  dd          z  S rI   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    a!!Aq''k r   c                  "      dd          dz  S rF   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    aa1ggl r   c                  "      dd          dz  S rF   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    aa1ggk r   )r   r   r
   r   r	   	TypeErrorintfloatstrreprboolhashpickleloadsdumpsabsZeroDivisionError)Zr   r   r!   r   r   s      @@@r   test_PythonMPQrZ      s    ' O3 O32q"	. 	. 	. 	. 	. 	. wqqtt}}&&&&wqqAww6))))wqq1azz""f,,,,wqqvv&((((wqqxx  F****wqq!Q(())V3333 	>>711WU^^,,--7777 	y----(((y++++,,, wqqAww6))))wqqQxx  G++++wqqBxx  G++++wqqRyy!!V++++ wqqQxx  F**** 11Q77||q    11R88}}""""QQq!WW~~$$$$QQr1XX$&&&& 11Q77||s""""11Q77||u$$$$	>>!Q==J....!Q==J.....!Q==J....!Q==J.... AAaGG}}$$$$AAaDDzzU"""" !Q11Q77"t++++!Q11Q77"u,,,,!Q11Q77"u,,,,!Q11Q77"t++++ AAaGG}}Xa^^ 4 44444 AaGG|FLOO,,1111 !Q!!Aq''!d****!Q!!Aq''!e++++!Q!!Aq''!e++++"a11Q77"t++++!Q!!B(("u,,,,!Q11Q77"t++++!Q11Q77"t++++!Q11Q77"u,,,,"aAAaGG#,,,,!Q11R88#----!Q!!Aq''!e++++!Q!!Aq''!e++++!Q!!Aq''!d****"a11Q77"u,,,,!Q!!B(("t++++!Q11Q77"u,,,,!Q11Q77"t++++!Q11Q77"t++++"aAAaGG#----!Q11R88#,,,, 11Q77||s11R88}}7777!Q777777!Qx11Q77""""!Qx11R88#### qAww1a AAb"II----qAww{aa1gg%%%%11Q77{aa1gg%%%%y++++,,,y++++,,, qAww1a AAb"II----qAww{aaAhh&&&&11Q77{aa1gg%%%%y++++,,,y++++,,, qAww1a AAb"II----qAww{aa1gg%%%%11Q77{aa1gg%%%%y++++,,,y++++,,, qAww!|qqAww&&&&qAww!|qqAww&&&&qQxx1}!Q''''qQxx2~2q))))	>>9222233398888999y,,,,---y,,,,--- qAww1a AAb"II----qAww{aa1gg%%%%11Q77{aa1gg%%%%y++++,,,y++++,,, "8"8"8"8999 	>>988889999777788892222333911112229222233391111222_O3 O3r   )__doc__	fractionsr   decimalr   rT   typingr   r   r   r   sympy.testing.pytestr	   sympy.external.pythonmpqr
   __annotations__rN   r   gmpy2r   r   appendtypeImportErrorrZ   r   r   r   <module>rf      sX                  . . . . . . . . . . . . ' ' ' ' ' ' . . . . . . U8T8T9:; ; ; ;ic23	3SSVVc44A<<@AAAA 	 	 	D	S3 S3 S3 S3 S3s   	AB BB