Summary: math/trig functions vs -f68881
or uunet!sli!rdh
rdh at sli.com
Tue Jul 31 06:25:04 AEST 1990
I had asked how to get the C compiler to generate code to use the MC68881
trig functions . . .
OK, OK, it really was there in the manual (there's a big difference 'twixt
R'ing the FM, and U'ing the FM: I actually did see the section on inlining
[Floating Point Programmer's Guide: Appendix "G" -- Assembly- Level
In-line Expansion], but just glanced at it as a "interesting if somewhat
kinky way of implementing INLINE capability in a compiler for a language
that doesn't support INLINE as a language construct. After all, I just
wanted the compiler to use the MC68881 coprocessor, not write obtuse
machine code...and it wasn't anywhere near all the other stuff in the
manual on the MC68881 coprocessor and attendant switches... [An appendix,
no less!]
Probably the most, ah, authoritative response:
f68881 means use the MC6888x fp chip for ordinary fp arithmetic (add,
subtract, multiply, divide, ...)
To use the MC6888x chips' implementation of transcendental functions,
compile like so:
cc -f68881 /usr/lib/f68881/libm.il myprog.c -lm
The reason for this has to do with SVID compliance; in order to
generate (the silly) MATHERR error notification, we can't use the
MC6888x stuff directly, but instead need to go through software
routines that can signal MATHERR.
(If you use the inline templates, then in this minor way you lose SVID
compliance. I'm not sure why anyone cares about SVID compliance - we
the implementors certainly don't - it must have something to do with
the phone company.)
The new unbundled compilers have a switch for the inline library
templates (-libmil) and the FPPG was rewritten as the Numerical
Computation Guide (part number 800-3555-10). The NCG attempts to sketch
how libm is implemented for the various fp architectures.
and, of course, the usual pitch for GNU/gcc:
You can get inline trig code by compiling with the inline maths lib
/usr/lib/f68881/libm.il in the command line. It is better but not
great. A much beter alternative is to use gcc and the math-68881.h
header that does all the inline trig stuff, and avoids all register
spills etc at the same time.
Many MANY thanks to all who took the time and effort to respond:
bobg at xn.ll.mit.edu
uunet^icarus.eng.ohio-state.edu.eng.ohio-state.edu^kaul at sli (Rich Kaul)
Brian Fitzgerald <uunet^mml0.meche.rpi.edu^fitz at sli>
vanandel at ncar.ucar.edu
Bruce Allen <uunet^csd4.csd.uwm.edu^ballen at sli>
prl at iis.ethz.ch
Skip (montanaro at crdgw1.ge.com)
uunet^Eng.Sun.COM^khb at sli (chiba)
mrm at eng.sun.com
glenn at synaptics.com
uunet^auspex.com^guy at sli (Guy Harris)
Bill Dunlap <uunet^stat.washington.edu^bill at sli>
jimc at math.ucla.edu
uunet^Eng.Sun.COM^dgh at sli (David Hough)
brent at dimsun.bcm.tmc.edu
AKONSTAM at TRINITY.BITNET
Gregory Bond <uunet^melba.bby.oz.au^gnb at sli>
and any others whose mail may have been foiled by the network mail munching
trolls...this group is *GREAT* !!
-RDH
More information about the Comp.sys.sun
mailing list