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

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

double f_if(float x, float y, float z) {
        float r49669 = x;
        float r49670 = y;
        float r49671 = z;
        float r49672 = r49670 - r49671;
        float r49673 = 1.0f;
        float r49674 = r49672 + r49673;
        float r49675 = r49669 * r49674;
        float r49676 = r49675 / r49671;
        return r49676;
}

double f_id(double x, double y, double z) {
        double r49677 = x;
        double r49678 = y;
        double r49679 = z;
        double r49680 = r49678 - r49679;
        double r49681 = 1.0;
        double r49682 = r49680 + r49681;
        double r49683 = r49677 * r49682;
        double r49684 = r49683 / r49679;
        return r49684;
}


double f_of(float x, float y, float z) {
        float r49685 = z;
        float r49686 = -3.62875581368641e-69f;
        bool r49687 = r49685 <= r49686;
        float r49688 = x;
        float r49689 = y;
        float r49690 = r49689 - r49685;
        float r49691 = 1.0f;
        float r49692 = r49690 + r49691;
        float r49693 = r49685 / r49692;
        float r49694 = r49688 / r49693;
        float r49695 = 5.986002856393549e-144f;
        bool r49696 = r49685 <= r49695;
        float r49697 = 1.0f;
        float r49698 = r49688 * r49692;
        float r49699 = r49685 / r49698;
        float r49700 = r49697 / r49699;
        float r49701 = r49696 ? r49700 : r49694;
        float r49702 = r49687 ? r49694 : r49701;
        return r49702;
}

double f_od(double x, double y, double z) {
        double r49703 = z;
        double r49704 = -3.62875581368641e-69;
        bool r49705 = r49703 <= r49704;
        double r49706 = x;
        double r49707 = y;
        double r49708 = r49707 - r49703;
        double r49709 = 1.0;
        double r49710 = r49708 + r49709;
        double r49711 = r49703 / r49710;
        double r49712 = r49706 / r49711;
        double r49713 = 5.986002856393549e-144;
        bool r49714 = r49703 <= r49713;
        double r49715 = 1.0;
        double r49716 = r49706 * r49710;
        double r49717 = r49703 / r49716;
        double r49718 = r49715 / r49717;
        double r49719 = r49714 ? r49718 : r49712;
        double r49720 = r49705 ? r49712 : r49719;
        return r49720;
}

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 r49721, r49722, r49723, r49724, r49725, r49726, r49727, r49728;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r49721);
        mpfr_init(r49722);
        mpfr_init(r49723);
        mpfr_init(r49724);
        mpfr_init_set_str(r49725, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49726);
        mpfr_init(r49727);
        mpfr_init(r49728);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r49721, x, MPFR_RNDN);
        mpfr_set_d(r49722, y, MPFR_RNDN);
        mpfr_set_d(r49723, z, MPFR_RNDN);
        mpfr_sub(r49724, r49722, r49723, MPFR_RNDN);
        ;
        mpfr_add(r49726, r49724, r49725, MPFR_RNDN);
        mpfr_mul(r49727, r49721, r49726, MPFR_RNDN);
        mpfr_div(r49728, r49727, r49723, MPFR_RNDN);
        return mpfr_get_d(r49728, MPFR_RNDN);
}

