Hola, tengo una duda en un programa que estoy haciendo.
Necesito elevar (-1.0)^i
pero no sé cómo ponerlo en lenguaje C para que no me de problemas.
La ecuación completa es:
j=j+[ ( (-1.0)^i) / (2i+1) ]
Gracias.
Tienes que recurrir a la librería math.h o diseñarte tu mismo una función que realice potencias.
Es verdad, lo que dice @Akai, tienes que recurrir a la libreria,
#include <math.h>
La función es,
double pow( double base, double exp );
Description:
The pow() function returns base raised to the exp power. There's a domain error if base is zero and exp is less than or equal to zero. There's also a domain error if base is negative and exp is not an integer. There's a range error if there's an overflow.
:http://www.elook.org/programming/c/pow.html
Si es siempre -1^i, te podes fijar si i es par o impar y devolver 1 o -1:
j=j+ ( (i & 1)? -1 : 1) / (2i+1)
Puedes usar la librería math, pero no estoy seguro de que sea estándar, de todos modos una función que haga lo mismo es bastante fácil de hacer:
double potencia(int base, int exponente)
{
int i;
long double j = base;
for (i=1;i< exponente;i++)
{
j = j * base;
}
return j;
}
:-\
Veo que estás haciendo la fórmula de leibniz.
Como lo único que elevas a un número es el -1, puedes ver si es par o impar, si no, puedes usar la función que te he dejado en mi anterior post, o aplicarla de esta manera, que es peor pero más lineal y sencilla (imagen de la wikipedia):
(http://upload.wikimedia.org/math/9/e/8/9e804b8a1a11e442be93fed1d52205a9.png)