# Re: Compile-time arithmetics needed

## glew@ichips.intel.com (Andy Glew)Mon, 10 Jan 1994 00:59:12 GMT

From comp.compilers

Related articles
Compile-time arithmetics needed sepp@cs.tu-berlin.de (1994-01-05)
Re: Compile-time arithmetics needed preston@dawn.cs.rice.edu (1994-01-05)
Re: Compile-time arithmetics needed glew@ichips.intel.com (1994-01-10)
| List of all articles for this month |

 Newsgroups: comp.compilers From: glew@ichips.intel.com (Andy Glew) Keywords: arithmetic, optimize Organization: Intel Corp., Hillsboro, Oregon References: 94-01-014 94-01-018 Date: Mon, 10 Jan 1994 00:59:12 GMT

Preston Briggs

you want to be careful about folding real arithmetic; this is an easy
way to get into precision trouble. I limit myself to cases where I
can prove that the operands (or operand) is equal to some integer.
That is, I won't fold

3.14 * 1.23

And then we wonder why numeric programmers do obscenities like:

#define E 2.718281828
#define PI 3.141592654
#define E_PI 8.539734223

#define E_PI (E*PI)

(This is a mild one. Wait until you've had to maintain a large FORTRAN
code full of numbers like the above, two letter variable names like
A1, B2, etc., and no comments! (What's fun is that I was able to
determine what commonly used book of mathematical tables the SOB in
the 1960s used - there were bugs in the Bessel function values entered
in.))

*Some* numerical programmers need full accuracy control. Give them a
way to obtain this. Others, however, don't, so please provide compiler
switches that avoid the need for them to go in and do by hand all of
the arithmetic a compiler could be doing for them.

(By the way, I hope that you *do* preevaluate things like
#define HALF_PI ACOS(1)
because lots of numerical programmers use such
techniques to get the best values for special constants they can get,
without typing in lots of digits. (Of course, it is even more fun when
the compiler gives a different value evaluating such a constant than
the runtime!))

Yes, I know E and PI are available in common header files. They're
only examples.
--
Andy "Krazy" Glew, glew@ichips.intel.com, Intel,
M/S JF1-19, 5200 NE Elam Young Pkwy, Hillsboro, Oregon 97124-6497.
--

Post a followup to this message