Implementing remainder operation according to ECMA. Checking that implementations of other arithmetic operations already conform to ECMA and removing corresponding TODOs from them.

This commit is contained in:
Ruben Ayrapetyan
2014-09-02 15:09:36 +04:00
parent afc21fad8e
commit aa86a3643b
4 changed files with 76 additions and 10 deletions
+25
View File
@@ -350,6 +350,31 @@ ecma_number_get_fraction_and_exponent (ecma_number_t num, /**< ecma-number */
return ECMA_NUMBER_FRACTION_WIDTH;
} /* ecma_number_get_fraction_and_exponent */
/**
* Make normalised positive Number from given fraction and exponent
*
* @return ecma-number
*/
ecma_number_t
ecma_number_make_normal_positive_from_fraction_and_exponent (uint64_t fraction, /**< fraction */
int32_t exponent) /**< exponent */
{
union
{
ecma_number_fields_t fields;
ecma_number_t value;
} u;
uint32_t biased_exp = (uint32_t) (exponent + ecma_number_exponent_bias);
JERRY_ASSERT (biased_exp > 0 && biased_exp < (1u << ECMA_NUMBER_BIASED_EXP_WIDTH) - 1);
u.fields.biased_exp = biased_exp & ((1u << ECMA_NUMBER_BIASED_EXP_WIDTH) - 1);
u.fields.fraction = fraction & ((1u << ECMA_NUMBER_FRACTION_WIDTH) - 1);
u.fields.sign = 0;
return u.value;
} /* ecma_number_make_normal_positive_from_fraction_and_exponent */
/**
* Negate ecma-number
*
+2
View File
@@ -124,6 +124,8 @@ extern bool ecma_number_is_infinity (ecma_number_t num);
extern int32_t ecma_number_get_fraction_and_exponent (ecma_number_t num,
uint64_t *out_fraction_p,
int32_t *out_exponent_p);
extern ecma_number_t ecma_number_make_normal_positive_from_fraction_and_exponent (uint64_t fraction,
int32_t exponent);
extern ecma_number_t ecma_number_negate (ecma_number_t num);
/* ecma-helpers-values-collection.c */