#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 r51326 = x;
        float r51327 = y;
        float r51328 = r51326 * r51327;
        float r51329 = z;
        float r51330 = 1.0;
        float r51331 = r51330 - r51327;
        float r51332 = r51329 * r51331;
        float r51333 = r51328 + r51332;
        return r51333;
}

double f_id(double x, double y, double z) {
        double r51334 = x;
        double r51335 = y;
        double r51336 = r51334 * r51335;
        double r51337 = z;
        double r51338 = 1.0;
        double r51339 = r51338 - r51335;
        double r51340 = r51337 * r51339;
        double r51341 = r51336 + r51340;
        return r51341;
}


double f_of(float x, float y, float z) {
        float r51342 = x;
        float r51343 = y;
        float r51344 = r51342 * r51343;
        float r51345 = z;
        float r51346 = 1.0;
        float r51347 = r51346 - r51343;
        float r51348 = r51345 * r51347;
        float r51349 = r51344 + r51348;
        return r51349;
}

double f_od(double x, double y, double z) {
        double r51350 = x;
        double r51351 = y;
        double r51352 = r51350 * r51351;
        double r51353 = z;
        double r51354 = 1.0;
        double r51355 = r51354 - r51351;
        double r51356 = r51353 * r51355;
        double r51357 = r51352 + r51356;
        return r51357;
}

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 r51358, r51359, r51360, r51361, r51362, r51363, r51364, r51365;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51358);
        mpfr_init(r51359);
        mpfr_init(r51360);
        mpfr_init(r51361);
        mpfr_init_set_str(r51362, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51363);
        mpfr_init(r51364);
        mpfr_init(r51365);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51358, x, MPFR_RNDN);
        mpfr_set_d(r51359, y, MPFR_RNDN);
        mpfr_mul(r51360, r51358, r51359, MPFR_RNDN);
        mpfr_set_d(r51361, z, MPFR_RNDN);
        ;
        mpfr_sub(r51363, r51362, r51359, MPFR_RNDN);
        mpfr_mul(r51364, r51361, r51363, MPFR_RNDN);
        mpfr_add(r51365, r51360, r51364, MPFR_RNDN);
        return mpfr_get_d(r51365, MPFR_RNDN);
}

static mpfr_t r51366, r51367, r51368, r51369, r51370, r51371, r51372, r51373;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51366);
        mpfr_init(r51367);
        mpfr_init(r51368);
        mpfr_init(r51369);
        mpfr_init_set_str(r51370, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51371);
        mpfr_init(r51372);
        mpfr_init(r51373);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51366, x, MPFR_RNDN);
        mpfr_set_d(r51367, y, MPFR_RNDN);
        mpfr_mul(r51368, r51366, r51367, MPFR_RNDN);
        mpfr_set_d(r51369, z, MPFR_RNDN);
        ;
        mpfr_sub(r51371, r51370, r51367, MPFR_RNDN);
        mpfr_mul(r51372, r51369, r51371, MPFR_RNDN);
        mpfr_add(r51373, r51368, r51372, MPFR_RNDN);
        return mpfr_get_d(r51373, MPFR_RNDN);
}

static mpfr_t r51374, r51375, r51376, r51377, r51378, r51379, r51380, r51381;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51374);
        mpfr_init(r51375);
        mpfr_init(r51376);
        mpfr_init(r51377);
        mpfr_init_set_str(r51378, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51379);
        mpfr_init(r51380);
        mpfr_init(r51381);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51374, x, MPFR_RNDN);
        mpfr_set_d(r51375, y, MPFR_RNDN);
        mpfr_mul(r51376, r51374, r51375, MPFR_RNDN);
        mpfr_set_d(r51377, z, MPFR_RNDN);
        ;
        mpfr_sub(r51379, r51378, r51375, MPFR_RNDN);
        mpfr_mul(r51380, r51377, r51379, MPFR_RNDN);
        mpfr_add(r51381, r51376, r51380, MPFR_RNDN);
        return mpfr_get_d(r51381, MPFR_RNDN);
}

