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

char *name = "Diagrams.TwoD.Segment:bezierClip from diagrams-lib-1.3.0.3";

double f_if(float x, float y, float z) {
        float r52393 = x;
        float r52394 = y;
        float r52395 = r52393 * r52394;
        float r52396 = z;
        float r52397 = 1.0;
        float r52398 = r52397 - r52394;
        float r52399 = r52396 * r52398;
        float r52400 = r52395 + r52399;
        return r52400;
}

double f_id(double x, double y, double z) {
        double r52401 = x;
        double r52402 = y;
        double r52403 = r52401 * r52402;
        double r52404 = z;
        double r52405 = 1.0;
        double r52406 = r52405 - r52402;
        double r52407 = r52404 * r52406;
        double r52408 = r52403 + r52407;
        return r52408;
}


double f_of(float x, float y, float z) {
        float r52409 = x;
        float r52410 = y;
        float r52411 = r52409 * r52410;
        float r52412 = z;
        float r52413 = 1.0;
        float r52414 = r52413 - r52410;
        float r52415 = r52412 * r52414;
        float r52416 = r52411 + r52415;
        return r52416;
}

double f_od(double x, double y, double z) {
        double r52417 = x;
        double r52418 = y;
        double r52419 = r52417 * r52418;
        double r52420 = z;
        double r52421 = 1.0;
        double r52422 = r52421 - r52418;
        double r52423 = r52420 * r52422;
        double r52424 = r52419 + r52423;
        return r52424;
}

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 r52425, r52426, r52427, r52428, r52429, r52430, r52431, r52432;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52425);
        mpfr_init(r52426);
        mpfr_init(r52427);
        mpfr_init(r52428);
        mpfr_init_set_str(r52429, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52430);
        mpfr_init(r52431);
        mpfr_init(r52432);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52425, x, MPFR_RNDN);
        mpfr_set_d(r52426, y, MPFR_RNDN);
        mpfr_mul(r52427, r52425, r52426, MPFR_RNDN);
        mpfr_set_d(r52428, z, MPFR_RNDN);
        ;
        mpfr_sub(r52430, r52429, r52426, MPFR_RNDN);
        mpfr_mul(r52431, r52428, r52430, MPFR_RNDN);
        mpfr_add(r52432, r52427, r52431, MPFR_RNDN);
        return mpfr_get_d(r52432, MPFR_RNDN);
}

static mpfr_t r52433, r52434, r52435, r52436, r52437, r52438, r52439, r52440;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52433);
        mpfr_init(r52434);
        mpfr_init(r52435);
        mpfr_init(r52436);
        mpfr_init_set_str(r52437, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52438);
        mpfr_init(r52439);
        mpfr_init(r52440);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52433, x, MPFR_RNDN);
        mpfr_set_d(r52434, y, MPFR_RNDN);
        mpfr_mul(r52435, r52433, r52434, MPFR_RNDN);
        mpfr_set_d(r52436, z, MPFR_RNDN);
        ;
        mpfr_sub(r52438, r52437, r52434, MPFR_RNDN);
        mpfr_mul(r52439, r52436, r52438, MPFR_RNDN);
        mpfr_add(r52440, r52435, r52439, MPFR_RNDN);
        return mpfr_get_d(r52440, MPFR_RNDN);
}

static mpfr_t r52441, r52442, r52443, r52444, r52445, r52446, r52447, r52448;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52441);
        mpfr_init(r52442);
        mpfr_init(r52443);
        mpfr_init(r52444);
        mpfr_init_set_str(r52445, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52446);
        mpfr_init(r52447);
        mpfr_init(r52448);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52441, x, MPFR_RNDN);
        mpfr_set_d(r52442, y, MPFR_RNDN);
        mpfr_mul(r52443, r52441, r52442, MPFR_RNDN);
        mpfr_set_d(r52444, z, MPFR_RNDN);
        ;
        mpfr_sub(r52446, r52445, r52442, MPFR_RNDN);
        mpfr_mul(r52447, r52444, r52446, MPFR_RNDN);
        mpfr_add(r52448, r52443, r52447, MPFR_RNDN);
        return mpfr_get_d(r52448, MPFR_RNDN);
}

