mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
allow float/double switch
This commit is contained in:
+9
-2
@@ -8,12 +8,19 @@
|
||||
#define MRUBYCONF_H
|
||||
|
||||
#include <stdint.h>
|
||||
#define MRB_USE_FLOAT
|
||||
|
||||
#ifdef MRB_USE_FLOAT
|
||||
typedef float mrb_float;
|
||||
#define readfloat(p) strtof((p),NULL)
|
||||
#else
|
||||
typedef double mrb_float;
|
||||
#define readfloat(p) strtod((p),NULL)
|
||||
#endif
|
||||
|
||||
typedef int32_t mrb_int;
|
||||
typedef intptr_t mrb_sym;
|
||||
|
||||
#define readint(p,base) strtol((p),NULL,(base))
|
||||
#define readfloat(p) strtod((p),NULL)
|
||||
|
||||
#undef INCLUDE_ENCODING /* not use encoding classes (ascii only) */
|
||||
#define INCLUDE_ENCODING /* use UTF-8 encoding classes */
|
||||
|
||||
+6
-30
@@ -101,29 +101,14 @@ const unsigned char mrb_nan[] = "\x00\x00\xc0\x7f";
|
||||
const unsigned char mrb_nan[] = "\x7f\xc0\x00\x00";
|
||||
#endif
|
||||
|
||||
extern double round(double);
|
||||
|
||||
#ifndef HAVE_ROUND
|
||||
double
|
||||
round(double x)
|
||||
{
|
||||
double f;
|
||||
|
||||
if (x > 0.0) {
|
||||
f = floor(x);
|
||||
x = f + (x - f >= 0.5);
|
||||
}
|
||||
else if (x < 0.0) {
|
||||
f = ceil(x);
|
||||
x = f - (f - x >= 0.5);
|
||||
}
|
||||
return x;
|
||||
}
|
||||
#ifdef MRB_USE_FLOAT
|
||||
#define round(f) roundf(f)
|
||||
#define floor(f) floorf(f)
|
||||
#define ceil(f) ceilf(f)
|
||||
#define floor(f) floorf(f)
|
||||
#define fmod(x,y) fmodf(x,y)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
void mrb_cmperr(mrb_state *mrb, mrb_value x, mrb_value y);
|
||||
|
||||
void
|
||||
@@ -459,16 +444,7 @@ flodivmod(mrb_state *mrb, mrb_float x, mrb_float y, mrb_float *divp, mrb_float *
|
||||
mrb_float div, mod;
|
||||
|
||||
if (y == 0.0) mrb_num_zerodiv(mrb);
|
||||
#ifdef HAVE_FMOD
|
||||
mod = fmod(x, y);
|
||||
#else
|
||||
{
|
||||
mrb_float z;
|
||||
|
||||
modf(x/y, &z);
|
||||
mod = x - z * y;
|
||||
}
|
||||
#endif
|
||||
if (isinf(x) && !isinf(y) && !isnan(y))
|
||||
div = x;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user