|
/* PR target/50945 */
|
|
/* { dg-do compile } */
|
|
/* { dg-options "-O -msoft-float" } */
|
|
|
|
double
|
|
__powidf2 (double x, int m)
|
|
{
|
|
unsigned int n = m < 0 ? -m : m;
|
|
double y = n % 2 ? x : 1;
|
|
while (n >>= 1)
|
|
{
|
|
x = x * x;
|
|
if (n % 2)
|
|
y = y * x;
|
|
}
|
|
return m < 0 ? 1/y : y;
|
|
}
|