o
    jg¥  ã                   @   sÒ   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zdd	lmZmZ e eeed
ƒƒeeed
ƒƒf¡ W n	 eyb   Y nw d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                     sd	  t D ]¬\‰ ‰} ‰‡‡fdd„}|ˆ dƒƒdksJ ‚|ˆ ddƒƒdks%J ‚|ˆ ˆ ddƒƒƒdks2J ‚|ˆ dƒƒdks<J ‚|ˆ d	ƒƒdksFJ ‚|ˆ tddƒƒƒdksSJ ‚ˆ tu rc|ˆ td
ƒƒƒdkscJ ‚tt‡ fdd„ƒ tt‡ fd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 sIJ ‚ˆ ddƒˆ ddƒkd#u sXJ ‚ˆ ddƒˆ ddƒkd#u sgJ ‚ˆ ddƒˆ ddƒkd!u svJ ‚tˆ ddƒƒttddƒƒks‡J ‚ˆ ddƒ}t t |¡¡|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 sMJ ‚ˆ ddƒˆ ddƒkd!u s\J ‚ˆ ddƒˆ ddƒkd#u skJ ‚ˆ ddƒˆ ddƒkd!u szJ ‚ˆ 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ƒƒ  krßˆ ddƒksâJ ‚ J ‚ˆ ddƒ
 ˆ ddƒksðJ ‚ˆ ddƒ ˆ ddƒksþJ ‚ˆ ddƒˆ dd$ƒ ˆ d%d&ƒksJ ‚ˆ ddƒd ˆ ddƒksJ ‚dˆ ddƒ ˆ ddƒks.J ‚tt‡ fd'd„ƒ tt‡ fd(d„ƒ ˆ ddƒˆ dd$ƒ ˆ dd&ƒksRJ ‚ˆ ddƒd ˆ ddƒksaJ ‚dˆ ddƒ ˆ ddƒkspJ ‚tt‡ fd)d„ƒ tt‡ fd*d„ƒ ˆ ddƒˆ dd$ƒ ˆ d+d&ƒks”J ‚ˆ ddƒd ˆ ddƒks£J ‚dˆ ddƒ ˆ ddƒks²J ‚tt‡ fd,d„ƒ tt‡ fd-d„ƒ ˆ ddƒd ˆ d.d/ƒksÓJ ‚ˆ ddƒd ˆ ddƒksâJ ‚ˆ ddƒd ˆ d.d/ƒksñJ ‚ˆ ddƒd ˆ ddƒks J ‚ˆ tu rtt‡ fd0d„ƒ tt‡ fd1d„ƒ tt‡ fd2d„ƒ tt‡ fd3d„ƒ ˆ ddƒˆ dd$ƒ ˆ d4d5ƒks;J ‚ˆ ddƒd ˆ ddƒksJJ ‚dˆ ddƒ ˆ ddƒksYJ ‚tt‡ fd6d„ƒ tt‡ fd7d„ƒ tt‡ fd8d„ƒ ˆ tu r¯tt‡ fd9d„ƒ tt‡ fd:d„ƒ tt‡ fd;d„ƒ tt‡ fd<d„ƒ tt‡ fd=d„ƒ tt‡ fd>d„ƒ qd S )?Nc                    s:   t | ˆ ƒsJ ‚t | jˆƒsJ ‚t | jˆƒsJ ‚| j| jfS ©N)Ú
isinstanceÚ	numeratorÚdenominator)Úq)ÚTQÚTZ© ú[/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/external/tests/test_pythonmpq.pyÚcheck_Q#   s   ztest_PythonMPQ.<locals>.check_Qé   )r   r   é   )r   r   g      à?)r   é   z0.5z0.6c                      s   ˆ g ƒS r   r   r   ©ÚQr   r   Ú<lambda>6   s    z test_PythonMPQ.<locals>.<lambda>c                      s
   ˆ g g ƒS r   r   r   r   r   r   r   7   s   
 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                      s   g ˆ dƒ S ©Nr   r   r   r   r   r   r   …   ó    c                      s   ˆ dƒg  S r(   r   r   r   r   r   r   †   r)   c                      s   g ˆ dƒ S r(   r   r   r   r   r   r   Œ   r)   c                      s   ˆ dƒg  S r(   r   r   r   r   r   r      r)   é
   c                      s   g ˆ dƒ S r(   r   r   r   r   r   r   “   r)   c                      s   ˆ dƒg  S r(   r   r   r   r   r   r   ”   r)   é   é	   c                      s   dˆ ddƒ S )Nr   r   r   r   r   r   r   r   r   œ   ó    c                      s   ˆ ddƒˆ ddƒ S )Nr   r+   r   r   r   r   r   r   r      ó    c                      s   g ˆ dƒ S r(   r   r   r   r   r   r   ž   r)   c                      s   ˆ dƒg  S r(   r   r   r   r   r   r   Ÿ   r)   é   é   c                      s   g ˆ dƒ S r(   r   r   r   r   r   r   ¥   r)   c                      s   ˆ dƒg  S r(   r   r   r   r   r   r   ¦   r)   c                      s   ˆ ddƒˆ dƒ S )Nr   r   r   r   r   r   r   r   r   §   s    c                      s   ˆ ddƒˆ ddƒ S ©Nr   r   r   r   r   r   r   r   r   «   r.   c                      s   ˆ ddƒˆ ddƒ S r1   r   r   r   r   r   r   ¬   r.   c                      s   dˆ ddƒ S ©Nr   r   r   r   r   r   r   r   ­   r-   c                      s   dˆ ddƒ S r2   r   r   r   r   r   r   ®   r-   c                      s   ˆ ddƒd S r1   r   r   r   r   r   r   ¯   r-   c                      s   ˆ ddƒd S r1   r   r   r   r   r   r   °   r-   )r
   r   r	   r   r   Ú	TypeErrorÚintÚfloatÚstrÚreprÚboolÚhashÚpickleÚloadsÚdumpsÚabsÚZeroDivisionError)ÚZr   r   r   )r   r   r   r   Útest_PythonMPQ   sÈ   
"
:$$$
$
€ ðr@   )Ú__doc__Ú	fractionsr   Údecimalr   r:   Útypingr   r   r   r   Úsympy.testing.pytestr   Úsympy.external.pythonmpqr	   Ú__annotations__r4   r
   Úgmpy2r   r   ÚappendÚtypeÚImportErrorr@   r   r   r   r   Ú<module>   s     &ÿ