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