MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / num2straux

Function num2straux

extlibs/lua/src/lstrlib.c:1021–1050  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1019
1020
1021static int num2straux (char *buff, int sz, lua_Number x) {
1022 /* if 'inf' or 'NaN', format it like '%g' */
1023 if (x != x || x == (lua_Number)HUGE_VAL || x == -(lua_Number)HUGE_VAL)
1024 return l_sprintf(buff, sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)x);
1025 else if (x == 0) { /* can be -0... */
1026 /* create "0" or "-0" followed by exponent */
1027 return l_sprintf(buff, sz, LUA_NUMBER_FMT "x0p+0", (LUAI_UACNUMBER)x);
1028 }
1029 else {
1030 int e;
1031 lua_Number m = l_mathop(frexp)(x, &e); /* 'x' fraction and exponent */
1032 int n = 0; /* character count */
1033 if (m < 0) { /* is number negative? */
1034 buff[n++] = '-'; /* add sign */
1035 m = -m; /* make it positive */
1036 }
1037 buff[n++] = '0'; buff[n++] = 'x'; /* add "0x" */
1038 m = adddigit(buff, n++, m * (1 << L_NBFD)); /* add first digit */
1039 e -= L_NBFD; /* this digit goes before the radix point */
1040 if (m > 0) { /* more digits? */
1041 buff[n++] = lua_getlocaledecpoint(); /* add radix point */
1042 do { /* add as many digits as needed */
1043 m = adddigit(buff, n++, m * 16);
1044 } while (m > 0);
1045 }
1046 n += l_sprintf(buff + n, sz - n, "p%+d", e); /* add exponent */
1047 lua_assert(n < sz);
1048 return n;
1049 }
1050}
1051
1052
1053static 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