public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: What is acceptable for -ffast-math? (Was: associative law incombine)
@ 2001-08-01  9:46 Wolfgang Bangerth
  2001-08-01  9:58 ` Gabriel Dos_Reis
  0 siblings, 1 reply; 31+ messages in thread
From: Wolfgang Bangerth @ 2001-08-01  9:46 UTC (permalink / raw)
  To: gcc; +Cc: tim

Tim Hollebeek wrote:
> Rewriting the programmers program in such a way that he gets
> significantly less accuracy than he could reasonably expect is just
> silly.

Of course it is, but that is not the point that is being discussed: nobody
proposed doing these transformations at -O2. If you don't want these
transformations, then don't switch on -fsomething. But if, for some
certainly valid reason you don't want to use these transformations, why
shouldn't other people have valid reasons to request them?

Regards
  Wolfgang


-------------------------------------------------------------------------
Wolfgang Bangerth          email: wolfgang.bangerth@iwr.uni-heidelberg.de
                             www: http://gaia.iwr.uni-heidelberg.de/~wolf


^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-08-01 11:44 Gabriel Dos Reis
  2001-08-01 11:58 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: Gabriel Dos Reis @ 2001-08-01 11:44 UTC (permalink / raw)
  To: Theodore Papadopoulo
  Cc: Gabriel Dos Reis, dewar, amylaar, aoliva, gcc, moshier, torvalds,
	tprince

Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr> writes:

| [1  <text/plain; us-ascii (7bit)>]
| 
| 
| gdr@codesourcery.com said:
| > No, I do mean a transformation which does not dramatically transmute
| > the computations.  
| 
| That's not a definition.

Do you have one?

Changing 0.125 to 0.0 is a dramatic change.

| Dramatically, can mean very different things 
| depending on the people and on the algorithms. That's basically the 
| point that I'm trying to make. In many applications and algorithm
| the optimization a/b/c to a/(b*c) is meaningful and relevant.

In the case I showed, I was tring to compute a unit-length vector by
first scaling in order to avoid overflow (the /c part).

I'm not dismissing the fact that there are algorithms which would
benefit from optimizations.  As I said earlier, I'm a fervent
proponent of optimizations.  Not transformations which change the
computation in a very unexpected ways. 

-- Gaby



^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-08-01 10:38 dewar
  2001-08-01 10:46 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: dewar @ 2001-08-01 10:38 UTC (permalink / raw)
  To: dewar, torvalds
  Cc: Theodore.Papadopoulo, amylaar, aoliva, gcc, gdr, moshier, tim, tprince

<<The above rules, btw, only apply for exact IEEE math, and on a number of
machines you _will_ see zero for the first one.
>>

Hello! it was you who restricted the discussion to the x86. If we are allowed
to go to other machines, we have lots more examples up our sleeves :-)

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-08-01 10:28 Gabriel Dos_Reis
  2001-08-01 10:41 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: Gabriel Dos_Reis @ 2001-08-01 10:28 UTC (permalink / raw)
  To: dewar
  Cc: Theodore.Papadopoulo, gdr, amylaar, aoliva, gcc, moshier,
	torvalds, tprince

| <<We're talking here of transformations which we do know able to
| drastically change the results.
| >>
| 
| Words like drastically are not particularly helpful in this discussion,
| plain "change" would be just fine.

Do you think changing 0.125 to 0.0 is not drastic?  I used
"drastically" to stress on the magnitude or error -- no other
conotation was implied. 

| THe issue is whether the "change" is worth the speed up.

I do fully understand that.

-- Gaby

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-08-01 10:13 dewar
  2001-08-01 10:32 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: dewar @ 2001-08-01 10:13 UTC (permalink / raw)
  To: tim, torvalds
  Cc: Theodore.Papadopoulo, amylaar, aoliva, dewar, gcc, gdr, moshier, tprince

a/2.0/2.0 will never yield zero if a is non-zero
a/4.0 may indeed yield zero if a is the smallest number

Indeed if one saw a/2.0/2.0 that's pretty peculiar, and it would not be
unreasonable to guess that the properly of not yielding zero was being
exploited :-)

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-08-01  9:24 Tim Hollebeek
  2001-08-01  9:54 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: Tim Hollebeek @ 2001-08-01  9:24 UTC (permalink / raw)
  To: Theodore Papadopoulo
  Cc: Gabriel Dos Reis, dewar, amylaar, aoliva, gcc, moshier, torvalds,
	tprince

> While I agree that by default the compiler must follow "good rules", I 
> think that always disallowing optimisations which may lose some bits of 
> accuracy (when specified with a option switch of course) just because 
> it may hurt someone, somewhere, sometime is a little too strong.
> Full safety is IMHO impossible with floating point... Only the 
> programmer knows the accuracy of its input data (Linus called that 
> noise) and the accuracy he expects on its result.

Exactly ... and it isn't at all rare that the programmer knows exactly
how much noise is in the input data (little or none) and the how much
accuracy he expects in the result (as much as possible!).

Rewriting the programmers program in such a way that he gets
significantly less accuracy than he could reasonably expect is just
silly.

Noise is a red herring.  There is no reason why computation should
introduce more innaccuracy than they need to, especially in a ad hoc
way that is beyond the programmer's control.

-Tim

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-31 17:37 dewar
  2001-07-31 19:05 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: dewar @ 2001-07-31 17:37 UTC (permalink / raw)
  To: dewar, torvalds; +Cc: fjh, gcc, gdr, moshier, tprince

I still see *no* quantitative data showing that the transformation most
discussed here (associative redistribution) is effective in improving
performance.

Linus seems to be getting a little emotional in this discussion but swearing
does not replace data.

My viewpoint, which I will repeat briefly is that we have to look at each
proposed transformation individually, and determine, by quantitative
measurement (many of these measurements are in the literature) how great
the gain is, and then the gain has to be traded off against the effect of
the transformation.

This seems such a reasonable position that I really have a heck of a time
understanding why Linus is so incensed by it.

Note that the requirement that there be a significant gain is a gate. If a
given transformation cannot be shown to be an effective contributor to
performance, then we don't need to discuss the effect of the transformation.
I suspect that in practice, many of the proposed transformations simply won't
get past this gate, and that thus a lot of hot air is expended uselessly 
arguing about the second stage.

In the case that a given transformation *is* effective, then we can discuss.

Let's take an example, which is multiplication by a reciprocal. This of
course does give "wrong" results. But division is often quite slow. On the
other hand, I can't imagine floating-point programmers, including those
doing game stuff, not knowing this, and thus writing the multiplication
in the first place. 

<<Oh, round-to-zero is definitely acceptable in the world of "who cares
about IEEE, we want fast math, and we'll use fixed arithmetic if the FP
code is too slow".
>>

That's probably a bad idea, on most modern machines, full IEEE floating-point
is faster than integer arithmetic (particularly in the case of multiplication)

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-31  7:26 dewar
  2001-07-31 17:28 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: dewar @ 2001-07-31  7:26 UTC (permalink / raw)
  To: gdr, torvalds; +Cc: fjh, gcc, moshier, tprince

> The _only_ person who can judge whether it's wrong to do so it the person
> who wrote the program. He may be happy with the faster code. He's almost
> certainly happy if he used "-ffast-math".

Well it sure would be nice to here from some of these mythical numerical
programmers (I don't care if they are writing games or nuclear reactor codes)
who would be happier, so far we haven't heard this! And in my experience,
even quite inexperienced floating-point numerical programmers are very
disturbed when optimization changes the results of their programs.

> Your arguments about "numerical computation" are just silly, as you don't
> seem to realize that there are tons of problems where your theoretical
> issues are nothing more than noise.

If you think the arguments are silly, then I really fear you lack the full
context for this discussion, a discussion that has, as you should know raged
for well over thirty years.

> Go back and look at why it was added. Right - exactly so that people could
> get _fast_ math, when they do not care about the inexactness that isn't
> even an issue for most people.

Sure -ffast-math is precisely intended to allow transformations that would
not otherwise be allowed (let's not call them optimizations, that's just
too controversial a word in the context of this argument).

The question is what is the boundary of allowable transformations. No one
agrees that there should be no boundaries (even you don't like the change
results to zero, though note that abandoning denormals has exactly this
effect, and might be considered acceptable).

So, what is the boundary, can one for instance forget about denormals and
flush to zero to save a bit of time, can one truncate instead of round,
can one ignore negative zeroes, or infinity semantics, can one ignore
intermediate overflow (note: nearly all the discussed transformations are
implicitly saying yes to this last question).

I have not seen anyone writing from the point of view of serious numerical
coding saying "sure, go ahead and transform a*b + a*c, I write that all
the time and would be happy if the compiler would speed it up in the
obvious manner". So there is real doubt as to whether this particular
transformation (which can introduce overflow where none existed before)
is one that we can agree to include.

It seems to me that the criteria for including a transformation are

  a) it is well understood and clear
  b) it really makes a difference in performance
  c) it does not introduce surprises

Unfortunately, these are often in conflict. For instance, in C, we usually
degrade the precision of the x86 floating-point unit to minimize surprises,
even though operating in full precision would be more efficient in some
cases. Should -ffast-math allow full precision operation? I would think so,
since it definitely improves performance, and reduces surprises.

Similarly, I would go for ignoring accuracy in negative zero handling, since
that so clearly meets criteria a) and c). 

But really it would be very valuable to have quantitative data that show that
a particular optimization is worth while. I will say again that the particular
case that has been discussed, which is associative law redistribution, has not
carried that burden for me AT ALL. It is a dubious transformation, violating
condition c) above, and you can see that it is dubious, given the reaction of
many, not just me, on this list. Furthermore, promoting something like this
gives an impression to serious numerical analysts that "those GCC guys" simply
don't understand the requirements of floating-point arithmetic, and that's a
cost one does not want to freely pay unless you are sure you are getting 
something in return.

We can't look to the standard here, because the question is one of taste. 
Even in Ada, in relaxed mode (the equivalent of -ffast-math, but acknowledged
and defined somewhat in the stadard), the standard leaves these kind of
decisions to the implementor. However, I cannot imagine any Ada implementor
being as cavalier as you would suggest.

By the way, I said I would be shocked to find a Fortran compiler that did
associative redistribution in the absence of parens. I am somewhat surprised
that no one stepped forward with a counter-example, but I suspect in fact that
there may not be any shocking Fortran implementations around.

It is an old argument, the one that says that fpt is approximate, so why bother
to be persnickety about it. Seymour Cray always tool this viewpoint, and it
did not bother him that 81.0/3.0 did not give exactly 27.0 on the CDC 6000
class machines.

But the advent, and essentially universal adoption, of IEEE arithmetic, really
signifies that Seymour's viewpoint (and yours in this discussion) have lost the
argument and that indeed we want floating-point to be well behaved even though
we know many programmers won't know what this means. Our experience is that
even these inexperienced programmers gain from a better floating-point model,
and that, surprise! the cost in hardware to give such a model turns out to be
minimal.

Now compiler writers always get carried away with the supposed importance
of miscellaneous optimizations, and every compiler writer has the experience
of working hard on some optimization, only to find that it has little or
no effect.

If indeed we could show that associative redistribution had a large effect
on important programs (be they games, SPEC tests, or nuclear reactor codes),
then we would have a different situation from the hardware folks. But I suspect
that careful measurement would show that we are in the same boat, and that the
cost of providing decent floating-point semantics is too small for it to be
worth worrying about very much.


Robert

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30 21:43 Joern Rennecke
  2001-07-31 18:12 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: Joern Rennecke @ 2001-07-30 21:43 UTC (permalink / raw)
  To: Gabriel Dos Reis
  Cc: dewar, gdr, amylaar, aoliva, gcc, moshier, torvalds, tprince

> That said, I don't mind about -fdubious-math as far as it is not the
> default, nor turned on at any level of optimization.

For a user, it's hard to guess or remember user that -fdubious-math
and -ffast-math are related.  How about -ffast-and-loose-math ?

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30 21:11 Gabriel Dos Reis
  2001-07-31 18:12 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: Gabriel Dos Reis @ 2001-07-30 21:11 UTC (permalink / raw)
  To: dewar; +Cc: aoliva, gdr, amylaar, gcc, moshier, torvalds, tprince

dewar@gnat.com writes:

| <<The C/C++ Standard, for example, say that a/b/c is evaluated as
| (a/b)/c. Someone proposed that it should be evaluated as a/(b*c)
| -- which of course is incorrect -- when optimizing.
| >>
| 
| Well now, let's be a little careful here ....
| 
| When the C standard says a/b/c is evaluated as (a/b)/c, it means that the
| result is *as if* it were computed that way, and a compiler is of course
| free to compute a/(b*c) if the result is still correct.

Completely agreed.

[...]

| So the "which of course is incorrect" is a bit too glib here.

What I intended to mean is that the compiler has, first, to prove that
such transformmation yields the same result.  The only argument I've
seen so far is that, GCC should make the program run fast...

-- Gaby

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30 19:22 Alexandre Oliva
  2001-07-30 21:31 ` What is acceptable for -ffast-math? (Was: associative law incombine) Mark Mitchell
  0 siblings, 1 reply; 31+ messages in thread
