[erlang-questions] Arithmetic expressions [WAS: Re: Binaries problem]

Kostis Sagonas <>
Wed May 2 23:30:31 CEST 2007


Jim Thompson wrote:
> Kostis Sagonas wrote:
>> Jim Thompson wrote:
> 
>>> Eshell V5.5.2  (abort with ^G)
>>> 1> round(math:pow(2,21))-3.
>>> 2097149
>>
>> Unrelated to the topic, but we had weird cases where the HiPE compiler 
>> was crashing when compiling binaries in R11B-3.  They were all related 
>> to use of an expression that was similar to the one Jim is using:
>>
>>     round(math:pow(2,N)) - K.
>>
>> In examining the problem, we realized that this was a very stupid way of
>> denoting this quantity.  We solved the problem (in R11B-4) by adopting 
>> a much better (and significantly faster) way of writing the same 
>> expression in Erlang:
>>
>>     (2 bsl (N-1)) - K
>>
>> I suspect this "round + math:pow(2)" combination is not so uncommon 
>> after all ... although there is really no reason to use it.
> 
> I am an Erlang newbie, and therefore stupid.   Ignore what I say, or type.

But this is exactly the opposite of my point!

My point was that even very seasoned Erlang programmers instinctively 
write the expression "round + math:pow(2)" instead of that with 'bsl' 
first.  No idea why this is so, but I found it extremely interesting 
that I've run across this expression twice in such a short period of 
time.  I am sure you and us (the HiPE group) are not its only users.

Cheers,
Kostis



More information about the erlang-questions mailing list