author | Rodrigo Campos
<rodrigo@sdfg.com.ar> 2010-09-05 23:36:30 UTC |
committer | Alberto Bertogli
<albertito@blitiri.com.ar> 2010-09-06 21:26:42 UTC |
parent | 2505b3ae20ff83b748b99c23371721f9ad5ccee2 |
Makefile | +5 | -2 |
fcont_int.cpp | +53 | -0 |
diff --git a/Makefile b/Makefile index 7e0a7e6..0d16f31 100644 --- a/Makefile +++ b/Makefile @@ -3,8 +3,7 @@ CXXFLAGS += -Wall -std=c++98 -pedantic -Wno-long-long OBJS = aritmetica.o -default: calc babilonio binomial fcont binomial_inc binomial_dec - +default: calc babilonio binomial fcont fcont_int binomial_inc binomial_dec all: default calc: $(OBJS) calc.o @@ -16,6 +15,9 @@ babilonio: $(OBJS) babilonio.o fcont: $(OBJS) fcont.o $(CXX) $(CXXFLAGS) $^ -o $@ +fcont_int: $(OBJS) fcont_int.o + $(CXX) $(CXXFLAGS) $^ -o $@ + binomial: $(OBJS) binomial.o $(CXX) $(CXXFLAGS) $^ -o $@ @@ -30,6 +32,7 @@ clean: rm -f calc.o calc rm -f babilonio.o babilonio rm -f fcont.o fcont + rm -f fcont_int.o fcont_int rm -f binomial.o binomial rm -f binomial_inc binomial_inc.o rm -f binomial_dec binomial_dec.o diff --git a/fcont_int.cpp b/fcont_int.cpp new file mode 100644 index 0000000..18d1177 --- /dev/null +++ b/fcont_int.cpp @@ -0,0 +1,53 @@ + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include "aritmetica.hpp" +#include <utility> + +using namespace std; + +int prec; + +pair<numero, numero> a_0(void) +{ + return pair<numero, numero> (numero(prec, 1), numero(prec, 2)); +} + +pair<numero, numero> siguiente(pair<numero, numero> ant) +{ + numero ant_b = ant.first; + numero ant_c = ant.second; + + pair<numero, numero> ret; + ret.first = ant_c; + ret.second = (2 * ant_c) + ant_b; + + return ret; +} + +int main(int argc, char *argv[]) +{ + if (argc != 3) { + printf("Uso: %s <prec> <nterm>\n", argv[0]); + return 1; + } + + prec = atoi(argv[1]); + int nterm = atoi(argv[2]); + + pair<numero, numero> a_i = a_0(); + + /* Loop de la fracción, nterm - 1 términos ya que el último es + * distinto */ + for (int i = 0; i < nterm; i++) { + a_i = siguiente(a_i); + } + + numero n = (a_i.first / a_i.second) + 1; + printf("%.60f 0x%" print_64t "x\n", n.to_double(), to_u64(n)); + + return 0; +} + +