o
    à8Vaå  ã                   @   s    d Z ddlmZ ddlmZ ddlZddlmZ ddlm	Z	 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yI   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)Úraises)Ú	PythonMPQ)ÚmpqÚmpzé   c                     s\	  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ksRJ ‚|ˆ tddƒƒƒdks_J ‚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sJ ‚|ˆ 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 s6J ‚ˆ ddƒˆ ddƒkd!u sEJ ‚ˆ ddƒˆ ddƒkd#u sTJ ‚ˆ ddƒˆ ddƒkd#u scJ ‚ˆ ddƒˆ ddƒkd!u srJ ‚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 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 ‚ˆ 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sNJ ‚ˆ ddƒd ˆ ddƒks]J ‚dˆ ddƒ ˆ ddƒkslJ ‚tt‡ fd)d„ƒ tt‡ fd*d„ƒ ˆ ddƒˆ dd$ƒ ˆ d+d&ƒksJ ‚ˆ 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s7J ‚ˆ ddƒd ˆ ddƒksFJ ‚dˆ ddƒ ˆ ddƒksUJ ‚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© úE/usr/lib/python3/dist-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>1   s    z test_PythonMPQ.<locals>.<lambda>c                      s
   ˆ g g ƒS r	   r   r   r   r   r   r   2   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 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ƒ S r-   r   r   r   r   r   r   ©   r(   c                      s   ˆ ddƒd S r,   r   r   r   r   r   r   ª   r(   c                      s   ˆ ddƒd S r,   r   r   r   r   r   r   «   r(   )Úrational_typesr   r   r   Ú	TypeErrorÚintÚfloatÚstrr   ÚreprÚboolÚhashÚpickleÚloadsÚdumpsÚabsÚZeroDivisionError)ÚZr   r   r   )r   r   r   r   Útest_PythonMPQ   sÆ   
"
:$$$
$
€ ór<   )Ú__doc__Z	fractionsr   Zdecimalr   r6   Zsympy.testing.pytestr   Zsympy.external.pythonmpqr   r0   r.   Zgmpy2r   r   ÚappendÚtypeÚImportErrorr<   r   r   r   r   Ú<module>   s    &ÿ