# [Python-checkins] r56683 - python/branches/decimal-branch/Lib/decimal.py

facundo.batista python-checkins at python.org
Fri Aug 3 05:41:37 CEST 2007

```Author: facundo.batista
Date: Fri Aug  3 05:41:36 2007
New Revision: 56683

Modified:
python/branches/decimal-branch/Lib/decimal.py
Log:

Coded number_class() function, and is_subnormal() also to support
the first. Tests pass ok.

Modified: python/branches/decimal-branch/Lib/decimal.py
==============================================================================
--- python/branches/decimal-branch/Lib/decimal.py	(original)
+++ python/branches/decimal-branch/Lib/decimal.py	Fri Aug  3 05:41:36 2007
@@ -2398,6 +2398,13 @@

def is_subnormal(self, context=None):
"""Returns 1 if self is subnormal, otherwise returns 0."""
+        if context is None:
+            context = getcontext()
+
+        r = self._exp + len(self._int)
+        if r <= context.Emin:
+            return Decimal(1)
+        return Decimal(0)

def is_zero(self, context=None):
"""Returns 1 if self is a zero, otherwise returns 0."""
@@ -2667,6 +2674,32 @@
+Normal
+Infinity
"""
+        if self.is_snan():
+            return "sNaN"
+        if self.is_qnan():
+            return "NaN"
+        inf = self._isinfinity()
+        if inf == 1:
+            return "+Infinity"
+        if inf == -1:
+            return "-Infinity"
+        if self.is_zero():
+            if self._sign:
+                return "-Zero"
+            else:
+                return "+Zero"
+        if context is None:
+            context = getcontext()
+        if self.is_subnormal(context=context):
+            if self._sign:
+                return "-Subnormal"
+            else:
+                return "+Subnormal"
+        # just a normal, regular, boring number, :)
+        if self._sign:
+            return "-Normal"
+        else:
+            return "+Normal"