#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 r51382 = x;
        float r51383 = y;
        float r51384 = z;
        float r51385 = r51383 - r51384;
        float r51386 = 1.0;
        float r51387 = r51385 + r51386;
        float r51388 = r51382 * r51387;
        float r51389 = r51388 / r51384;
        return r51389;
}

double f_id(double x, double y, double z) {
        double r51390 = x;
        double r51391 = y;
        double r51392 = z;
        double r51393 = r51391 - r51392;
        double r51394 = 1.0;
        double r51395 = r51393 + r51394;
        double r51396 = r51390 * r51395;
        double r51397 = r51396 / r51392;
        return r51397;
}


double f_of(float x, float y, float z) {
        float r51398 = x;
        float r51399 = y;
        float r51400 = z;
        float r51401 = r51399 - r51400;
        float r51402 = 1.0;
        float r51403 = r51401 + r51402;
        float r51404 = r51398 * r51403;
        float r51405 = r51404 / r51400;
        float r51406 = -1.293154407109218e+92;
        bool r51407 = r51405 <= r51406;
        float r51408 = r51398 / r51400;
        float r51409 = r51399 + r51402;
        float r51410 = r51408 * r51409;
        float r51411 = r51410 - r51398;
        float r51412 = 4.04716974457547e-37;
        bool r51413 = r51405 <= r51412;
        float r51414 = r51400 / r51403;
        float r51415 = r51398 / r51414;
        float r51416 = r51413 ? r51415 : r51411;
        float r51417 = r51407 ? r51411 : r51416;
        return r51417;
}

double f_od(double x, double y, double z) {
        double r51418 = x;
        double r51419 = y;
        double r51420 = z;
        double r51421 = r51419 - r51420;
        double r51422 = 1.0;
        double r51423 = r51421 + r51422;
        double r51424 = r51418 * r51423;
        double r51425 = r51424 / r51420;
        double r51426 = -1.293154407109218e+92;
        bool r51427 = r51425 <= r51426;
        double r51428 = r51418 / r51420;
        double r51429 = r51419 + r51422;
        double r51430 = r51428 * r51429;
        double r51431 = r51430 - r51418;
        double r51432 = 4.04716974457547e-37;
        bool r51433 = r51425 <= r51432;
        double r51434 = r51420 / r51423;
        double r51435 = r51418 / r51434;
        double r51436 = r51433 ? r51435 : r51431;
        double r51437 = r51427 ? r51431 : r51436;
        return r51437;
}

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 r51438, r51439, r51440, r51441, r51442, r51443, r51444, r51445;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51438);
        mpfr_init(r51439);
        mpfr_init(r51440);
        mpfr_init(r51441);
        mpfr_init_set_str(r51442, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51443);
        mpfr_init(r51444);
        mpfr_init(r51445);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51438, x, MPFR_RNDN);
        mpfr_set_d(r51439, y, MPFR_RNDN);
        mpfr_set_d(r51440, z, MPFR_RNDN);
        mpfr_sub(r51441, r51439, r51440, MPFR_RNDN);
        ;
        mpfr_add(r51443, r51441, r51442, MPFR_RNDN);
        mpfr_mul(r51444, r51438, r51443, MPFR_RNDN);
        mpfr_div(r51445, r51444, r51440, MPFR_RNDN);
        return mpfr_get_d(r51445, MPFR_RNDN);
}

