This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: __builtin_cpow((0,0),(0,0))


Hi Robert,

> > It's not true because it's neither true nor false. It's a not well
> > formulated statement. (Mathematically).
> 
> I disagree with this, we certainly agree that 0.0 ** negative value
> is undefined, i.e. that this is outside the domain of the ** function,
> and I think normally in mathematics one would say the same thing,
> and simply say that 0**0 is outside the domain of the function.
> 
> However, we indeed extend domains for convenience. After all
> typically on computers 1.0/0.0 yielding infinity, and that
> certainly does not correspond to the behavior of the division
> operator over the reals in mathematics, but it is convenient :-)

the problem with 1.0/0.0 is not so much the domain but the range:
it is the range which needs to be extended to contain an infinite
value (representing both + and - infinity), at which point the
definition 1.0/0.0 = infinity is an example of the standard notion
of "extension by continuity".  The problem with x^y is that the
range of limits as (x,y) converges to zero (through x>0,y>0) is
the entire interval of real numbers between 0 and 1 inclusive.
Attempts to extend by continuity are doomed in this case (the fact
that the limiting values also arise as values of x^y for x,y>0
means that attempts to "fix up" the range bork the usual function
meaning).

Ciao,

Duncan.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]