Why is this code slow?
Csaba
feketecsaba at gmail.com
Tue Mar 26 12:13:54 UTC 2024
On Sunday, 24 March 2024 at 21:21:13 UTC, kdevel wrote:
>
> Usually you do not translate mathematical expressions directly
> into code:
>
> ```
> n += pow(-1.0, i - 1.0) / (i * 2.0 - 1.0);
> ```
>
> The term containing the `pow` invocation computes the
> alternating sequence -1, 1, -1, ..., which can be replaced by
> e.g.
>
> ```
> immutable int [2] sign = [-1, 1];
> n += sign [i & 1] / (i * 2.0 - 1.0);
> ```
>
> This saves the expensive call to the pow function.
I know that the code can be simplified/optimized, I just wanted
to compare the same expression in C and D.
More information about the Digitalmars-d-learn
mailing list