Fix sign of number remainder (ecma_op_number_remainder).

JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com
This commit is contained in:
Ruben Ayrapetyan 2015-07-11 00:08:12 +03:00 committed by Evgeny Gavrin
parent f8770020f7
commit c84d31ce9e
2 changed files with 14 additions and 1 deletions

View File

@ -683,7 +683,15 @@ ecma_number_calc_remainder (ecma_number_t left_num, /**< left operand */
ecma_number_t q = ecma_number_trunc (ecma_number_divide (n, d));
return ecma_number_substract (n, ecma_number_multiply (d, q));
ecma_number_t r = ecma_number_substract (n, ecma_number_multiply (d, q));
if (ecma_number_is_zero (r)
&& ecma_number_is_negative (n))
{
r = ecma_number_negate (r);
}
return r;
} /* ecma_number_calc_remainder */
/**

View File

@ -32,3 +32,8 @@ assert((number % 79) == 2);
var num1 = 1234567, num2 = 1234000;
assert((num1 % num2) == 567);
assert (1 / (-1 % -1) < 0);
assert (1 / (-1 % 1) < 0);
assert (1 / (1 % -1) > 0);
assert (1 / (1 % 1) > 0);