#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Eccentricity of an ellipse";

double f_if(float a, float b) {
        float r3911742 = a;
        float r3911743 = r3911742 * r3911742;
        float r3911744 = b;
        float r3911745 = r3911744 * r3911744;
        float r3911746 = r3911743 - r3911745;
        float r3911747 = r3911746 / r3911743;
        float r3911748 = fabs(r3911747);
        float r3911749 = sqrt(r3911748);
        return r3911749;
}

double f_id(double a, double b) {
        double r3911750 = a;
        double r3911751 = r3911750 * r3911750;
        double r3911752 = b;
        double r3911753 = r3911752 * r3911752;
        double r3911754 = r3911751 - r3911753;
        double r3911755 = r3911754 / r3911751;
        double r3911756 = fabs(r3911755);
        double r3911757 = sqrt(r3911756);
        return r3911757;
}


double f_of(float a, float b) {
        float r3911758 = 1;
        float r3911759 = b;
        float r3911760 = a;
        float r3911761 = r3911759 / r3911760;
        float r3911762 = r3911761 * r3911761;
        float r3911763 = exp(r3911762);
        float r3911764 = log(r3911763);
        float r3911765 = r3911758 - r3911764;
        float r3911766 = fabs(r3911765);
        float r3911767 = sqrt(r3911766);
        return r3911767;
}

double f_od(double a, double b) {
        double r3911768 = 1;
        double r3911769 = b;
        double r3911770 = a;
        double r3911771 = r3911769 / r3911770;
        double r3911772 = r3911771 * r3911771;
        double r3911773 = exp(r3911772);
        double r3911774 = log(r3911773);
        double r3911775 = r3911768 - r3911774;
        double r3911776 = fabs(r3911775);
        double r3911777 = sqrt(r3911776);
        return r3911777;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r3911778, r3911779, r3911780, r3911781, r3911782, r3911783, r3911784, r3911785;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r3911778);
        mpfr_init(r3911779);
        mpfr_init(r3911780);
        mpfr_init(r3911781);
        mpfr_init(r3911782);
        mpfr_init(r3911783);
        mpfr_init(r3911784);
        mpfr_init(r3911785);
}

double f_im(double a, double b) {
        mpfr_set_d(r3911778, a, MPFR_RNDN);
        mpfr_mul(r3911779, r3911778, r3911778, MPFR_RNDN);
        mpfr_set_d(r3911780, b, MPFR_RNDN);
        mpfr_mul(r3911781, r3911780, r3911780, MPFR_RNDN);
        mpfr_sub(r3911782, r3911779, r3911781, MPFR_RNDN);
        mpfr_div(r3911783, r3911782, r3911779, MPFR_RNDN);
        mpfr_abs(r3911784, r3911783, MPFR_RNDN);
        mpfr_sqrt(r3911785, r3911784, MPFR_RNDN);
        return mpfr_get_d(r3911785, MPFR_RNDN);
}

static mpfr_t r3911786, r3911787, r3911788, r3911789, r3911790, r3911791, r3911792, r3911793, r3911794, r3911795;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r3911786, "1", 10, MPFR_RNDN);
        mpfr_init(r3911787);
        mpfr_init(r3911788);
        mpfr_init(r3911789);
        mpfr_init(r3911790);
        mpfr_init(r3911791);
        mpfr_init(r3911792);
        mpfr_init(r3911793);
        mpfr_init(r3911794);
        mpfr_init(r3911795);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r3911787, b, MPFR_RNDN);
        mpfr_set_d(r3911788, a, MPFR_RNDN);
        mpfr_div(r3911789, r3911787, r3911788, MPFR_RNDN);
        mpfr_mul(r3911790, r3911789, r3911789, MPFR_RNDN);
        mpfr_exp(r3911791, r3911790, MPFR_RNDN);
        mpfr_log(r3911792, r3911791, MPFR_RNDN);
        mpfr_sub(r3911793, r3911786, r3911792, MPFR_RNDN);
        mpfr_abs(r3911794, r3911793, MPFR_RNDN);
        mpfr_sqrt(r3911795, r3911794, MPFR_RNDN);
        return mpfr_get_d(r3911795, MPFR_RNDN);
}

static mpfr_t r3911796, r3911797, r3911798, r3911799, r3911800, r3911801, r3911802, r3911803, r3911804, r3911805;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r3911796, "1", 10, MPFR_RNDN);
        mpfr_init(r3911797);
        mpfr_init(r3911798);
        mpfr_init(r3911799);
        mpfr_init(r3911800);
        mpfr_init(r3911801);
        mpfr_init(r3911802);
        mpfr_init(r3911803);
        mpfr_init(r3911804);
        mpfr_init(r3911805);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r3911797, b, MPFR_RNDN);
        mpfr_set_d(r3911798, a, MPFR_RNDN);
        mpfr_div(r3911799, r3911797, r3911798, MPFR_RNDN);
        mpfr_mul(r3911800, r3911799, r3911799, MPFR_RNDN);
        mpfr_exp(r3911801, r3911800, MPFR_RNDN);
        mpfr_log(r3911802, r3911801, MPFR_RNDN);
        mpfr_sub(r3911803, r3911796, r3911802, MPFR_RNDN);
        mpfr_abs(r3911804, r3911803, MPFR_RNDN);
        mpfr_sqrt(r3911805, r3911804, MPFR_RNDN);
        return mpfr_get_d(r3911805, MPFR_RNDN);
}

