#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 r52261 = x;
        float r52262 = y;
        float r52263 = r52261 * r52262;
        float r52264 = z;
        float r52265 = 1.0;
        float r52266 = r52265 - r52262;
        float r52267 = r52264 * r52266;
        float r52268 = r52263 + r52267;
        return r52268;
}

double f_id(double x, double y, double z) {
        double r52269 = x;
        double r52270 = y;
        double r52271 = r52269 * r52270;
        double r52272 = z;
        double r52273 = 1.0;
        double r52274 = r52273 - r52270;
        double r52275 = r52272 * r52274;
        double r52276 = r52271 + r52275;
        return r52276;
}


double f_of(float x, float y, float z) {
        float r52277 = x;
        float r52278 = y;
        float r52279 = r52277 * r52278;
        float r52280 = z;
        float r52281 = 1.0;
        float r52282 = r52281 - r52278;
        float r52283 = r52280 * r52282;
        float r52284 = r52279 + r52283;
        return r52284;
}

double f_od(double x, double y, double z) {
        double r52285 = x;
        double r52286 = y;
        double r52287 = r52285 * r52286;
        double r52288 = z;
        double r52289 = 1.0;
        double r52290 = r52289 - r52286;
        double r52291 = r52288 * r52290;
        double r52292 = r52287 + r52291;
        return r52292;
}

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 r52293, r52294, r52295, r52296, r52297, r52298, r52299, r52300;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52293);
        mpfr_init(r52294);
        mpfr_init(r52295);
        mpfr_init(r52296);
        mpfr_init_set_str(r52297, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52298);
        mpfr_init(r52299);
        mpfr_init(r52300);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52293, x, MPFR_RNDN);
        mpfr_set_d(r52294, y, MPFR_RNDN);
        mpfr_mul(r52295, r52293, r52294, MPFR_RNDN);
        mpfr_set_d(r52296, z, MPFR_RNDN);
        ;
        mpfr_sub(r52298, r52297, r52294, MPFR_RNDN);
        mpfr_mul(r52299, r52296, r52298, MPFR_RNDN);
        mpfr_add(r52300, r52295, r52299, MPFR_RNDN);
        return mpfr_get_d(r52300, MPFR_RNDN);
}

static mpfr_t r52301, r52302, r52303, r52304, r52305, r52306, r52307, r52308;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52301);
        mpfr_init(r52302);
        mpfr_init(r52303);
        mpfr_init(r52304);
        mpfr_init_set_str(r52305, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52306);
        mpfr_init(r52307);
        mpfr_init(r52308);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52301, x, MPFR_RNDN);
        mpfr_set_d(r52302, y, MPFR_RNDN);
        mpfr_mul(r52303, r52301, r52302, MPFR_RNDN);
        mpfr_set_d(r52304, z, MPFR_RNDN);
        ;
        mpfr_sub(r52306, r52305, r52302, MPFR_RNDN);
        mpfr_mul(r52307, r52304, r52306, MPFR_RNDN);
        mpfr_add(r52308, r52303, r52307, MPFR_RNDN);
        return mpfr_get_d(r52308, MPFR_RNDN);
}

static mpfr_t r52309, r52310, r52311, r52312, r52313, r52314, r52315, r52316;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52309);
        mpfr_init(r52310);
        mpfr_init(r52311);
        mpfr_init(r52312);
        mpfr_init_set_str(r52313, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52314);
        mpfr_init(r52315);
        mpfr_init(r52316);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52309, x, MPFR_RNDN);
        mpfr_set_d(r52310, y, MPFR_RNDN);
        mpfr_mul(r52311, r52309, r52310, MPFR_RNDN);
        mpfr_set_d(r52312, z, MPFR_RNDN);
        ;
        mpfr_sub(r52314, r52313, r52310, MPFR_RNDN);
        mpfr_mul(r52315, r52312, r52314, MPFR_RNDN);
        mpfr_add(r52316, r52311, r52315, MPFR_RNDN);
        return mpfr_get_d(r52316, MPFR_RNDN);
}

