[OT] __builtin_cpow((0,0),(0,0))

Chris Jefferson caj@cs.york.ac.uk
Tue Mar 8 11:30:00 GMT 2005


Ronny Peine wrote:

> Well, i'm studying mathematics and as i know so far 0^0 is always 1 
> (for real and complex numbers) and well defined even in numerical and 
> theoretical mathematics. Could you point me to some publications which 
> say other things?
>
> cu, Ronny
>
Just wanting to put in my mathematical opinion as well (sorry), I'm 
personally of the opinion that you can define 0^0 to be whatever you 
like. Define it to be 0,1 or 27. Also feel free to define 1^1 to be 
whatever you like as well, make it 400 if you like.

Maths is much less written in stone than a lot of people think. However, 
the main argument here is which definition of 0^0 would be most useful.

One of the most important things I think personally is that I usually 
consider floating point arithmetic to be closely linked to range 
arithmetic. For this reason it is very important that the various 
functions in volved are continus, as you hope that a small permutation 
of the input values will lead to a small permutation of the output 
values, else error will grow too quickly.

Any definition of 0^0 will break this condition, as there are places 
where you can approach it and be equal 0, and places where you can 
approach it and be equal 1. Therefore it is probably best to leave it 
undefined.

What we are debating here isn't really maths at all, just the definition 
which will be most useful and least suprising (and perhaps also what 
various standards tell us to use).

Chris



More information about the Gcc mailing list