Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Nov 1995 19:02:33 -0800 (PST)
From:      julian@TFS.COM (Julian Elischer)
To:        markd@grizzly.com (Mark Diekhans)
Cc:        bde@zeta.org.au, julian@ref.tfs.com, freebsd-hackers@freebsd.org, markd@grizzly.com, jkh@time.cdrom.com
Subject:   Re: NPX still broken in 2.1.0-951104-SNAP...
Message-ID:  <m0tCHpR-0003w0C@TFS.COM>
In-Reply-To: <199511060224.SAA06030@Grizzly.COM> from "Mark Diekhans" at Nov 5, 95 06:24:20 pm

next in thread | previous in thread | raw e-mail | index | archive | help
da-man speaks the truth bruce..
just because there is a BETTER solution doesn't mean we should
have extra problems in 2.1 for no reason....

julian

~v
> 
> 
> Hey Bruce,
> 
> <responses to various piece of mail from bde included>
> 
> >>but is it MORE broken than it is now to do this?
> >>surely such a simple change that might help some people
> >>is worth puting in now?
> >
> >I think the current behaviour (trapping) is more useful for
> >most programs.  Programs that can handle IEEE arithmetic
> >should do something special to check and get it at confiuration
> >time since it is not guaranteed.
> 
> Its incompatible with every Unix system I have access to.  See enclosed table.
> No system core dumps!  I don't have any standards handy, but SCO, which
> is X/Open, ANSI, and POSIX compatible sets errno and returns NaN.
> 
> Most portable software checks errno, although the best approach is to check
> both errno and NaN.
> 
> >The change similar to mapping page 0 and putting 0's there so
> >that strcmp("foo", NULL) works right.  
> >Surely such a simple change that might help some people
> >is worth puting in now? ;-)
> 
> I don't see this as being analogous. strcmp to NULL is an undefined, invalid
> operation.  IMHO calling acos with an out of range operand is an error case
> akin to calling open with an invalid file name.  The big difference between
> this and strcmp is that you can read a man page and find out the expected
> error respones.
> Sure, it would help some people to core dump if you couldn't open a file.  It
> sure would be pain in the rear for us portable software writers that have to
> deal with this kind of incompatibility.  Call some non-standard, FreeBSD only
> function (fpsetmask) to make the libraries behave as they do on other systems.
> 
> 
> >>that wants to get a status back from the floating point math functions instead
> >>of a core dump.  Tcl is most notable, but it breaks several other packages as
> >>well.
> >
> >The tcl port has a patch to set the exception mask to ~0.
> 
> The ports are very handy, but they are no substitute for compatibility.
> For instance, the ports don't have the lastest Tcl alpha.  Elk is in
> there, but it doesn't have a patch to add the fpsetmask call.  It just
> happens to not have as extensive a test suite as Tcl, but this breaks it.
> 
> 
> >This still fails for more-portable software that sets errno to 0 before
> >calling every math function and checks for errno being ERANGE or EDOM
> >after the call (this is the only error reporting mechanism guaranteed
> >in ANSI C).  You can fix this by changing CFLAGS in libc/msun/Makefile
> >to the POSIX/ANSI setting recommended there (-D_POSIX_MODE), but then
> >acos(2.0) will return a stupid value (0 instead of NaN).
> 
> Yes, I can change my system to work like others (I already have), its
> the problem of writing portable code for others that I am worried about.
> 
> It seems pretty straight forward to modify k_standard.c to return NaN
> in POSIX_MODE.  Making the modified POSIX mode the default, and changing the
> default FPU exception mask, would make the vast majority of the software out
> there happy.
> 
> Just another PD software writer trying to help make FreeBSD a good target
> to port to (unlike Linux).
> 
> Mark
> 
> ----------------------------------------------
> SCO 3.2v5:
> acos (2.0) = nan, errno = 33
> ----------------------------------------------
> BSDI 1.1:
> acos (2.0) = NaN, errno = 0
> ----------------------------------------------
> HP-UX A.09.01:
> acos: DOMAIN error
> acos (2.0) = 0, errno = 33
> ----------------------------------------------
> IRIX 5.3
> acos (2.0) = nan0x7fffffff, errno = 33
> ----------------------------------------------
> OSF/1 V3.0
> acos (2.0) = 0, errno = 33
> ----------------------------------------------
> ULTRIX 4.3 
> acos (2.0) = NaN, errno = 33
> ----------------------------------------------
> SunOS olden 4.1.3_U1 1 sun4c
> acos: DOMAIN error
> acos (2.0) = NaN, errno = 33
> ----------------------------------------------
> 
> 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0tCHpR-0003w0C>