summaryrefslogtreecommitdiff
path: root/internal/numeric.h
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-10-04 18:10:41 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-10-14 19:23:25 +0900
commit5ccb625fbbd1e774636a9fdbe0bf1c3d38e085d5 (patch)
tree23a8d2af84fed1b1f080953a5a1eab0b73c3ea8e /internal/numeric.h
parentee8bcbf40578c0c4e60063a3e0c86439a6891131 (diff)
downloadruby-5ccb625fbbd1e774636a9fdbe0bf1c3d38e085d5.tar.gz
Use `roomof` macro for rounding up divisions
Diffstat (limited to 'internal/numeric.h')
-rw-r--r--internal/numeric.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/internal/numeric.h b/internal/numeric.h
index 19069cb3bc..89bc54b307 100644
--- a/internal/numeric.h
+++ b/internal/numeric.h
@@ -35,12 +35,16 @@ enum ruby_num_rounding_mode {
RUBY_NUM_ROUND_DEFAULT = ROUND_DEFAULT,
};
+/* same as internal.h */
+#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
+#define roomof(x, y) (((x) + (y) - 1) / (y))
+#define type_roomof(x, y) roomof(sizeof(x), sizeof(y))
+
#if SIZEOF_DOUBLE <= SIZEOF_VALUE
typedef double rb_float_value_type;
#else
typedef struct {
- VALUE values[(SIZEOF_DOUBLE + SIZEOF_VALUE - 1) / SIZEOF_VALUE];
- /* roomof() needs internal.h, and the order of some macros may matter */
+ VALUE values[roomof(SIZEOF_DOUBLE, SIZEOF_VALUE)];
} rb_float_value_type;
#endif