summaryrefslogtreecommitdiff
path: root/numpy/numarray/numpy/ieeespecial.h
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/numarray/numpy/ieeespecial.h')
-rw-r--r--numpy/numarray/numpy/ieeespecial.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/numpy/numarray/numpy/ieeespecial.h b/numpy/numarray/numpy/ieeespecial.h
new file mode 100644
index 000000000..0f3fff2a9
--- /dev/null
+++ b/numpy/numarray/numpy/ieeespecial.h
@@ -0,0 +1,124 @@
+/* 32-bit special value ranges */
+
+#if defined(_MSC_VER)
+#define MKINT(x) (x##UL)
+#define MKINT64(x) (x##Ui64)
+#define BIT(x) (1Ui64 << (x))
+#else
+#define MKINT(x) (x##U)
+#define MKINT64(x) (x##ULL)
+#define BIT(x) (1ULL << (x))
+#endif
+
+
+#define NEG_QUIET_NAN_MIN32 MKINT(0xFFC00001)
+#define NEG_QUIET_NAN_MAX32 MKINT(0xFFFFFFFF)
+
+#define INDETERMINATE_MIN32 MKINT(0xFFC00000)
+#define INDETERMINATE_MAX32 MKINT(0xFFC00000)
+
+#define NEG_SIGNAL_NAN_MIN32 MKINT(0xFF800001)
+#define NEG_SIGNAL_NAN_MAX32 MKINT(0xFFBFFFFF)
+
+#define NEG_INFINITY_MIN32 MKINT(0xFF800000)
+
+#define NEG_NORMALIZED_MIN32 MKINT(0x80800000)
+#define NEG_NORMALIZED_MAX32 MKINT(0xFF7FFFFF)
+
+#define NEG_DENORMALIZED_MIN32 MKINT(0x80000001)
+#define NEG_DENORMALIZED_MAX32 MKINT(0x807FFFFF)
+
+#define NEG_ZERO_MIN32 MKINT(0x80000000)
+#define NEG_ZERO_MAX32 MKINT(0x80000000)
+
+#define POS_ZERO_MIN32 MKINT(0x00000000)
+#define POS_ZERO_MAX32 MKINT(0x00000000)
+
+#define POS_DENORMALIZED_MIN32 MKINT(0x00000001)
+#define POS_DENORMALIZED_MAX32 MKINT(0x007FFFFF)
+
+#define POS_NORMALIZED_MIN32 MKINT(0x00800000)
+#define POS_NORMALIZED_MAX32 MKINT(0x7F7FFFFF)
+
+#define POS_INFINITY_MIN32 MKINT(0x7F800000)
+#define POS_INFINITY_MAX32 MKINT(0x7F800000)
+
+#define POS_SIGNAL_NAN_MIN32 MKINT(0x7F800001)
+#define POS_SIGNAL_NAN_MAX32 MKINT(0x7FBFFFFF)
+
+#define POS_QUIET_NAN_MIN32 MKINT(0x7FC00000)
+#define POS_QUIET_NAN_MAX32 MKINT(0x7FFFFFFF)
+
+/* 64-bit special value ranges */
+
+#define NEG_QUIET_NAN_MIN64 MKINT64(0xFFF8000000000001)
+#define NEG_QUIET_NAN_MAX64 MKINT64(0xFFFFFFFFFFFFFFFF)
+
+#define INDETERMINATE_MIN64 MKINT64(0xFFF8000000000000)
+#define INDETERMINATE_MAX64 MKINT64(0xFFF8000000000000)
+
+#define NEG_SIGNAL_NAN_MIN64 MKINT64(0xFFF7FFFFFFFFFFFF)
+#define NEG_SIGNAL_NAN_MAX64 MKINT64(0xFFF0000000000001)
+
+#define NEG_INFINITY_MIN64 MKINT64(0xFFF0000000000000)
+
+#define NEG_NORMALIZED_MIN64 MKINT64(0xFFEFFFFFFFFFFFFF)
+#define NEG_NORMALIZED_MAX64 MKINT64(0x8010000000000000)
+
+#define NEG_DENORMALIZED_MIN64 MKINT64(0x800FFFFFFFFFFFFF)
+#define NEG_DENORMALIZED_MAX64 MKINT64(0x8000000000000001)
+
+#define NEG_ZERO_MIN64 MKINT64(0x8000000000000000)
+#define NEG_ZERO_MAX64 MKINT64(0x8000000000000000)
+
+#define POS_ZERO_MIN64 MKINT64(0x0000000000000000)
+#define POS_ZERO_MAX64 MKINT64(0x0000000000000000)
+
+#define POS_DENORMALIZED_MIN64 MKINT64(0x0000000000000001)
+#define POS_DENORMALIZED_MAX64 MKINT64(0x000FFFFFFFFFFFFF)
+
+#define POS_NORMALIZED_MIN64 MKINT64(0x0010000000000000)
+#define POS_NORMALIZED_MAX64 MKINT64(0x7FEFFFFFFFFFFFFF)
+
+#define POS_INFINITY_MIN64 MKINT64(0x7FF0000000000000)
+#define POS_INFINITY_MAX64 MKINT64(0x7FF0000000000000)
+
+#define POS_SIGNAL_NAN_MIN64 MKINT64(0x7FF0000000000001)
+#define POS_SIGNAL_NAN_MAX64 MKINT64(0x7FF7FFFFFFFFFFFF)
+
+#define POS_QUIET_NAN_MIN64 MKINT64(0x7FF8000000000000)
+#define POS_QUIET_NAN_MAX64 MKINT64(0x7FFFFFFFFFFFFFFF)
+
+typedef enum
+{
+ POS_QNAN_BIT,
+ NEG_QNAN_BIT,
+ POS_SNAN_BIT,
+ NEG_SNAN_BIT,
+ POS_INF_BIT,
+ NEG_INF_BIT,
+ POS_DEN_BIT,
+ NEG_DEN_BIT,
+ POS_NOR_BIT,
+ NEG_NOR_BIT,
+ POS_ZERO_BIT,
+ NEG_ZERO_BIT,
+ INDETERM_BIT,
+ BUG_BIT
+} ieee_selects;
+
+#define MSK_POS_QNAN BIT(POS_QNAN_BIT)
+#define MSK_POS_SNAN BIT(POS_SNAN_BIT)
+#define MSK_POS_INF BIT(POS_INF_BIT)
+#define MSK_POS_DEN BIT(POS_DEN_BIT)
+#define MSK_POS_NOR BIT(POS_NOR_BIT)
+#define MSK_POS_ZERO BIT(POS_ZERO_BIT)
+#define MSK_NEG_QNAN BIT(NEG_QNAN_BIT)
+#define MSK_NEG_SNAN BIT(NEG_SNAN_BIT)
+#define MSK_NEG_INF BIT(NEG_INF_BIT)
+#define MSK_NEG_DEN BIT(NEG_DEN_BIT)
+#define MSK_NEG_NOR BIT(NEG_NOR_BIT)
+#define MSK_NEG_ZERO BIT(NEG_ZERO_BIT)
+#define MSK_INDETERM BIT(INDETERM_BIT)
+#define MSK_BUG BIT(BUG_BIT)
+