MCPcopy Create free account
hub / github.com/Achain-Dev/Achain / num2straux

Function num2straux

src/Chain/libraries/glua/lstrlib.cpp:925–953  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

923
924
925static int num2straux(char *buff, int sz, lua_Number x) {
926 if (x != x || x == HUGE_VAL || x == -HUGE_VAL) /* inf or NaN? */
927 return l_sprintf(buff, sz, LUA_NUMBER_FMT, x); /* equal to '%g' */
928 else if (x == 0) { /* can be -0... */
929 /* create "0" or "-0" followed by exponent */
930 return l_sprintf(buff, sz, LUA_NUMBER_FMT "x0p+0", x);
931 }
932 else {
933 int e;
934 lua_Number m = l_mathop(frexp)(x, &e); /* 'x' fraction and exponent */
935 int n = 0; /* character count */
936 if (m < 0) { /* is number negative? */
937 buff[n++] = '-'; /* add signal */
938 m = -m; /* make it positive */
939 }
940 buff[n++] = '0'; buff[n++] = 'x'; /* add "0x" */
941 m = adddigit(buff, n++, m * (1 << L_NBFD)); /* add first digit */
942 e -= L_NBFD; /* this digit goes before the radix point */
943 if (m > 0) { /* more digits? */
944 buff[n++] = lua_getlocaledecpoint(); /* add radix point */
945 do { /* add as many digits as needed */
946 m = adddigit(buff, n++, m * 16);
947 } while (m > 0);
948 }
949 n += l_sprintf(buff + n, sz - n, "p%+d", e); /* add exponent */
950 lua_assert(n < sz);
951 return n;
952 }
953}
954
955
956static int lua_number2strx(lua_State *L, char *buff, int sz,

Callers 1

lua_number2strxFunction · 0.85

Calls 1

adddigitFunction · 0.85

Tested by

no test coverage detected