#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 r9463 = a;
        float r9464 = r9463 * r9463;
        float r9465 = b;
        float r9466 = r9465 * r9465;
        float r9467 = r9464 - r9466;
        float r9468 = r9467 / r9464;
        float r9469 = fabs(r9468);
        float r9470 = sqrt(r9469);
        return r9470;
}

double f_id(double a, double b) {
        double r9471 = a;
        double r9472 = r9471 * r9471;
        double r9473 = b;
        double r9474 = r9473 * r9473;
        double r9475 = r9472 - r9474;
        double r9476 = r9475 / r9472;
        double r9477 = fabs(r9476);
        double r9478 = sqrt(r9477);
        return r9478;
}


double f_of(float a, float b) {
        float r9479 = 1;
        float r9480 = b;
        float r9481 = a;
        float r9482 = r9480 / r9481;
        float r9483 = r9482 * r9482;
        float r9484 = exp(r9483);
        float r9485 = log(r9484);
        float r9486 = r9479 - r9485;
        float r9487 = fabs(r9486);
        float r9488 = sqrt(r9487);
        return r9488;
}

double f_od(double a, double b) {
        double r9489 = 1;
        double r9490 = b;
        double r9491 = a;
        double r9492 = r9490 / r9491;
        double r9493 = r9492 * r9492;
        double r9494 = exp(r9493);
        double r9495 = log(r9494);
        double r9496 = r9489 - r9495;
        double r9497 = fabs(r9496);
        double r9498 = sqrt(r9497);
        return r9498;
}

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 r9499, r9500, r9501, r9502, r9503, r9504, r9505, r9506;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9499);
        mpfr_init(r9500);
        mpfr_init(r9501);
        mpfr_init(r9502);
        mpfr_init(r9503);
        mpfr_init(r9504);
        mpfr_init(r9505);
        mpfr_init(r9506);
}

double f_im(double a, double b) {
        mpfr_set_d(r9499, a, MPFR_RNDN);
        mpfr_mul(r9500, r9499, r9499, MPFR_RNDN);
        mpfr_set_d(r9501, b, MPFR_RNDN);
        mpfr_mul(r9502, r9501, r9501, MPFR_RNDN);
        mpfr_sub(r9503, r9500, r9502, MPFR_RNDN);
        mpfr_div(r9504, r9503, r9500, MPFR_RNDN);
        mpfr_abs(r9505, r9504, MPFR_RNDN);
        mpfr_sqrt(r9506, r9505, MPFR_RNDN);
        return mpfr_get_d(r9506, MPFR_RNDN);
}

static mpfr_t r9507, r9508, r9509, r9510, r9511, r9512, r9513, r9514, r9515, r9516;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9507, "1", 10, MPFR_RNDN);
        mpfr_init(r9508);
        mpfr_init(r9509);
        mpfr_init(r9510);
        mpfr_init(r9511);
        mpfr_init(r9512);
        mpfr_init(r9513);
        mpfr_init(r9514);
        mpfr_init(r9515);
        mpfr_init(r9516);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r9508, b, MPFR_RNDN);
        mpfr_set_d(r9509, a, MPFR_RNDN);
        mpfr_div(r9510, r9508, r9509, MPFR_RNDN);
        mpfr_mul(r9511, r9510, r9510, MPFR_RNDN);
        mpfr_exp(r9512, r9511, MPFR_RNDN);
        mpfr_log(r9513, r9512, MPFR_RNDN);
        mpfr_sub(r9514, r9507, r9513, MPFR_RNDN);
        mpfr_abs(r9515, r9514, MPFR_RNDN);
        mpfr_sqrt(r9516, r9515, MPFR_RNDN);
        return mpfr_get_d(r9516, MPFR_RNDN);
}

static mpfr_t r9517, r9518, r9519, r9520, r9521, r9522, r9523, r9524, r9525, r9526;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9517, "1", 10, MPFR_RNDN);
        mpfr_init(r9518);
        mpfr_init(r9519);
        mpfr_init(r9520);
        mpfr_init(r9521);
        mpfr_init(r9522);
        mpfr_init(r9523);
        mpfr_init(r9524);
        mpfr_init(r9525);
        mpfr_init(r9526);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r9518, b, MPFR_RNDN);
        mpfr_set_d(r9519, a, MPFR_RNDN);
        mpfr_div(r9520, r9518, r9519, MPFR_RNDN);
        mpfr_mul(r9521, r9520, r9520, MPFR_RNDN);
        mpfr_exp(r9522, r9521, MPFR_RNDN);
        mpfr_log(r9523, r9522, MPFR_RNDN);
        mpfr_sub(r9524, r9517, r9523, MPFR_RNDN);
        mpfr_abs(r9525, r9524, MPFR_RNDN);
        mpfr_sqrt(r9526, r9525, MPFR_RNDN);
        return mpfr_get_d(r9526, MPFR_RNDN);
}

