#include <stdio.h>
#include <inttypes.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#define ESCALA 1000000000 // 9 decimales de presicion
uint32_t factorial(uint8_t);
uint32_t euler(uint8_t);
void app_main() {
printf("Hello, Wokwi!\n");
for (uint8_t i = 1; i <= 10; i++)
{
uint32_t e_aprox = euler(i);
uint8_t i_part = (uint8_t)(e_aprox / ESCALA); // Parte entera
uint32_t d_part = e_aprox - (uint32_t)i_part * ESCALA; // Parte decimal
printf("Euler aprox of %" PRIu8 " = %" PRIu8 ".%" PRIu32 "\n", i, i_part, d_part);
}
while (true) {
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
uint32_t factorial(uint8_t n)
{
uint32_t factorial = 1;
while (n > 0)
{
factorial *= n;
n--;
}
return factorial;
}
uint32_t euler(uint8_t n)
{
uint32_t e_aprox = ESCALA; // 9 decimales de presicion
while (n > 0)
{
e_aprox += ESCALA / factorial(n);
n--;
}
return e_aprox;
}