#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 r34074 = 1.0;
        float r34075 = x;
        float r34076 = r34075 * r34075;
        float r34077 = r34074 - r34076;
        float r34078 = sqrt(r34077);
        return r34078;
}

double f_id(double x) {
        double r34079 = 1.0;
        double r34080 = x;
        double r34081 = r34080 * r34080;
        double r34082 = r34079 - r34081;
        double r34083 = sqrt(r34082);
        return r34083;
}


double f_of(float x) {
        float r34084 = 1.0;
        float r34085 = x;
        float r34086 = r34085 * r34085;
        float r34087 = r34084 - r34086;
        float r34088 = sqrt(r34087);
        return r34088;
}

double f_od(double x) {
        double r34089 = 1.0;
        double r34090 = x;
        double r34091 = r34090 * r34090;
        double r34092 = r34089 - r34091;
        double r34093 = sqrt(r34092);
        return r34093;
}

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 r34094, r34095, r34096, r34097, r34098;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r34094, "1.0", 10, MPFR_RNDN);
        mpfr_init(r34095);
        mpfr_init(r34096);
        mpfr_init(r34097);
        mpfr_init(r34098);
}

double f_im(double x) {
        ;
        mpfr_set_d(r34095, x, MPFR_RNDN);
        mpfr_mul(r34096, r34095, r34095, MPFR_RNDN);
        mpfr_sub(r34097, r34094, r34096, MPFR_RNDN);
        mpfr_sqrt(r34098, r34097, MPFR_RNDN);
        return mpfr_get_d(r34098, MPFR_RNDN);
}

static mpfr_t r34099, r34100, r34101, r34102, r34103;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r34099, "1.0", 10, MPFR_RNDN);
        mpfr_init(r34100);
        mpfr_init(r34101);
        mpfr_init(r34102);
        mpfr_init(r34103);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r34100, x, MPFR_RNDN);
        mpfr_mul(r34101, r34100, r34100, MPFR_RNDN);
        mpfr_sub(r34102, r34099, r34101, MPFR_RNDN);
        mpfr_sqrt(r34103, r34102, MPFR_RNDN);
        return mpfr_get_d(r34103, MPFR_RNDN);
}

static mpfr_t r34104, r34105, r34106, r34107, r34108;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r34104, "1.0", 10, MPFR_RNDN);
        mpfr_init(r34105);
        mpfr_init(r34106);
        mpfr_init(r34107);
        mpfr_init(r34108);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r34105, x, MPFR_RNDN);
        mpfr_mul(r34106, r34105, r34105, MPFR_RNDN);
        mpfr_sub(r34107, r34104, r34106, MPFR_RNDN);
        mpfr_sqrt(r34108, r34107, MPFR_RNDN);
        return mpfr_get_d(r34108, MPFR_RNDN);
}