From: Alexandre Oliva @ 2001-07-30 19:22 UTC (permalink / raw)
  To: Joern Rennecke; +Cc: Linus Torvalds, dewar, moshier, gcc, tprince

On Jul 30, 2001, Joern Rennecke <amylaar@redhat.com> wrote:

>> But we could use new tokens, say (( )) and ((( ))) to mark expressions
>> the preprocessor and the compiler shouldn't muck up with.  It would

> It's hard to distinguish an opening (( from two opening (s that
> are closes separately, e.g.:

> a*((b+c)*d)

Indeed.  That's why I suggested to only mark such duplicate
parentheses as optimization barriers, at the end of my message.  We'd
still see two different tokens, but if the opening and closing
parentheses of an expression of the form '(' expression ')' are both
marked as optimization barriers, we generate the expression tree
inside an optimization barrier.  The lexer/preprocessor would have to
mark all '('s but the first in a sequence, and all ')'s but the last
in a sequence, as candidate markers of optimization barriers.

> OTOH, you could re-use (abuse) statement expressions for this purpose:

> ({a+b;})*c

Yeah, but this won't compile with compilers other than GCC.  OTOH, it
might already do what we want in older releases of GCC.  Does it?

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30 16:29 Alexandre Oliva
  2001-07-30 17:21 ` What is acceptable for -ffast-math? (Was: associative law incombine) Joseph S. Myers
  0 siblings, 1 reply; 31+ messages in thread
From: Alexandre Oliva @ 2001-07-30 16:29 UTC (permalink / raw)
  To: dewar; +Cc: neil, gcc, moshier, torvalds, tprince

On Jul 30, 2001, dewar@gnat.com wrote:

> <<I am serious.  The preprocessor should protect individual parentheses
> from becoming consecutive by introducing whitespace.  We should tell:
>>> 

> Sometimes I must say that people seem to work hard to dream up the most
> infeasible and ugly syntactical ideas that one could possibly imagine :-)

:-)

Would you prefer

__extension__ __attribute__ ((optimize=0)) (a*b) +
__extension__ __attribute__ ((optimize=0)) (a*c)

? :-)

I'd much rather write ((a*b)) + ((a*c)), which will even compile with
other compilers, and might be picked up in a future revision of the C
and C++ Standards.

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30 13:10 dewar
  2001-07-31  2:54 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: dewar @ 2001-07-30 13:10 UTC (permalink / raw)
  To: dewar, toon; +Cc: gcc, moshier, torvalds, tprince

>>Well, I won't be so rash as to say that it should do that *by default*,

But that of course is the issue under discussoin :-)

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30  8:59 mike stump
  2001-07-30 15:46 ` What is acceptable for -ffast-math? (Was: associative law incombine) Stephen L Moshier
  0 siblings, 1 reply; 31+ messages in thread
