#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 r9480 = a;
        float r9481 = r9480 * r9480;
        float r9482 = b;
        float r9483 = r9482 * r9482;
        float r9484 = r9481 - r9483;
        float r9485 = r9484 / r9481;
        float r9486 = fabs(r9485);
        float r9487 = sqrt(r9486);
        return r9487;
}

double f_id(double a, double b) {
        double r9488 = a;
        double r9489 = r9488 * r9488;
        double r9490 = b;
        double r9491 = r9490 * r9490;
        double r9492 = r9489 - r9491;
        double r9493 = r9492 / r9489;
        double r9494 = fabs(r9493);
        double r9495 = sqrt(r9494);
        return r9495;
}


double f_of(float a, float b) {
        float r9496 = 1;
        float r9497 = b;
        float r9498 = a;
        float r9499 = r9497 / r9498;
        float r9500 = r9499 * r9499;
        float r9501 = r9496 - r9500;
        float r9502 = fabs(r9501);
        float r9503 = sqrt(r9502);
        return r9503;
}

double f_od(double a, double b) {
        double r9504 = 1;
        double r9505 = b;
        double r9506 = a;
        double r9507 = r9505 / r9506;
        double r9508 = r9507 * r9507;
        double r9509 = r9504 - r9508;
        double r9510 = fabs(r9509);
        double r9511 = sqrt(r9510);
        return r9511;
}

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 r9512, r9513, r9514, r9515, r9516, r9517, r9518, r9519;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9512);
        mpfr_init(r9513);
        mpfr_init(r9514);
        mpfr_init(r9515);
        mpfr_init(r9516);
        mpfr_init(r9517);
        mpfr_init(r9518);
        mpfr_init(r9519);
}

double f_im(double a, double b) {
        mpfr_set_d(r9512, a, MPFR_RNDN);
        mpfr_mul(r9513, r9512, r9512, MPFR_RNDN);
        mpfr_set_d(r9514, b, MPFR_RNDN);
        mpfr_mul(r9515, r9514, r9514, MPFR_RNDN);
        mpfr_sub(r9516, r9513, r9515, MPFR_RNDN);
        mpfr_div(r9517, r9516, r9513, MPFR_RNDN);
        mpfr_abs(r9518, r9517, MPFR_RNDN);
        mpfr_sqrt(r9519, r9518, MPFR_RNDN);
        return mpfr_get_d(r9519, MPFR_RNDN);
}

static mpfr_t r9520, r9521, r9522, r9523, r9524, r9525, r9526, r9527;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9520, "1", 10, MPFR_RNDN);
        mpfr_init(r9521);
        mpfr_init(r9522);
        mpfr_init(r9523);
        mpfr_init(r9524);
        mpfr_init(r9525);
        mpfr_init(r9526);
        mpfr_init(r9527);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r9521, b, MPFR_RNDN);
        mpfr_set_d(r9522, a, MPFR_RNDN);
        mpfr_div(r9523, r9521, r9522, MPFR_RNDN);
        mpfr_mul(r9524, r9523, r9523, MPFR_RNDN);
        mpfr_sub(r9525, r9520, r9524, MPFR_RNDN);
        mpfr_abs(r9526, r9525, MPFR_RNDN);
        mpfr_sqrt(r9527, r9526, MPFR_RNDN);
        return mpfr_get_d(r9527, MPFR_RNDN);
}

static mpfr_t r9528, r9529, r9530, r9531, r9532, r9533, r9534, r9535;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9528, "1", 10, MPFR_RNDN);
        mpfr_init(r9529);
        mpfr_init(r9530);
        mpfr_init(r9531);
        mpfr_init(r9532);
        mpfr_init(r9533);
        mpfr_init(r9534);
        mpfr_init(r9535);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r9529, b, MPFR_RNDN);
        mpfr_set_d(r9530, a, MPFR_RNDN);
        mpfr_div(r9531, r9529, r9530, MPFR_RNDN);
        mpfr_mul(r9532, r9531, r9531, MPFR_RNDN);
        mpfr_sub(r9533, r9528, r9532, MPFR_RNDN);
        mpfr_abs(r9534, r9533, MPFR_RNDN);
        mpfr_sqrt(r9535, r9534, MPFR_RNDN);
        return mpfr_get_d(r9535, MPFR_RNDN);
}

