[DRE-commits] [ruby-numo-narray] 09/13: new error: Numo::NArray::ValueError. raise error when Numo::Int16[-32768].abs

Youhei SASAKI uwabami-guest at moszumanska.debian.org
Wed Jun 21 08:37:49 UTC 2017


This is an automated email from the git hooks/post-receive script.

uwabami-guest pushed a commit to branch patch-queue/master
in repository ruby-numo-narray.

commit 540662cb343ac96c5912911bd58c9dbca7530b03
Author: Masahiro TANAKA <masa16.tanaka at gmail.com>
Date:   Thu Jun 8 21:56:13 2017 +0900

    new error: Numo::NArray::ValueError. raise error when Numo::Int16[-32768].abs
    
    
    Gbp-Pq: Name 0009-new-error-Numo-NArray-ValueError.patch
---
 ext/numo/narray/narray.c               | 2 ++
 ext/numo/narray/numo/types/int16.h     | 7 +++++--
 ext/numo/narray/numo/types/int32.h     | 7 +++++--
 ext/numo/narray/numo/types/int64.h     | 7 +++++--
 ext/numo/narray/numo/types/int8.h      | 7 +++++--
 ext/numo/narray/numo/types/int_macro.h | 8 +++++++-
 ext/numo/narray/numo/types/uint16.h    | 7 +++++--
 ext/numo/narray/numo/types/uint32.h    | 7 +++++--
 ext/numo/narray/numo/types/uint64.h    | 7 +++++--
 ext/numo/narray/numo/types/uint8.h     | 7 +++++--
 10 files changed, 49 insertions(+), 17 deletions(-)

diff --git a/ext/numo/narray/narray.c b/ext/numo/narray/narray.c
index ab38812..743cac2 100644
--- a/ext/numo/narray/narray.c
+++ b/ext/numo/narray/narray.c
@@ -14,6 +14,7 @@ VALUE nary_eCastError;
 VALUE nary_eShapeError;
 VALUE nary_eOperationError;
 VALUE nary_eDimensionError;
+VALUE nary_eValueError;
 
 static ID id_contiguous_stride;
 static ID id_allocate;
@@ -1851,6 +1852,7 @@ Init_narray()
     nary_eShapeError = rb_define_class_under(cNArray, "ShapeError", rb_eStandardError);
     nary_eOperationError = rb_define_class_under(cNArray, "OperationError", rb_eStandardError);
     nary_eDimensionError = rb_define_class_under(cNArray, "DimensionError", rb_eStandardError);
+    nary_eValueError = rb_define_class_under(cNArray, "ValueError", rb_eStandardError);
 
     rb_define_singleton_method(cNArray, "debug=", na_debug_set, 1);
     rb_define_singleton_method(cNArray, "profile", na_profile, 0);
diff --git a/ext/numo/narray/numo/types/int16.h b/ext/numo/narray/numo/types/int16.h
index 9342f6a..0115b80 100644
--- a/ext/numo/narray/numo/types/int16.h
+++ b/ext/numo/narray/numo/types/int16.h
@@ -8,8 +8,6 @@ typedef int16_t rtype;
 #define m_extract(x)     INT2NUM((int)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%d",(int)(x))
 
-#include "int_macro.h"
-
 #ifndef INT16_MIN
 #define INT16_MIN (-32767-1)
 #endif
@@ -17,5 +15,10 @@ typedef int16_t rtype;
 #define INT16_MAX (32767)
 #endif
 
+#define DATA_MIN INT16_MIN
+#define DATA_MAX INT16_MAX
+
 #define M_MIN  m_data_to_num(INT16_MIN)
 #define M_MAX  m_data_to_num(INT16_MAX)
+
+#include "int_macro.h"
diff --git a/ext/numo/narray/numo/types/int32.h b/ext/numo/narray/numo/types/int32.h
index 5d472d2..059dee4 100644
--- a/ext/numo/narray/numo/types/int32.h
+++ b/ext/numo/narray/numo/types/int32.h
@@ -8,8 +8,6 @@ typedef int32_t rtype;
 #define m_extract(x)     INT322NUM((int32_t)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%"PRId32,(int32_t)(x))
 
-#include "int_macro.h"
-
 #ifndef INT32_MIN
 #define INT32_MIN (-2147483647-1)
 #endif
@@ -17,5 +15,10 @@ typedef int32_t rtype;
 #define INT32_MAX (2147483647)
 #endif
 
+#define DATA_MIN INT32_MIN
+#define DATA_MAX INT32_MAX
+
 #define M_MIN  m_data_to_num(INT32_MIN)
 #define M_MAX  m_data_to_num(INT32_MAX)
+
+#include "int_macro.h"
diff --git a/ext/numo/narray/numo/types/int64.h b/ext/numo/narray/numo/types/int64.h
index bfb9426..e3ed8ba 100644
--- a/ext/numo/narray/numo/types/int64.h
+++ b/ext/numo/narray/numo/types/int64.h
@@ -8,8 +8,6 @@ typedef int64_t rtype;
 #define m_extract(x)     INT642NUM((int64_t)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%"PRId64,(int64_t)(x))
 
-#include "int_macro.h"
-
 #ifndef INT64_MIN
 #define INT64_MIN (-9223372036854775807l-1)
 #endif
@@ -17,5 +15,10 @@ typedef int64_t rtype;
 #define INT64_MAX (9223372036854775807l)
 #endif
 
+#define DATA_MIN INT64_MIN
+#define DATA_MAX INT64_MAX
+
 #define M_MIN  m_data_to_num(INT64_MIN)
 #define M_MAX  m_data_to_num(INT64_MAX)
