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