Duda, sobre cómo poner una potencia.

Iniciado por -esifu-, 24 Noviembre 2010, 19:25 PM

0 Miembros y 1 Visitante están viendo este tema.

-esifu-

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.

Akai

Tienes que recurrir a la librería math.h o diseñarte tu mismo una función que realice potencias.

Shell Root

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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Ivanchuk

#3
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)
Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org

piou

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;
}

-esifu-

#5
 :-\

piou

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):