Related articles |
---|
Problems with Hardware, Languages, and Compilers hrubin@stat.purdue.edu (1997-03-07) |
Re: Problems with Hardware, Languages, and Compilers nmm1@cus.cam.ac.uk (1997-03-09) |
Re: Problems with Hardware, Languages, and Compilers hbaker@netcom.com (1997-03-09) |
Re: Problems with Hardware, Languages, and Compilers mw@ipx2.rz.uni-mannheim.de (1997-03-09) |
Re: Problems with Hardware, Languages, and Compilers rideau@ens.fr (Francois-Rene Rideau) (1997-03-14) |
Re: Problems with Hardware, Languages, and Compilers smryan@mail.com (1997-03-14) |
Re: Problems with Hardware, Languages, and Compilers rideau@ens.fr (Francois-Rene Rideau) (1997-03-16) |
Re: Problems with Hardware, Languages, and Compilers robison@kai.com (Arch Robison) (1997-03-16) |
Re: Problems with Hardware, Languages, and Compilers rideau@ens.fr (Francois-Rene Rideau) (1997-03-18) |
[4 later articles] |
From: | hbaker@netcom.com (Henry Baker) |
Newsgroups: | comp.compilers,comp.lang.misc,comp.arch.arithmetic |
Date: | 9 Mar 1997 11:31:29 -0500 |
Organization: | nil |
References: | 97-03-037 |
Keywords: | design |
hrubin@stat.purdue.edu (Herman Rubin) wrote:
> The compilers available did manage to do x/y as x*(1/y), but as square
> root is recognized and reciprocal square root is not, it was found
> quite difficult to manage the problem on a routine basis.
This is a generic problem with computers, compilers, and, indeed,
computer science itself. A function f(x,y) and a function g(x) differ
in more than the value they compute: they differ in the number of
arguments they require.
For many arithmetic functions nowadays, this difference is much more
important than the actual circuitry or time to compute the bits of the
answer. At the hardware level, the differences between a 1-argument
function and a 2-argument function are vast, and it amazes me that
only a small fraction of software and compiler people can appreciate
this difference.
Factorizing x/y as x*(1/y) is not generally done inside compilers,
because compiler people are generally given a quotient hardware
operation, rather than an inverse operation. The software that cares
about this sort of thing -- e.g., linear algebra software -- often
uses hand-optimization to pull out the inverse operation from within a
loop, so the compiler is never called upon to do this itself. Since
compiler optimizations are completely driven by a handful of
standardized 'benchmarks' these days, only those optimizations
required by these benchmarks are given any priority.
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.