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())