I don't think it's identical. Casting to long truncates, which means you
may have an answer which is off by one.
At 11:28 03/08/2002, Andi Gutmans wrote:
>I think this is a good question.
>I'm not quite sure that casting dval to long is the same as multiplying
>the two longs.
>Anyone know the answer?
>
>Andi
>
>At 02:28 PM 7/31/2002 +0200, Stefan Esser wrote:
>>Hi,
>>
>>Could someone tell me why the Zend Engine calculates every multiplication
>>2 times???
>>
>>zend_operators.c:
>>
>>ZEND_API int mul_function(zval *result, zval *op1, zval *op2 TSRMLS_DC)
>>{
>>...
>> if (op1->type == IS_LONG && op2->type == IS_LONG) {
>> double dval = (double) op1->value.lval * (double)
>> op2->value.lval;
>>
>> if ((dval > (double) LONG_MAX) || (dval < (double)
>> LONG_MIN)) {
>> result->value.dval = dval;
>> result->type = IS_DOUBLE;
>> } else {
>> result->value.lval = op1->value.lval *
>> op2->value.lval;
>> result->type = IS_LONG;
>> }
>> return SUCCESS;
>>
>>...
>>
>>should that be replaced with:
>>
>>result->value.lval = (long)dval;
>>
>>instead of calculating the multiplication again???
>>
>>
>>Stefan Esser
>>
>>
>>--
>>PHP Development Mailing List <http://www.php.net/>
>>To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>--
>PHP Development Mailing List <http://www.php.net/>
>To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php