digitalmars.D.learn - floating-WTF
- Caligo (30/30) Jan 23 2012 alias double Real;
- sclytrack (14/44) Jan 24 2012 This: (with float)
- sclytrack (11/62) Jan 24 2012 t=0.750000, a=-2.000000, b=2.000000, s1=-0.500000, s2=0.000000,
- sclytrack (27/30) Jan 24 2012 ---------------------------------------
- Dejan Lekic (11/11) Jan 24 2012 No, it is not a bug.
- sclytrack (2/13) Jan 24 2012 I don't understand.
- sclytrack (20/38) Jan 24 2012 I see now I forgot the input values. Sorry my IQ is 87.
- Caligo (3/14) Jan 24 2012 wow, what a great hint.
- sclytrack (43/43) Jan 24 2012 void calculate2(float a, float b)
- dennis luehring (6/49) Jan 24 2012 can you give us a complete out-of-the-box compileable example (with
- dennis luehring (2/2) Jan 24 2012 double works correct under dmd64, but float not?
- sclytrack (110/165) Jan 24 2012 Yes, I missed my lessons in clear communication.
- dennis luehring (12/182) Jan 24 2012 Am 24.01.2012 18:49, schrieb sclytrack:
- Caligo (3/3) Jan 24 2012 How did you compile it? As in my original post, it matters how you
- dennis luehring (4/7) Jan 24 2012 im on win7 (64bit) - but the windows dmd2.057 isn't able to produce x64
- %u (1/1) Jan 24 2012 Shouldn't this go into 'digitalmars.D' ?
- Timon Gehr (2/3) Jan 24 2012 It should go straight to the bug tracker.
- sclytrack (2/5) Jan 28 2012 Issue 7391 - floating wtf dmd 2.057 64
- Timon Gehr (2/8) Jan 28 2012 Thanks!
- Caligo (3/12) Jan 28 2012 I've already reported, and it's been fixed in the latest:
- sclytrack (3/17) Jan 28 2012 Now I've waisted Walter's precious time.
- Caligo (3/5) Jan 28 2012 I should have made a post about the fact that I had already bug
- sclytrack (9/10) Jan 28 2012 Prior to filing the bug I tried to compile dmd from source.
- Jonathan M Davis (3/15) Jan 29 2012 Don't forget druntime. You need it as well if you want to build Phobos.
alias double Real;
//alias float Real;
// simple linear interpolation; I partitioned the internals to help me
figure out what was happening.
Real lerp(Real t, Real a, Real b){
Real s1 = (1.0 - t) * a;
Real s2 = t * b;
Real rt1 = s1 + s2;
Real rt2 = ((1.0 - t) * a) + (t * b);
writefln("t=%.2f, a=%.2f, b=%.2f, s1=%.2f, s2=%.2f, rt1=%.2f,
rt2=%.2f :::", t, a, b, s1, s2, rt1, rt2);
return rt2;
}
unittest{
writeln(lerp(0.75, -2.0, 2.0)); // the correct result is 1.0
}
compile and run with 'dmd -inline -unittest' and the output should be:
t=0.75, a=-2.00, b=2.00, s1=-0.50, s2=1.50, rt1=1.00, rt2=1.00 :::
1
Now, change 'Real' to float by uncommenting the second line and
compile and run with 'dmd -unittest'. This is what I get for the
output:
t=0.75, a=0.00, b=2.00, s1=-0.50, s2=0.00, rt1=-0.50, rt2=1.50 :::
1.5
I have no idea why 'a' is zero. 'rt1' and 'rt2' do not have the same
value, and 'lerp' does not return 1.0. Compiling with 'dmd -inline
-unittest' does produce the correct result as before, though.
You can play with different compiler options, such as -O, to get the
same weird behavior.
I presume this is another DMD bug?
Jan 23 2012
On 01/24/2012 04:13 AM, Caligo wrote:alias double Real; //alias float Real; // simple linear interpolation; I partitioned the internals to help me figure out what was happening. Real lerp(Real t, Real a, Real b){ Real s1 = (1.0 - t) * a; Real s2 = t * b; Real rt1 = s1 + s2; Real rt2 = ((1.0 - t) * a) + (t * b); writefln("t=%.2f, a=%.2f, b=%.2f, s1=%.2f, s2=%.2f, rt1=%.2f, rt2=%.2f :::", t, a, b, s1, s2, rt1, rt2); return rt2; } unittest{ writeln(lerp(0.75, -2.0, 2.0)); // the correct result is 1.0 } compile and run with 'dmd -inline -unittest' and the output should be: t=0.75, a=-2.00, b=2.00, s1=-0.50, s2=1.50, rt1=1.00, rt2=1.00 ::: 1 Now, change 'Real' to float by uncommenting the second line and compile and run with 'dmd -unittest'. This is what I get for the output: t=0.75, a=0.00, b=2.00, s1=-0.50, s2=0.00, rt1=-0.50, rt2=1.50 ::: 1.5This: (with float) writefln("t=%.2f, a=%.2f, b=%.2f, s1=%.2f, s2=%.2f, rt1=%.2f, rt2=%.2f :::", t, a, b, s1, s2, rt1, rt2); writefln("t=%.2f, a=%f, b=%.2f, s1=%.2f, s2=%.2f, rt1=%.2f, rt2=%.2f :::", t, a, b, s1, s2, rt1, rt2); Outputs: (with float) t=0.75, a=0.00, b=2.00, s1=-0.50, s2=0.00, rt1=-0.50, rt2=1.50 ::: t=0.75, a=-2.000000, b=2.00, s1=-0.50, s2=0.00, rt1=-0.50, rt2=1.50 ::: difference: %.2f ---> %fI have no idea why 'a' is zero. 'rt1' and 'rt2' do not have the same value, and 'lerp' does not return 1.0. Compiling with 'dmd -inline -unittest' does produce the correct result as before, though. You can play with different compiler options, such as -O, to get the same weird behavior. I presume this is another DMD bug?
Jan 24 2012
t=0.750000, a=-2.000000, b=2.000000, s1=-0.500000, s2=0.000000, rt1=-0.500000, rt2=1.500000 ::: 1.5 t = 0.75 ok a = -2.0 ok b = 2.0 ok s1 = -0.5 ok s2 = 1.5 //<----different above says s2 = 0.0 rt1= 1.0 = s1 + s2 semi-ok depends on s2. rt2 = 1.0 = ((1.0 - t) * a) + (t * b); goes nuts. On 01/24/2012 10:03 AM, sclytrack wrote:On 01/24/2012 04:13 AM, Caligo wrote:alias double Real; //alias float Real; // simple linear interpolation; I partitioned the internals to help me figure out what was happening. Real lerp(Real t, Real a, Real b){ Real s1 = (1.0 - t) * a; Real s2 = t * b; Real rt1 = s1 + s2; Real rt2 = ((1.0 - t) * a) + (t * b); writefln("t=%.2f, a=%.2f, b=%.2f, s1=%.2f, s2=%.2f, rt1=%.2f, rt2=%.2f :::", t, a, b, s1, s2, rt1, rt2); return rt2; } unittest{ writeln(lerp(0.75, -2.0, 2.0)); // the correct result is 1.0 } compile and run with 'dmd -inline -unittest' and the output should be: t=0.75, a=-2.00, b=2.00, s1=-0.50, s2=1.50, rt1=1.00, rt2=1.00 ::: 1 Now, change 'Real' to float by uncommenting the second line and compile and run with 'dmd -unittest'. This is what I get for the output: t=0.75, a=0.00, b=2.00, s1=-0.50, s2=0.00, rt1=-0.50, rt2=1.50 ::: 1.5This: (with float) writefln("t=%.2f, a=%.2f, b=%.2f, s1=%.2f, s2=%.2f, rt1=%.2f, rt2=%.2f :::", t, a, b, s1, s2, rt1, rt2); writefln("t=%.2f, a=%f, b=%.2f, s1=%.2f, s2=%.2f, rt1=%.2f, rt2=%.2f :::", t, a, b, s1, s2, rt1, rt2); Outputs: (with float) t=0.75, a=0.00, b=2.00, s1=-0.50, s2=0.00, rt1=-0.50, rt2=1.50 ::: t=0.75, a=-2.000000, b=2.00, s1=-0.50, s2=0.00, rt1=-0.50, rt2=1.50 ::: difference: %.2f ---> %fI have no idea why 'a' is zero. 'rt1' and 'rt2' do not have the same value, and 'lerp' does not return 1.0. Compiling with 'dmd -inline -unittest' does produce the correct result as before, though. You can play with different compiler options, such as -O, to get the same weird behavior. I presume this is another DMD bug?
Jan 24 2012
---------------------------------------
alias float Real;
Real lerp(Real t, Real a, Real b)
{
Real s2 = t * b;
writeln("t*b= ", s2);
writeln("t*b= ", t * b);
return s2;
}
Output:
t*b= 1.5
t*b= 1.5
-------------------------------------
alias float Real;
Real lerp(Real t, Real a, Real b)
{
Real s1 = (1.0 - t) * a;
Real s2 = t * b;
writeln("t*b= ", s2);
writeln("t*b= ", t * b);
return s2;
}
Output:
t*b= 0
t*b= 1.5
-------------------------------------
I presume this is another DMD bug?
yes.
Jan 24 2012
No, it is not a bug.
Here is a hint:
import std.stdio;
int main() {
float f;
writeln(f);
return 0;
}
/+--- output ----------+
nan
+--- end of output ---+/
Jan 24 2012
On 01/24/2012 01:51 PM, Dejan Lekic wrote:
No, it is not a bug.
Here is a hint:
import std.stdio;
int main() {
float f;
writeln(f);
return 0;
}
/+--- output ----------+
nan
+--- end of output ---+/
I don't understand.
Jan 24 2012
On 01/24/2012 04:41 PM, sclytrack wrote:On 01/24/2012 01:51 PM, Dejan Lekic wrote:I see now I forgot the input values. Sorry my IQ is 87. void calculate2(float a, float b) { float s1 = 1.0 - a; float s2 = a * b; writeln(s2); writeln(a * b); } -------INPUT values int main() { calculate2(0.75f,2.0f); return 0; } ---------------- Output: t*b= 0 t*b= 1.5 ----------------No, it is not a bug. Here is a hint: import std.stdio; int main() { float f; writeln(f); return 0; } /+--- output ----------+ nan +--- end of output ---+/I don't understand.
Jan 24 2012
On Tue, Jan 24, 2012 at 6:51 AM, Dejan Lekic <dejan.lekic gmail.com> wrote:
No, it is not a bug.
Here is a hint:
import std.stdio;
int main() {
=A0float f;
=A0writeln(f);
=A0return 0;
}
/+--- output ----------+
nan
+--- end of output ---+/
wow, what a great hint.
sorry, but I'm not convinced that it's not a bug.
Jan 24 2012
void calculate2(float a, float b)
{
float s1 = 1.0 - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
----------------
Output:
t*b= 0
t*b= 1.5
----------------
assume CS:.text._D4main10calculate2FffZv
_D4main10calculate2FffZv:
push RBP
mov RBP,RSP
sub RSP,020h
movss -010h[RBP],XMM0
movss -8[RBP],XMM1
mov RAX,03FF0000000000000h
mov -020h[RBP],RAX
movsd XMM2,-020h[RBP]
cvtss2sd XMM1,XMM1
subsd XMM2,XMM1
------conversion but xmm2 is no longer used
cvtsd2ss XMM2,XMM2
------precision error multiplication
mulss XMM1,XMM0
movss -018h[RBP],XMM1
movss XMM0,-018h[RBP]
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
movss XMM0,-8[RBP]
movss XMM1,-010h[RBP]
mulss XMM0,XMM1
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
leave
ret
nop
nop
nop
------------
DMD64 D Compiler v2.057
Ubuntu 11.10
Jan 24 2012
can you give us a complete out-of-the-box compileable example (with
imports,main,etc.) with both examples the working/and nonworking
does it work correct with dmd(32bit)?
is this "calculate2" needed to reproduce the behavior?
and what compiler did you test: dmd64, (dmd32?), ...?
Am 24.01.2012 16:20, schrieb sclytrack:
void calculate2(float a, float b)
{
float s1 = 1.0 - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
----------------
Output:
t*b= 0
t*b= 1.5
----------------
assume CS:.text._D4main10calculate2FffZv
_D4main10calculate2FffZv:
push RBP
mov RBP,RSP
sub RSP,020h
movss -010h[RBP],XMM0
movss -8[RBP],XMM1
mov RAX,03FF0000000000000h
mov -020h[RBP],RAX
movsd XMM2,-020h[RBP]
cvtss2sd XMM1,XMM1
subsd XMM2,XMM1
------conversion but xmm2 is no longer used
cvtsd2ss XMM2,XMM2
------precision error multiplication
mulss XMM1,XMM0
movss -018h[RBP],XMM1
movss XMM0,-018h[RBP]
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
movss XMM0,-8[RBP]
movss XMM1,-010h[RBP]
mulss XMM0,XMM1
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
leave
ret
nop
nop
nop
------------
DMD64 D Compiler v2.057
Ubuntu 11.10
Jan 24 2012
double works correct under dmd64, but float not? what is the behavior of dmd32 in this szenario?
Jan 24 2012
Yes, I missed my lessons in clear communication.
-------------------------------------------------
+ The complete source files.
-------------------------------------------------
import std.stdio;
void calculate1(float a, float b)
{
float s1 = 1.0f - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
void calculate2(float a, float b)
{
float s1 = 1.0 - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
void calculate3(double a, double b)
{
double s1 = 1.0 - a;
double s2 = a * b;
writeln(s2);
writeln(a * b);
}
int main()
{
writeln("calculate1:");
calculate1(0.75f,2.0f);
writeln("calculate2:");
calculate2(0.75f,2.0f);
writeln("calculate3:");
calculate3(0.75f,2.0f);
return 0;
}
-------------------------------------------------
+ The complete output
-------------------------------------------------
calculate1:
1.5
1.5
calculate2:
0
1.5
calculate3:
1.5
1.5
-------------------------------------------------
+ Compiler
-------------------------------------------------
DMD64 D Compiler v2.057
Copyright (c) 1999-2011 by Digital Mars written by Walter Bright
Documentation: http://www.digitalmars.com/d/2.0/index.html
Usage:
This is from the downloaded zip file.
I'm using eclipse to compile it. Added the -debug.
-------------------------------------------------
+ Ubuntu 11.10 64 bit
-------------------------------------------------
uname -r
3.0.0-15-generic
-------------------------------------------------
+ BEHAVIOUR
-------------------------------------------------
As for the behaviour on 32 bit. I wish
somebody else would do it. :-)
In the previous message here below is the assembly
output of calculate2. Pay close attention to the
cvtss2sd, the cvtsd2ss and the mulss.
float s1 = 1.0 - a;
float s2 = a * b;
It converts the float a to double precision.
then performs the s1 calculation.
Then does the s2 calculation with the high
precision a and the normal float b.
Also it performs the "cvtsd2ss %xmm2,%xmm2"
for no reason at all. As it is no longer used
in the rest the code.
-------------------------------------------------
+ objdump -S test1.o
-------------------------------------------------
0000000000000000 <_D4main10calculate2FffZv>:
0: 55 push %rbp
1: 48 8b ec mov %rsp,%rbp
4: 48 83 ec 20 sub $0x20,%rsp
8: f3 0f 11 45 f0 movss %xmm0,-0x10(%rbp)
d: f3 0f 11 4d f8 movss %xmm1,-0x8(%rbp)
12: 48 b8 00 00 00 00 00 movabs $0x3ff0000000000000,%rax
19: 00 f0 3f
1c: 48 89 45 e0 mov %rax,-0x20(%rbp)
20: f2 0f 10 55 e0 movsd -0x20(%rbp),%xmm2
25: f3 0f 5a c9 cvtss2sd %xmm1,%xmm1
29: f2 0f 5c d1 subsd %xmm1,%xmm2
2d: f2 0f 5a d2 cvtsd2ss %xmm2,%xmm2
31: f3 0f 59 c8 mulss %xmm0,%xmm1
35: f3 0f 11 4d e8 movss %xmm1,-0x18(%rbp)
3a: f3 0f 10 45 e8 movss -0x18(%rbp),%xmm0
3f: e8 00 00 00 00 callq 44 <_D4main10calculate2FffZv+0x44>
44: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0
49: f3 0f 10 4d f0 movss -0x10(%rbp),%xmm1
4e: f3 0f 59 c1 mulss %xmm1,%xmm0
52: e8 00 00 00 00 callq 57 <_D4main10calculate2FffZv+0x57>
57: c9 leaveq
58: c3 retq
59: 90 nop
5a: 90 nop
5b: 90 nop
I'm going to eat now.
On 01/24/2012 05:01 PM, dennis luehring wrote:
can you give us a complete out-of-the-box compileable example (with
imports,main,etc.) with both examples the working/and nonworking
does it work correct with dmd(32bit)?
is this "calculate2" needed to reproduce the behavior?
and what compiler did you test: dmd64, (dmd32?), ...?
Am 24.01.2012 16:20, schrieb sclytrack:
void calculate2(float a, float b)
{
float s1 = 1.0 - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
----------------
Output:
t*b= 0
t*b= 1.5
----------------
assume CS:.text._D4main10calculate2FffZv
_D4main10calculate2FffZv:
push RBP
mov RBP,RSP
sub RSP,020h
movss -010h[RBP],XMM0
movss -8[RBP],XMM1
mov RAX,03FF0000000000000h
mov -020h[RBP],RAX
movsd XMM2,-020h[RBP]
cvtss2sd XMM1,XMM1
subsd XMM2,XMM1
------conversion but xmm2 is no longer used
cvtsd2ss XMM2,XMM2
------precision error multiplication
mulss XMM1,XMM0
movss -018h[RBP],XMM1
movss XMM0,-018h[RBP]
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
movss XMM0,-8[RBP]
movss XMM1,-010h[RBP]
mulss XMM0,XMM1
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
leave
ret
nop
nop
nop
------------
DMD64 D Compiler v2.057
Ubuntu 11.10
Jan 24 2012
Am 24.01.2012 18:49, schrieb sclytrack:
dmd 2.057 give this result under windows/32bit
calculate1:
1.5
1.5
calculate2:
1.5
1.5
calculate3:
1.5
1.5
so its seems to be an x64 compiler bug
Yes, I missed my lessons in clear communication.
-------------------------------------------------
+ The complete source files.
-------------------------------------------------
import std.stdio;
void calculate1(float a, float b)
{
float s1 = 1.0f - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
void calculate2(float a, float b)
{
float s1 = 1.0 - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
void calculate3(double a, double b)
{
double s1 = 1.0 - a;
double s2 = a * b;
writeln(s2);
writeln(a * b);
}
int main()
{
writeln("calculate1:");
calculate1(0.75f,2.0f);
writeln("calculate2:");
calculate2(0.75f,2.0f);
writeln("calculate3:");
calculate3(0.75f,2.0f);
return 0;
}
-------------------------------------------------
+ The complete output
-------------------------------------------------
calculate1:
1.5
1.5
calculate2:
0
1.5
calculate3:
1.5
1.5
-------------------------------------------------
+ Compiler
-------------------------------------------------
DMD64 D Compiler v2.057
Copyright (c) 1999-2011 by Digital Mars written by Walter Bright
Documentation: http://www.digitalmars.com/d/2.0/index.html
Usage:
This is from the downloaded zip file.
I'm using eclipse to compile it. Added the -debug.
-------------------------------------------------
+ Ubuntu 11.10 64 bit
-------------------------------------------------
uname -r
3.0.0-15-generic
-------------------------------------------------
+ BEHAVIOUR
-------------------------------------------------
As for the behaviour on 32 bit. I wish
somebody else would do it. :-)
In the previous message here below is the assembly
output of calculate2. Pay close attention to the
cvtss2sd, the cvtsd2ss and the mulss.
float s1 = 1.0 - a;
float s2 = a * b;
It converts the float a to double precision.
then performs the s1 calculation.
Then does the s2 calculation with the high
precision a and the normal float b.
Also it performs the "cvtsd2ss %xmm2,%xmm2"
for no reason at all. As it is no longer used
in the rest the code.
-------------------------------------------------
+ objdump -S test1.o
-------------------------------------------------
0000000000000000<_D4main10calculate2FffZv>:
0: 55 push %rbp
1: 48 8b ec mov %rsp,%rbp
4: 48 83 ec 20 sub $0x20,%rsp
8: f3 0f 11 45 f0 movss %xmm0,-0x10(%rbp)
d: f3 0f 11 4d f8 movss %xmm1,-0x8(%rbp)
12: 48 b8 00 00 00 00 00 movabs $0x3ff0000000000000,%rax
19: 00 f0 3f
1c: 48 89 45 e0 mov %rax,-0x20(%rbp)
20: f2 0f 10 55 e0 movsd -0x20(%rbp),%xmm2
25: f3 0f 5a c9 cvtss2sd %xmm1,%xmm1
29: f2 0f 5c d1 subsd %xmm1,%xmm2
2d: f2 0f 5a d2 cvtsd2ss %xmm2,%xmm2
31: f3 0f 59 c8 mulss %xmm0,%xmm1
35: f3 0f 11 4d e8 movss %xmm1,-0x18(%rbp)
3a: f3 0f 10 45 e8 movss -0x18(%rbp),%xmm0
3f: e8 00 00 00 00 callq 44<_D4main10calculate2FffZv+0x44>
44: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0
49: f3 0f 10 4d f0 movss -0x10(%rbp),%xmm1
4e: f3 0f 59 c1 mulss %xmm1,%xmm0
52: e8 00 00 00 00 callq 57<_D4main10calculate2FffZv+0x57>
57: c9 leaveq
58: c3 retq
59: 90 nop
5a: 90 nop
5b: 90 nop
I'm going to eat now.
On 01/24/2012 05:01 PM, dennis luehring wrote:
can you give us a complete out-of-the-box compileable example (with
imports,main,etc.) with both examples the working/and nonworking
does it work correct with dmd(32bit)?
is this "calculate2" needed to reproduce the behavior?
and what compiler did you test: dmd64, (dmd32?), ...?
Am 24.01.2012 16:20, schrieb sclytrack:
void calculate2(float a, float b)
{
float s1 = 1.0 - a;
float s2 = a * b;
writeln(s2);
writeln(a * b);
}
----------------
Output:
t*b= 0
t*b= 1.5
----------------
assume CS:.text._D4main10calculate2FffZv
_D4main10calculate2FffZv:
push RBP
mov RBP,RSP
sub RSP,020h
movss -010h[RBP],XMM0
movss -8[RBP],XMM1
mov RAX,03FF0000000000000h
mov -020h[RBP],RAX
movsd XMM2,-020h[RBP]
cvtss2sd XMM1,XMM1
subsd XMM2,XMM1
------conversion but xmm2 is no longer used
cvtsd2ss XMM2,XMM2
------precision error multiplication
mulss XMM1,XMM0
movss -018h[RBP],XMM1
movss XMM0,-018h[RBP]
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
movss XMM0,-8[RBP]
movss XMM1,-010h[RBP]
mulss XMM0,XMM1
call _D3std5stdio14__T7writelnTfZ7writelnFfZv PC32
leave
ret
nop
nop
nop
------------
DMD64 D Compiler v2.057
Ubuntu 11.10
Jan 24 2012
How did you compile it? As in my original post, it matters how you compile it. In this case (I'm on a 64-bit GNU/Linux system), compiling with '-inline' doesn't trigger the bug.
Jan 24 2012
Am 24.01.2012 19:13, schrieb Caligo:How did you compile it? As in my original post, it matters how you compile it. In this case (I'm on a 64-bit GNU/Linux system), compiling with '-inline' doesn't trigger the bug.im on win7 (64bit) - but the windows dmd2.057 isn't able to produce x64 code (is that correct?) it works with "dmd -inline floattest.d" and "dmd -debug floattest.d"
Jan 24 2012
On 01/24/2012 10:28 PM, %u wrote:Shouldn't this go into 'digitalmars.D' ?It should go straight to the bug tracker.
Jan 24 2012
On 01/25/2012 01:12 AM, Timon Gehr wrote:On 01/24/2012 10:28 PM, %u wrote:Issue 7391 - floating wtf dmd 2.057 64Shouldn't this go into 'digitalmars.D' ?It should go straight to the bug tracker.
Jan 28 2012
On 01/28/2012 04:56 PM, sclytrack wrote:On 01/25/2012 01:12 AM, Timon Gehr wrote:Thanks!On 01/24/2012 10:28 PM, %u wrote:Issue 7391 - floating wtf dmd 2.057 64Shouldn't this go into 'digitalmars.D' ?It should go straight to the bug tracker.
Jan 28 2012
I've already reported, and it's been fixed in the latest: http://d.puremagic.com/issues/show_bug.cgi?id=7376 On Sat, Jan 28, 2012 at 9:56 AM, sclytrack <sclytrack fake.com> wrote:On 01/25/2012 01:12 AM, Timon Gehr wrote:On 01/24/2012 10:28 PM, %u wrote:Issue 7391 - floating wtf dmd 2.057 64Shouldn't this go into 'digitalmars.D' ?It should go straight to the bug tracker.
Jan 28 2012
Now I've waisted Walter's precious time. I feel so sad now :-( On 01/28/2012 07:49 PM, Caligo wrote:I've already reported, and it's been fixed in the latest: http://d.puremagic.com/issues/show_bug.cgi?id=7376 On Sat, Jan 28, 2012 at 9:56 AM, sclytrack<sclytrack fake.com> wrote:On 01/25/2012 01:12 AM, Timon Gehr wrote:On 01/24/2012 10:28 PM, %u wrote:Issue 7391 - floating wtf dmd 2.057 64Shouldn't this go into 'digitalmars.D' ?It should go straight to the bug tracker.
Jan 28 2012
On Sat, Jan 28, 2012 at 2:04 PM, sclytrack <sclytrack hotmail.com> wrote:Now I've waisted Walter's precious time. I feel so sad now :-(I should have made a post about the fact that I had already bug reported it, but I forgot. Sorry.
Jan 28 2012
Prior to filing the bug I tried to compile dmd from source. I have now succeeded. The only problem I had was a missing symbolic link libstdc++.so and this in Ubuntu 11.10. So I just created it. /usr/lib32/libstdc++.so -> /usr/lib/i386-linux-gnu/libstdc++.so.6 Then "make -f posix" and in the dmd/src directory. The bug is indeed gone. It uses the xmm3 register now to store the intermediate value. Going to clone phobos now. While I'm at it. :-)On 01/29/2012 06:05 AM, Caligo wrote:
Jan 28 2012
On Sunday, January 29, 2012 08:43:54 sclytrack wrote:Prior to filing the bug I tried to compile dmd from source. I have now succeeded. The only problem I had was a missing symbolic link libstdc++.so and this in Ubuntu 11.10. So I just created it. /usr/lib32/libstdc++.so -> /usr/lib/i386-linux-gnu/libstdc++.so.6 Then "make -f posix" and in the dmd/src directory. The bug is indeed gone. It uses the xmm3 register now to store the intermediate value. Going to clone phobos now. While I'm at it. :-)Don't forget druntime. You need it as well if you want to build Phobos. - Jonathan M Davis
Jan 29 2012









sclytrack <sclytrack fake.com> 