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

char *name = "Diagrams.TwoD.Ellipse:ellipse from diagrams-lib-1.3.0.3";

double f_if(float x) {
        float r50025 = 1.0f;
        float r50026 = x;
        float r50027 = r50026 * r50026;
        float r50028 = r50025 - r50027;
        float r50029 = sqrt(r50028);
        return r50029;
}

double f_id(double x) {
        double r50030 = 1.0;
        double r50031 = x;
        double r50032 = r50031 * r50031;
        double r50033 = r50030 - r50032;
        double r50034 = sqrt(r50033);
        return r50034;
}


double f_of(float x) {
        float r50035 = 1.0f;
        float r50036 = x;
        float r50037 = r50036 * r50036;
        float r50038 = r50035 - r50037;
        float r50039 = sqrt(r50038);
        return r50039;
}

double f_od(double x) {
        double r50040 = 1.0;
        double r50041 = x;
        double r50042 = r50041 * r50041;
        double r50043 = r50040 - r50042;
        double r50044 = sqrt(r50043);
        return r50044;
}

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 r50045, r50046, r50047, r50048, r50049;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50045, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50046);
        mpfr_init(r50047);
        mpfr_init(r50048);
        mpfr_init(r50049);
}

double f_im(double x) {
        ;
        mpfr_set_d(r50046, x, MPFR_RNDN);
        mpfr_mul(r50047, r50046, r50046, MPFR_RNDN);
        mpfr_sub(r50048, r50045, r50047, MPFR_RNDN);
        mpfr_sqrt(r50049, r50048, MPFR_RNDN);
        return mpfr_get_d(r50049, MPFR_RNDN);
}

static mpfr_t r50050, r50051, r50052, r50053, r50054;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50050, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50051);
        mpfr_init(r50052);
        mpfr_init(r50053);
        mpfr_init(r50054);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r50051, x, MPFR_RNDN);
        mpfr_sqr(r50052, r50051, MPFR_RNDN);
        mpfr_sub(r50053, r50050, r50052, MPFR_RNDN);
        mpfr_sqrt(r50054, r50053, MPFR_RNDN);
        return mpfr_get_d(r50054, MPFR_RNDN);
}

static mpfr_t r50055, r50056, r50057, r50058, r50059;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r50055, "1.0", 10, MPFR_RNDN);
        mpfr_init(r50056);
        mpfr_init(r50057);
        mpfr_init(r50058);
        mpfr_init(r50059);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r50056, x, MPFR_RNDN);
        mpfr_sqr(r50057, r50056, MPFR_RNDN);
        mpfr_sub(r50058, r50055, r50057, MPFR_RNDN);
        mpfr_sqrt(r50059, r50058, MPFR_RNDN);
        return mpfr_get_d(r50059, MPFR_RNDN);
}

