Bug 4306 – std.numeric.CustomFloat doesn't work on Mac OS X.
Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
Other
OS
Mac OS X
Creation time
2010-06-13T14:01:00Z
Last change time
2010-06-17T18:09:43Z
Assigned to
nobody
Creator
repeatedly
Comments
Comment #0 by repeatedly — 2010-06-13T14:01:40Z
I tested following code using dmd 2.047 on Mac OS X 10.6.3.
-----
import std.numeric;
void main()
{
CustomFloat!16 a;
}
-----
compilation result:
std/numeric.d(476): Error: template instance ToBinary!(real) does not match template declaration ToBinary(F) if (is(CustomFloat!(F.sizeof * 8)))
std/numeric.d(476): Error: ToBinary!(real) is used as a type
std/numeric.d(476): Error: variable std.numeric.CustomFloat!(precision,exponentWidth,flags,15).CustomFloat.get!(real).get.result voids have no value
I think this cause is real type size. real.sizeof is 16 on Mac OS X, but current std.numeric.CustomFloat can't treat those environments.
Comment #1 by dsimcha — 2010-06-13T16:35:44Z
This code was initially only tested on Windows, which doesn't use this padding. Linux also uses padding, though to 12 bytes instead of 16. I've checked in a fix that works on Linux. It should work for Mac, too but I can't test it because I don't own a Mac. Please let me know whether it does.
Comment #2 by repeatedly — 2010-06-15T16:24:11Z
Thanks for the fix.
I tested modified #0 code using trunk, No problem!