Github User Fetcher 1.0.0
C Application with Server and GUI
|
#include "duk_internal.h"
Go to the source code of this file.
Data Structures | |
struct | duk__exp_limits |
struct | duk__bigint |
struct | duk__numconv_stringify_ctx |
Macros | |
#define | DUK__IEEE_DOUBLE_EXP_BIAS 1023 |
#define | DUK__IEEE_DOUBLE_EXP_MIN (-1022) /* biased exp == 0 -> denormal, exp -1022 */ |
#define | DUK__DIGITCHAR(x) duk_lc_digits[(x)] |
#define | DUK__BI_MAX_PARTS 37 /* 37x32 = 1184 bits */ |
#define | DUK__BI_PRINT(name, x) |
#define | DUK__MAX_OUTPUT_DIGITS 1040 /* (Number.MAX_VALUE).toString(2).length == 1024, + spare */ |
#define | DUK__MAX_FORMATTED_LENGTH 1040 /* (-Number.MAX_VALUE).toString(2).length == 1025, + spare */ |
#define | DUK__NUMCONV_CTX_NUM_BIGINTS 7 |
#define | DUK__NUMCONV_CTX_BIGINTS_SIZE (sizeof(duk__bigint) * DUK__NUMCONV_CTX_NUM_BIGINTS) |
#define | DUK__DRAGON4_OUTPUT_PREINC(nc_ctx, preinc_idx, x) |
#define | DUK__NO_EXP (65536) /* arbitrary marker, outside valid exp range */ |
Variables | |
DUK_LOCAL const duk_uint8_t | duk__str2num_digits_for_radix [] |
DUK_LOCAL const duk__exp_limits | duk__str2num_exp_limits [] |
#define DUK__BI_MAX_PARTS 37 /* 37x32 = 1184 bits */ |
Definition at line 74 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__bi_add(), and duk__bi_mul().
#define DUK__BI_PRINT | ( | name, | |
x ) |
Definition at line 79 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__bi_exp_small(), duk__dragon4_generate(), duk__dragon4_scale(), duk_numconv_parse(), and duk_numconv_stringify().
#define DUK__DIGITCHAR | ( | x | ) | duk_lc_digits[(x)] |
Definition at line 18 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__dragon4_convert_and_push(), duk__dragon4_format_uint32(), and duk__dragon4_generate().
#define DUK__DRAGON4_OUTPUT_PREINC | ( | nc_ctx, | |
preinc_idx, | |||
x ) |
Definition at line 667 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__dragon4_generate().
#define DUK__IEEE_DOUBLE_EXP_BIAS 1023 |
Definition at line 15 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__dragon4_ctx_to_double(), and duk__dragon4_double_to_ctx().
#define DUK__IEEE_DOUBLE_EXP_MIN (-1022) /* biased exp == 0 -> denormal, exp -1022 */ |
Definition at line 16 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__dragon4_double_to_ctx(), and duk__dragon4_prepare().
#define DUK__MAX_FORMATTED_LENGTH 1040 /* (-Number.MAX_VALUE).toString(2).length == 1025, + spare */ |
Definition at line 632 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__dragon4_convert_and_push().
#define DUK__MAX_OUTPUT_DIGITS 1040 /* (Number.MAX_VALUE).toString(2).length == 1024, + spare */ |
Definition at line 629 of file duktape-1.5.2/src-separate/duk_numconv.c.
#define DUK__NO_EXP (65536) /* arbitrary marker, outside valid exp range */ |
Definition at line 1197 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__dragon4_convert_and_push().
#define DUK__NUMCONV_CTX_BIGINTS_SIZE (sizeof(duk__bigint) * DUK__NUMCONV_CTX_NUM_BIGINTS) |
Definition at line 636 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk__dragon4_convert_and_push(), and duk_numconv_stringify().
#define DUK__NUMCONV_CTX_NUM_BIGINTS 7 |
Definition at line 635 of file duktape-1.5.2/src-separate/duk_numconv.c.
DUK_LOCAL void duk__bi_add | ( | duk__bigint * | x, |
duk__bigint * | y, | ||
duk__bigint * | z ) |
Definition at line 229 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK__BI_MAX_PARTS, DUK_ASSERT, duk__bigint::n, and duk__bigint::v.
Referenced by duk__bi_add_small(), duk__dragon4_generate(), and duk__dragon4_scale().
DUK_LOCAL void duk__bi_add_small | ( | duk__bigint * | x, |
duk__bigint * | y, | ||
duk_uint32_t | z ) |
Definition at line 282 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_add(), duk__bi_set_small(), and DUK_ASSERT.
Referenced by duk_numconv_parse().
DUK_LOCAL int duk__bi_compare | ( | duk__bigint * | x, |
duk__bigint * | y ) |
Definition at line 156 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_ASSERT, duk__bigint::n, and duk__bigint::v.
Referenced by duk__bi_sub(), duk__dragon4_generate(), and duk__dragon4_scale().
DUK_LOCAL void duk__bi_copy | ( | duk__bigint * | x, |
duk__bigint * | y ) |
Definition at line 131 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_MEMCPY, duk__bigint::n, and duk__bigint::v.
Referenced by duk__bi_mul_copy(), duk__bi_mul_small_copy(), duk__bi_sub_copy(), duk__dragon4_generate(), duk__dragon4_prepare(), and duk__dragon4_scale().
DUK_LOCAL void duk__bi_exp_small | ( | duk__bigint * | x, |
duk_small_int_t | b, | ||
duk_small_int_t | y, | ||
duk__bigint * | t1, | ||
duk__bigint * | t2 ) |
Definition at line 571 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_mul_copy(), DUK__BI_PRINT, duk__bi_set_small(), duk__bi_twoexp(), DUK_ASSERT, DUK_DDD, and DUK_DDDPRINT.
Referenced by duk__dragon4_prepare().
DUK_LOCAL duk_small_int_t duk__bi_is_2to52 | ( | duk__bigint * | x | ) |
Definition at line 552 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_ASSERT, duk__bigint::n, and duk__bigint::v.
Referenced by duk__dragon4_prepare().
DUK_LOCAL int duk__bi_is_even | ( | duk__bigint * | x | ) |
Definition at line 536 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_ASSERT, duk__bigint::n, and duk__bigint::v.
Referenced by duk__dragon4_prepare().
DUK_LOCAL int duk__bi_is_zero | ( | duk__bigint * | x | ) |
Definition at line 541 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_ASSERT, and duk__bigint::n.
Referenced by duk_numconv_parse().
DUK_LOCAL void duk__bi_mul | ( | duk__bigint * | x, |
duk__bigint * | y, | ||
duk__bigint * | z ) |
Definition at line 398 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK__BI_MAX_PARTS, duk__bi_normalize(), DUK_ASSERT, DUK_DDD, DUK_DDDPRINT, DUK_MEMZERO, duk__bigint::n, s, and duk__bigint::v.
Referenced by duk__bi_mul_copy(), duk__bi_mul_small(), and duk__dragon4_prepare().
DUK_LOCAL void duk__bi_mul_copy | ( | duk__bigint * | x, |
duk__bigint * | y, | ||
duk__bigint * | t ) |
Definition at line 525 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_copy(), and duk__bi_mul().
Referenced by duk__bi_exp_small().
DUK_LOCAL void duk__bi_mul_small | ( | duk__bigint * | x, |
duk__bigint * | y, | ||
duk_uint32_t | z ) |
Definition at line 512 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_mul(), duk__bi_set_small(), and DUK_ASSERT.
Referenced by duk__bi_mul_small_copy(), duk__dragon4_generate(), duk__dragon4_prepare(), duk__dragon4_scale(), and duk_numconv_parse().
DUK_LOCAL void duk__bi_mul_small_copy | ( | duk__bigint * | x, |
duk_uint32_t | y, | ||
duk__bigint * | t ) |
Definition at line 531 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_copy(), and duk__bi_mul_small().
Referenced by duk__dragon4_generate(), duk__dragon4_scale(), and duk_numconv_parse().
DUK_LOCAL void duk__bi_normalize | ( | duk__bigint * | x | ) |
Definition at line 116 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_ASSERT, duk__bigint::n, and duk__bigint::v.
Referenced by duk__bi_mul(), duk__bi_sub(), and duk__dragon4_double_to_ctx().
DUK_LOCAL void duk__bi_set_small | ( | duk__bigint * | x, |
duk_uint32_t | v ) |
Definition at line 142 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_ASSERT, duk__bigint::n, and duk__bigint::v.
Referenced by duk__bi_add_small(), duk__bi_exp_small(), duk__bi_mul_small(), duk__dragon4_prepare(), and duk_numconv_parse().
DUK_LOCAL void duk__bi_sub | ( | duk__bigint * | x, |
duk__bigint * | y, | ||
duk__bigint * | z ) |
Definition at line 334 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_compare(), duk__bi_normalize(), DUK_ASSERT, duk__bigint::n, and duk__bigint::v.
Referenced by duk__bi_sub_copy().
DUK_LOCAL void duk__bi_sub_copy | ( | duk__bigint * | x, |
duk__bigint * | y, | ||
duk__bigint * | t ) |
Definition at line 392 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_copy(), and duk__bi_sub().
Referenced by duk__dragon4_generate().
DUK_LOCAL void duk__bi_twoexp | ( | duk__bigint * | x, |
duk_small_int_t | y ) |
Definition at line 559 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK_ASSERT, DUK_MEMZERO, duk__bigint::n, and duk__bigint::v.
Referenced by duk__bi_exp_small().
DUK_LOCAL void duk__dragon4_convert_and_push | ( | duk__numconv_stringify_ctx * | nc_ctx, |
duk_context * | ctx, | ||
duk_small_int_t | radix, | ||
duk_small_int_t | digits, | ||
duk_small_uint_t | flags, | ||
duk_small_int_t | neg ) |
Definition at line 1199 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::abs_pos, duk__numconv_stringify_ctx::count, duk__numconv_stringify_ctx::digits, DUK__DIGITCHAR, duk__dragon4_format_uint32(), DUK__MAX_FORMATTED_LENGTH, DUK__NO_EXP, DUK__NUMCONV_CTX_BIGINTS_SIZE, DUK_ASSERT, DUK_DDD, DUK_DDDPRINT, DUK_N2S_FLAG_FORCE_EXP, DUK_N2S_FLAG_NO_ZERO_PAD, duk_push_lstring(), duk__numconv_stringify_ctx::f, duk__numconv_stringify_ctx::is_fixed, and duk__numconv_stringify_ctx::k.
Referenced by duk_numconv_stringify().
DUK_LOCAL void duk__dragon4_ctx_to_double | ( | duk__numconv_stringify_ctx * | nc_ctx, |
duk_double_t * | x ) |
Definition at line 1392 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::count, duk__numconv_stringify_ctx::digits, duk__dragon4_fixed_format_round(), DUK__IEEE_DOUBLE_EXP_BIAS, DUK_ASSERT, DUK_ASSERT_DISABLE, DUK_DBLUNION_GET_DOUBLE, DUK_DBLUNION_GET_HIGH32, DUK_DBLUNION_GET_LOW32, DUK_DBLUNION_SET_HIGH32, DUK_DBLUNION_SET_LOW32, DUK_DDD, DUK_DDDPRINT, DUK_MEMZERO, and duk__numconv_stringify_ctx::k.
Referenced by duk_numconv_parse().
DUK_LOCAL void duk__dragon4_double_to_ctx | ( | duk__numconv_stringify_ctx * | nc_ctx, |
duk_double_t | x ) |
Definition at line 1347 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__bi_normalize(), DUK__IEEE_DOUBLE_EXP_BIAS, DUK__IEEE_DOUBLE_EXP_MIN, DUK_ASSERT, DUK_DBLUNION_GET_HIGH32, DUK_DBLUNION_GET_LOW32, DUK_DBLUNION_SET_DOUBLE, duk__numconv_stringify_ctx::e, duk__numconv_stringify_ctx::f, duk__bigint::n, and duk__bigint::v.
Referenced by duk_numconv_stringify().
DUK_LOCAL duk_small_int_t duk__dragon4_fixed_format_round | ( | duk__numconv_stringify_ctx * | nc_ctx, |
duk_small_int_t | round_idx ) |
Definition at line 1128 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::B, duk__numconv_stringify_ctx::count, duk__numconv_stringify_ctx::digits, DUK_DDD, DUK_DDDPRINT, DUK_MEMMOVE, and duk__numconv_stringify_ctx::k.
Referenced by duk__dragon4_ctx_to_double(), and duk_numconv_stringify().
DUK_LOCAL duk_size_t duk__dragon4_format_uint32 | ( | duk_uint8_t * | buf, |
duk_uint32_t | x, | ||
duk_small_int_t | radix ) |
Definition at line 673 of file duktape-1.5.2/src-separate/duk_numconv.c.
References DUK__DIGITCHAR, DUK_ASSERT, and DUK_MEMMOVE.
Referenced by duk__dragon4_convert_and_push(), and duk_numconv_stringify().
DUK_LOCAL void duk__dragon4_generate | ( | duk__numconv_stringify_ctx * | nc_ctx | ) |
Definition at line 953 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::abs_pos, duk__numconv_stringify_ctx::B, duk__numconv_stringify_ctx::count, duk__numconv_stringify_ctx::digits, duk__bi_add(), duk__bi_compare(), duk__bi_copy(), duk__bi_mul_small(), duk__bi_mul_small_copy(), DUK__BI_PRINT, duk__bi_sub_copy(), DUK__DIGITCHAR, DUK__DRAGON4_OUTPUT_PREINC, DUK_DDD, DUK_DDDPRINT, DUK_MEMZERO, duk__numconv_stringify_ctx::high_ok, duk__numconv_stringify_ctx::is_fixed, duk__numconv_stringify_ctx::k, duk__numconv_stringify_ctx::low_ok, duk__numconv_stringify_ctx::mm, duk__numconv_stringify_ctx::mp, duk__numconv_stringify_ctx::r, duk__numconv_stringify_ctx::req_digits, duk__numconv_stringify_ctx::s, duk__numconv_stringify_ctx::t1, and duk__numconv_stringify_ctx::t2.
Referenced by duk_numconv_parse(), and duk_numconv_stringify().
DUK_LOCAL void duk__dragon4_prepare | ( | duk__numconv_stringify_ctx * | nc_ctx | ) |
Definition at line 706 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::b, duk__bi_copy(), duk__bi_exp_small(), duk__bi_is_2to52(), duk__bi_is_even(), duk__bi_mul(), duk__bi_mul_small(), duk__bi_set_small(), DUK__IEEE_DOUBLE_EXP_MIN, DUK_DDD, DUK_DDDPRINT, duk__numconv_stringify_ctx::e, duk__numconv_stringify_ctx::f, duk__numconv_stringify_ctx::high_ok, duk__numconv_stringify_ctx::is_s2n, duk__numconv_stringify_ctx::low_ok, duk__numconv_stringify_ctx::mm, duk__numconv_stringify_ctx::mp, duk__numconv_stringify_ctx::r, duk__numconv_stringify_ctx::s, duk__numconv_stringify_ctx::t1, duk__numconv_stringify_ctx::t2, and duk__numconv_stringify_ctx::unequal_gaps.
Referenced by duk_numconv_parse(), and duk_numconv_stringify().
DUK_LOCAL void duk__dragon4_scale | ( | duk__numconv_stringify_ctx * | nc_ctx | ) |
Definition at line 848 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::B, duk__bi_add(), duk__bi_compare(), duk__bi_copy(), duk__bi_mul_small(), duk__bi_mul_small_copy(), DUK__BI_PRINT, DUK_DDD, DUK_DDDPRINT, duk__numconv_stringify_ctx::high_ok, duk__numconv_stringify_ctx::k, duk__numconv_stringify_ctx::low_ok, duk__numconv_stringify_ctx::mm, duk__numconv_stringify_ctx::mp, duk__numconv_stringify_ctx::r, duk__numconv_stringify_ctx::s, duk__numconv_stringify_ctx::t1, duk__numconv_stringify_ctx::t2, and duk__numconv_stringify_ctx::unequal_gaps.
Referenced by duk_numconv_parse(), and duk_numconv_stringify().
DUK_INTERNAL void duk_numconv_parse | ( | duk_context * | ctx, |
duk_small_int_t | radix, | ||
duk_small_uint_t | flags ) |
Definition at line 1744 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::abs_pos, duk__numconv_stringify_ctx::b, duk__numconv_stringify_ctx::B, duk__numconv_stringify_ctx::count, duk__bi_add_small(), duk__bi_is_zero(), duk__bi_mul_small(), duk__bi_mul_small_copy(), DUK__BI_PRINT, duk__bi_set_small(), duk__dragon4_ctx_to_double(), duk__dragon4_generate(), duk__dragon4_prepare(), duk__dragon4_scale(), duk__str2num_digits_for_radix, duk__str2num_exp_limits, DUK_ASSERT, DUK_DDD, DUK_DDDPRINT, DUK_DOUBLE_INFINITY, DUK_ERROR_RANGE, duk_get_tval(), DUK_HSTRING_GET_DATA, DUK_HTHREAD_STRING_INFINITY, duk_pop(), duk_push_nan(), duk_push_number(), duk_require_hstring(), DUK_S2N_FLAG_ALLOW_AUTO_HEX_INT, DUK_S2N_FLAG_ALLOW_AUTO_OCT_INT, DUK_S2N_FLAG_ALLOW_EMPTY_AS_ZERO, DUK_S2N_FLAG_ALLOW_EMPTY_FRAC, DUK_S2N_FLAG_ALLOW_EXP, DUK_S2N_FLAG_ALLOW_FRAC, DUK_S2N_FLAG_ALLOW_GARBAGE, DUK_S2N_FLAG_ALLOW_INF, DUK_S2N_FLAG_ALLOW_LEADING_ZERO, DUK_S2N_FLAG_ALLOW_MINUS, DUK_S2N_FLAG_ALLOW_NAKED_FRAC, DUK_S2N_FLAG_ALLOW_PLUS, DUK_S2N_FLAG_TRIM_WHITE, DUK_S2N_MAX_EXPONENT, DUK_STRNCMP, duk_trim(), duk__numconv_stringify_ctx::e, duk__numconv_stringify_ctx::f, duk__numconv_stringify_ctx::is_fixed, duk__numconv_stringify_ctx::is_s2n, duk__numconv_stringify_ctx::k, duk__numconv_stringify_ctx::mm, duk__numconv_stringify_ctx::mp, duk__bigint::n, NULL, duk__numconv_stringify_ctx::r, duk__numconv_stringify_ctx::req_digits, duk__numconv_stringify_ctx::s, duk__numconv_stringify_ctx::t1, duk__exp_limits::upper, and duk__bigint::v.
DUK_INTERNAL void duk_numconv_stringify | ( | duk_context * | ctx, |
duk_small_int_t | radix, | ||
duk_small_int_t | digits, | ||
duk_small_uint_t | flags ) |
Definition at line 1541 of file duktape-1.5.2/src-separate/duk_numconv.c.
References duk__numconv_stringify_ctx::abs_pos, duk__numconv_stringify_ctx::b, duk__numconv_stringify_ctx::B, duk__numconv_stringify_ctx::count, duk__numconv_stringify_ctx::digits, DUK__BI_PRINT, duk__dragon4_convert_and_push(), duk__dragon4_double_to_ctx(), duk__dragon4_fixed_format_round(), duk__dragon4_format_uint32(), duk__dragon4_generate(), duk__dragon4_prepare(), duk__dragon4_scale(), DUK__NUMCONV_CTX_BIGINTS_SIZE, DUK_ASSERT, DUK_DDD, DUK_DDDPRINT, DUK_FP_INFINITE, DUK_FP_NAN, DUK_FP_ZERO, DUK_FPCLASSIFY, DUK_MEMZERO, DUK_N2S_FLAG_FIXED_FORMAT, DUK_N2S_FLAG_FRACTION_DIGITS, duk_pop(), duk_push_hstring_stridx(), duk_push_lstring(), duk_require_number(), DUK_SIGNBIT, DUK_STRIDX_INFINITY, DUK_STRIDX_MINUS_INFINITY, DUK_STRIDX_NAN, duk__numconv_stringify_ctx::e, duk__numconv_stringify_ctx::f, duk__numconv_stringify_ctx::is_fixed, duk__numconv_stringify_ctx::is_s2n, duk__numconv_stringify_ctx::k, duk__numconv_stringify_ctx::mm, duk__numconv_stringify_ctx::mp, duk__numconv_stringify_ctx::r, duk__numconv_stringify_ctx::req_digits, and duk__numconv_stringify_ctx::s.
DUK_LOCAL const duk_uint8_t duk__str2num_digits_for_radix[] |
Definition at line 35 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk_numconv_parse().
DUK_LOCAL const duk__exp_limits duk__str2num_exp_limits[] |
Definition at line 47 of file duktape-1.5.2/src-separate/duk_numconv.c.
Referenced by duk_numconv_parse().