commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luc Maisonobe <...@spaceroots.org>
Subject Re: [Math] Deprecate "pow(int, long)" and "pow(long,long)" in "ArithmeticUtils"
Date Wed, 30 Oct 2013 08:24:47 GMT
Le 29/10/2013 23:04, Gilles a écrit :
> On Tue, 29 Oct 2013 20:14:19 +0100, Luc Maisonobe wrote:
>> Le 29/10/2013 15:00, Gilles a écrit :
>>> Hello.
>>
>> Hi Gilles,
>>
>>>
>>> While working on MATH-1047, I wondered about the usefulness of those
>>> two methods. Excluding the trivial case (base=|1|), the result will
>>> overflow as soon as the exponent is larger than 31, when base=|2|,
>>> and sooner the larger the base.
>>> Hence, the methods amount to syntactic sugar to spare a cast from
>>> a "long" to an "int" exponent.
>>> IMO, this is not worth the number of source code lines.
>>> Unless there is an objection, I propose to deprecate those methods
>>> in 3.3 and remove them in 4.0.
>>
>> There were three main reasons for this method :
>>
>>  - in many cases, very low (and fixed) exponents are often encountered
>>    (say exponents up to half a dozen or so),
>>  - computation with long in Java bytecode is not done the same way as
>>    int because it needs two successive variable slots and requires
>>    successive memory loading, and thus is slower (of course, this effect
>>    disappears when the JIT compiler converts everything to native code
>>    if the processor is 64 bits),
>>  - forcing the user to add a cast clutters the code.
>>
>> As always, your mileage may vary.
>>
> 
> I must be missing something (sorry!): I propose to remove the methods were
> the exponent is a "long", and as I understand it, you give reasons for
> doing
> so:

Sorry, I misread the subject. I thought you wanted to remove the
pow(int,int) and preserve only pow(long,long).


> 1. Why would one want/need to use a "long" for a _small_ value?
> 2. Moreover you say that using a "long" is slower; thus, a second reason
> for
>    not calling those methods.
> 3. A cast would only be necessary if the user chooses to use a "long"
> anyway,
>    even if it is neither necessary (cf 1.) nor desirable (cf. 2.).

Go ahead with removing the long exponent.

Luc

> 
> Best,
> Gilles
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message