Test gmpy2 Addition =================== Test all code in the file gmpy2_add.c. >>> import gmpy2 >>> from gmpy2 import mpz, xmpz, mpq, mpfr, mpc >>> from supportclasses import * >>> from decimal import Decimal as D >>> from fractions import Fraction as F >>> a = mpz(123) >>> b = mpz(456) >>> c = 12345678901234567890 Test integer operations ----------------------- >>> a+1 mpz(124) >>> a+(-1) mpz(122) >>> 1+a mpz(124) >>> (-1)+a mpz(122) >>> print(a+c) 12345678901234568013 >>> print(c+a) 12345678901234568013 >>> print(a+(-c)) -12345678901234567767 >>> print((-c)+a) -12345678901234567767 >>> a+b mpz(579) >>> b+a mpz(579) >>> a+(-b) mpz(-333) >>> (-b)+a mpz(-333) >>> a+z mpz(125) >>> ctx=gmpy2.context() >>> ctx.add(a,b) == a+b True >>> ctx.add(c,c) == c+c True >>> ctx.add(1, 1) mpz(2) >>> ctx.add(mpfr(1), mpfr(1)) mpfr('2.0') >>> ctx.add(a, 1) mpz(124) >>> ctx.add(1, a) mpz(124) >>> ctx.add(a, mpq(0)) mpq(123,1) >>> ctx.add(a, mpfr(0)) mpfr('123.0') >>> ctx.add(a, mpc(0)) mpc('123.0+0.0j') >>> ctx.add(1) Traceback (most recent call last): File "", line 1, in TypeError: ** message detail varies ** >>> ctx.add(1,2,3) Traceback (most recent call last): File "", line 1, in TypeError: ** message detail varies ** >>> gmpy2.add(1,1) mpz(2) >>> a+'b' Traceback (most recent call last): File "", line 1, in TypeError: ** message detail varies ** >>> 'b'+a Traceback (most recent call last): File "", line 1, in TypeError: ** message detail varies ** Test rational operations ------------------------ >>> mpq(1,2) + F(3,2) mpq(2,1) >>> F(1,2) + mpq(3,2) mpq(2,1) >>> mpq(1,2) + mpq(3,2) mpq(2,1) >>> mpq(1,2) + 0 mpq(1,2) >>> mpq(1,2) + mpz(1) mpq(3,2) >>> mpq(1,2) + (-1) mpq(-1,2) >>> 1 + mpq(1,2) mpq(3,2) >>> mpz(1) + mpq(1,2) mpq(3,2) >>> mpq(1,2) + mpz(1) mpq(3,2) >>> mpq(1,1) + mpc(0) mpc('1.0+0.0j') >>> mpc(0) + mpq(1,1) mpc('1.0+0.0j') >>> mpq(1,2) + z mpq(5,2) >>> mpq(1,2) + q mpq(2,1) >>> ctx=gmpy2.context() >>> ctx.add(mpq(1,2), mpq(3,2)) mpq(2,1) >>> ctx.add(mpq(1,2), F(3,2)) mpq(2,1) >>> ctx.add(F(1,2), mpq(3,2)) mpq(2,1) >>> ctx.add(F(1,2), F(3,2)) mpq(2,1) >>> ctx.add(1,'a') Traceback (most recent call last): File "", line 1, in TypeError: ** message detail varies ** >>> mpq(1,2) + 'a' Traceback (most recent call last): File "", line 1, in TypeError: ** message detail varies ** >>> 'a' + mpq(1,2) Traceback (most recent call last): File "", line 1, in TypeError: ** message detail varies ** Test real operations -------------------- >>> mpfr(1) + 1 mpfr('2.0') >>> 1 + mpfr(1) mpfr('2.0') >>> mpfr(1) + mpz(1) mpfr('2.0') >>> mpz(1) + mpfr(1) mpfr('2.0') >>> mpfr(1) + mpfr(1) mpfr('2.0') >>> mpfr(1) + mpq(1,1) mpfr('2.0') >>> mpq(1,1) + mpfr(1) mpfr('2.0') >>> mpfr(1) + F(1,1) mpfr('2.0') >>> F(1,1) + mpfr(1) mpfr('2.0') >>> mpfr(1) + 1.0 mpfr('2.0') >>> 1.0 + mpfr(1) mpfr('2.0') >>> mpfr(0) + (1 << 100) == mpfr('1p100', base=2) True >>> (1 << 100) + mpfr(0) == mpfr('1p100', base=2) True >>> mpfr(1) + z mpfr('3.0') >>> mpfr(0.5) + q mpfr('2.0') >>> mpfr(1.5) + r mpfr('3.0') Test complex operations ----------------------- >>> mpc(1,2) + 'a' Traceback (most recent call last): ... TypeError: >>> mpfr(1) + mpc(1,2) mpc('2.0+2.0j') >>> mpc(1,2) + mpfr(1) mpc('2.0+2.0j') >>> mpc(1,2) + 1+0j mpc('2.0+2.0j') >>> 1+0j + mpc(1,2) mpc('2.0+2.0j') >>> mpc(1,2) + cx mpc('43.0+69.0j') >>> mpc(1,2) + r mpc('2.5+2.0j') >>> mpc(1,2) + q mpc('2.5+2.0j') >>> mpc(1,2) + z mpc('3.0+2.0j')