#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 r49613 = x;
        float r49614 = y;
        float r49615 = r49613 * r49614;
        float r49616 = z;
        float r49617 = 1.0f;
        float r49618 = r49617 - r49614;
        float r49619 = r49616 * r49618;
        float r49620 = r49615 + r49619;
        return r49620;
}

double f_id(double x, double y, double z) {
        double r49621 = x;
        double r49622 = y;
        double r49623 = r49621 * r49622;
        double r49624 = z;
        double r49625 = 1.0;
        double r49626 = r49625 - r49622;
        double r49627 = r49624 * r49626;
        double r49628 = r49623 + r49627;
        return r49628;
}


double f_of(float x, float y, float z) {
        float r49629 = x;
        float r49630 = y;
        float r49631 = r49629 * r49630;
        float r49632 = z;
        float r49633 = 1.0f;
        float r49634 = r49633 - r49630;
        float r49635 = r49632 * r49634;
        float r49636 = r49631 + r49635;
        return r49636;
}

double f_od(double x, double y, double z) {
        double r49637 = x;
        double r49638 = y;
        double r49639 = r49637 * r49638;
        double r49640 = z;
        double r49641 = 1.0;
        double r49642 = r49641 - r49638;
        double r49643 = r49640 * r49642;
        double r49644 = r49639 + r49643;
        return r49644;
}

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 r49645, r49646, r49647, r49648, r49649, r49650, r49651, r49652;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r49645);
        mpfr_init(r49646);
        mpfr_init(r49647);
        mpfr_init(r49648);
        mpfr_init_set_str(r49649, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49650);
        mpfr_init(r49651);
        mpfr_init(r49652);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r49645, x, MPFR_RNDN);
        mpfr_set_d(r49646, y, MPFR_RNDN);
        mpfr_mul(r49647, r49645, r49646, MPFR_RNDN);
        mpfr_set_d(r49648, z, MPFR_RNDN);
        ;
        mpfr_sub(r49650, r49649, r49646, MPFR_RNDN);
        mpfr_mul(r49651, r49648, r49650, MPFR_RNDN);
        mpfr_add(r49652, r49647, r49651, MPFR_RNDN);
        return mpfr_get_d(r49652, MPFR_RNDN);
}

static mpfr_t r49653, r49654, r49655, r49656, r49657, r49658, r49659, r49660;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49653);
        mpfr_init(r49654);
        mpfr_init(r49655);
        mpfr_init(r49656);
        mpfr_init_set_str(r49657, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49658);
        mpfr_init(r49659);
        mpfr_init(r49660);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r49653, x, MPFR_RNDN);
        mpfr_set_d(r49654, y, MPFR_RNDN);
        mpfr_mul(r49655, r49653, r49654, MPFR_RNDN);
        mpfr_set_d(r49656, z, MPFR_RNDN);
        ;
        mpfr_sub(r49658, r49657, r49654, MPFR_RNDN);
        mpfr_mul(r49659, r49656, r49658, MPFR_RNDN);
        mpfr_add(r49660, r49655, r49659, MPFR_RNDN);
        return mpfr_get_d(r49660, MPFR_RNDN);
}

static mpfr_t r49661, r49662, r49663, r49664, r49665, r49666, r49667, r49668;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49661);
        mpfr_init(r49662);
        mpfr_init(r49663);
        mpfr_init(r49664);
        mpfr_init_set_str(r49665, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49666);
        mpfr_init(r49667);
        mpfr_init(r49668);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r49661, x, MPFR_RNDN);
        mpfr_set_d(r49662, y, MPFR_RNDN);
        mpfr_mul(r49663, r49661, r49662, MPFR_RNDN);
        mpfr_set_d(r49664, z, MPFR_RNDN);
        ;
        mpfr_sub(r49666, r49665, r49662, MPFR_RNDN);
        mpfr_mul(r49667, r49664, r49666, MPFR_RNDN);
        mpfr_add(r49668, r49663, r49667, MPFR_RNDN);
        return mpfr_get_d(r49668, MPFR_RNDN);
}

