[comp.sys.amiga] Manx modf

aduncan@rhea.trl.oz.au (Allan Duncan) (12/12/89)

WRT Manx modf bug, here's a sample prog : -


#include	<math.h>
#include	<stdio.h>


main()
{
double	n ;
double	a, x ;

while( 1 ) {
	printf( "?> " ) ;
	scanf( "%lf", &x ) ;
	a = modf( x, &n ) ;
	printf( "%lf ->  %lf & %lf\n", x, n, a ) ;
	}
}

feed it 2.1 and the answer should be 2 and 0.1 (same sign)
or -2.1 to get -2 and -0.1

If you do
	cc test.c
	ln test.o -lm -lc  (FFP)
you will find that the fraction is always incorrectly signed.
but with IEEE ( ln test.o -lma -lc) it is correct.

As an aside, I had great trouble getting this to work until I realised
that the definition of modf args given in Harbison & Steele was wrong -
	double modf(x, nptr)
		double	x ;
		int	*nptr ;

it should be	double	*nptr ;  !


Allan Duncan	ACSnet	aduncan@rhea.trl.oz
		ARPA	aduncan%rhea.trl.oz.au@uunet.uu.net
		UUCP	{uunet,hplabs,ukc}!munnari!rhea.trl.oz.au!aduncan
Telecom Research Labs, PO Box 249, Clayton, Victoria, 3168, Australia.