mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 16:09:31 +02:00
no message
This commit is contained in:
parent
6906e33275
commit
404d7fdc70
34
tests/webtbf/tw2129.pp
Normal file
34
tests/webtbf/tw2129.pp
Normal file
@ -0,0 +1,34 @@
|
||||
{ %version=1.1 }
|
||||
{ %fail }
|
||||
{ Source provided for Free Pascal Bug Report 2129 }
|
||||
{ Submitted by "Bill Rayer" on 2002-09-18 }
|
||||
{ e-mail: lingolanguage@hotmail.com }
|
||||
|
||||
{$mode delphi}
|
||||
|
||||
(*
|
||||
Comp() cast has different effect in FPC.
|
||||
Compiles using Delphi4:
|
||||
dcc32 -CC fpc19
|
||||
Compiles in FPC 1.0.6:
|
||||
ppc386 -WC fpc19
|
||||
|
||||
When run, the Delphi version shows -6.5E+18, but the FPC version
|
||||
shows zero. In Delphi, the comp() cast actually moves 8 bytes from
|
||||
the double into the comp without converting the data, but FPC uses
|
||||
floating point instructions to convert the data and therefore prints
|
||||
zero.
|
||||
|
||||
In Delphi, if you want to convert a double to a float, you just use
|
||||
the assignment "comp1 := dbl1" which corresponds to the FLD/FIST
|
||||
opcodes. FPC should not use the comp() cast for doing this, since
|
||||
it introduces a subtle incompatibility with Delphi.
|
||||
*)
|
||||
|
||||
program fpc19;
|
||||
var
|
||||
single1 : single;
|
||||
dbl1 : double;
|
||||
begin
|
||||
single1 := single(dbl1);
|
||||
end.
|
41
tests/webtbs/tw2129.pp
Normal file
41
tests/webtbs/tw2129.pp
Normal file
@ -0,0 +1,41 @@
|
||||
{ %version=1.1 }
|
||||
{ Source provided for Free Pascal Bug Report 2129 }
|
||||
{ Submitted by "Bill Rayer" on 2002-09-18 }
|
||||
{ e-mail: lingolanguage@hotmail.com }
|
||||
|
||||
{$mode delphi}
|
||||
|
||||
(*
|
||||
Comp() cast has different effect in FPC.
|
||||
Compiles using Delphi4:
|
||||
dcc32 -CC fpc19
|
||||
Compiles in FPC 1.0.6:
|
||||
ppc386 -WC fpc19
|
||||
|
||||
When run, the Delphi version shows -6.5E+18, but the FPC version
|
||||
shows zero. In Delphi, the comp() cast actually moves 8 bytes from
|
||||
the double into the comp without converting the data, but FPC uses
|
||||
floating point instructions to convert the data and therefore prints
|
||||
zero.
|
||||
|
||||
In Delphi, if you want to convert a double to a float, you just use
|
||||
the assignment "comp1 := dbl1" which corresponds to the FLD/FIST
|
||||
opcodes. FPC should not use the comp() cast for doing this, since
|
||||
it introduces a subtle incompatibility with Delphi.
|
||||
*)
|
||||
|
||||
program fpc19;
|
||||
var
|
||||
comp1 : comp;
|
||||
dbl1 : double;
|
||||
s : string;
|
||||
begin
|
||||
dbl1 := -1e-128;
|
||||
comp1 := comp(dbl1);
|
||||
str(comp1,s);
|
||||
if s<>'-6.53142228756617E+0018' then
|
||||
begin
|
||||
writeln('error');
|
||||
halt(1);
|
||||
end;
|
||||
end.
|
39
tests/webtbs/tw2129b.pp
Normal file
39
tests/webtbs/tw2129b.pp
Normal file
@ -0,0 +1,39 @@
|
||||
{ %version=1.1 }
|
||||
{ Source provided for Free Pascal Bug Report 2129 }
|
||||
{ Submitted by "Bill Rayer" on 2002-09-18 }
|
||||
{ e-mail: lingolanguage@hotmail.com }
|
||||
|
||||
(*
|
||||
Comp() cast has different effect in FPC.
|
||||
Compiles using Delphi4:
|
||||
dcc32 -CC fpc19
|
||||
Compiles in FPC 1.0.6:
|
||||
ppc386 -WC fpc19
|
||||
|
||||
When run, the Delphi version shows -6.5E+18, but the FPC version
|
||||
shows zero. In Delphi, the comp() cast actually moves 8 bytes from
|
||||
the double into the comp without converting the data, but FPC uses
|
||||
floating point instructions to convert the data and therefore prints
|
||||
zero.
|
||||
|
||||
In Delphi, if you want to convert a double to a float, you just use
|
||||
the assignment "comp1 := dbl1" which corresponds to the FLD/FIST
|
||||
opcodes. FPC should not use the comp() cast for doing this, since
|
||||
it introduces a subtle incompatibility with Delphi.
|
||||
*)
|
||||
|
||||
program fpc19;
|
||||
var
|
||||
comp1 : comp;
|
||||
dbl1 : double;
|
||||
s : string;
|
||||
begin
|
||||
dbl1 := -1e-128;
|
||||
comp1 := comp(dbl1);
|
||||
str(comp1,s);
|
||||
if s<>' 0.00000000000000E+0000' then
|
||||
begin
|
||||
writeln('error: ',s);
|
||||
halt(1);
|
||||
end;
|
||||
end.
|
Loading…
Reference in New Issue
Block a user