#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 r52281 = x;
        float r52282 = y;
        float r52283 = z;
        float r52284 = r52282 - r52283;
        float r52285 = 1.0;
        float r52286 = r52284 + r52285;
        float r52287 = r52281 * r52286;
        float r52288 = r52287 / r52283;
        return r52288;
}

double f_id(double x, double y, double z) {
        double r52289 = x;
        double r52290 = y;
        double r52291 = z;
        double r52292 = r52290 - r52291;
        double r52293 = 1.0;
        double r52294 = r52292 + r52293;
        double r52295 = r52289 * r52294;
        double r52296 = r52295 / r52291;
        return r52296;
}


double f_of(float x, float y, float z) {
        float r52297 = x;
        float r52298 = y;
        float r52299 = z;
        float r52300 = r52298 - r52299;
        float r52301 = 1.0;
        float r52302 = r52300 + r52301;
        float r52303 = r52297 * r52302;
        float r52304 = r52303 / r52299;
        float r52305 = -1.1669970660600162e+91;
        bool r52306 = r52304 <= r52305;
        float r52307 = r52297 / r52299;
        float r52308 = r52298 + r52301;
        float r52309 = r52307 * r52308;
        float r52310 = r52309 - r52297;
        float r52311 = 7.984324309740574e-37;
        bool r52312 = r52304 <= r52311;
        float r52313 = r52299 / r52302;
        float r52314 = r52297 / r52313;
        float r52315 = r52312 ? r52314 : r52310;
        float r52316 = r52306 ? r52310 : r52315;
        return r52316;
}

double f_od(double x, double y, double z) {
        double r52317 = x;
        double r52318 = y;
        double r52319 = z;
        double r52320 = r52318 - r52319;
        double r52321 = 1.0;
        double r52322 = r52320 + r52321;
        double r52323 = r52317 * r52322;
        double r52324 = r52323 / r52319;
        double r52325 = -1.1669970660600162e+91;
        bool r52326 = r52324 <= r52325;
        double r52327 = r52317 / r52319;
        double r52328 = r52318 + r52321;
        double r52329 = r52327 * r52328;
        double r52330 = r52329 - r52317;
        double r52331 = 7.984324309740574e-37;
        bool r52332 = r52324 <= r52331;
        double r52333 = r52319 / r52322;
        double r52334 = r52317 / r52333;
        double r52335 = r52332 ? r52334 : r52330;
        double r52336 = r52326 ? r52330 : r52335;
        return r52336;
}

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 r52337, r52338, r52339, r52340, r52341, r52342, r52343, r52344;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52337);
        mpfr_init(r52338);
        mpfr_init(r52339);
        mpfr_init(r52340);
        mpfr_init_set_str(r52341, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52342);
        mpfr_init(r52343);
        mpfr_init(r52344);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52337, x, MPFR_RNDN);
        mpfr_set_d(r52338, y, MPFR_RNDN);
        mpfr_set_d(r52339, z, MPFR_RNDN);
        mpfr_sub(r52340, r52338, r52339, MPFR_RNDN);
        ;
        mpfr_add(r52342, r52340, r52341, MPFR_RNDN);
        mpfr_mul(r52343, r52337, r52342, MPFR_RNDN);
        mpfr_div(r52344, r52343, r52339, MPFR_RNDN);
        return mpfr_get_d(r52344, MPFR_RNDN);
}

