[phobos] CustomFloat

Lars Tandle Kyllingstad lars at kyllingen.net
Wed Jun 9 23:52:39 PDT 2010


These are the steps to reproduce:  First, create a file "test.d":

        import customfloat;
        alias CustomFloat!16 float16;
        
Then compile it together with customfloat.d like this:

        dmd -c test customfloat
        
        customfloat.d(430): Error: template instance ToBinary!(real)
        does not match template declaration ToBinary(F) if
        (is(CustomFloat!(F.sizeof * 8)))
        customfloat.d(430): Error: ToBinary!(real) is used as a type
        ...

However, I'm starting to suspect it may be a compiler issue, because if
I change the order of the input files, I get a different message:

        dmd -c customfloat test
        
        customfloat.d(357): Error: template instance opUnary!("+") does
        not match template declaration opUnary(string op) if
        ((__traits(compiles,mixin(op ~ "(get!real)"))) || op == "++" ||
        op == "--")

I'm using DMD 2.046 on Linux.

-Lars



On Wed, 2010-06-09 at 22:29 -0400, David Simcha wrote:
> I can't reproduce this at all.  At any rate, I'm going to check this in 
> because there were no other issues, I want to get it in for 2.047, and 
> it's a HUGE improvement over what was there before even if it's not 
> perfect.  If you can give some hints on how to reproduce this, please 
> let me know.
> 
> On 6/8/2010 4:04 AM, Lars Tandle Kyllingstad wrote:
> > On Sat, 2010-06-05 at 10:42 -0400, David Simcha wrote:
> >    
> >> Robert Jacques (who I know offline and, in fact, was the person who
> >> introduced me to D) has massively improved/debugged CustomFloat and
> >> asked me to post it for review and commit it to Phobos.  See the
> >> attached file.  If everyone's happy with it, I'll replace the current
> >> impl in std.numeric and check it in.
> >>      
> > It's awesome that someone's working on this -- I've seen people
> > complaining about the state of CustomFloat several times.  (I think the
> > last time was when we discussed the possibility of using an 80-bit
> > CustomFloat in Masahiro's msgpack library, to wrap 80-bit reals on
> > systems that don't support them.)
> >
> > That said, I'm having some problems with it.  Looking at the code and
> > documentation, the following should be correct usage:
> >
> >          alias CustomFloat!16 float16;
> >
> > However, compiling it with DMD 2.046, I get the errors
> >
> >          customfloat.d(430): Error: template instance ToBinary!(real)
> >          does not match template declaration ToBinary(F) if
> >          (is(CustomFloat!(F.sizeof * 8)))
> >          customfloat.d(430): Error: ToBinary!(real) is used as a type
> >          ...
> >
> > -Lars
> >
> > _______________________________________________
> > phobos mailing list
> > phobos at puremagic.com
> > http://lists.puremagic.com/mailman/listinfo/phobos
> >
> >    
> 
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos




More information about the phobos mailing list