static mpfr_t r49729, r49730, r49731, r49732, r49733, r49734, r49735, r49736, r49737, r49738, r49739, r49740, r49741, r49742, r49743, r49744, r49745, r49746;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49729);
        mpfr_init_set_str(r49730, "-3.62875581368641e-69", 10, MPFR_RNDN);
        mpfr_init(r49731);
        mpfr_init(r49732);
        mpfr_init(r49733);
        mpfr_init(r49734);
        mpfr_init_set_str(r49735, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49736);
        mpfr_init(r49737);
        mpfr_init(r49738);
        mpfr_init_set_str(r49739, "5.986002856393549e-144", 10, MPFR_RNDN);
        mpfr_init(r49740);
        mpfr_init_set_str(r49741, "1", 10, MPFR_RNDN);
        mpfr_init(r49742);
        mpfr_init(r49743);
        mpfr_init(r49744);
        mpfr_init(r49745);
        mpfr_init(r49746);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r49729, z, MPFR_RNDN);
        ;
        mpfr_set_si(r49731, mpfr_cmp(r49729, r49730) <= 0, MPFR_RNDN);
        mpfr_set_d(r49732, x, MPFR_RNDN);
        mpfr_set_d(r49733, y, MPFR_RNDN);
        mpfr_sub(r49734, r49733, r49729, MPFR_RNDN);
        ;
        mpfr_add(r49736, r49734, r49735, MPFR_RNDN);
        mpfr_div(r49737, r49729, r49736, MPFR_RNDN);
        mpfr_div(r49738, r49732, r49737, MPFR_RNDN);
        ;
        mpfr_set_si(r49740, mpfr_cmp(r49729, r49739) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r49742, r49732, r49736, MPFR_RNDN);
        mpfr_div(r49743, r49729, r49742, MPFR_RNDN);
        mpfr_div(r49744, r49741, r49743, MPFR_RNDN);
        if (mpfr_get_si(r49740, MPFR_RNDN)) { mpfr_set(r49745, r49744, MPFR_RNDN); } else { mpfr_set(r49745, r49738, MPFR_RNDN); };
        if (mpfr_get_si(r49731, MPFR_RNDN)) { mpfr_set(r49746, r49738, MPFR_RNDN); } else { mpfr_set(r49746, r49745, MPFR_RNDN); };
        return mpfr_get_d(r49746, MPFR_RNDN);
}

static mpfr_t r49747, r49748, r49749, r49750, r49751, r49752, r49753, r49754, r49755, r49756, r49757, r49758, r49759, r49760, r49761, r49762, r49763, r49764;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r49747);
        mpfr_init_set_str(r49748, "-3.62875581368641e-69", 10, MPFR_RNDN);
        mpfr_init(r49749);
        mpfr_init(r49750);
        mpfr_init(r49751);
        mpfr_init(r49752);
        mpfr_init_set_str(r49753, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49754);
        mpfr_init(r49755);
        mpfr_init(r49756);
        mpfr_init_set_str(r49757, "5.986002856393549e-144", 10, MPFR_RNDN);
        mpfr_init(r49758);
        mpfr_init_set_str(r49759, "1", 10, MPFR_RNDN);
        mpfr_init(r49760);
        mpfr_init(r49761);
        mpfr_init(r49762);
        mpfr_init(r49763);
        mpfr_init(r49764);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r49747, z, MPFR_RNDN);
        ;
        mpfr_set_si(r49749, mpfr_cmp(r49747, r49748) <= 0, MPFR_RNDN);
        mpfr_set_d(r49750, x, MPFR_RNDN);
        mpfr_set_d(r49751, y, MPFR_RNDN);
        mpfr_sub(r49752, r49751, r49747, MPFR_RNDN);
        ;
        mpfr_add(r49754, r49752, r49753, MPFR_RNDN);
        mpfr_div(r49755, r49747, r49754, MPFR_RNDN);
        mpfr_div(r49756, r49750, r49755, MPFR_RNDN);
        ;
        mpfr_set_si(r49758, mpfr_cmp(r49747, r49757) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r49760, r49750, r49754, MPFR_RNDN);
        mpfr_div(r49761, r49747, r49760, MPFR_RNDN);
        mpfr_div(r49762, r49759, r49761, MPFR_RNDN);
        if (mpfr_get_si(r49758, MPFR_RNDN)) { mpfr_set(r49763, r49762, MPFR_RNDN); } else { mpfr_set(r49763, r49756, MPFR_RNDN); };
        if (mpfr_get_si(r49749, MPFR_RNDN)) { mpfr_set(r49764, r49756, MPFR_RNDN); } else { mpfr_set(r49764, r49763, MPFR_RNDN); };
        return mpfr_get_d(r49764, MPFR_RNDN);
}