+
+#include "int_macro.h"
diff --git a/ext/numo/narray/numo/types/int8.h b/ext/numo/narray/numo/types/int8.h
index 676d5e9..5c1f8ba 100644
--- a/ext/numo/narray/numo/types/int8.h
+++ b/ext/numo/narray/numo/types/int8.h
@@ -8,8 +8,6 @@ typedef int8_t rtype;
 #define m_extract(x)     INT2NUM((int)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%d",(int)(x))
 
-#include "int_macro.h"
-
 #ifndef INT8_MIN
 #define INT8_MIN (-127-1)
 #endif
@@ -17,5 +15,10 @@ typedef int8_t rtype;
 #define INT8_MAX (127)
 #endif
 
+#define DATA_MIN INT8_MIN
+#define DATA_MAX INT8_MAX
+
 #define M_MIN  INT2FIX(INT8_MIN)
 #define M_MAX  INT2FIX(INT8_MAX)
+
+#include "int_macro.h"
diff --git a/ext/numo/narray/numo/types/int_macro.h b/ext/numo/narray/numo/types/int_macro.h
index d795426..e3b4dd8 100644
--- a/ext/numo/narray/numo/types/int_macro.h
+++ b/ext/numo/narray/numo/types/int_macro.h
@@ -1,8 +1,14 @@
 #include "xint_macro.h"
 
-#define m_abs(x)     ((x<0)?-x:x)
 #define m_sign(x)    (((x)==0) ? 0 : (((x)>0) ? 1 : -1))
 
+static inline dtype m_abs(dtype x) {
+    if (x==DATA_MIN) {
+        rb_raise(nary_eValueError, "cannot convert the minimum integer");
+    }
+    return (x<0)?-x:x;
+}
+
 static inline dtype int_reciprocal(dtype x) {
     switch (x) {
     case 1:
diff --git a/ext/numo/narray/numo/types/uint16.h b/ext/numo/narray/numo/types/uint16.h
index 880c861..c6623fb 100644
--- a/ext/numo/narray/numo/types/uint16.h
+++ b/ext/numo/narray/numo/types/uint16.h
@@ -8,11 +8,14 @@ typedef u_int16_t rtype;
 #define m_extract(x)     UINT2NUM((unsigned int)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%u",(unsigned int)(x))
 
-#include "uint_macro.h"
-
 #ifndef UINT16_MAX
 #define UINT16_MAX (65535)
 #endif
 
+#define DATA_MIN UINT16_MIN
+#define DATA_MAX UINT16_MAX
+
 #define M_MIN  INT2FIX(0)
 #define M_MAX  m_data_to_num(UINT16_MAX)
+
+#include "uint_macro.h"
diff --git a/ext/numo/narray/numo/types/uint32.h b/ext/numo/narray/numo/types/uint32.h
index 8435271..4f7b3c2 100644
--- a/ext/numo/narray/numo/types/uint32.h
+++ b/ext/numo/narray/numo/types/uint32.h
@@ -8,11 +8,14 @@ typedef u_int32_t rtype;
 #define m_extract(x)     UINT322NUM((u_int32_t)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%"PRIu32,(u_int32_t)(x))
 
-#include "uint_macro.h"
-
 #ifndef UINT32_MAX
 #define UINT32_MAX (4294967295u)
 #endif
 
+#define DATA_MIN UINT32_MIN
+#define DATA_MAX UINT32_MAX
+
 #define M_MIN  INT2FIX(0)
 #define M_MAX  m_data_to_num(UINT32_MAX)
+
+#include "uint_macro.h"
diff --git a/ext/numo/narray/numo/types/uint64.h b/ext/numo/narray/numo/types/uint64.h
index 0ad200e..655fb34 100644
--- a/ext/numo/narray/numo/types/uint64.h
+++ b/ext/numo/narray/numo/types/uint64.h
@@ -8,11 +8,14 @@ typedef u_int64_t rtype;
 #define m_extract(x)     UINT642NUM((u_int64_t)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%"PRIu64,(u_int64_t)(x))
 
-#include "uint_macro.h"
-
 #ifndef UINT64_MAX
 #define UINT64_MAX (18446744073709551615ul)
 #endif
 
+#define DATA_MIN UINT64_MIN
+#define DATA_MAX UINT64_MAX
+
 #define M_MIN  INT2FIX(0)
 #define M_MAX  m_data_to_num(UINT64_MAX)
+
+#include "uint_macro.h"
diff --git a/ext/numo/narray/numo/types/uint8.h b/ext/numo/narray/numo/types/uint8.h
index 4fe24e5..da573fc 100644
--- a/ext/numo/narray/numo/types/uint8.h
+++ b/ext/numo/narray/numo/types/uint8.h
@@ -8,11 +8,14 @@ typedef u_int8_t rtype;
 #define m_extract(x)     UINT2NUM((unsigned int)*(dtype*)(x))
 #define m_sprintf(s,x)   sprintf(s,"%u",(unsigned int)(x))
 
-#include "uint_macro.h"
-
 #ifndef UINT8_MAX
 #define UINT8_MAX (255)
 #endif
 
+#define DATA_MIN UINT8_MIN
+#define DATA_MAX UINT8_MAX
+
 #define M_MIN  INT2FIX(0)
 #define M_MAX  m_data_to_num(UINT8_MAX)
+
+#include "uint_macro.h"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-numo-narray.git



More information about the Pkg-ruby-extras-commits mailing list