From: mike stump @ 2001-07-30  8:59 UTC (permalink / raw)
  To: moshier, torvalds; +Cc: gcc, tprince

> Date: Sun, 29 Jul 2001 17:03:16 -0400 (EDT)
> From: Stephen L Moshier <moshier@mediaone.net>

> Further, GCC is supposed to be standards compliant by default.

Really?

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30  6:00 dewar
  2001-07-30 10:34 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: dewar @ 2001-07-30  6:00 UTC (permalink / raw)
  To: dewar, torvalds; +Cc: gcc, moshier, tprince

<<It's sad that C99 doesn't seem to allow the Fortran kind of "you go and
make the best you can of this expression unless I tell you otherwise".
>>

But if you look at real Fortran codes, they are full of parentheses to stop
the compiler from messing around, and in fact most Fortran compilers do only
very limited mucking even when no parens are present. I would be shocked
to find a FOrtraqn compiler that changed

a*c + b*c

into

(a+b)*c

a totally diffrerent expression!

I would have written the second expression if I had wanted that effect.

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-30  0:23 Gabriel Dos Reis
  2001-07-30 11:37 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: Gabriel Dos Reis @ 2001-07-30  0:23 UTC (permalink / raw)
  To: Fergus Henderson; +Cc: moshier, Linus Torvalds, tprince, gcc

