/ test / test_gmpy2_mpq_misc.txt
test_gmpy2_mpq_misc.txt
 1  Test file gmpy2_mpq_misc.c
 2  ==========================
 3  
 4  >>> import gmpy2
 5  >>> from gmpy2 import mpz, mpq, mpfr, mpc
 6  >>> from fractions import Fraction
 7  
 8  Tests numer and denom
 9  ---------------------
10  
11  >>> q = mpq('4/5')
12  >>> pyq = Fraction(4, 5)
13  >>> q.numerator
14  mpz(4)
15  >>> q.denominator
16  mpz(5)
17  >>> gmpy2.numer(q)
18  mpz(4)
19  >>> gmpy2.denom(q)
20  mpz(5)
21  >>> gmpy2.numer(6.2)
22  Traceback (most recent call last):
23    File "<stdin>", line 1, in <module>
24  TypeError: cannot convert object to mpq
25  >>> gmpy2.denom(5.6)
26  Traceback (most recent call last):
27    File "<stdin>", line 1, in <module>
28  TypeError: cannot convert object to mpq
29  >>> gmpy2.denom(mpfr(5))
30  Traceback (most recent call last):
31    File "<stdin>", line 1, in <module>
32  TypeError: cannot convert object to mpq
33  >>> gmpy2.numer(pyq)
34  mpz(4)
35  >>> gmpy2.denom(pyq)
36  mpz(5)
37  
38  Tests qdiv
39  ----------
40  >>> gmpy2.qdiv(q)
41  mpq(4,5)
42  >>> gmpy2.qdiv(pyq)
43  mpq(4,5)
44  >>> gmpy2.qdiv(5)
45  mpz(5)
46  >>> gmpy2.qdiv(mpc(4, 5))
47  Traceback (most recent call last):
48    File "<stdin>", line 1, in <module>
49  TypeError: qdiv() requires 1 or 2 integer or rational arguments
50  >>> gmpy2.qdiv(4, 5, 4)
51  Traceback (most recent call last):
52    File "<stdin>", line 1, in <module>
53  TypeError: qdiv() requires 1 or 2 integer or rational arguments
54  >>> gmpy2.qdiv(4, 5.6)
55  Traceback (most recent call last):
56    File "<stdin>", line 1, in <module>
57  TypeError: qdiv() requires 1 or 2 integer or rational arguments
58  >>> gmpy2.qdiv(q, 2)
59  mpq(2,5)
60  >>> gmpy2.qdiv(10, q)
61  mpq(25,2)
62  >>> gmpy2.qdiv(1)
63  mpz(1)
64  
65  Tests rational floor, ceil, trunc
66  ---------------------------------
67  
68  >>> mpq('7/2').__trunc__()
69  mpz(3)
70  >>> mpq('7/2').__ceil__()
71  mpz(4)
72  >>> mpq('7/2').__floor__()
73  mpz(3)
74  
75  Tests round
76  -----------
77  
78  >>> mpq('7/2').__round__()
79  mpz(4)
80  >>> q.__round__(4)
81  mpq(4,5)
82  >>> q.__round__(4, 2)
83  Traceback (most recent call last):
84    File "<stdin>", line 1, in <module>
85  TypeError: Too many arguments for __round__()
86  
87  Tests non zero operator
88  -----------------------
89  
90  >>> not q
91  False
92  >>> not mpq('0/5')
93  True