mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Rename float configuration option names.
- `MRB_WITHOUT_FLOAT` => `MRB_NO_FLOAT` - `MRB_USE_FLOAT` => `MRB_USE_FLOAT32` The former is to use `USE_XXX` naming convention. The latter is to make sure `float` is 32bit float and not floating point number in general.
This commit is contained in:
+1
-1
@@ -825,7 +825,7 @@ aget_index(mrb_state *mrb, mrb_value index)
|
||||
if (mrb_fixnum_p(index)) {
|
||||
return mrb_fixnum(index);
|
||||
}
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
else if (mrb_float_p(index)) {
|
||||
return (mrb_int)mrb_float(index);
|
||||
}
|
||||
|
||||
+2
-2
@@ -899,7 +899,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
|
||||
}
|
||||
}
|
||||
break;
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case 'f':
|
||||
{
|
||||
mrb_float *p;
|
||||
@@ -1343,7 +1343,7 @@ mrb_singleton_class_ptr(mrb_state *mrb, mrb_value v)
|
||||
return mrb->object_class;
|
||||
case MRB_TT_SYMBOL:
|
||||
case MRB_TT_FIXNUM:
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
#endif
|
||||
return NULL;
|
||||
|
||||
+5
-5
@@ -13,8 +13,8 @@
|
||||
#include <mruby/numeric.h>
|
||||
#include <mruby/debug.h>
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_USE_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
#ifdef MRB_USE_FLOAT32
|
||||
#define MRB_FLOAT_FMT "%.9g"
|
||||
#else
|
||||
#define MRB_FLOAT_FMT "%.17g"
|
||||
@@ -88,7 +88,7 @@ write_iseq_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf, uint8_t fla
|
||||
return cur - buf;
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
static mrb_value
|
||||
float_to_str(mrb_state *mrb, mrb_float f)
|
||||
{
|
||||
@@ -131,7 +131,7 @@ get_pool_block_size(mrb_state *mrb, const mrb_irep *irep)
|
||||
break;
|
||||
|
||||
case IREP_TT_FLOAT:
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
{
|
||||
mrb_value str = float_to_str(mrb, irep->pool[pool_no].u.f);
|
||||
mrb_int len = RSTRING_LEN(str);
|
||||
@@ -192,7 +192,7 @@ write_pool_block(mrb_state *mrb, const mrb_irep *irep, uint8_t *buf)
|
||||
|
||||
case IREP_TT_FLOAT:
|
||||
cur += uint8_to_bin(IREP_TT_FLOAT, cur); /* data type */
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
{
|
||||
mrb_value str = float_to_str(mrb, irep->pool[pool_no].u.f);
|
||||
ptr = RSTRING_PTR(str);
|
||||
|
||||
+1
-1
@@ -288,7 +288,7 @@ mrb_vformat(mrb_state *mrb, const char *format, va_list ap)
|
||||
#endif
|
||||
obj = mrb_fixnum_value(i);
|
||||
goto L_cat_obj;
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case 'f':
|
||||
obj = mrb_float_value(mrb, (mrb_float)va_arg(ap, double));
|
||||
goto L_cat_obj;
|
||||
|
||||
@@ -70,7 +70,7 @@ mrb_obj_to_sym(mrb_state *mrb, mrb_value name)
|
||||
}
|
||||
|
||||
MRB_API mrb_int
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_fixnum_id(mrb_int f)
|
||||
#else
|
||||
mrb_float_id(mrb_float f)
|
||||
@@ -80,7 +80,7 @@ mrb_float_id(mrb_float f)
|
||||
int len = sizeof(f);
|
||||
uint32_t id = 0;
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
/* normalize -0.0 to 0.0 */
|
||||
if (f == 0) f = 0.0;
|
||||
#endif
|
||||
@@ -115,7 +115,7 @@ mrb_obj_id(mrb_value obj)
|
||||
case MRB_TT_SYMBOL:
|
||||
return MakeID(mrb_symbol(obj));
|
||||
case MRB_TT_FIXNUM:
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
return MakeID(mrb_fixnum_id(mrb_fixnum(obj)));
|
||||
#else
|
||||
return MakeID2(mrb_float_id((mrb_float)mrb_fixnum(obj)), MRB_TT_FLOAT);
|
||||
@@ -147,7 +147,7 @@ mrb_obj_id(mrb_value obj)
|
||||
#ifdef MRB_WORD_BOXING
|
||||
#define mrb_xxx_boxing_cptr_value mrb_word_boxing_cptr_value
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
MRB_API mrb_value
|
||||
mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f)
|
||||
{
|
||||
@@ -158,7 +158,7 @@ mrb_word_boxing_float_value(mrb_state *mrb, mrb_float f)
|
||||
MRB_SET_FROZEN_FLAG(v.bp);
|
||||
return v.w;
|
||||
}
|
||||
#endif /* MRB_WITHOUT_FLOAT */
|
||||
#endif /* MRB_NO_FLOAT */
|
||||
#endif /* MRB_WORD_BOXING */
|
||||
|
||||
#if defined(MRB_WORD_BOXING) || (defined(MRB_NAN_BOXING) && defined(MRB_64BIT))
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
#if defined(MRB_DISABLE_STDIO) || defined(_WIN32) || defined(_WIN64)
|
||||
/*
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ typedef struct {
|
||||
struct RException exc;
|
||||
struct RBreak brk;
|
||||
#ifdef MRB_WORD_BOXING
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
struct RFloat floatv;
|
||||
#endif
|
||||
struct RCptr cptr;
|
||||
@@ -784,7 +784,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
|
||||
/* cannot happen */
|
||||
return;
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
#ifdef MRB_WORD_BOXING
|
||||
break;
|
||||
@@ -929,7 +929,7 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc)
|
||||
mrb_gc_mark(mrb, (struct RBasic*)mrb->hash_class);
|
||||
mrb_gc_mark(mrb, (struct RBasic*)mrb->range_class);
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
mrb_gc_mark(mrb, (struct RBasic*)mrb->float_class);
|
||||
#endif
|
||||
mrb_gc_mark(mrb, (struct RBasic*)mrb->fixnum_class);
|
||||
|
||||
+4
-4
@@ -11,7 +11,7 @@
|
||||
#include <mruby/string.h>
|
||||
#include <mruby/variable.h>
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
/* a function to get hash value of a float number */
|
||||
mrb_int mrb_float_id(mrb_float f);
|
||||
#endif
|
||||
@@ -65,7 +65,7 @@ ht_hash_func(mrb_state *mrb, htable *t, mrb_value key)
|
||||
case MRB_TT_FALSE:
|
||||
case MRB_TT_SYMBOL:
|
||||
case MRB_TT_FIXNUM:
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
#endif
|
||||
h = (size_t)mrb_obj_id(key);
|
||||
@@ -99,7 +99,7 @@ ht_hash_equal(mrb_state *mrb, htable *t, mrb_value a, mrb_value b)
|
||||
switch (mrb_type(b)) {
|
||||
case MRB_TT_FIXNUM:
|
||||
return mrb_fixnum(a) == mrb_fixnum(b);
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
return (mrb_float)mrb_fixnum(a) == mrb_float(b);
|
||||
#endif
|
||||
@@ -107,7 +107,7 @@ ht_hash_equal(mrb_state *mrb, htable *t, mrb_value a, mrb_value b)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
switch (mrb_type(b)) {
|
||||
case MRB_TT_FIXNUM:
|
||||
|
||||
+3
-3
@@ -39,7 +39,7 @@ offset_crc_body(void)
|
||||
return ((uint8_t *)header.binary_crc - (uint8_t *)&header) + sizeof(header.binary_crc);
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
double mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck);
|
||||
|
||||
static double
|
||||
@@ -165,7 +165,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag
|
||||
#endif
|
||||
|
||||
case IREP_TT_FLOAT:
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
pool[i].tt = tt;
|
||||
pool_data_len = bin_to_uint16(src); /* pool data length */
|
||||
src += sizeof(uint16_t);
|
||||
@@ -173,7 +173,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag
|
||||
src += pool_data_len;
|
||||
break;
|
||||
#else
|
||||
return NULL; /* MRB_WITHOUT_FLOAT */
|
||||
return NULL; /* MRB_NO_FLOAT */
|
||||
#endif
|
||||
|
||||
case IREP_TT_STR:
|
||||
|
||||
+44
-44
@@ -4,7 +4,7 @@
|
||||
** See Copyright Notice in mruby.h
|
||||
*/
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
#endif
|
||||
@@ -18,8 +18,8 @@
|
||||
#include <mruby/string.h>
|
||||
#include <mruby/class.h>
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_USE_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
#ifdef MRB_USE_FLOAT32
|
||||
#define trunc(f) truncf(f)
|
||||
#define floor(f) floorf(f)
|
||||
#define ceil(f) ceilf(f)
|
||||
@@ -30,7 +30,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
MRB_API mrb_float
|
||||
mrb_to_flo(mrb_state *mrb, mrb_value val)
|
||||
{
|
||||
@@ -68,7 +68,7 @@ static mrb_value
|
||||
integral_pow(mrb_state *mrb, mrb_value x)
|
||||
{
|
||||
mrb_value y = mrb_get_arg1(mrb);
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
mrb_float d;
|
||||
#endif
|
||||
|
||||
@@ -79,7 +79,7 @@ integral_pow(mrb_state *mrb, mrb_value x)
|
||||
mrb_int result = 1;
|
||||
|
||||
if (exp < 0)
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
return mrb_fixnum_value(0);
|
||||
#else
|
||||
goto float_pow;
|
||||
@@ -87,7 +87,7 @@ integral_pow(mrb_state *mrb, mrb_value x)
|
||||
for (;;) {
|
||||
if (exp & 1) {
|
||||
if (mrb_int_mul_overflow(result, base, &result)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
goto float_pow;
|
||||
#endif
|
||||
}
|
||||
@@ -95,14 +95,14 @@ integral_pow(mrb_state *mrb, mrb_value x)
|
||||
exp >>= 1;
|
||||
if (exp == 0) break;
|
||||
if (mrb_int_mul_overflow(base, base, &base)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
goto float_pow;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return mrb_fixnum_value(result);
|
||||
}
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value");
|
||||
#else
|
||||
float_pow:
|
||||
@@ -114,7 +114,7 @@ integral_pow(mrb_state *mrb, mrb_value x)
|
||||
static mrb_value
|
||||
integral_idiv(mrb_state *mrb, mrb_value x)
|
||||
{
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_value y = mrb_get_arg1(mrb);
|
||||
|
||||
if (!mrb_fixnum_p(y)) {
|
||||
@@ -151,7 +151,7 @@ integral_idiv(mrb_state *mrb, mrb_value x)
|
||||
static mrb_value
|
||||
integral_div(mrb_state *mrb, mrb_value xv)
|
||||
{
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_int y;
|
||||
|
||||
mrb_get_args(mrb, "i", &y);
|
||||
@@ -184,7 +184,7 @@ integral_coerce_step_counter(mrb_state *mrb, mrb_value self)
|
||||
|
||||
mrb_get_args(mrb, "oo", &num, &step);
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
if (mrb_float_p(self) || mrb_float_p(num) || mrb_float_p(step)) {
|
||||
return mrb_Float(mrb, self);
|
||||
}
|
||||
@@ -193,7 +193,7 @@ integral_coerce_step_counter(mrb_state *mrb, mrb_value self)
|
||||
return self;
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
/********************************************************************
|
||||
*
|
||||
* Document-class: Float
|
||||
@@ -386,7 +386,7 @@ fix_eql(mrb_state *mrb, mrb_value x)
|
||||
return mrb_bool_value(mrb_fixnum(x) == mrb_fixnum(y));
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
static mrb_value
|
||||
flo_eql(mrb_state *mrb, mrb_value x)
|
||||
{
|
||||
@@ -803,13 +803,13 @@ fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y)
|
||||
if (a == 0) return x;
|
||||
b = mrb_fixnum(y);
|
||||
if (mrb_int_mul_overflow(a, b, &c)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
return mrb_float_value(mrb, (mrb_float)a * (mrb_float)b);
|
||||
#endif
|
||||
}
|
||||
return mrb_fixnum_value(c);
|
||||
}
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value");
|
||||
#else
|
||||
return mrb_float_value(mrb, (mrb_float)a * mrb_to_flo(mrb, y));
|
||||
@@ -822,7 +822,7 @@ mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y)
|
||||
if (mrb_fixnum_p(x)) {
|
||||
return fixnum_mul(mrb, x, y);
|
||||
}
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
if (mrb_float_p(x)) {
|
||||
return mrb_float_value(mrb, mrb_float(x) * mrb_to_flo(mrb, y));
|
||||
}
|
||||
@@ -898,7 +898,7 @@ fix_mod(mrb_state *mrb, mrb_value x)
|
||||
mrb_int mod;
|
||||
|
||||
if (b == 0) {
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
/* ZeroDivisionError */
|
||||
return mrb_fixnum_value(0);
|
||||
#else
|
||||
@@ -910,7 +910,7 @@ fix_mod(mrb_state *mrb, mrb_value x)
|
||||
fixdivmod(mrb, a, b, NULL, &mod);
|
||||
return mrb_fixnum_value(mod);
|
||||
}
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value");
|
||||
#else
|
||||
else {
|
||||
@@ -937,7 +937,7 @@ fix_divmod(mrb_state *mrb, mrb_value x)
|
||||
mrb_int div, mod;
|
||||
|
||||
if (mrb_fixnum(y) == 0) {
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
return mrb_assoc_new(mrb, mrb_fixnum_value(0), mrb_fixnum_value(0));
|
||||
#else
|
||||
return mrb_assoc_new(mrb, ((mrb_fixnum(x) == 0) ?
|
||||
@@ -949,7 +949,7 @@ fix_divmod(mrb_state *mrb, mrb_value x)
|
||||
fixdivmod(mrb, mrb_fixnum(x), mrb_fixnum(y), &div, &mod);
|
||||
return mrb_assoc_new(mrb, mrb_fixnum_value(div), mrb_fixnum_value(mod));
|
||||
}
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value");
|
||||
#else
|
||||
else {
|
||||
@@ -964,7 +964,7 @@ fix_divmod(mrb_state *mrb, mrb_value x)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
static mrb_value
|
||||
flo_divmod(mrb_state *mrb, mrb_value x)
|
||||
{
|
||||
@@ -999,7 +999,7 @@ fix_equal(mrb_state *mrb, mrb_value x)
|
||||
switch (mrb_type(y)) {
|
||||
case MRB_TT_FIXNUM:
|
||||
return mrb_bool_value(mrb_fixnum(x) == mrb_fixnum(y));
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
return mrb_bool_value((mrb_float)mrb_fixnum(x) == mrb_float(y));
|
||||
#endif
|
||||
@@ -1027,7 +1027,7 @@ fix_rev(mrb_state *mrb, mrb_value num)
|
||||
return mrb_fixnum_value(~val);
|
||||
}
|
||||
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
#define bit_op(x,y,op1,op2) do {\
|
||||
return mrb_fixnum_value(mrb_fixnum(x) op2 mrb_fixnum(y));\
|
||||
} while(0)
|
||||
@@ -1095,7 +1095,7 @@ static mrb_value
|
||||
lshift(mrb_state *mrb, mrb_int val, mrb_int width)
|
||||
{
|
||||
if (width < 0) { /* mrb_int overflow */
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
return mrb_fixnum_value(0);
|
||||
#else
|
||||
return mrb_float_value(mrb, INFINITY);
|
||||
@@ -1104,7 +1104,7 @@ lshift(mrb_state *mrb, mrb_int val, mrb_int width)
|
||||
if (val > 0) {
|
||||
if ((width > NUMERIC_SHIFT_WIDTH_MAX) ||
|
||||
(val > (MRB_INT_MAX >> width))) {
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
return mrb_fixnum_value(-1);
|
||||
#else
|
||||
goto bit_overflow;
|
||||
@@ -1115,7 +1115,7 @@ lshift(mrb_state *mrb, mrb_int val, mrb_int width)
|
||||
else {
|
||||
if ((width > NUMERIC_SHIFT_WIDTH_MAX) ||
|
||||
(val <= (MRB_INT_MIN >> width))) {
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
return mrb_fixnum_value(0);
|
||||
#else
|
||||
goto bit_overflow;
|
||||
@@ -1124,7 +1124,7 @@ lshift(mrb_state *mrb, mrb_int val, mrb_int width)
|
||||
return mrb_fixnum_value(val * ((mrb_int)1 << width));
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
bit_overflow:
|
||||
{
|
||||
mrb_float f = (mrb_float)val;
|
||||
@@ -1210,7 +1210,7 @@ fix_rshift(mrb_state *mrb, mrb_value x)
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
static mrb_value
|
||||
fix_to_f(mrb_state *mrb, mrb_value num)
|
||||
{
|
||||
@@ -1267,13 +1267,13 @@ fixnum_plus(mrb_state *mrb, mrb_value x, mrb_value y)
|
||||
if (a == 0) return y;
|
||||
b = mrb_fixnum(y);
|
||||
if (mrb_int_add_overflow(a, b, &c)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
return mrb_float_value(mrb, (mrb_float)a + (mrb_float)b);
|
||||
#endif
|
||||
}
|
||||
return mrb_fixnum_value(c);
|
||||
}
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value");
|
||||
#else
|
||||
return mrb_float_value(mrb, (mrb_float)a + mrb_to_flo(mrb, y));
|
||||
@@ -1286,7 +1286,7 @@ mrb_num_plus(mrb_state *mrb, mrb_value x, mrb_value y)
|
||||
if (mrb_fixnum_p(x)) {
|
||||
return fixnum_plus(mrb, x, y);
|
||||
}
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
if (mrb_float_p(x)) {
|
||||
return mrb_float_value(mrb, mrb_float(x) + mrb_to_flo(mrb, y));
|
||||
}
|
||||
@@ -1323,13 +1323,13 @@ fixnum_minus(mrb_state *mrb, mrb_value x, mrb_value y)
|
||||
|
||||
b = mrb_fixnum(y);
|
||||
if (mrb_int_sub_overflow(a, b, &c)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
return mrb_float_value(mrb, (mrb_float)a - (mrb_float)b);
|
||||
#endif
|
||||
}
|
||||
return mrb_fixnum_value(c);
|
||||
}
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value");
|
||||
#else
|
||||
return mrb_float_value(mrb, (mrb_float)a - mrb_to_flo(mrb, y));
|
||||
@@ -1342,7 +1342,7 @@ mrb_num_minus(mrb_state *mrb, mrb_value x, mrb_value y)
|
||||
if (mrb_fixnum_p(x)) {
|
||||
return fixnum_minus(mrb, x, y);
|
||||
}
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
if (mrb_float_p(x)) {
|
||||
return mrb_float_value(mrb, mrb_float(x) - mrb_to_flo(mrb, y));
|
||||
}
|
||||
@@ -1431,26 +1431,26 @@ fix_to_s(mrb_state *mrb, mrb_value self)
|
||||
static mrb_int
|
||||
cmpnum(mrb_state *mrb, mrb_value v1, mrb_value v2)
|
||||
{
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
mrb_int x, y;
|
||||
#else
|
||||
mrb_float x, y;
|
||||
#endif
|
||||
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
x = mrb_fixnum(v1);
|
||||
#else
|
||||
x = mrb_to_flo(mrb, v1);
|
||||
#endif
|
||||
switch (mrb_type(v2)) {
|
||||
case MRB_TT_FIXNUM:
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
y = mrb_fixnum(v2);
|
||||
#else
|
||||
y = (mrb_float)mrb_fixnum(v2);
|
||||
#endif
|
||||
break;
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
y = mrb_float(v2);
|
||||
break;
|
||||
@@ -1585,7 +1585,7 @@ num_infinite_p(mrb_state *mrb, mrb_value self)
|
||||
* Returns a new float which is the sum of <code>float</code>
|
||||
* and <code>other</code>.
|
||||
*/
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
static mrb_value
|
||||
flo_plus(mrb_state *mrb, mrb_value x)
|
||||
{
|
||||
@@ -1600,7 +1600,7 @@ void
|
||||
mrb_init_numeric(mrb_state *mrb)
|
||||
{
|
||||
struct RClass *numeric, *integer, *fixnum, *integral;
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
struct RClass *fl;
|
||||
#endif
|
||||
|
||||
@@ -1627,7 +1627,7 @@ mrb_init_numeric(mrb_state *mrb)
|
||||
mrb_undef_class_method(mrb, integer, "new");
|
||||
mrb_define_method(mrb, integer, "to_i", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.24 */
|
||||
mrb_define_method(mrb, integer, "to_int", int_to_i, MRB_ARGS_NONE());
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
mrb_define_method(mrb, integer, "ceil", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.8 (x) */
|
||||
mrb_define_method(mrb, integer, "floor", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.10 (x) */
|
||||
mrb_define_method(mrb, integer, "round", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.12 (x) */
|
||||
@@ -1648,14 +1648,14 @@ mrb_init_numeric(mrb_state *mrb)
|
||||
mrb_define_method(mrb, fixnum, "<<", fix_lshift, MRB_ARGS_REQ(1)); /* 15.2.8.3.12 */
|
||||
mrb_define_method(mrb, fixnum, ">>", fix_rshift, MRB_ARGS_REQ(1)); /* 15.2.8.3.13 */
|
||||
mrb_define_method(mrb, fixnum, "eql?", fix_eql, MRB_ARGS_REQ(1)); /* 15.2.8.3.16 */
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
mrb_define_method(mrb, fixnum, "to_f", fix_to_f, MRB_ARGS_NONE()); /* 15.2.8.3.23 */
|
||||
#endif
|
||||
mrb_define_method(mrb, fixnum, "to_s", fix_to_s, MRB_ARGS_OPT(1)); /* 15.2.8.3.25 */
|
||||
mrb_define_method(mrb, fixnum, "inspect", fix_to_s, MRB_ARGS_OPT(1));
|
||||
mrb_define_method(mrb, fixnum, "divmod", fix_divmod, MRB_ARGS_REQ(1)); /* 15.2.8.3.30 (x) */
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
/* Float Class */
|
||||
mrb->float_class = fl = mrb_define_class(mrb, "Float", numeric); /* 15.2.9 */
|
||||
MRB_SET_INSTANCE_TT(fl, MRB_TT_FLOAT);
|
||||
|
||||
+6
-6
@@ -24,7 +24,7 @@ mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
|
||||
case MRB_TT_SYMBOL:
|
||||
return (mrb_symbol(v1) == mrb_symbol(v2));
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
return (mrb_float(v1) == mrb_float(v2));
|
||||
#endif
|
||||
@@ -47,7 +47,7 @@ mrb_equal(mrb_state *mrb, mrb_value obj1, mrb_value obj2)
|
||||
mrb_value result;
|
||||
|
||||
if (mrb_obj_eq(mrb, obj1, obj2)) return TRUE;
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
/* value mixing with integer and float */
|
||||
if (mrb_fixnum_p(obj1)) {
|
||||
if (mrb_float_p(obj2) && (mrb_float)mrb_fixnum(obj1) == mrb_float(obj2))
|
||||
@@ -330,7 +330,7 @@ static const struct types {
|
||||
{MRB_TT_ICLASS, "iClass"}, /* internal use: mixed-in module holder */
|
||||
{MRB_TT_SCLASS, "SClass"},
|
||||
{MRB_TT_PROC, "Proc"},
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
{MRB_TT_FLOAT, "Float"},
|
||||
#endif
|
||||
{MRB_TT_ARRAY, "Array"},
|
||||
@@ -510,7 +510,7 @@ mrb_to_int(mrb_state *mrb, mrb_value val)
|
||||
{
|
||||
|
||||
if (!mrb_fixnum_p(val)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
if (mrb_float_p(val)) {
|
||||
return mrb_flo_to_fixnum(mrb, val);
|
||||
}
|
||||
@@ -530,7 +530,7 @@ mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base)
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "can't convert nil into Integer");
|
||||
}
|
||||
switch (mrb_type(val)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case MRB_TT_FLOAT:
|
||||
if (base != 0) goto arg_error;
|
||||
return mrb_flo_to_fixnum(mrb, val);
|
||||
@@ -566,7 +566,7 @@ mrb_Integer(mrb_state *mrb, mrb_value val)
|
||||
return mrb_convert_to_integer(mrb, val, 0);
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
MRB_API mrb_value
|
||||
mrb_Float(mrb_state *mrb, mrb_value val)
|
||||
{
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ r_check(mrb_state *mrb, mrb_value a, mrb_value b)
|
||||
|
||||
ta = mrb_type(a);
|
||||
tb = mrb_type(b);
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
if (ta == MRB_TT_FIXNUM && tb == MRB_TT_FIXNUM ) {
|
||||
#else
|
||||
if ((ta == MRB_TT_FIXNUM || ta == MRB_TT_FLOAT) &&
|
||||
|
||||
+5
-5
@@ -8,7 +8,7 @@
|
||||
# define _CRT_NONSTDC_NO_DEPRECATE
|
||||
#endif
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
#endif
|
||||
@@ -2365,7 +2365,7 @@ mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, mrb_int base, i
|
||||
n *= base;
|
||||
n += c;
|
||||
if (n > (uint64_t)MRB_INT_MAX + (sign ? 0 : 1)) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
if (base == 10) {
|
||||
return mrb_float_value(mrb, mrb_str_to_dbl(mrb, mrb_str_new(mrb, str, len), badcheck));
|
||||
}
|
||||
@@ -2476,7 +2476,7 @@ mrb_str_to_i(mrb_state *mrb, mrb_value self)
|
||||
return mrb_str_to_inum(mrb, self, base, FALSE);
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
double
|
||||
mrb_str_len_to_dbl(mrb_state *mrb, const char *s, size_t len, mrb_bool badcheck)
|
||||
{
|
||||
@@ -2937,7 +2937,7 @@ mrb_init_string(mrb_state *mrb)
|
||||
mrb_define_method(mrb, s, "slice", mrb_str_aref_m, MRB_ARGS_ANY()); /* 15.2.10.5.34 */
|
||||
mrb_define_method(mrb, s, "split", mrb_str_split_m, MRB_ARGS_ANY()); /* 15.2.10.5.35 */
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
mrb_define_method(mrb, s, "to_f", mrb_str_to_f, MRB_ARGS_NONE()); /* 15.2.10.5.38 */
|
||||
#endif
|
||||
mrb_define_method(mrb, s, "to_i", mrb_str_to_i, MRB_ARGS_ANY()); /* 15.2.10.5.39 */
|
||||
@@ -2954,7 +2954,7 @@ mrb_init_string(mrb_state *mrb)
|
||||
mrb_define_method(mrb, s, "byteslice", mrb_str_byteslice, MRB_ARGS_ARG(1,1));
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
/*
|
||||
* Source code for the "strtod" library procedure.
|
||||
*
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdarg.h>
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
#include <math.h>
|
||||
#endif
|
||||
#include <mruby.h>
|
||||
@@ -1101,7 +1101,7 @@ RETRY_TRY_BLOCK:
|
||||
}
|
||||
goto L_RAISE;
|
||||
#endif
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
case IREP_TT_FLOAT:
|
||||
regs[a] = mrb_float_value(mrb, pool[b].u.f);
|
||||
break;
|
||||
@@ -2265,7 +2265,7 @@ RETRY_TRY_BLOCK:
|
||||
SET_INT_VALUE(regs[a], z); \
|
||||
} \
|
||||
break
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
#define OP_MATH_CASE_FLOAT(op_name, t1, t2) (void)0
|
||||
#define OP_MATH_OVERFLOW_INT(op_name, x, y, z) SET_INT_VALUE(regs[a], z)
|
||||
#else
|
||||
@@ -2305,14 +2305,14 @@ RETRY_TRY_BLOCK:
|
||||
}
|
||||
|
||||
CASE(OP_DIV, B) {
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
double x, y, f;
|
||||
#endif
|
||||
|
||||
/* need to check if op is overridden */
|
||||
switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {
|
||||
case TYPES2(MRB_TT_FIXNUM,MRB_TT_FIXNUM):
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
{
|
||||
mrb_int x = mrb_fixnum(regs[a]);
|
||||
mrb_int y = mrb_fixnum(regs[a+1]);
|
||||
@@ -2342,7 +2342,7 @@ RETRY_TRY_BLOCK:
|
||||
goto L_SEND_SYM;
|
||||
}
|
||||
|
||||
#ifndef MRB_WITHOUT_FLOAT
|
||||
#ifndef MRB_NO_FLOAT
|
||||
if (y == 0) {
|
||||
if (x > 0) f = INFINITY;
|
||||
else if (x < 0) f = -INFINITY;
|
||||
@@ -2378,7 +2378,7 @@ RETRY_TRY_BLOCK:
|
||||
SET_INT_VALUE(regs[a], z); \
|
||||
} \
|
||||
break
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
#define OP_MATHI_CASE_FLOAT(op_name) (void)0
|
||||
#else
|
||||
#define OP_MATHI_CASE_FLOAT(op_name) \
|
||||
@@ -2400,7 +2400,7 @@ RETRY_TRY_BLOCK:
|
||||
|
||||
#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
|
||||
|
||||
#ifdef MRB_WITHOUT_FLOAT
|
||||
#ifdef MRB_NO_FLOAT
|
||||
#define OP_CMP(op,sym) do {\
|
||||
int result;\
|
||||
/* need to check if - is overridden */\
|
||||
|
||||
Reference in New Issue
Block a user