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

char *name = "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1";

double f_if(float x, float y, float z, float t) {
        float r23495 = x;
        float r23496 = y;
        float r23497 = z;
        float r23498 = r23496 / r23497;
        float r23499 = t;
        float r23500 = r23498 * r23499;
        float r23501 = r23500 / r23499;
        float r23502 = r23495 * r23501;
        return r23502;
}

double f_id(double x, double y, double z, double t) {
        double r23503 = x;
        double r23504 = y;
        double r23505 = z;
        double r23506 = r23504 / r23505;
        double r23507 = t;
        double r23508 = r23506 * r23507;
        double r23509 = r23508 / r23507;
        double r23510 = r23503 * r23509;
        return r23510;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r23511 = y;
        float r23512 = z;
        float r23513 = r23511 / r23512;
        float r23514 = -inf.0;
        bool r23515 = r23513 <= r23514;
        float r23516 = x;
        float r23517 = r23516 / r23512;
        float r23518 = r23517 * r23511;
        float r23519 = -1.1951226828780078e-248;
        bool r23520 = r23513 <= r23519;
        float r23521 = r23512 / r23511;
        float r23522 = r23516 / r23521;
        float r23523 = 2.7566161154944494e-191;
        bool r23524 = r23513 <= r23523;
        float r23525 = 1.6949670904040425e+202;
        bool r23526 = r23513 <= r23525;
        float r23527 = r23516 * r23513;
        float r23528 = r23526 ? r23527 : r23518;
        float r23529 = r23524 ? r23518 : r23528;
        float r23530 = r23520 ? r23522 : r23529;
        float r23531 = r23515 ? r23518 : r23530;
        return r23531;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r23532 = y;
        double r23533 = z;
        double r23534 = r23532 / r23533;
        double r23535 = -inf.0;
        bool r23536 = r23534 <= r23535;
        double r23537 = x;
        double r23538 = r23537 / r23533;
        double r23539 = r23538 * r23532;
        double r23540 = -1.1951226828780078e-248;
        bool r23541 = r23534 <= r23540;
        double r23542 = r23533 / r23532;
        double r23543 = r23537 / r23542;
        double r23544 = 2.7566161154944494e-191;
        bool r23545 = r23534 <= r23544;
        double r23546 = 1.6949670904040425e+202;
        bool r23547 = r23534 <= r23546;
        double r23548 = r23537 * r23534;
        double r23549 = r23547 ? r23548 : r23539;
        double r23550 = r23545 ? r23539 : r23549;
        double r23551 = r23541 ? r23543 : r23550;
        double r23552 = r23536 ? r23539 : r23551;
        return r23552;
}

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 r23553, r23554, r23555, r23556, r23557, r23558, r23559, r23560;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r23553);
        mpfr_init(r23554);
        mpfr_init(r23555);
        mpfr_init(r23556);
        mpfr_init(r23557);
        mpfr_init(r23558);
        mpfr_init(r23559);
        mpfr_init(r23560);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r23553, x, MPFR_RNDN);
        mpfr_set_d(r23554, y, MPFR_RNDN);
        mpfr_set_d(r23555, z, MPFR_RNDN);
        mpfr_div(r23556, r23554, r23555, MPFR_RNDN);
        mpfr_set_d(r23557, t, MPFR_RNDN);
        mpfr_mul(r23558, r23556, r23557, MPFR_RNDN);
        mpfr_div(r23559, r23558, r23557, MPFR_RNDN);
        mpfr_mul(r23560, r23553, r23559, MPFR_RNDN);
        return mpfr_get_d(r23560, MPFR_RNDN);
}

