Re: Why isn't there more if(__ctfe) in std.math ?

2017-09-23 Thread ag0aep6g via Digitalmars-d-learn

On 09/23/2017 11:46 PM, user1234 wrote:
"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 is a constant, though. Any half-decent optimizer will throw away 
the path that's not taken. dmd does it even without the optimization 
flag -O.


Re: Why isn't there more if(__ctfe) in std.math ?

2017-09-23 Thread user1234 via Digitalmars-d-learn
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.


Why isn't there more if(__ctfe) in std.math ?

2017-09-23 Thread Juraj Mojzis via Digitalmars-d-learn

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