diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-20 03:16:59 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-20 03:16:59 +0000 |
commit | 782236e3bd5982930c22d3cf4955ec76474c8cec (patch) | |
tree | fa81b2fb7d4c4341125ccc830764c18da15339c9 /missing | |
parent | 76b609c8c3d4cae09e619aeee6ee5743a498fd3d (diff) |
add missing/nan.c
instead of scattering #ifdef HAVE_NANF here and there define our
own nan() unless defined elsewhere.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'missing')
-rw-r--r-- | missing/nan.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/missing/nan.c b/missing/nan.c new file mode 100644 index 0000000000..507cc586d2 --- /dev/null +++ b/missing/nan.c @@ -0,0 +1,28 @@ +#include "ruby/missing.h" +#include <assert.h> +#include <stdlib.h> +#include <string.h> + +double +nan(const char *spec) +{ +#if 0 + /* FIXME: we have not yet seen any situation this is + * necessary. Please write a proper implementation that + * covers this branch. */ + if (spec && spec[0]) { + double generated_nan; + int len = snprintf(NULL, 0, "NAN(%s)", spec); + char *buf = malloc(len + 1); /* +1 for NUL */ + sprintf(buf, "NAN(%s)", spec); + generated_nan = strtod(buf, NULL); + free(buf); + return generated_nan; + } + else +#endif + { + assert(!spec || !spec[0]); + return (double)NAN; + } +} |