38 if (precision < 0 && num->n_len < (
size_t) (-(precision +
Z_L(1))) + 1) {
79 (*result)->n_value[0] = 1;
80 (*result)->n_sign = num->
n_sign;
85 if (precision >= 0 && num->
n_scale <= precision) {
86 if (num->
n_scale == precision) {
87 *
result = bc_copy_num(num);
88 }
else if(num->
n_scale < precision) {
90 (*result)->n_sign = num->
n_sign;
100 size_t rounded_len = num->
n_len + precision;
107 if (rounded_len == 0) {
113 (*result)->n_sign = num->
n_sign;
115 const char *nptr = num->
n_value + rounded_len;
122 }
else if (*nptr < 5) {
132 }
else if (*nptr < 5) {
141 }
else if (*nptr > 0) {
150 }
else if (*nptr > 0) {
172 while ((
count > 0) && (*nptr == 0)) {
189 if (rounded_len == 0 || num->
n_value[rounded_len - 1] % 2 == 0) {
195 if (rounded_len != 0 && num->
n_value[rounded_len - 1] % 2 == 1) {
207 if (rounded_len == 0) {
213 scaled_one->
n_value[rounded_len - 1] = 1;
216 tmp->
n_sign = (*result)->n_sign;
226 (*result)->n_sign =
PLUS;
count(Countable|array $value, int $mode=COUNT_NORMAL)
bool bc_is_zero(bc_num num)
struct bc_struct * bc_num
#define bc_new_num(length, scale)
bc_num _bc_do_add(bc_num n1, bc_num n2)
#define PHP_ROUND_TOWARD_ZERO
#define PHP_ROUND_HALF_UP
#define PHP_ROUND_HALF_DOWN
#define PHP_ROUND_HALF_EVEN
#define PHP_ROUND_AWAY_FROM_ZERO
#define PHP_ROUND_HALF_ODD
#define PHP_ROUND_CEILING
void bc_round(bc_num num, zend_long precision, zend_long mode, bc_num *result)
#define EMPTY_SWITCH_DEFAULT_CASE()
#define UNEXPECTED(condition)