[eeps] Multi-Parameter Typechecking BIFs

Bjorn Gustavsson <>
Wed Mar 11 08:35:15 CET 2009

On Wed, Mar 11, 2009 at 1:10 AM, Richard O'Keefe <> wrote:

> (1) This test always costs time.  But how much space
>    does it actually save?  I know it saves a boxed double
>    when the test succeeds, but what proportion of the time
>    does that actually happen?
>    Avoiding allocation saves allocation and garbage collection
>    time.  But this avoidance here costs time, so what's the
>    reason to believe that it saves more than it costs?

I have not measured so I am not sure that it actually saves anything.

But I try to share floating point values as much as possible bcause of
the way undos are implemented in Wings. Undo is very simply implemented
in Wings. It is just a queue where each element in the queue is the
entire state (all 3D objects in the scene). This works because unchanged
parts of the scene are shared.

> (2) Look at the code again:
>        V0 = if V10 =:= V20   -> V10
>              ; is_float(V10) -> 0.5*(V10+V20)
>             end
>    IEEE 754 arithmetic has been around for a *long* time
>    now.  So does it really fall to me to point out that
>    the expressions V10 and 0.5*(V10+V20) are *not*
>    always equivalent when V10 =:= V20 (in IEEE arithmetic).

While a compiler would not want to replace one expression
with the other, it is not a problem in Wings if the expressions
do not give exactly the same result.


Björn Gustavsson, Erlang/OTP, Ericsson AB

More information about the eeps mailing list