static mpfr_t r23561, r23562, r23563, r23564, r23565, r23566, r23567, r23568, r23569, r23570, r23571, r23572, r23573, r23574, r23575, r23576, r23577, r23578, r23579, r23580, r23581;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r23561);
        mpfr_init(r23562);
        mpfr_init(r23563);
        mpfr_init_set_str(r23564, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r23565);
        mpfr_init(r23566);
        mpfr_init(r23567);
        mpfr_init(r23568);
        mpfr_init_set_str(r23569, "-1.1951226828780078e-248", 10, MPFR_RNDN);
        mpfr_init(r23570);
        mpfr_init(r23571);
        mpfr_init(r23572);
        mpfr_init_set_str(r23573, "2.7566161154944494e-191", 10, MPFR_RNDN);
        mpfr_init(r23574);
        mpfr_init_set_str(r23575, "1.6949670904040425e+202", 10, MPFR_RNDN);
        mpfr_init(r23576);
        mpfr_init(r23577);
        mpfr_init(r23578);
        mpfr_init(r23579);
        mpfr_init(r23580);
        mpfr_init(r23581);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r23561, y, MPFR_RNDN);
        mpfr_set_d(r23562, z, MPFR_RNDN);
        mpfr_div(r23563, r23561, r23562, MPFR_RNDN);
        ;
        mpfr_set_si(r23565, mpfr_cmp(r23563, r23564) <= 0, MPFR_RNDN);
        mpfr_set_d(r23566, x, MPFR_RNDN);
        mpfr_div(r23567, r23566, r23562, MPFR_RNDN);
        mpfr_mul(r23568, r23567, r23561, MPFR_RNDN);
        ;
        mpfr_set_si(r23570, mpfr_cmp(r23563, r23569) <= 0, MPFR_RNDN);
        mpfr_div(r23571, r23562, r23561, MPFR_RNDN);
        mpfr_div(r23572, r23566, r23571, MPFR_RNDN);
        ;
        mpfr_set_si(r23574, mpfr_cmp(r23563, r23573) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r23576, mpfr_cmp(r23563, r23575) <= 0, MPFR_RNDN);
        mpfr_mul(r23577, r23566, r23563, MPFR_RNDN);
        if (mpfr_get_si(r23576, MPFR_RNDN)) { mpfr_set(r23578, r23577, MPFR_RNDN); } else { mpfr_set(r23578, r23568, MPFR_RNDN); };
        if (mpfr_get_si(r23574, MPFR_RNDN)) { mpfr_set(r23579, r23568, MPFR_RNDN); } else { mpfr_set(r23579, r23578, MPFR_RNDN); };
        if (mpfr_get_si(r23570, MPFR_RNDN)) { mpfr_set(r23580, r23572, MPFR_RNDN); } else { mpfr_set(r23580, r23579, MPFR_RNDN); };
        if (mpfr_get_si(r23565, MPFR_RNDN)) { mpfr_set(r23581, r23568, MPFR_RNDN); } else { mpfr_set(r23581, r23580, MPFR_RNDN); };
        return mpfr_get_d(r23581, MPFR_RNDN);
}

static mpfr_t r23582, r23583, r23584, r23585, r23586, r23587, r23588, r23589, r23590, r23591, r23592, r23593, r23594, r23595, r23596, r23597, r23598, r23599, r23600, r23601, r23602;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r23582);
        mpfr_init(r23583);
        mpfr_init(r23584);
        mpfr_init_set_str(r23585, "-inf.0", 10, MPFR_RNDN);
        mpfr_init(r23586);
        mpfr_init(r23587);
        mpfr_init(r23588);
        mpfr_init(r23589);
        mpfr_init_set_str(r23590, "-1.1951226828780078e-248", 10, MPFR_RNDN);
        mpfr_init(r23591);
        mpfr_init(r23592);
        mpfr_init(r23593);
        mpfr_init_set_str(r23594, "2.7566161154944494e-191", 10, MPFR_RNDN);
        mpfr_init(r23595);
        mpfr_init_set_str(r23596, "1.6949670904040425e+202", 10, MPFR_RNDN);
        mpfr_init(r23597);
        mpfr_init(r23598);
        mpfr_init(r23599);
        mpfr_init(r23600);
        mpfr_init(r23601);
        mpfr_init(r23602);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r23582, y, MPFR_RNDN);
        mpfr_set_d(r23583, z, MPFR_RNDN);
        mpfr_div(r23584, r23582, r23583, MPFR_RNDN);
        ;
        mpfr_set_si(r23586, mpfr_cmp(r23584, r23585) <= 0, MPFR_RNDN);
        mpfr_set_d(r23587, x, MPFR_RNDN);
        mpfr_div(r23588, r23587, r23583, MPFR_RNDN);
        mpfr_mul(r23589, r23588, r23582, MPFR_RNDN);
        ;
        mpfr_set_si(r23591, mpfr_cmp(r23584, r23590) <= 0, MPFR_RNDN);
        mpfr_div(r23592, r23583, r23582, MPFR_RNDN);
        mpfr_div(r23593, r23587, r23592, MPFR_RNDN);
        ;
        mpfr_set_si(r23595, mpfr_cmp(r23584, r23594) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r23597, mpfr_cmp(r23584, r23596) <= 0, MPFR_RNDN);
        mpfr_mul(r23598, r23587, r23584, MPFR_RNDN);
        if (mpfr_get_si(r23597, MPFR_RNDN)) { mpfr_set(r23599, r23598, MPFR_RNDN); } else { mpfr_set(r23599, r23589, MPFR_RNDN); };
        if (mpfr_get_si(r23595, MPFR_RNDN)) { mpfr_set(r23600, r23589, MPFR_RNDN); } else { mpfr_set(r23600, r23599, MPFR_RNDN); };
        if (mpfr_get_si(r23591, MPFR_RNDN)) { mpfr_set(r23601, r23593, MPFR_RNDN); } else { mpfr_set(r23601, r23600, MPFR_RNDN); };
        if (mpfr_get_si(r23586, MPFR_RNDN)) { mpfr_set(r23602, r23589, MPFR_RNDN); } else { mpfr_set(r23602, r23601, MPFR_RNDN); };
        return mpfr_get_d(r23602, MPFR_RNDN);
}

