author | Alberto Bertogli
<albertito@blitiri.com.ar> 2010-09-08 03:56:06 UTC |
committer | Alberto Bertogli
<albertito@blitiri.com.ar> 2010-09-08 04:11:06 UTC |
parent | 70793850047ce55e94ecac525f840d9c30137018 |
binomial.cpp | +4 | -2 |
binomial_dec.cpp | +14 | -10 |
binomial_inc.cpp | +4 | -2 |
gen_plot_data.sh | +1 | -0 |
diff --git a/binomial.cpp b/binomial.cpp index 24611c4..84a63a5 100644 --- a/binomial.cpp +++ b/binomial.cpp @@ -28,9 +28,11 @@ int main(int argc, char *argv[]) /* Valor inicial, el del primer término */ numero n(prec, 1); + print_result(1, n); - /* Loop de la serie, nterm términos */ - for (int i = 1; i <= nterm; i++) { + /* Loop de la serie, nterm - 1 términos (el primero, por el cual + * arrancamos, ya esta fijo arriba) */ + for (int i = 1; i < nterm; i++) { /* numerador: 1/2 (1/2 - 1) (1/2 - 2) ... * hasta (1/2 - i - 1) */ diff --git a/binomial_dec.cpp b/binomial_dec.cpp index 6791c64..0293c53 100644 --- a/binomial_dec.cpp +++ b/binomial_dec.cpp @@ -1,8 +1,8 @@ #include <stdio.h> #include <stdlib.h> -#include <list> #include <stdint.h> +#include <vector> #include "aritmetica.hpp" #include "util.hpp" @@ -40,14 +40,15 @@ int main(int argc, char *argv[]) // Vamos a hacer una lista con los terminos para ir sumando del ultimo // al primero - list<numero> terminos; + vector<numero> terminos; /* Ponemos el primer termino de la seie */ numero a_i(prec, 1); terminos.push_back(a_i); - /* Loop de la serie, nterm términos */ - for (int i = 0; i < nterm; i++) { + /* Loop de la serie, nterm - 1 términos (el 1 lo acabamos de pushear + * arriba) */ + for (int i = 0; i < nterm - 1; i++) { a_i = a_i * b_i(i); terminos.push_back(a_i); @@ -63,13 +64,16 @@ int main(int argc, char *argv[]) //printf(" %d %.60f 0x%" print_64t "x\n", i, n.to_double(), to_u64(n)); } - numero n(prec, 0); - list<numero>::iterator it; - terminos.reverse(); - for (it=terminos.begin() ; it != terminos.end(); it++) - n = n + *it; + /* Vamos generando los parciales, sumando siempre de atras para + * adelante */ + for (int i = 0; i < nterm; i++) { + numero n(prec, 0); + for (int j = 0; j <= i; j++) { + n = n + terminos[i - j]; + } - print_result(nterm, n); + print_result(i + 1, n); + } return 0; } diff --git a/binomial_inc.cpp b/binomial_inc.cpp index 39587e5..4823915 100644 --- a/binomial_inc.cpp +++ b/binomial_inc.cpp @@ -36,11 +36,13 @@ int main(int argc, char *argv[]) /* Valor inicial, el del primer término */ numero n(prec, 1); + print_result(1, n); numero a_i(prec, 1); - /* Loop de la serie, nterm términos */ - for (int i = 0; i < nterm; i++) { + /* Loop de la serie, nterm - 1 términos (el primero, por el cual + * arrancamos, ya esta fijo arriba) */ + for (int i = 0; i < nterm - 1; i++) { numero antes = n; diff --git a/gen_plot_data.sh b/gen_plot_data.sh index 1f1214d..f8abf74 100755 --- a/gen_plot_data.sh +++ b/gen_plot_data.sh @@ -31,6 +31,7 @@ maxiter["fcont_int"]=50 declare -A isincr isincr["binomial"]=1 isincr["binomial_inc"]=1 +isincr["binomial_dec"]=1 algolist=${!maxiter[*]}