/test/test_dec.txt

http://gmpy.googlecode.com/ · Plain Text · 122 lines · 112 code · 10 blank · 0 comment · 0 complexity · 1da208e01fdfc4461ac49391552d4ecc MD5 · raw file

  1. Interoperability with Decimal
  2. =============================
  3. >>> import gmpy2 as G
  4. >>> from gmpy2 import mpz, mpq, mpfr
  5. >>> from decimal import Decimal
  6. Test comparisons
  7. ----------------
  8. Non-trivial comparions between mpfr and Decimal instances are only equal
  9. when the fractional can be written at 1/2**n.
  10. >>> mpfr('123.456') == Decimal('123.456')
  11. False
  12. >>> mpfr('123.5') == Decimal('123.5')
  13. True
  14. >>> mpq(123456,1000) == Decimal('123.456')
  15. True
  16. >>> mpz(123) == Decimal(123)
  17. True
  18. >>> mpfr('123.456') > Decimal('123.456')
  19. True
  20. >>> mpfr('123.456') < Decimal('123.456')
  21. False
  22. >>> Decimal('123.456') > mpfr('123.456')
  23. False
  24. >>> Decimal('123.456') < mpfr('123.456')
  25. True
  26. Test elementary operations
  27. --------------------------
  28. >>> mpz(23) == Decimal(23)
  29. True
  30. >>> mpz(Decimal('123.456'))
  31. mpz(123)
  32. >>> mpq(Decimal('123.456'))
  33. mpq(15432,125)
  34. >>> mpfr(Decimal('123.456'))
  35. mpfr('123.456')
  36. >>> f = mpfr('123.456')
  37. >>> q = mpq('789123/1000')
  38. >>> z = mpz('234')
  39. >>> dd = Decimal('12.34')
  40. >>> fd = Decimal('123.456')
  41. >>> qd = Decimal('789.123')
  42. >>> zd = Decimal('234')
  43. >>> f+dd
  44. mpfr('135.79599999999999')
  45. >>> dd+f
  46. mpfr('135.79599999999999')
  47. >>> q+dd
  48. mpfr('801.46300000000008')
  49. >>> dd+q
  50. mpfr('801.46300000000008')
  51. >>> z+dd
  52. mpfr('246.34')
  53. >>> dd+z
  54. mpfr('246.34')
  55. >>> f-dd
  56. mpfr('111.116')
  57. >>> dd-f
  58. mpfr('-111.116')
  59. >>> q-dd
  60. mpfr('776.78300000000002')
  61. >>> dd-q
  62. mpfr('-776.78300000000002')
  63. >>> z-dd
  64. mpfr('221.66')
  65. >>> dd-z
  66. mpfr('-221.66')
  67. >>> f*dd
  68. mpfr('1523.44704')
  69. >>> dd*f
  70. mpfr('1523.44704')
  71. >>> q*dd
  72. mpfr('9737.7778200000012')
  73. >>> dd*q
  74. mpfr('9737.7778200000012')
  75. >>> z*dd
  76. mpfr('2887.5599999999999')
  77. >>> dd*z
  78. mpfr('2887.5599999999999')
  79. >>> f/dd
  80. mpfr('10.00453808752026')
  81. >>> dd/f
  82. mpfr('0.099954639709694135')
  83. >>> q/dd
  84. mpfr('63.948379254457052')
  85. >>> dd/q
  86. mpfr('0.015637612894314319')
  87. >>> z/dd
  88. mpfr('18.962722852512155')
  89. >>> dd/z
  90. mpfr('0.052735042735042738')
  91. >>> G.ceil(dd)
  92. mpfr('13.0')
  93. >>> G.floor(dd)
  94. mpfr('12.0')
  95. >>> G.trunc(dd)
  96. mpfr('12.0')
  97. >>> mpfr(dd).precision
  98. 53
  99. >>> G.sin(Decimal("123.456"))
  100. mpfr('-0.80393736857282394')
  101. >>> G.sqrt(Decimal("123.456"))
  102. mpfr('11.111075555498667')
  103. >>> G.is_nan(Decimal("123.456"))
  104. False
  105. >>> G.is_nan(Decimal("NaN"))
  106. True
  107. >>> G.is_nan(Decimal("Inf"))
  108. False
  109. >>> G.is_inf(Decimal("Inf"))
  110. True
  111. >>> G.is_inf(Decimal("-Inf"))
  112. True