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