/ examples / test_udecimal.py
test_udecimal.py
  1  # SPDX-FileCopyrightText: 2020 Jeff Epler <https://unpythonic.net>
  2  #
  3  # SPDX-License-Identifier: Unlicense
  4  # pylint: disable=redefined-builtin,wildcard-import,wrong-import-position,unused-wildcard-import,unused-import,broad-except,undefined-variable,used-before-assignment
  5  
  6  try:
  7      from decimal import (
  8          Decimal,
  9          getcontext,
 10          setcontext,
 11          ExtendedContext,
 12          DivisionByZero,
 13          InvalidOperation,
 14          Context,
 15          localcontext,
 16      )
 17  except ImportError:
 18      from jepler_udecimal import (
 19          Decimal,
 20          getcontext,
 21          setcontext,
 22          ExtendedContext,
 23          DivisionByZero,
 24          InvalidOperation,
 25          Context,
 26          localcontext,
 27      )
 28  
 29  with localcontext():
 30      setcontext(ExtendedContext)
 31      print(Decimal(0))
 32      print(Decimal("1"))
 33      print(Decimal("-.0123"))
 34      print(Decimal(123456))
 35      print(Decimal("123.45e12345678"))
 36      print(Decimal("1.33") + Decimal("1.27"))
 37      print(Decimal("12.34") + Decimal("3.87") - Decimal("18.41"))
 38      dig = Decimal(1)
 39      print(dig / Decimal(3))
 40      getcontext().prec = 18
 41      print(dig / Decimal(3))
 42      print(dig.sqrt())
 43      print(Decimal(3).sqrt())
 44      print(Decimal(3) ** 123)
 45      inf = Decimal(1) / Decimal(0)
 46      print(inf)
 47      neginf = Decimal(-1) / Decimal(0)
 48      print(neginf)
 49      print(neginf + inf)
 50      print(neginf * inf)
 51      try:
 52          print(dig / 0)
 53      except Exception as e:
 54          print("Division by zero")
 55      getcontext().traps[DivisionByZero] = 1
 56      try:
 57          print(dig / 0)
 58      except Exception as e:
 59          print("Division by zero")
 60      c = Context()
 61      c.traps[InvalidOperation] = 0
 62      print(+c.flags[InvalidOperation])
 63      try:
 64          c.divide(Decimal(0), Decimal(0))
 65      except Exception as e:
 66          print("Division by zero")
 67      c.traps[InvalidOperation] = 1
 68      print(+c.flags[InvalidOperation])
 69      c.flags[InvalidOperation] = 0
 70      print(+c.flags[InvalidOperation])
 71      try:
 72          print(c.divide(Decimal(0), Decimal(0)))
 73      except Exception as e:
 74          print("Division by zero")
 75      print(+c.flags[InvalidOperation])
 76      try:
 77          print(c.divide(Decimal(0), Decimal(0)))
 78      except Exception as e:
 79          print("Division by zero")
 80      print(+c.flags[InvalidOperation])
 81  
 82  import jepler_udecimal.utrig
 83  from jepler_udecimal import Decimal
 84  
 85  print(Decimal(".7").atan())
 86  print(Decimal(".1").acos())
 87  print(Decimal("-.1").asin())
 88  print(Decimal(".4").tan())
 89  print(Decimal(".5").cos())
 90  print(Decimal(".6").sin())
 91  print(Decimal("0").sin())
 92  print(Decimal("360").sin())
 93  print(Decimal("360e19").sin())
 94  print(Decimal("NaN").cos())
 95  print(Decimal("NaN").tan())
 96  print(Decimal("NaN").sin())
 97  try:
 98      print(Decimal("2").acos())
 99  except Exception as e:
100      print("exception")
101  try:
102      print(Decimal("2").asin())
103  except Exception as e:
104      print("exception")
105  print(Decimal("2").atan())
106  print(Decimal("1").asin())
107  print(Decimal("-1").asin())
108  print(Decimal(".5").asin())
109  print(Decimal("1").acos())
110  print(Decimal("-1").acos())
111  print(Decimal(".5").asin())