This is the mail archive of the newlib@sources.redhat.com mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Floating point problems with 68000 (no FPU)


Joel Sherrill wrote:
> 
> Doug Broadwell wrote:
> >
> > I just started using the newlib floating point library with the following
> > results:
> >
> > sqrt(2) = 1.414213
> > sqrt(10) = 10.000002
> > sqrt(100) = 0.000000
> > sqrt(10000) = 0.000000
> >
> > In one test sqrt(100)
> > = -7239...............................................................0,
> > some 160 character long number.
> >
> > I'm using printf("%f", sqrt(n)) for these results.
> >
> > Any suggestions on how to debug?
> 
> Did you include math.h?  Not getting a proper prototype would
> be a simple and common problem.
> 

Yes.  As well, make sure you have <stdio.h>.

IIRC, you were manually specifying the libraries to link in.
If it does not turn out to be as simple as a prototyping problem, you
will want to ensure you got the correct libgcc for the float
operations.  Also try looking in gdb at the input value passed to sqrt in hex to ensure
it is the correct IEEE floating point double value with the endianness you are
expecting.  This is fairly easy since you are passing integer values.
Failing that, you might want to verify the return value of sqrt separate
from printf - again looking at the hex return value (e.g. for sqrt(100.0) it
is fairly easy to confirm).

-- Jeff J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]