#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 r52449 = x;
        float r52450 = y;
        float r52451 = z;
        float r52452 = r52450 - r52451;
        float r52453 = 1.0;
        float r52454 = r52452 + r52453;
        float r52455 = r52449 * r52454;
        float r52456 = r52455 / r52451;
        return r52456;
}

double f_id(double x, double y, double z) {
        double r52457 = x;
        double r52458 = y;
        double r52459 = z;
        double r52460 = r52458 - r52459;
        double r52461 = 1.0;
        double r52462 = r52460 + r52461;
        double r52463 = r52457 * r52462;
        double r52464 = r52463 / r52459;
        return r52464;
}


double f_of(float x, float y, float z) {
        float r52465 = x;
        float r52466 = y;
        float r52467 = z;
        float r52468 = r52466 - r52467;
        float r52469 = 1.0;
        float r52470 = r52468 + r52469;
        float r52471 = r52465 * r52470;
        float r52472 = r52471 / r52467;
        float r52473 = -1.1669970660600162e+91;
        bool r52474 = r52472 <= r52473;
        float r52475 = r52465 / r52467;
        float r52476 = r52466 + r52469;
        float r52477 = r52475 * r52476;
        float r52478 = r52477 - r52465;
        float r52479 = 7.984324309740574e-37;
        bool r52480 = r52472 <= r52479;
        float r52481 = r52467 / r52470;
        float r52482 = r52465 / r52481;
        float r52483 = r52480 ? r52482 : r52478;
        float r52484 = r52474 ? r52478 : r52483;
        return r52484;
}

double f_od(double x, double y, double z) {
        double r52485 = x;
        double r52486 = y;
        double r52487 = z;
        double r52488 = r52486 - r52487;
        double r52489 = 1.0;
        double r52490 = r52488 + r52489;
        double r52491 = r52485 * r52490;
        double r52492 = r52491 / r52487;
        double r52493 = -1.1669970660600162e+91;
        bool r52494 = r52492 <= r52493;
        double r52495 = r52485 / r52487;
        double r52496 = r52486 + r52489;
        double r52497 = r52495 * r52496;
        double r52498 = r52497 - r52485;
        double r52499 = 7.984324309740574e-37;
        bool r52500 = r52492 <= r52499;
        double r52501 = r52487 / r52490;
        double r52502 = r52485 / r52501;
        double r52503 = r52500 ? r52502 : r52498;
        double r52504 = r52494 ? r52498 : r52503;
        return r52504;
}

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 r52505, r52506, r52507, r52508, r52509, r52510, r52511, r52512;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52505);
        mpfr_init(r52506);
        mpfr_init(r52507);
        mpfr_init(r52508);
        mpfr_init_set_str(r52509, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52510);
        mpfr_init(r52511);
        mpfr_init(r52512);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r52505, x, MPFR_RNDN);
        mpfr_set_d(r52506, y, MPFR_RNDN);
        mpfr_set_d(r52507, z, MPFR_RNDN);
        mpfr_sub(r52508, r52506, r52507, MPFR_RNDN);
        ;
        mpfr_add(r52510, r52508, r52509, MPFR_RNDN);
        mpfr_mul(r52511, r52505, r52510, MPFR_RNDN);
        mpfr_div(r52512, r52511, r52507, MPFR_RNDN);
        return mpfr_get_d(r52512, MPFR_RNDN);
}

