From 010e700133a8be8dc616b7bfaa12b5a16e8dfa37 Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Tue, 29 Oct 2024 16:33:13 +0100 Subject: [PATCH] added code --- slides/exemples/pow.c | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 slides/exemples/pow.c diff --git a/slides/exemples/pow.c b/slides/exemples/pow.c new file mode 100644 index 0000000..f2ab6af --- /dev/null +++ b/slides/exemples/pow.c @@ -0,0 +1,46 @@ +#include <stdio.h> + +double pow_naive(double x, int n) { + if (n == 0) { + return 1.0; + } + double res = x; + for (int i = 1; i < n; i++) { + res *= x; + } + return res; +} + +double pow_rec(double x, int n) { + if (n == 0) { + return 1.0; + } else { + return x * pow_rec(x, n - 1); + } +} + +double pow_eff(double x, int n) { + if (n == 0) { + return 1.0; + } else if (n % 2 == 0) { + double intermediate = pow_eff(x, n / 2); + return intermediate * intermediate; + } else { + return x * pow_eff(x, n - 1); + } +} + +int main() { + double x = 2; + int n = 10000; + double y = 0; + for (int i = 0; i < 1000; ++i) { + // y += pow_eff(x, n); + y += pow_naive(x, n); + } + + // printf("%lf^%d = %lf\n", x, n, pow_naive(x, n)); + // printf("%d^%d = %lf\n", x, n, pow_rec(x, n)); + // printf("%lf^%d = %lf\n", x, n, pow_eff(x, n)); + printf("y = %lf\n", y); +} -- GitLab