Fergus Henderson <fjh@cs.mu.oz.au> writes:

| On 29-Jul-2001, Stephen L Moshier <moshier@mediaone.net> wrote:
| > 
| > Further, GCC is supposed to be standards compliant by default.
| 
| ?
| 
| I think it would be nice if GCC was standards compliant by default,
| but that is certainly not the status quo.

Agreed.  But that should be the ideal we should strive for.
And also, I don't think that is an argument for not computing
correctly, even if we're asked to compute fast. 

-- Gaby

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: What is acceptable for -ffast-math? (Was: associative law in combine)
@ 2001-07-29 14:22 dewar
  2001-07-29 21:33 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
  0 siblings, 1 reply; 31+ messages in thread
From: dewar @ 2001-07-29 14:22 UTC (permalink / raw)
  To: moshier, torvalds; +Cc: gcc, tprince

<<Further, GCC is supposed to be standards compliant by default.  You
seem to be advocating that GCC should, without warning, generate
programs that violate the standard and are mathematically wrong.
>>

and that violate the expectations of programmers who *do* know what they
are doing!

^ permalink raw reply	[flat|nested] 31+ messages in thread
* Re: * Re: What is acceptable for -ffast-math? (Was: associative lawin combine)
@ 2001-07-29 12:52 Linus Torvalds
  2001-07-29 14:03 ` What is acceptable for -ffast-math? (Was: associative law incombine) Stephen L Moshier
  0 siblings, 1 reply; 31+ messages in thread
From: Linus Torvalds @ 2001-07-29 12:52 UTC (permalink / raw)
  To: moshier; +Cc: tprince, gcc

On Sun, 29 Jul 2001, Stephen L Moshier wrote:
>
> > Why not make this easier for the user:
> > - default to non-IEEE, but "reasonably safe".
>
> The default GCC behavior is not to allow any optimization
> that could change the value of an expression.  That rule is easy
> for users to understand and surely it is a good rule to keep.
>
> Floating point arithmetic, IEEE or otherwise, does not obey the
> associative or distributive laws.

This is YOUR opinion.

But most people who write floating point code do not think that way. They
consider FP to be "mathematically exact" (which _does_ obey associative
and distributive laws), and they write their programs that way.

And that is exactly my point: to the people who do not care about the
exact details of what it means from a mathematical standpoint, using
associative and distributive rules is _fine_. Their algorithms do not
care, simply because the person writing the code doesn't even _know_ about
the issues of limited precision and range of FP code.

See?

What I'm saying is that the compiler cannot fix "thinking errors" of the
programmer. Trying to fix them is self-defeating and ultimately stupid.
I'm claiming that 99%+ of all programmers do not know or care about the
fact that

	(a+b)*c

is not necessarily the same as

	a*c+b*c

when we're talking about floating point.

My _second_ point is that the ones that DO KNOW and DO CARE are also aware
enough that _they_ can be counted on to add a "-mieee" or other flags.

They are also knowledgeable enough that they know what "associative law"
means, which is already a step up from most programmers, I suspect. So
they can understand why the compiler has done an optimization, and can (if
it is documented) be instructed to use the appropriate switch for not
doing that optimization.

So: put the onus of understanding different FP optimizations on the people
who CAN understand them. Don't make the average person who wants to do his
own small project have to worry about it. By the time the person
understands about the range of FP arithmetic enough to care, he will also
have the capability to do something about it.

		Linus

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2001-08-03  7:32 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-01  9:46 What is acceptable for -ffast-math? (Was: associative law incombine) Wolfgang Bangerth
2001-08-01  9:58 ` Gabriel Dos_Reis
2001-08-01 10:08   ` Wolfgang Bangerth
2001-08-01 11:12     ` Gabriel Dos_Reis
2001-08-01 11:27       ` What is acceptable for -ffast-math? (Was: associative law in combine) Theodore Papadopoulo
2001-08-01 11:47         ` Gabriel Dos_Reis
2001-08-03  7:32           ` Nick Ing-Simmons
2001-08-03  6:01       ` Per Abrahamsen
  -- strict thread matches above, loose matches on Subject: below --
