www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 730] New: broken operator handling of ifloat/idouble/ireal

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=730

           Summary: broken operator handling of ifloat/idouble/ireal
           Product: D
           Version: 0.177
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: thomas-dloop kuehne.cn


#
# void foo(){
#    ifloat f = 1.0fi;
#    f *= 2.0fi; // illegal but compiles
# }
#

It looks like all arithmetic operators for imaginary types perform
insufficient type checks.

test cases:
http://dstress.kuehne.cn/nocompile/o/opAssign_21_A.d
http://dstress.kuehne.cn/nocompile/o/opAssign_21_B.d
http://dstress.kuehne.cn/nocompile/o/opAssign_21_C.d


-- 
Dec 23 2006
next sibling parent Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

d-bugmail puremagic.com schrieb am 2006-12-23:
 http://d.puremagic.com/issues/show_bug.cgi?id=730

 test cases:
 http://dstress.kuehne.cn/nocompile/o/opAssign_21_A.d
 http://dstress.kuehne.cn/nocompile/o/opAssign_21_B.d
 http://dstress.kuehne.cn/nocompile/o/opAssign_21_C.d

Should have been: http://dstress.kuehne.cn/nocompile/o/opMulAssign_21_A.d http://dstress.kuehne.cn/nocompile/o/opMulAssign_21_B.d http://dstress.kuehne.cn/nocompile/o/opMulAssign_21_C.d -----BEGIN PGP SIGNATURE----- iD8DBQFFjT5cLK5blCcjpWoRAtWEAKCOxes9Y4yOPIUHzXdzthB4topa+ACfU6Ho znTa8F9q1YbtXUaIWPGrmkQ= =xHSE -----END PGP SIGNATURE-----
Dec 23 2006
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=730


bugzilla digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID




------- Comment #2 from bugzilla digitalmars.com  2007-10-31 04:30 -------
It's not illegal. The mathematical result is 0, which is what is assigned to f.


-- 
Oct 31 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=730


clugdbug yahoo.com.au changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |




------- Comment #3 from clugdbug yahoo.com.au  2007-11-01 02:54 -------
(In reply to comment #2)
 It's not illegal. The mathematical result is 0, which is what is assigned to f.

The imaginary part of the expression is indeed 0. But that involves an implicit cast from double to idouble, which is very hard to justify. The type of (1.0i * 2.0i) is double. It's not even a cdouble. The current behaviour violates a *= b <---> a = a*b, since the latter won't compile. idouble *= idouble is a bug in user code, 100% of the time. (I actually got bitten by this, when I wrote generic dot product code. You can't assume that a = a*a compiles). --
Nov 01 2007
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=730


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
                 CC|                            |clugdbug yahoo.com.au
         Resolution|                            |FIXED


--- Comment #4 from Don <clugdbug yahoo.com.au> 2009-10-14 00:07:25 PDT ---
Fixed in DMD1.048

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 14 2009