Buenas! tengo este programa para calcular el números PI (apartir de la expresion: PI=6*arctan(1/raiz de 3) que les he copiado, y ahora me piden que fije la precisión de las variables en 10 valores distintos de 100 a 2000. Y para cada uno de esos valores pruebe 10 valores distintos del número de iteraciones (entre 100 y 1000).
Sinceramente, no se ni por donde empezar, estoy atascada, no se como enlazarlo, ojalá podais ayudarme u.u
#include <iostream>
#include <gmp.h>
#include <gmpxx.h>
mpf_class CalcularRaiz(mpf_class x, int n);
mpf_class CalcularPotencia(mpf_class x, int n);
mpf_class CalcularAtan(mpf_class x, int n);
mpf_class CalcularPI(int n);
using namespace std;
// Función para calcular la raíz cuadrada de x usando el algoritmo
//babilónic.Recibe el valor de x y el número de iteraciones a realizar
mpf_class CalcularRaiz(mpf_class x, int n)
{
int i;
mpf_class r, t;
r=x;
t=0;
for(i=0; i<n;i++)
{
t=r;
r=(x/r + r)/2;
}
return r;
}
//Función para calcular la potencia de un real
//recibe la base real y el exponente entero
mpf_class CalcularPotencia(mpf_class x, int n)
{
int i;
mpf_class prod;
prod=1.0;
for(i=1; i<=n; i++)
prod*=x;
return prod;
}
//Función para calcular la arcotangente de x usando la serie de Gregory
//recibe el valor de x y el número de iteraciones
mpf_class CalcularAtan(mpf_class x, int n)
{
int i, num;
mpf_class suma;
suma=0.0;
for(i=1; i<=n; i++)
{
num=2*i-1;
if(i%2==0) suma-=CalcularPotencia(x,num)/num;
else suma+=CalcularPotencia(x,num)/num;
}
return suma;
}
//Función para calcular el valor PI, recibe el número de iteraciones
mpf_class CalcularPI(int n)
{
return 6*CalcularAtan(1/CalcularRaiz(3,n), n);
}
int main(void)
{
int n,c,k,i;
mpf_set_default_prec(400); //Fijo la precisión a 400 bits
mpf_class valor;
//Pido el número de iteraciones a realizar en los cálculos
cout<<"Número de iteraciones: ";
cin>>n;
valor=CalcularPI(n);
//Escribo el resultado obtenido
cout.precision(200);
cout<< "Valor de PI calculado: "<<valor<<endl<<endl;
system("pause");
return 0;
}