static mpfr_t r51446, r51447, r51448, r51449, r51450, r51451, r51452, r51453, r51454, r51455, r51456, r51457, r51458, r51459, r51460, r51461, r51462, r51463, r51464, r51465;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51446);
        mpfr_init(r51447);
        mpfr_init(r51448);
        mpfr_init(r51449);
        mpfr_init_set_str(r51450, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51451);
        mpfr_init(r51452);
        mpfr_init(r51453);
        mpfr_init_set_str(r51454, "-1.293154407109218e+92", 10, MPFR_RNDN);
        mpfr_init(r51455);
        mpfr_init(r51456);
        mpfr_init(r51457);
        mpfr_init(r51458);
        mpfr_init(r51459);
        mpfr_init_set_str(r51460, "4.04716974457547e-37", 10, MPFR_RNDN);
        mpfr_init(r51461);
        mpfr_init(r51462);
        mpfr_init(r51463);
        mpfr_init(r51464);
        mpfr_init(r51465);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51446, x, MPFR_RNDN);
        mpfr_set_d(r51447, y, MPFR_RNDN);
        mpfr_set_d(r51448, z, MPFR_RNDN);
        mpfr_sub(r51449, r51447, r51448, MPFR_RNDN);
        ;
        mpfr_add(r51451, r51449, r51450, MPFR_RNDN);
        mpfr_mul(r51452, r51446, r51451, MPFR_RNDN);
        mpfr_div(r51453, r51452, r51448, MPFR_RNDN);
        ;
        mpfr_set_si(r51455, mpfr_cmp(r51453, r51454) <= 0, MPFR_RNDN);
        mpfr_div(r51456, r51446, r51448, MPFR_RNDN);
        mpfr_add(r51457, r51447, r51450, MPFR_RNDN);
        mpfr_mul(r51458, r51456, r51457, MPFR_RNDN);
        mpfr_sub(r51459, r51458, r51446, MPFR_RNDN);
        ;
        mpfr_set_si(r51461, mpfr_cmp(r51453, r51460) <= 0, MPFR_RNDN);
        mpfr_div(r51462, r51448, r51451, MPFR_RNDN);
        mpfr_div(r51463, r51446, r51462, MPFR_RNDN);
        if (mpfr_get_si(r51461, MPFR_RNDN)) { mpfr_set(r51464, r51463, MPFR_RNDN); } else { mpfr_set(r51464, r51459, MPFR_RNDN); };
        if (mpfr_get_si(r51455, MPFR_RNDN)) { mpfr_set(r51465, r51459, MPFR_RNDN); } else { mpfr_set(r51465, r51464, MPFR_RNDN); };
        return mpfr_get_d(r51465, MPFR_RNDN);
}

static mpfr_t r51466, r51467, r51468, r51469, r51470, r51471, r51472, r51473, r51474, r51475, r51476, r51477, r51478, r51479, r51480, r51481, r51482, r51483, r51484, r51485;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51466);
        mpfr_init(r51467);
        mpfr_init(r51468);
        mpfr_init(r51469);
        mpfr_init_set_str(r51470, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51471);
        mpfr_init(r51472);
        mpfr_init(r51473);
        mpfr_init_set_str(r51474, "-1.293154407109218e+92", 10, MPFR_RNDN);
        mpfr_init(r51475);
        mpfr_init(r51476);
        mpfr_init(r51477);
        mpfr_init(r51478);
        mpfr_init(r51479);
        mpfr_init_set_str(r51480, "4.04716974457547e-37", 10, MPFR_RNDN);
        mpfr_init(r51481);
        mpfr_init(r51482);
        mpfr_init(r51483);
        mpfr_init(r51484);
        mpfr_init(r51485);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51466, x, MPFR_RNDN);
        mpfr_set_d(r51467, y, MPFR_RNDN);
        mpfr_set_d(r51468, z, MPFR_RNDN);
        mpfr_sub(r51469, r51467, r51468, MPFR_RNDN);
        ;
        mpfr_add(r51471, r51469, r51470, MPFR_RNDN);
        mpfr_mul(r51472, r51466, r51471, MPFR_RNDN);
        mpfr_div(r51473, r51472, r51468, MPFR_RNDN);
        ;
        mpfr_set_si(r51475, mpfr_cmp(r51473, r51474) <= 0, MPFR_RNDN);
        mpfr_div(r51476, r51466, r51468, MPFR_RNDN);
        mpfr_add(r51477, r51467, r51470, MPFR_RNDN);
        mpfr_mul(r51478, r51476, r51477, MPFR_RNDN);
        mpfr_sub(r51479, r51478, r51466, MPFR_RNDN);
        ;
        mpfr_set_si(r51481, mpfr_cmp(r51473, r51480) <= 0, MPFR_RNDN);
        mpfr_div(r51482, r51468, r51471, MPFR_RNDN);
        mpfr_div(r51483, r51466, r51482, MPFR_RNDN);
        if (mpfr_get_si(r51481, MPFR_RNDN)) { mpfr_set(r51484, r51483, MPFR_RNDN); } else { mpfr_set(r51484, r51479, MPFR_RNDN); };
        if (mpfr_get_si(r51475, MPFR_RNDN)) { mpfr_set(r51485, r51479, MPFR_RNDN); } else { mpfr_set(r51485, r51484, MPFR_RNDN); };
        return mpfr_get_d(r51485, MPFR_RNDN);
}

