On Saturday, 23 September 2017 at 18:23:12 UTC, Juraj Mojzis
wrote:
Hi,
browsing trough phobos bugzilla I found a couple of open issues
regarding CTFE and basic math functions ( Issue 4177, 5227).
It looks to me that at least floor/ceil could by fixed by a
simple:
if (__ctfe) return simple_floor_impl(x);
But that looks too easy and would surely be implemented
already. So I would like to ask what the real problems are.
Thanks,
Juraj
"if (__ctfe) {}" is a test happening at runtime. Both the if and
the else branches got compiled, this implies:
- more code to cache
- slower code
just to allow CTFE.
CTFE rounding can be more simply done using cast(int), although
for negative numbers the behavior is not the same.