Don wrote:
Lars T. Kyllingstad wrote:
Is there ever any reason to use float or double in calculations? I mean, when does one *not* want maximum precision? Will code using float or double run faster than code using real?

I understand they are needed for I/O and compatibility purposes, so I am by no means suggesting they be removed from the language. I am merely asking out of curiosity.

-Lars

Size. Since modern CPUs are memory-bandwidth limited, it's always going to be MUCH faster to use float[] instead of real[] once the array size gets too big to fit in the cache. Maybe around 2000 elements or so.

Rule of thumb: use real for temporary values, use float or double for arrays.


The reason I'm asking is that I've templated the numerical routines I've written, so that the user can choose which floating-point type to use. Then I started wondering whether I should in fact always use real for temporary values inside the routines, for precision's sake, or whether this would reduce performance significantly.

From the answers I've gotten to my question (thanks everyone, BTW!), It's not immediately clear to me what is the best choice in general. (Perhaps it would be best to have two template parameters, one for input/output precision and one for working precision?)

Functions in std.math are defined in a lot of different ways:
  - separate overloaded functions for float, double and real
  - like the above, only float and double versions cast to real
    and call real version
  - only real version
  - templated

Is there some rationale behind these choices?

-Lars

Reply via email to