Re: powExpressions work at ctfe

2016-05-11 Thread Manu via Digitalmars-d
On 9 May 2016 at 23:02, Stefan Koch via Digitalmars-d
 wrote:
> On Monday, 9 May 2016 at 12:49:16 UTC, Stefan Koch wrote:
>>
>> On Monday, 9 May 2016 at 12:33:33 UTC, Stefan Koch wrote:
>>>
>>> On Monday, 9 May 2016 at 12:24:18 UTC, Timon Gehr wrote:

 [...]
>>>
>>>
>>> I see.
>>> I did not test a floating point value at the left-hand site.
>>> working on a fix.
>>
>>
>> okay the workaround would be just to avoid pointer casts.
>> And use bitwise operations to convert the values.
>> Another option is not to jit std.math routines at ctfe.
>>
>> I would prefer the second option, any opinions ?
>
>
> Yet another option is using soft-float for ctfe, that would also prevent
> issues with cross-compiled binarys that have ctfe in them.

This is almost certainly the correct solution... at least a soft-float
implementation of pow, since it's an operator ;)


Re: powExpressions work at ctfe

2016-05-09 Thread Jonathan M Davis via Digitalmars-d
On Monday, May 09, 2016 13:02:50 Stefan Koch via Digitalmars-d wrote:
> that would also
> prevent issues with cross-compiled binarys that have ctfe in them.

That's going to be pretty critical in the long run, especially now that the
compiler frontend is in D.

- Jonathan M Davis



Re: powExpressions work at ctfe

2016-05-09 Thread Stefan Koch via Digitalmars-d

On Monday, 9 May 2016 at 12:49:16 UTC, Stefan Koch wrote:

On Monday, 9 May 2016 at 12:33:33 UTC, Stefan Koch wrote:

On Monday, 9 May 2016 at 12:24:18 UTC, Timon Gehr wrote:

[...]


I see.
I did not test a floating point value at the left-hand site.
working on a fix.


okay the workaround would be just to avoid pointer casts.
And use bitwise operations to convert the values.
Another option is not to jit std.math routines at ctfe.

I would prefer the second option, any opinions ?


Yet another option is using soft-float for ctfe, that would also 
prevent issues with cross-compiled binarys that have ctfe in them.


Re: powExpressions work at ctfe

2016-05-09 Thread Stefan Koch via Digitalmars-d

On Monday, 9 May 2016 at 12:33:33 UTC, Stefan Koch wrote:

On Monday, 9 May 2016 at 12:24:18 UTC, Timon Gehr wrote:

On 09.05.2016 11:24, Stefan Koch wrote:

At Dconf Manu asked to use pow expressions at CTFE.
Luckily he can.
powExpressions work at ctfe.


enum x=2.4^^4.5;

DMD master:

./../../phobos/std/math.d(4857): Error: cannot convert  
to ushort* at compile time
./../../phobos/std/math.d(6113):called from here: 
isNaN(y)
./../../phobos/std/math.d(6303):called from here: 
impl(cast(real)x, cast(real)y)

ctfepow.d(1):called from here: pow(2.4, 4.5)


I see.
I did not test a floating point value at the left-hand site.
working on a fix.


okay the workaround would be just to avoid pointer casts.
And use bitwise operations to convert the values.
Another option is not to jit std.math routines at ctfe.

I would prefer the second option, any opinions ?


Re: powExpressions work at ctfe

2016-05-09 Thread Stefan Koch via Digitalmars-d

On Monday, 9 May 2016 at 12:24:18 UTC, Timon Gehr wrote:

On 09.05.2016 11:24, Stefan Koch wrote:

At Dconf Manu asked to use pow expressions at CTFE.
Luckily he can.
powExpressions work at ctfe.


enum x=2.4^^4.5;

DMD master:

./../../phobos/std/math.d(4857): Error: cannot convert  to 
ushort* at compile time
./../../phobos/std/math.d(6113):called from here: 
isNaN(y)
./../../phobos/std/math.d(6303):called from here: 
impl(cast(real)x, cast(real)y)

ctfepow.d(1):called from here: pow(2.4, 4.5)


I see.
I did not test a floating point value at the left-hand site.
working on a fix.


Re: powExpressions work at ctfe

2016-05-09 Thread Timon Gehr via Digitalmars-d

On 09.05.2016 11:24, Stefan Koch wrote:

At Dconf Manu asked to use pow expressions at CTFE.
Luckily he can.
powExpressions work at ctfe.


enum x=2.4^^4.5;

DMD master:

./../../phobos/std/math.d(4857): Error: cannot convert  to ushort* 
at compile time

./../../phobos/std/math.d(6113):called from here: isNaN(y)
./../../phobos/std/math.d(6303):called from here: 
impl(cast(real)x, cast(real)y)

ctfepow.d(1):called from here: pow(2.4, 4.5)