#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 r33797 = 1.0;
        float r33798 = x;
        float r33799 = r33798 * r33798;
        float r33800 = r33797 - r33799;
        float r33801 = sqrt(r33800);
        return r33801;
}

double f_id(double x) {
        double r33802 = 1.0;
        double r33803 = x;
        double r33804 = r33803 * r33803;
        double r33805 = r33802 - r33804;
        double r33806 = sqrt(r33805);
        return r33806;
}


double f_of(float x) {
        float r33807 = 1.0;
        float r33808 = x;
        float r33809 = r33808 * r33808;
        float r33810 = r33807 - r33809;
        float r33811 = sqrt(r33810);
        return r33811;
}

double f_od(double x) {
        double r33812 = 1.0;
        double r33813 = x;
        double r33814 = r33813 * r33813;
        double r33815 = r33812 - r33814;
        double r33816 = sqrt(r33815);
        return r33816;
}

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 r33817, r33818, r33819, r33820, r33821;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33817, "1.0", 10, MPFR_RNDN);
        mpfr_init(r33818);
        mpfr_init(r33819);
        mpfr_init(r33820);
        mpfr_init(r33821);
}

double f_im(double x) {
        ;
        mpfr_set_d(r33818, x, MPFR_RNDN);
        mpfr_mul(r33819, r33818, r33818, MPFR_RNDN);
        mpfr_sub(r33820, r33817, r33819, MPFR_RNDN);
        mpfr_sqrt(r33821, r33820, MPFR_RNDN);
        return mpfr_get_d(r33821, MPFR_RNDN);
}

static mpfr_t r33822, r33823, r33824, r33825, r33826;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33822, "1.0", 10, MPFR_RNDN);
        mpfr_init(r33823);
        mpfr_init(r33824);
        mpfr_init(r33825);
        mpfr_init(r33826);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r33823, x, MPFR_RNDN);
        mpfr_mul(r33824, r33823, r33823, MPFR_RNDN);
        mpfr_sub(r33825, r33822, r33824, MPFR_RNDN);
        mpfr_sqrt(r33826, r33825, MPFR_RNDN);
        return mpfr_get_d(r33826, MPFR_RNDN);
}

static mpfr_t r33827, r33828, r33829, r33830, r33831;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r33827, "1.0", 10, MPFR_RNDN);
        mpfr_init(r33828);
        mpfr_init(r33829);
        mpfr_init(r33830);
        mpfr_init(r33831);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r33828, x, MPFR_RNDN);
        mpfr_mul(r33829, r33828, r33828, MPFR_RNDN);
        mpfr_sub(r33830, r33827, r33829, MPFR_RNDN);
        mpfr_sqrt(r33831, r33830, MPFR_RNDN);
        return mpfr_get_d(r33831, MPFR_RNDN);
}

