questions about NetBSD port

Iain Buclaw via Digitalmars-d digitalmars-d at puremagic.com
Tue Feb 2 23:45:23 PST 2016


On 2 Feb 2016 7:50 pm, "Nikolay via Digitalmars-d" <
digitalmars-d at puremagic.com> wrote:
>
> I am porting LDC/phobos/druntime to NetBSD. Currently my patch is merged
into LDC master. I have several questions about phobos/druntime and general
workflow.
> As I can understand I should prepare pull requests for phobos/druntime
master branches. LDC team will merge/cherry-pick changes into ldc branch
from master later. Is it correct workflow?  Because it means that I can’t
check my patch: there is no dmd compiler for NetBSD + phobos/druntime
master branches.
>
> Also I have a set of issues with real (long double) type. Several
functions absent in NetBSD for real type (more specific - they are just
aliases for functions with double). Other functions return less accurate
values.
> I have to disable a couple unit tests for NetBSD.
> E.g. std/conv.d:2835 assert(to!string(r) == to!string(real.min_normal))
> see related question:
http://stackoverflow.com/questions/35090322/netbsd-long-double-trouble
> But also there are a set of unit tests where I have to reduce accuracy.
This problem affects std/internal/math/gammafunction.d, std/math.d,
std/numeric.d, std/complex.d
> E.g.  std/complex.d:792
> assert(sin(complex(2.0L, 0)) == std.math.sin(2.0L));
> I replace with:
> assert(feqrel(sin(complex(2.0L, 0)).re, std.math.sin(2.0L)) >
real.mant_dig-10);
> My question is: should I wrap such changes with version(NetBSD) statement
or it is acceptable reduce accuracy for all platforms?
>
> PS
> You can look to my code here (netbsd_patch branch):
> https://github.com/nrTQgc/druntime
> https://github.com/nrTQgc/phobos
>
>

Is NetBSD similar to FreeBSD in that you have 80-bit reals but only the
first 53 bits of the mantissa are used?

I don't know how accurate LDC is when it sets up compile time float
properties.  But what do you get when:

pragma (msg, real.sizeof);
pragma (msg, real.mant_dig);

Alternatively, use a C program with printfs for:

sizeof(long double)
LDBL_MANT_DIG

To make sure both ldc and gcc are agreeable.

Have a look at rt/dmain2.d (look for fldcw) if the problem is because of
what I describe above.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20160203/4d8d9241/attachment.html>


More information about the Digitalmars-d mailing list