static mpfr_t r52345, r52346, r52347, r52348, r52349, r52350, r52351, r52352, r52353, r52354, r52355, r52356, r52357, r52358, r52359, r52360, r52361, r52362, r52363, r52364;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52345);
        mpfr_init(r52346);
        mpfr_init(r52347);
        mpfr_init(r52348);
        mpfr_init_set_str(r52349, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52350);
        mpfr_init(r52351);
        mpfr_init(r52352);
        mpfr_init_set_str(r52353, "-1.1669970660600162e+91", 10, MPFR_RNDN);
        mpfr_init(r52354);
        mpfr_init(r52355);
        mpfr_init(r52356);
        mpfr_init(r52357);
        mpfr_init(r52358);
        mpfr_init_set_str(r52359, "7.984324309740574e-37", 10, MPFR_RNDN);
        mpfr_init(r52360);
        mpfr_init(r52361);
        mpfr_init(r52362);
        mpfr_init(r52363);
        mpfr_init(r52364);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52345, x, MPFR_RNDN);
        mpfr_set_d(r52346, y, MPFR_RNDN);
        mpfr_set_d(r52347, z, MPFR_RNDN);
        mpfr_sub(r52348, r52346, r52347, MPFR_RNDN);
        ;
        mpfr_add(r52350, r52348, r52349, MPFR_RNDN);
        mpfr_mul(r52351, r52345, r52350, MPFR_RNDN);
        mpfr_div(r52352, r52351, r52347, MPFR_RNDN);
        ;
        mpfr_set_si(r52354, mpfr_cmp(r52352, r52353) <= 0, MPFR_RNDN);
        mpfr_div(r52355, r52345, r52347, MPFR_RNDN);
        mpfr_add(r52356, r52346, r52349, MPFR_RNDN);
        mpfr_mul(r52357, r52355, r52356, MPFR_RNDN);
        mpfr_sub(r52358, r52357, r52345, MPFR_RNDN);
        ;
        mpfr_set_si(r52360, mpfr_cmp(r52352, r52359) <= 0, MPFR_RNDN);
        mpfr_div(r52361, r52347, r52350, MPFR_RNDN);
        mpfr_div(r52362, r52345, r52361, MPFR_RNDN);
        if (mpfr_get_si(r52360, MPFR_RNDN)) { mpfr_set(r52363, r52362, MPFR_RNDN); } else { mpfr_set(r52363, r52358, MPFR_RNDN); };
        if (mpfr_get_si(r52354, MPFR_RNDN)) { mpfr_set(r52364, r52358, MPFR_RNDN); } else { mpfr_set(r52364, r52363, MPFR_RNDN); };
        return mpfr_get_d(r52364, MPFR_RNDN);
}

static mpfr_t r52365, r52366, r52367, r52368, r52369, r52370, r52371, r52372, r52373, r52374, r52375, r52376, r52377, r52378, r52379, r52380, r52381, r52382, r52383, r52384;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52365);
        mpfr_init(r52366);
        mpfr_init(r52367);
        mpfr_init(r52368);
        mpfr_init_set_str(r52369, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52370);
        mpfr_init(r52371);
        mpfr_init(r52372);
        mpfr_init_set_str(r52373, "-1.1669970660600162e+91", 10, MPFR_RNDN);
        mpfr_init(r52374);
        mpfr_init(r52375);
        mpfr_init(r52376);
        mpfr_init(r52377);
        mpfr_init(r52378);
        mpfr_init_set_str(r52379, "7.984324309740574e-37", 10, MPFR_RNDN);
        mpfr_init(r52380);
        mpfr_init(r52381);
        mpfr_init(r52382);
        mpfr_init(r52383);
        mpfr_init(r52384);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52365, x, MPFR_RNDN);
        mpfr_set_d(r52366, y, MPFR_RNDN);
        mpfr_set_d(r52367, z, MPFR_RNDN);
        mpfr_sub(r52368, r52366, r52367, MPFR_RNDN);
        ;
        mpfr_add(r52370, r52368, r52369, MPFR_RNDN);
        mpfr_mul(r52371, r52365, r52370, MPFR_RNDN);
        mpfr_div(r52372, r52371, r52367, MPFR_RNDN);
        ;
        mpfr_set_si(r52374, mpfr_cmp(r52372, r52373) <= 0, MPFR_RNDN);
        mpfr_div(r52375, r52365, r52367, MPFR_RNDN);
        mpfr_add(r52376, r52366, r52369, MPFR_RNDN);
        mpfr_mul(r52377, r52375, r52376, MPFR_RNDN);
        mpfr_sub(r52378, r52377, r52365, MPFR_RNDN);
        ;
        mpfr_set_si(r52380, mpfr_cmp(r52372, r52379) <= 0, MPFR_RNDN);
        mpfr_div(r52381, r52367, r52370, MPFR_RNDN);
        mpfr_div(r52382, r52365, r52381, MPFR_RNDN);
        if (mpfr_get_si(r52380, MPFR_RNDN)) { mpfr_set(r52383, r52382, MPFR_RNDN); } else { mpfr_set(r52383, r52378, MPFR_RNDN); };
        if (mpfr_get_si(r52374, MPFR_RNDN)) { mpfr_set(r52384, r52378, MPFR_RNDN); } else { mpfr_set(r52384, r52383, MPFR_RNDN); };
        return mpfr_get_d(r52384, MPFR_RNDN);
}

