From 849d64a8420afe17bba1cec6e9bd557cca81b860 Mon Sep 17 00:00:00 2001 From: EdouardParis <mail@edouard.paris> Date: Mon, 30 May 2016 16:10:17 +0200 Subject: [PATCH] Add algo_ex1 --- src/algo_ex1.cpp | 23 +++++++++++++++++++++++ src/algo_ex1.h | 4 ++++ 2 files changed, 27 insertions(+) create mode 100644 src/algo_ex1.cpp create mode 100644 src/algo_ex1.h diff --git a/src/algo_ex1.cpp b/src/algo_ex1.cpp new file mode 100644 index 0000000..e6c32ea --- /dev/null +++ b/src/algo_ex1.cpp @@ -0,0 +1,23 @@ +//algo used by question 3 and 5 +//gmp ne retourne que la partie entière inférieure lors de ses opérations. +#include <ctime> +#include <gmpxx.h> + +time_t sqrt(mpz_class const& a, mpz_class & res) +{ + mpz_class r1 = a; + mpz_class r2 = a; + + struct timespec t0, t1; + + clock_gettime( CLOCK_REALTIME, &t0); + while (r2 < r1) { + r2 = (r1 + (a / r1))/2; + r1 = r2; + } + res = r1; + clock_gettime( CLOCK_REALTIME, &t1); + + time_t t_res = 1000.*(t1.tv_sec-t0.tv_sec) + (t1.tv_nsec-t0.tv_nsec)/1000000.; + return t_res; +}; diff --git a/src/algo_ex1.h b/src/algo_ex1.h new file mode 100644 index 0000000..a9a13a6 --- /dev/null +++ b/src/algo_ex1.h @@ -0,0 +1,4 @@ +#include <ctime> +#include <gmpxx.h> + +time_t sqrt(mpz_class const& a, mpz_class & res); -- GitLab