digitalmars.D.bugs - complex float > compare to .max causing 'abnormal program termination' - 'constfold.c' line 575
- David L. Davis (52/52) Apr 23 2005 # // constfold_error.d at line 575 (on WinXP with dmd v0.121)
- Thomas Kuehne (28/74) Apr 24 2005 -----BEGIN PGP SIGNED MESSAGE-----
- Walter (3/3) May 03 2005 The trouble is that <, <=, >, >= comparisons are not defined for complex
- David L. Davis (8/11) May 04 2005 Walter, thanks for checking into this! :)
- Walter (4/13) May 08 2005 creal...right?
# // constfold_error.d at line 575 (on WinXP with dmd v0.121) # // Bug1: abnormal program termination # // Bug2: overflow 1.17549e-38+1.17549e-38i > 3.40282e+38+3.40282e+38i # // # // Note: This mainly appears to be a bug comparing '>' (greater-than) # // only against the complex float constant .max # // (bug1: cfloat.min > cfloat.max, bug2: cf > cfloat.max) # private import std.stdio; # # int main() # { # //cfloat cf = cfloat.min; # //cdouble cd = cdouble.min; # //creal cr = creal.min; # # if (cfloat.min > cfloat.max) // <-- Look at output 1 # //if (cfloat.min.re > cfloat.max.re && # // cfloat.min.im > cfloat.max.im) // ok # //if (cf == cfloat.max) // <-- Look at output 2 # goto Loverflow; # # return 0; # # Loverflow: # writefln("overflow %g > %g", cfloat.min, cfloat.max); # //writefln("overflow %g > %g", cf, cfloat.max); # return 1; # } * All of the complex float (cfloat, cdouble, and creal) constants compares of .min > .max fail. (ex: cfloat.min > cfloat.max) Output 1: --------- C:\dmd>dmd constfold_error.d Assertion failure: '0' on line 575 in file 'constfold.c' abnormal program termination C:\dmd> ------------------ * All of the complex float (cfloat, cdouble, and creal) .max constants when compared against a complex float variable set to .min of that datatype, return that .min is '>' .max. (ex: cf=cfloat.min; cf > cfloat.max) Output 2: How can cfloat.min be > cfloat.max; --------- C:\dmd>dmd constfold_error.d C:\dmd\bin\..\..\dm\bin\link.exe constfold_error,,,user32+kernel32/noi; C:\dmd>constfold_error overflow 1.17549e-38+1.17549e-38i > 3.40282e+38+3.40282e+38i C:\dmd> David L. ------------------------------------------------------------------- "Dare to reach for the Stars...Dare to Dream, Build, and Achieve!" ------------------------------------------------------------------- MKoD: http://spottedtiger.tripod.com/D_Language/D_Main_XP.html
Apr 23 2005
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 David L Davis schrieb am Sat, 23 Apr 2005 12:18:31 +0000 (UTC):# // constfold_error.d at line 575 (on WinXP with dmd v0.121) # // Bug1: abnormal program termination # // Bug2: overflow 1.17549e-38+1.17549e-38i > 3.40282e+38+3.40282e+38i # // # // Note: This mainly appears to be a bug comparing '>' (greater-than) # // only against the complex float constant .max # // (bug1: cfloat.min > cfloat.max, bug2: cf > cfloat.max) # private import std.stdio; # # int main() # { # //cfloat cf = cfloat.min; # //cdouble cd = cdouble.min; # //creal cr = creal.min; # # if (cfloat.min > cfloat.max) // <-- Look at output 1 # //if (cfloat.min.re > cfloat.max.re && # // cfloat.min.im > cfloat.max.im) // ok # //if (cf == cfloat.max) // <-- Look at output 2 # goto Loverflow; # # return 0; # # Loverflow: # writefln("overflow %g > %g", cfloat.min, cfloat.max); # //writefln("overflow %g > %g", cf, cfloat.max); # return 1; # } * All of the complex float (cfloat, cdouble, and creal) constants compares of .min > .max fail. (ex: cfloat.min > cfloat.max) Output 1: --------- C:\dmd>dmd constfold_error.d Assertion failure: '0' on line 575 in file 'constfold.c' abnormal program termination C:\dmd> ------------------ * All of the complex float (cfloat, cdouble, and creal) .max constants when compared against a complex float variable set to .min of that datatype, return that .min is '>' .max. (ex: cf=cfloat.min; cf > cfloat.max) Output 2: How can cfloat.min be > cfloat.max; --------- C:\dmd>dmd constfold_error.d C:\dmd\bin\..\..\dm\bin\link.exe constfold_error,,,user32+kernel32/noi; C:\dmd>constfold_error overflow 1.17549e-38+1.17549e-38i > 3.40282e+38+3.40282e+38iAdded to DStress as http://dstress.kuehne.cn/run/bug_constfold_575_A.d http://dstress.kuehne.cn/run/bug_constfold_575_B.d http://dstress.kuehne.cn/run/bug_constfold_575_C.d http://dstress.kuehne.cn/run/bug_constfold_575_D.d http://dstress.kuehne.cn/run/bug_constfold_575_E.d http://dstress.kuehne.cn/run/bug_constfold_575_F.d http://dstress.kuehne.cn/run/bug_constfold_575_G.d http://dstress.kuehne.cn/run/bug_constfold_575_H.d http://dstress.kuehne.cn/run/bug_constfold_575_I.d http://dstress.kuehne.cn/run/bug_constfold_575_J.d http://dstress.kuehne.cn/run/bug_constfold_575_K.d http://dstress.kuehne.cn/run/bug_constfold_575_L.d http://dstress.kuehne.cn/run/bug_constfold_575_M.d http://dstress.kuehne.cn/run/bug_constfold_575_N.d http://dstress.kuehne.cn/run/bug_constfold_575_O.d http://dstress.kuehne.cn/run/bug_constfold_575_P.d http://dstress.kuehne.cn/run/bug_constfold_575_Q.d http://dstress.kuehne.cn/run/bug_constfold_575_R.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFCbIxc3w+/yD4P9tIRAjt+AJ93ocy+eXvHCcM/lu8NXPCZavvzIwCfRkxG 3HrTCOSF+Ef8KfIb40zDujQ= =Dvng -----END PGP SIGNATURE-----
Apr 24 2005
The trouble is that <, <=, >, >= comparisons are not defined for complex operands. I've fixed the compiler to now issue the appropriate error message.
May 03 2005
In article <d58tbl$da5$1 digitaldaemon.com>, Walter says...The trouble is that <, <=, >, >= comparisons are not defined for complex operands. I've fixed the compiler to now issue the appropriate error message.Walter, thanks for checking into this! :) By complex operands, you must mean just the cfloat, cdouble, and creal...right? David L. ------------------------------------------------------------------- "Dare to reach for the Stars...Dare to Dream, Build, and Achieve!" ------------------------------------------------------------------- MKoD: http://spottedtiger.tripod.com/D_Language/D_Main_XP.html
May 04 2005
"David L. Davis" <SpottedTiger yahoo.com> wrote in message news:d5ath8$2bkk$1 digitaldaemon.com...In article <d58tbl$da5$1 digitaldaemon.com>, Walter says...creal...right? Right.The trouble is that <, <=, >, >= comparisons are not defined for complex operands. I've fixed the compiler to now issue the appropriate error message.Walter, thanks for checking into this! :) By complex operands, you must mean just the cfloat, cdouble, and
May 08 2005