pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:3771:    a = sp[-2].u.float_number;    b = (double)sp[-1].u.integer;    goto res_is_powf;       case TWO_TYPES(T_INT,T_FLOAT):    a = (double)sp[-2].u.integer;    b = (double)sp[-1].u.float_number;       res_is_powf:    { -  double r = pow( a, b ); -  if( r != HUGE_VAL ) -  { +     sp-=2; -  push_float( r ); +  push_float( pow( a, b ) );    return;    } -  } -  /* When float overflows, switch to bignums. FIXME: mpf? */ -  /* fallthrough */ -  +     default:    stack_swap();    convert_stack_top_to_bignum();    stack_swap();    /* fallthrough again (this is the slow path).. */       case TWO_TYPES(T_OBJECT,T_INT):    case TWO_TYPES(T_OBJECT,T_OBJECT):    if( !call_lfun( LFUN_POW, LFUN_RPOW ) )    Pike_error("Illegal argument 1 to `**.\n");