static mpfr_t r52513, r52514, r52515, r52516, r52517, r52518, r52519, r52520, r52521, r52522, r52523, r52524, r52525, r52526, r52527, r52528, r52529, r52530, r52531, r52532;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52513);
        mpfr_init(r52514);
        mpfr_init(r52515);
        mpfr_init(r52516);
        mpfr_init_set_str(r52517, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52518);
        mpfr_init(r52519);
        mpfr_init(r52520);
        mpfr_init_set_str(r52521, "-1.1669970660600162e+91", 10, MPFR_RNDN);
        mpfr_init(r52522);
        mpfr_init(r52523);
        mpfr_init(r52524);
        mpfr_init(r52525);
        mpfr_init(r52526);
        mpfr_init_set_str(r52527, "7.984324309740574e-37", 10, MPFR_RNDN);
        mpfr_init(r52528);
        mpfr_init(r52529);
        mpfr_init(r52530);
        mpfr_init(r52531);
        mpfr_init(r52532);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r52513, x, MPFR_RNDN);
        mpfr_set_d(r52514, y, MPFR_RNDN);
        mpfr_set_d(r52515, z, MPFR_RNDN);
        mpfr_sub(r52516, r52514, r52515, MPFR_RNDN);
        ;
        mpfr_add(r52518, r52516, r52517, MPFR_RNDN);
        mpfr_mul(r52519, r52513, r52518, MPFR_RNDN);
        mpfr_div(r52520, r52519, r52515, MPFR_RNDN);
        ;
        mpfr_set_si(r52522, mpfr_cmp(r52520, r52521) <= 0, MPFR_RNDN);
        mpfr_div(r52523, r52513, r52515, MPFR_RNDN);
        mpfr_add(r52524, r52514, r52517, MPFR_RNDN);
        mpfr_mul(r52525, r52523, r52524, MPFR_RNDN);
        mpfr_sub(r52526, r52525, r52513, MPFR_RNDN);
        ;
        mpfr_set_si(r52528, mpfr_cmp(r52520, r52527) <= 0, MPFR_RNDN);
        mpfr_div(r52529, r52515, r52518, MPFR_RNDN);
        mpfr_div(r52530, r52513, r52529, MPFR_RNDN);
        if (mpfr_get_si(r52528, MPFR_RNDN)) { mpfr_set(r52531, r52530, MPFR_RNDN); } else { mpfr_set(r52531, r52526, MPFR_RNDN); };
        if (mpfr_get_si(r52522, MPFR_RNDN)) { mpfr_set(r52532, r52526, MPFR_RNDN); } else { mpfr_set(r52532, r52531, MPFR_RNDN); };
        return mpfr_get_d(r52532, MPFR_RNDN);
}

static mpfr_t r52533, r52534, r52535, r52536, r52537, r52538, r52539, r52540, r52541, r52542, r52543, r52544, r52545, r52546, r52547, r52548, r52549, r52550, r52551, r52552;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52533);
        mpfr_init(r52534);
        mpfr_init(r52535);
        mpfr_init(r52536);
        mpfr_init_set_str(r52537, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52538);
        mpfr_init(r52539);
        mpfr_init(r52540);
        mpfr_init_set_str(r52541, "-1.1669970660600162e+91", 10, MPFR_RNDN);
        mpfr_init(r52542);
        mpfr_init(r52543);
        mpfr_init(r52544);
        mpfr_init(r52545);
        mpfr_init(r52546);
        mpfr_init_set_str(r52547, "7.984324309740574e-37", 10, MPFR_RNDN);
        mpfr_init(r52548);
        mpfr_init(r52549);
        mpfr_init(r52550);
        mpfr_init(r52551);
        mpfr_init(r52552);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r52533, x, MPFR_RNDN);
        mpfr_set_d(r52534, y, MPFR_RNDN);
        mpfr_set_d(r52535, z, MPFR_RNDN);
        mpfr_sub(r52536, r52534, r52535, MPFR_RNDN);
        ;
        mpfr_add(r52538, r52536, r52537, MPFR_RNDN);
        mpfr_mul(r52539, r52533, r52538, MPFR_RNDN);
        mpfr_div(r52540, r52539, r52535, MPFR_RNDN);
        ;
        mpfr_set_si(r52542, mpfr_cmp(r52540, r52541) <= 0, MPFR_RNDN);
        mpfr_div(r52543, r52533, r52535, MPFR_RNDN);
        mpfr_add(r52544, r52534, r52537, MPFR_RNDN);
        mpfr_mul(r52545, r52543, r52544, MPFR_RNDN);
        mpfr_sub(r52546, r52545, r52533, MPFR_RNDN);
        ;
        mpfr_set_si(r52548, mpfr_cmp(r52540, r52547) <= 0, MPFR_RNDN);
        mpfr_div(r52549, r52535, r52538, MPFR_RNDN);
        mpfr_div(r52550, r52533, r52549, MPFR_RNDN);
        if (mpfr_get_si(r52548, MPFR_RNDN)) { mpfr_set(r52551, r52550, MPFR_RNDN); } else { mpfr_set(r52551, r52546, MPFR_RNDN); };
        if (mpfr_get_si(r52542, MPFR_RNDN)) { mpfr_set(r52552, r52546, MPFR_RNDN); } else { mpfr_set(r52552, r52551, MPFR_RNDN); };
        return mpfr_get_d(r52552, MPFR_RNDN);
}