2001-08-01 11:44 Gabriel Dos Reis
2001-08-01 11:58 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-08-01 10:38 What is acceptable for -ffast-math? (Was: associative law in combine) dewar
2001-08-01 10:46 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-08-01 10:58   ` Gabriel Dos_Reis
2001-08-01 10:28 What is acceptable for -ffast-math? (Was: associative law in combine) Gabriel Dos_Reis
2001-08-01 10:41 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-08-01 10:55   ` Gabriel Dos_Reis
2001-08-01 10:13 What is acceptable for -ffast-math? (Was: associative law in combine) dewar
2001-08-01 10:32 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-08-01  9:24 What is acceptable for -ffast-math? (Was: associative law in combine) Tim Hollebeek
2001-08-01  9:54 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-08-01 10:26   ` Gabriel Dos_Reis
2001-08-01 10:35     ` Linus Torvalds
2001-08-01 10:45       ` Gabriel Dos_Reis
2001-07-31 17:37 What is acceptable for -ffast-math? (Was: associative law in combine) dewar
2001-07-31 19:05 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-31  7:26 What is acceptable for -ffast-math? (Was: associative law in combine) dewar
2001-07-31 17:28 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-30 21:43 What is acceptable for -ffast-math? (Was: associative law in combine) Joern Rennecke
2001-07-31 18:12 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-30 21:11 What is acceptable for -ffast-math? (Was: associative law in combine) Gabriel Dos Reis
2001-07-31 18:12 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-30 19:22 What is acceptable for -ffast-math? (Was: associative law in combine) Alexandre Oliva
2001-07-30 21:31 ` What is acceptable for -ffast-math? (Was: associative law incombine) Mark Mitchell
2001-07-30 16:29 What is acceptable for -ffast-math? (Was: associative law in combine) Alexandre Oliva
2001-07-30 17:21 ` What is acceptable for -ffast-math? (Was: associative law incombine) Joseph S. Myers
2001-07-30 13:10 What is acceptable for -ffast-math? (Was: associative law in combine) dewar
2001-07-31  2:54 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-30  8:59 What is acceptable for -ffast-math? (Was: associative law in combine) mike stump
2001-07-30 15:46 ` What is acceptable for -ffast-math? (Was: associative law incombine) Stephen L Moshier
2001-07-30  6:00 What is acceptable for -ffast-math? (Was: associative law in combine) dewar
2001-07-30 10:34 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-30  0:23 What is acceptable for -ffast-math? (Was: associative law in combine) Gabriel Dos Reis
2001-07-30 11:37 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-29 14:22 What is acceptable for -ffast-math? (Was: associative law in combine) dewar
2001-07-29 21:33 ` What is acceptable for -ffast-math? (Was: associative law incombine) Linus Torvalds
2001-07-29 12:52 * Re: What is acceptable for -ffast-math? (Was: associative lawin combine) Linus Torvalds
2001-07-29 14:03 ` What is acceptable for -ffast-math? (Was: associative law incombine) Stephen L Moshier
2001-07-29 21:08   ` Linus Torvalds

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).