2018-01-19 22:16:59 -05:00
|
|
|
#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]) {
|
2018-01-19 23:18:09 -05:00
|
|
|
double generated_nan;
|
2018-01-19 22:16:59 -05:00
|
|
|
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);
|
2018-01-19 23:18:09 -05:00
|
|
|
return generated_nan;
|
2018-01-19 22:16:59 -05:00
|
|
|
}
|
|
|
|
else
|
|
|
|
#endif
|
|
|
|
{
|
2018-01-19 23:18:09 -05:00
|
|
|
assert(!spec || !spec[0]);
|
|
|
|
return (double)NAN;
|
2018-01-19 22:16:59 -05:00
|
|
|
}
|
|
|
|
}
|