#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 r9396 = a;
        float r9397 = r9396 * r9396;
        float r9398 = b;
        float r9399 = r9398 * r9398;
        float r9400 = r9397 - r9399;
        float r9401 = r9400 / r9397;
        float r9402 = fabs(r9401);
        float r9403 = sqrt(r9402);
        return r9403;
}

double f_id(double a, double b) {
        double r9404 = a;
        double r9405 = r9404 * r9404;
        double r9406 = b;
        double r9407 = r9406 * r9406;
        double r9408 = r9405 - r9407;
        double r9409 = r9408 / r9405;
        double r9410 = fabs(r9409);
        double r9411 = sqrt(r9410);
        return r9411;
}


double f_of(float a, float b) {
        float r9412 = 1;
        float r9413 = b;
        float r9414 = a;
        float r9415 = r9413 / r9414;
        float r9416 = r9415 * r9415;
        float r9417 = exp(r9416);
        float r9418 = log(r9417);
        float r9419 = r9412 - r9418;
        float r9420 = fabs(r9419);
        float r9421 = sqrt(r9420);
        return r9421;
}

double f_od(double a, double b) {
        double r9422 = 1;
        double r9423 = b;
        double r9424 = a;
        double r9425 = r9423 / r9424;
        double r9426 = r9425 * r9425;
        double r9427 = exp(r9426);
        double r9428 = log(r9427);
        double r9429 = r9422 - r9428;
        double r9430 = fabs(r9429);
        double r9431 = sqrt(r9430);
        return r9431;
}

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 r9432, r9433, r9434, r9435, r9436, r9437, r9438, r9439;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9432);
        mpfr_init(r9433);
        mpfr_init(r9434);
        mpfr_init(r9435);
        mpfr_init(r9436);
        mpfr_init(r9437);
        mpfr_init(r9438);
        mpfr_init(r9439);
}

double f_im(double a, double b) {
        mpfr_set_d(r9432, a, MPFR_RNDN);
        mpfr_mul(r9433, r9432, r9432, MPFR_RNDN);
        mpfr_set_d(r9434, b, MPFR_RNDN);
        mpfr_mul(r9435, r9434, r9434, MPFR_RNDN);
        mpfr_sub(r9436, r9433, r9435, MPFR_RNDN);
        mpfr_div(r9437, r9436, r9433, MPFR_RNDN);
        mpfr_abs(r9438, r9437, MPFR_RNDN);
        mpfr_sqrt(r9439, r9438, MPFR_RNDN);
        return mpfr_get_d(r9439, MPFR_RNDN);
}

static mpfr_t r9440, r9441, r9442, r9443, r9444, r9445, r9446, r9447, r9448, r9449;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9440, "1", 10, MPFR_RNDN);
        mpfr_init(r9441);
        mpfr_init(r9442);
        mpfr_init(r9443);
        mpfr_init(r9444);
        mpfr_init(r9445);
        mpfr_init(r9446);
        mpfr_init(r9447);
        mpfr_init(r9448);
        mpfr_init(r9449);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r9441, b, MPFR_RNDN);
        mpfr_set_d(r9442, a, MPFR_RNDN);
        mpfr_div(r9443, r9441, r9442, MPFR_RNDN);
        mpfr_mul(r9444, r9443, r9443, MPFR_RNDN);
        mpfr_exp(r9445, r9444, MPFR_RNDN);
        mpfr_log(r9446, r9445, MPFR_RNDN);
        mpfr_sub(r9447, r9440, r9446, MPFR_RNDN);
        mpfr_abs(r9448, r9447, MPFR_RNDN);
        mpfr_sqrt(r9449, r9448, MPFR_RNDN);
        return mpfr_get_d(r9449, MPFR_RNDN);
}

static mpfr_t r9450, r9451, r9452, r9453, r9454, r9455, r9456, r9457, r9458, r9459;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r9450, "1", 10, MPFR_RNDN);
        mpfr_init(r9451);
        mpfr_init(r9452);
        mpfr_init(r9453);
        mpfr_init(r9454);
        mpfr_init(r9455);
        mpfr_init(r9456);
        mpfr_init(r9457);
        mpfr_init(r9458);
        mpfr_init(r9459);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r9451, b, MPFR_RNDN);
        mpfr_set_d(r9452, a, MPFR_RNDN);
        mpfr_div(r9453, r9451, r9452, MPFR_RNDN);
        mpfr_mul(r9454, r9453, r9453, MPFR_RNDN);
        mpfr_exp(r9455, r9454, MPFR_RNDN);
        mpfr_log(r9456, r9455, MPFR_RNDN);
        mpfr_sub(r9457, r9450, r9456, MPFR_RNDN);
        mpfr_abs(r9458, r9457, MPFR_RNDN);
        mpfr_sqrt(r9459, r9458, MPFR_RNDN);
        return mpfr_get_d(r9459, MPFR_RNDN);
}

