[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