#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 r25531 = a;
        float r25532 = r25531 * r25531;
        float r25533 = b;
        float r25534 = r25533 * r25533;
        float r25535 = r25532 - r25534;
        float r25536 = r25535 / r25532;
        float r25537 = fabs(r25536);
        float r25538 = sqrt(r25537);
        return r25538;
}

double f_id(double a, double b) {
        double r25539 = a;
        double r25540 = r25539 * r25539;
        double r25541 = b;
        double r25542 = r25541 * r25541;
        double r25543 = r25540 - r25542;
        double r25544 = r25543 / r25540;
        double r25545 = fabs(r25544);
        double r25546 = sqrt(r25545);
        return r25546;
}


double f_of(float a, float b) {
        float r25547 = 1;
        float r25548 = b;
        float r25549 = a;
        float r25550 = r25548 / r25549;
        float r25551 = r25550 * r25550;
        float r25552 = r25547 - r25551;
        float r25553 = fabs(r25552);
        float r25554 = sqrt(r25553);
        return r25554;
}

double f_od(double a, double b) {
        double r25555 = 1;
        double r25556 = b;
        double r25557 = a;
        double r25558 = r25556 / r25557;
        double r25559 = r25558 * r25558;
        double r25560 = r25555 - r25559;
        double r25561 = fabs(r25560);
        double r25562 = sqrt(r25561);
        return r25562;
}

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 r25563, r25564, r25565, r25566, r25567, r25568, r25569, r25570;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r25563);
        mpfr_init(r25564);
        mpfr_init(r25565);
        mpfr_init(r25566);
        mpfr_init(r25567);
        mpfr_init(r25568);
        mpfr_init(r25569);
        mpfr_init(r25570);
}

double f_im(double a, double b) {
        mpfr_set_d(r25563, a, MPFR_RNDN);
        mpfr_mul(r25564, r25563, r25563, MPFR_RNDN);
        mpfr_set_d(r25565, b, MPFR_RNDN);
        mpfr_mul(r25566, r25565, r25565, MPFR_RNDN);
        mpfr_sub(r25567, r25564, r25566, MPFR_RNDN);
        mpfr_div(r25568, r25567, r25564, MPFR_RNDN);
        mpfr_abs(r25569, r25568, MPFR_RNDN);
        mpfr_sqrt(r25570, r25569, MPFR_RNDN);
        return mpfr_get_d(r25570, MPFR_RNDN);
}

static mpfr_t r25571, r25572, r25573, r25574, r25575, r25576, r25577, r25578;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r25571, "1", 10, MPFR_RNDN);
        mpfr_init(r25572);
        mpfr_init(r25573);
        mpfr_init(r25574);
        mpfr_init(r25575);
        mpfr_init(r25576);
        mpfr_init(r25577);
        mpfr_init(r25578);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r25572, b, MPFR_RNDN);
        mpfr_set_d(r25573, a, MPFR_RNDN);
        mpfr_div(r25574, r25572, r25573, MPFR_RNDN);
        mpfr_mul(r25575, r25574, r25574, MPFR_RNDN);
        mpfr_sub(r25576, r25571, r25575, MPFR_RNDN);
        mpfr_abs(r25577, r25576, MPFR_RNDN);
        mpfr_sqrt(r25578, r25577, MPFR_RNDN);
        return mpfr_get_d(r25578, MPFR_RNDN);
}

static mpfr_t r25579, r25580, r25581, r25582, r25583, r25584, r25585, r25586;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r25579, "1", 10, MPFR_RNDN);
        mpfr_init(r25580);
        mpfr_init(r25581);
        mpfr_init(r25582);
        mpfr_init(r25583);
        mpfr_init(r25584);
        mpfr_init(r25585);
        mpfr_init(r25586);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r25580, b, MPFR_RNDN);
        mpfr_set_d(r25581, a, MPFR_RNDN);
        mpfr_div(r25582, r25580, r25581, MPFR_RNDN);
        mpfr_mul(r25583, r25582, r25582, MPFR_RNDN);
        mpfr_sub(r25584, r25579, r25583, MPFR_RNDN);
        mpfr_abs(r25585, r25584, MPFR_RNDN);
        mpfr_sqrt(r25586, r25585, MPFR_RNDN);
        return mpfr_get_d(r25586, MPFR_RNDN);
}

