diff --git a/00_pi.c b/00_pi.c index 6d2d1ab..f7a431d 100644 --- a/00_pi.c +++ b/00_pi.c @@ -8,20 +8,20 @@ int main(int argc, char *argv[]) { return 1; } - size_t tiros = atol(argv[1]); + long tiros = atol(argv[1]); - size_t positivos = 0; + long positivos = 0; - for(size_t i = 0; i < tiros; i++) { - double x = (double)random() / RAND_MAX; - double y = (double)random() / RAND_MAX; + for(long i = 0; i < tiros; i++) { + double x = (double)rand() / RAND_MAX; + double y = (double)rand() / RAND_MAX; if(x * x + y * y < 1) positivos++; } double pi = 4.0 * positivos / tiros; - printf("Tiros = %zd, Positivos = %zd\n", tiros, positivos); + printf("Tiros = %ld, Positivos = %ld\n", tiros, positivos); printf("π ~= %.15f\n", pi); printf("ε = %f%%\n", 100 * fabs(M_PI - pi) / M_PI); return 0; diff --git a/01_pi_seed.c b/01_pi_seed.c index d458ea1..5f4f971 100644 --- a/01_pi_seed.c +++ b/01_pi_seed.c @@ -11,20 +11,20 @@ int main(int argc, char *argv[]) { srand(time(NULL)); - size_t tiros = atol(argv[1]); + long tiros = atol(argv[1]); - size_t positivos = 0; + long positivos = 0; - for(size_t i = 0; i < tiros; i++) { - double x = (double)random() / RAND_MAX; - double y = (double)random() / RAND_MAX; + for(long i = 0; i < tiros; i++) { + double x = (double)rand() / RAND_MAX; + double y = (double)rand() / RAND_MAX; if(x * x + y * y < 1) positivos++; } double pi = 4.0 * positivos / tiros; - printf("Tiros = %zd, Positivos = %zd\n", tiros, positivos); + printf("Tiros = %ld, Positivos = %ld\n", tiros, positivos); printf("π ~= %.15f\n", pi); printf("ε = %f%%\n", 100 * fabs(M_PI - pi) / M_PI); return 0; diff --git a/02_pi_openmp.c b/02_pi_openmp.c index 7af23af..b5729bb 100644 --- a/02_pi_openmp.c +++ b/02_pi_openmp.c @@ -12,16 +12,16 @@ int main(int argc, char *argv[]) { printf("Hilos: %d\n", omp_get_max_threads()); - size_t tiros = atol(argv[1]); + long tiros = atol(argv[1]); - size_t positivos = 0; + long positivos = 0; #pragma omp parallel reduction(+: positivos) { int seed = time(NULL) + omp_get_thread_num(); #pragma omp for - for(size_t i = 0; i < tiros; i++) { + for(long i = 0; i < tiros; i++) { double x = (double)rand_r(&seed) / RAND_MAX; double y = (double)rand_r(&seed) / RAND_MAX; if(x * x + y * y < 1) @@ -31,7 +31,7 @@ int main(int argc, char *argv[]) { double pi = 4.0 * positivos / tiros; - printf("Tiros = %zd, Positivos = %zd\n", tiros, positivos); + printf("Tiros = %ld, Positivos = %ld\n", tiros, positivos); printf("π ~= %.15f\n", pi); printf("ε = %f%%\n", 100 * fabs(M_PI - pi) / M_PI); return 0; diff --git a/03_pi_mpi.c b/03_pi_mpi.c index 17c9f76..e93c6cf 100644 --- a/03_pi_mpi.c +++ b/03_pi_mpi.c @@ -21,24 +21,24 @@ int main(int argc, char *argv[]) { srand(time(NULL) + mi_rank); // Ojo, tal vez un proceso se lanza un segundo después que otro y esta cuenta coincide. - size_t tiros = atol(argv[1]); + long tiros = atol(argv[1]); tiros = tiros / num_procs * num_procs; - size_t positivos_parciales = 0; - for(size_t i = 0; i < tiros / num_procs; i++) { - double x = (double)random() / RAND_MAX; - double y = (double)random() / RAND_MAX; + long positivos_parciales = 0; + for(long i = 0; i < tiros / num_procs; i++) { + double x = (double)rand() / RAND_MAX; + double y = (double)rand() / RAND_MAX; if(x * x + y * y < 1) positivos_parciales++; } - size_t positivos; + long positivos; MPI_Reduce(&positivos_parciales, &positivos, 1, MPI_LONG, MPI_SUM, 0, MPI_COMM_WORLD); if(! mi_rank) { double pi = 4.0 * positivos / tiros; - printf("Tiros = %zd, Positivos = %zd\n", tiros, positivos); + printf("Tiros = %ld, Positivos = %ld\n", tiros, positivos); printf("π ~= %.15f\n", pi); printf("ε = %f%%\n", 100 * fabs(M_PI - pi) / M_PI); }