Skip to content

Commit c7b404e

Browse files
committed
Merge branch 'main' of github.com:ce-box/CE3102-FunTras into main
2 parents 3051da6 + 2207478 commit c7b404e

File tree

5 files changed

+208
-140
lines changed

5 files changed

+208
-140
lines changed

FunTras/src/funtras.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include <funtras.hpp>
2-
2+
#include <math.h>
33

44
// Calcula el factorial de n -> (n)!
55
long double funtras::fact(int n){
@@ -241,6 +241,11 @@ double funtras::atan_t(double x){
241241
}
242242
}
243243

244+
// Aproxima el valor del arcocoseno
245+
double funtras::acos_t(double x){
246+
return funtras::pi_t()*funtras::div_t(2) - funtras::asin_t(x);
247+
}
248+
244249

245250
// Aproxima el valor de la raiz cuadrada
246251
double funtras::sqrt_t(double x){
@@ -267,3 +272,20 @@ double funtras::log_t(double x,double a){
267272
else
268273
return funtras::ln_t(x)*funtras::div_t(funtras::ln_t(a));
269274
}
275+
276+
277+
// Aproxima el valor de PI
278+
double funtras::pi_t(){
279+
double pi = 0;
280+
double error = funtras::tolerancia + 1;
281+
int k = 0, den;
282+
283+
while (error > funtras::tolerancia && k < funtras::max_iteraciones){
284+
den = (2*k)+1;
285+
pi += 4*funtras::power_t(k,-1)* funtras::div_t(den);
286+
error = abs( pi- M_PI );
287+
k++;
288+
}
289+
290+
return pi;
291+
}

FunTras/src/funtras.hpp

Lines changed: 142 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* file: funtras.hpp
33
* autores: Esteban Alvarado, Martín Calderón, Olman Castro, Agustín Venegas
44
*
5-
* @brief Biblioteca estatica que permite aproximar el valor numerico de
5+
* @brief Biblioteca ea que permite aproximar el valor numerico de
66
* un conjunto de funciones trascendentes de variable real utili-
77
* zando unicamente las operaciones básicas: suma(+), resta(-) y
88
* multiplicacion(*).
@@ -18,136 +18,147 @@
1818
#include <math.h>
1919

2020

21-
class funtras {
22-
23-
private:
24-
static const int max_iteraciones = 2500;
25-
static constexpr double tolerancia = 10e-8;
26-
static constexpr double eps = 2.2204e-16;
27-
28-
/**
29-
* @brief Calcula el factorial de un numero positivo n.
30-
* @param n Numero entero positivo.
31-
* @return Valor de (n)!
32-
*/
33-
static long double fact(int n);
34-
35-
/**
36-
* @brief Determina el valor inicial de x_o para la división div_t.
37-
* @param a Valor de la base.
38-
* @return Valor de x_o correspondiente al valor de a.
39-
*/
40-
static double div_xo(double a);
41-
42-
public:
43-
44-
/**
45-
* @brief Realiza la division de 1/x.
46-
* @param x Valor del dividendo.
47-
* @return El cociente de la division.
48-
*/
49-
static long double div_t(double x);
50-
51-
/**
52-
* @brief Retorna la base elevada a la potencia del exponente.
53-
* @param x Valor del exponente.
54-
* @param a Valor de la base.
55-
* @return El resultado de realizar a^x.
56-
*/
57-
static long double power_t(double x, double a);
58-
59-
/**
60-
* @brief Calcula la aproximacion del seno hiperbolico de la variable.
61-
* @param x Valor de la variable.
62-
* @return El resultado de seno hiperbolico de x.
63-
*/
64-
static double sinh_t(double x);
65-
66-
/**
67-
* @brief Realiza la aproximacion seno de una variable.
68-
* @param x Valor de la variable.
69-
* @return El resultado de sen(x).
70-
*/
71-
static double sin_t(double x);
72-
73-
/**
74-
* @brief Realiza la aproximacion del coseno hiperbolico de una variable.
75-
* @param x Valor de la variable.
76-
* @return El resultado del coseno hiperbolico de x.
77-
*/
78-
static double cosh_t(double x);
79-
80-
/**
81-
* @brief Realiza la aproximaciondel coseno de una variable.
82-
* @param x Valor de la variable.
83-
* @return El resultado del cos(x).
84-
*/
85-
static double cos_t(double x);
86-
87-
/**
88-
* @brief Realiza la aproximacion de euler elevado en una variable.
89-
* @param x Valor de la variable.
90-
* @return El resultado de e^x.
91-
*/
92-
static double exp_t(double x);
93-
94-
/**
95-
* @brief Realiza la aproximacion de logaritmo natural de una variable.
96-
* @param x Valor de la variable.
97-
* @return El resultado de ln(x)
98-
*/
99-
static double ln_t(double x);
100-
101-
/**
102-
* @brief Realiza la aproximacion de tangente de una variable.
103-
* @param x Valor de la variable.
104-
* @return El resultado de tan(x)
105-
*/
106-
static double tan_t(double x);
107-
108-
/**
109-
* @brief Realiza la aproximacion de tangente hiperbolico de una variable.
110-
* @param x Valor de la variable.
111-
* @return El resultado de tangente hiperbolico de x
112-
*/
113-
static double tanh_t(double x);
114-
115-
/**
116-
* @brief Realiza la aproximacion de arcoseno de una variable.
117-
* @param x Valor de la variable.
118-
* @return El resultado de acos(x).
119-
*/
120-
static double asin_t(double x);
121-
122-
/**
123-
* @brief Realiza la aproximacion de arcotangente de una variable.
124-
* @param x Valor de la variable.
125-
* @return El resultado de atan(x).
126-
*/
127-
static double atan_t(double x);
128-
129-
/**
130-
* @brief Realiza la aproximacion de raiz cuadrada de una variable.
131-
* @param x Valor de la variable.
132-
* @return El resultado de raiz cuadrada de x.
133-
*/
134-
static double sqrt_t(double x);
135-
136-
/**
137-
* @brief Realiza la aproximacion de una raiz con indice a de la variable x.
138-
* @param x Valor de la variable.
139-
* @param a Valor del indice de la raiz.
140-
* @returnEl resultado de raiz con indice a de x.
141-
*/
142-
static double root_t(double x, double a);
143-
144-
/**
145-
* @brief Realiza la aproximacion de logaritmo de base a para la variable x.
146-
* @param x Valor de la variable.
147-
* @param a Valor de la base del logaritmo.
148-
* @return resultado del logaritmo base a, de la variable x.
149-
*/
150-
static double log_t(double x, double a);
21+
namespace funtras {
22+
23+
const int max_iteraciones = 2500;
24+
constexpr double tolerancia = 10e-8;
25+
constexpr double eps = 2.2204e-16;
26+
27+
/**
28+
* @brief Calcula el factorial de un numero positivo n.
29+
* @param n Numero entero positivo.
30+
* @return Valor de (n)!
31+
*/
32+
long double fact(int n);
33+
34+
/**
35+
* @brief Determina el valor inicial de x_o para la división div_t.
36+
* @param a Valor de la base.
37+
* @return Valor de x_o correspondiente al valor de a.
38+
*/
39+
double div_xo(double a);
40+
41+
/**
42+
* @brief Realiza la division de 1/x.
43+
* @param x Valor del dividendo.
44+
* @return El cociente de la division.
45+
*/
46+
long double div_t(double x);
47+
48+
/**
49+
* @brief Retorna la base elevada a la potencia del exponente.
50+
* @param x Valor del exponente.
51+
* @param a Valor de la base.
52+
* @return El resultado de realizar a^x.
53+
*/
54+
long double power_t(double x, double a);
55+
56+
/**
57+
* @brief Calcula la aproximacion del seno hiperbolico de la variable.
58+
* @param x Valor de la variable.
59+
* @return El resultado de seno hiperbolico de x.
60+
*/
61+
double sinh_t(double x);
62+
63+
/**
64+
* @brief Realiza la aproximacion seno de una variable.
65+
* @param x Valor de la variable.
66+
* @return El resultado de sen(x).
67+
*/
68+
double sin_t(double x);
69+
70+
/**
71+
* @brief Realiza la aproximacion del coseno hiperbolico de una variable.
72+
* @param x Valor de la variable.
73+
* @return El resultado del coseno hiperbolico de x.
74+
*/
75+
double cosh_t(double x);
76+
77+
/**
78+
* @brief Realiza la aproximaciondel coseno de una variable.
79+
* @param x Valor de la variable.
80+
* @return El resultado del cos(x).
81+
*/
82+
double cos_t(double x);
83+
84+
/**
85+
* @brief Realiza la aproximacion de euler elevado en una variable.
86+
* @param x Valor de la variable.
87+
* @return El resultado de e^x.
88+
*/
89+
double exp_t(double x);
90+
91+
/**
92+
* @brief Realiza la aproximacion de logaritmo natural de una variable.
93+
* @param x Valor de la variable.
94+
* @return El resultado de ln(x)
95+
*/
96+
double ln_t(double x);
97+
98+
/**
99+
* @brief Realiza la aproximacion de tangente de una variable.
100+
* @param x Valor de la variable.
101+
* @return El resultado de tan(x)
102+
*/
103+
double tan_t(double x);
104+
105+
/**
106+
* @brief Realiza la aproximacion de tangente hiperbolico de una variable.
107+
* @param x Valor de la variable.
108+
* @return El resultado de tangente hiperbolico de x
109+
*/
110+
double tanh_t(double x);
111+
112+
/**
113+
* @brief Realiza la aproximacion de arcoseno de una variable.
114+
* @param x Valor de la variable.
115+
* @return El resultado de asin(x).
116+
*/
117+
double asin_t(double x);
118+
119+
/**
120+
* @brief Realiza la aproximacion de arcotangente de una variable.
121+
* @param x Valor de la variable.
122+
* @return El resultado de atan(x).
123+
*/
124+
double atan_t(double x);
125+
126+
/**
127+
* @brief Realiza la aproximacion de arcocoseno de una variable.
128+
* @param x Valor de la variable.
129+
* @return El resultado de acos(x).
130+
*/
131+
double acos_t(double x);
132+
133+
/**
134+
* @brief Realiza la aproximacion de raiz cuadrada de una variable.
135+
* @param x Valor de la variable.
136+
* @return El resultado de raiz cuadrada de x.
137+
*/
138+
double sqrt_t(double x);
139+
140+
/**
141+
* @brief Realiza la aproximacion de una raiz con indice a de la variable x.
142+
* @param x Valor de la variable.
143+
* @param a Valor del indice de la raiz.
144+
* @returnEl resultado de raiz con indice a de x.
145+
*/
146+
double root_t(double x, double a);
147+
148+
/**
149+
* @brief Realiza la aproximacion de logaritmo de base a para la variable x.
150+
* @param x Valor de la variable.
151+
* @param a Valor de la base del logaritmo.
152+
* @return resultado del logaritmo base a, de la variable x.
153+
*/
154+
double log_t(double x, double a);
155+
156+
/**
157+
* @brief Calcula un valor aproximado para PI utilizando la serie de Leibniz.
158+
* @return Valor apróximado de PI.
159+
*/
160+
double pi_t();
161+
151162
};
152163

153164
#endif // H_FUNTRAS

FunTras/test/imp_test.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ void tan_t_test(){
5555
void asin_t_test(){
5656
cout << funtras::asin_t(0.5) << endl;
5757
cout << funtras::asin_t(-0.3) << endl;
58+
cout << "--- "<< 2*funtras::asin_t(0.9) << endl;
59+
}
60+
61+
void acos_t_test(){
62+
cout << funtras::acos_t(0.5) << endl;
63+
cout << funtras::acos_t(-0.3) << endl;
5864
}
5965

6066
void atan_t_test(){
@@ -76,6 +82,11 @@ void log_t_test(){
7682
cout << funtras::log_t(50,3) << endl;
7783
cout << funtras::log_t(27,7) << endl;
7884
}
85+
86+
void pi_test(){
87+
cout << "PI = "<< funtras::pi_t() << endl;
88+
}
89+
7990
int main(int argc, char const *argv[])
8091
{
8192
power_test();
@@ -93,5 +104,7 @@ int main(int argc, char const *argv[])
93104
sqrt_t_test();
94105
root_t_test();
95106
log_t_test();
107+
pi_test();
108+
acos_t_test();
96109
return 0;
97110
}

FunTras/test/test_funtras.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#include <funtras.hpp>
2+
#include <iostream>
3+
4+
using namespace std;
5+
using namespace funtras;
6+
7+
int main(int argc, char const *argv[])
8+
{
9+
double y,x;
10+
x = 2.71;
11+
y = root_t(sin_t(x)+ ln_t(x), 3) * funtras::div_t(sinh_t(sqrt_t(2)))
12+
+ atan_t(funtras::div_t(exp_t(1)));
13+
cout << y << endl;
14+
return 0;
15+
}

0 commit comments

Comments
 (0)