#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 r52225 = x;
        float r52226 = y;
        float r52227 = r52225 * r52226;
        float r52228 = z;
        float r52229 = 1.0;
        float r52230 = r52229 - r52226;
        float r52231 = r52228 * r52230;
        float r52232 = r52227 + r52231;
        return r52232;
}

double f_id(double x, double y, double z) {
        double r52233 = x;
        double r52234 = y;
        double r52235 = r52233 * r52234;
        double r52236 = z;
        double r52237 = 1.0;
        double r52238 = r52237 - r52234;
        double r52239 = r52236 * r52238;
        double r52240 = r52235 + r52239;
        return r52240;
}


double f_of(float x, float y, float z) {
        float r52241 = x;
        float r52242 = y;
        float r52243 = r52241 * r52242;
        float r52244 = z;
        float r52245 = 1.0;
        float r52246 = r52245 - r52242;
        float r52247 = r52244 * r52246;
        float r52248 = r52243 + r52247;
        return r52248;
}

double f_od(double x, double y, double z) {
        double r52249 = x;
        double r52250 = y;
        double r52251 = r52249 * r52250;
        double r52252 = z;
        double r52253 = 1.0;
        double r52254 = r52253 - r52250;
        double r52255 = r52252 * r52254;
        double r52256 = r52251 + r52255;
        return r52256;
}

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 r52257, r52258, r52259, r52260, r52261, r52262, r52263, r52264;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52257);
        mpfr_init(r52258);
        mpfr_init(r52259);
        mpfr_init(r52260);
        mpfr_init_set_str(r52261, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52262);
        mpfr_init(r52263);
        mpfr_init(r52264);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52257, x, MPFR_RNDN);
        mpfr_set_d(r52258, y, MPFR_RNDN);
        mpfr_mul(r52259, r52257, r52258, MPFR_RNDN);
        mpfr_set_d(r52260, z, MPFR_RNDN);
        ;
        mpfr_sub(r52262, r52261, r52258, MPFR_RNDN);
        mpfr_mul(r52263, r52260, r52262, MPFR_RNDN);
        mpfr_add(r52264, r52259, r52263, MPFR_RNDN);
        return mpfr_get_d(r52264, MPFR_RNDN);
}

static mpfr_t r52265, r52266, r52267, r52268, r52269, r52270, r52271, r52272;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52265);
        mpfr_init(r52266);
        mpfr_init(r52267);
        mpfr_init(r52268);
        mpfr_init_set_str(r52269, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52270);
        mpfr_init(r52271);
        mpfr_init(r52272);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52265, x, MPFR_RNDN);
        mpfr_set_d(r52266, y, MPFR_RNDN);
        mpfr_mul(r52267, r52265, r52266, MPFR_RNDN);
        mpfr_set_d(r52268, z, MPFR_RNDN);
        ;
        mpfr_sub(r52270, r52269, r52266, MPFR_RNDN);
        mpfr_mul(r52271, r52268, r52270, MPFR_RNDN);
        mpfr_add(r52272, r52267, r52271, MPFR_RNDN);
        return mpfr_get_d(r52272, MPFR_RNDN);
}

static mpfr_t r52273, r52274, r52275, r52276, r52277, r52278, r52279, r52280;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52273);
        mpfr_init(r52274);
        mpfr_init(r52275);
        mpfr_init(r52276);
        mpfr_init_set_str(r52277, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52278);
        mpfr_init(r52279);
        mpfr_init(r52280);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52273, x, MPFR_RNDN);
        mpfr_set_d(r52274, y, MPFR_RNDN);
        mpfr_mul(r52275, r52273, r52274, MPFR_RNDN);
        mpfr_set_d(r52276, z, MPFR_RNDN);
        ;
        mpfr_sub(r52278, r52277, r52274, MPFR_RNDN);
        mpfr_mul(r52279, r52276, r52278, MPFR_RNDN);
        mpfr_add(r52280, r52275, r52279, MPFR_RNDN);
        return mpfr_get_d(r52280, MPFR_RNDN);
}

