#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 r10536 = x;
        float r10537 = y;
        float r10538 = z;
        float r10539 = r10537 / r10538;
        float r10540 = t;
        float r10541 = r10539 * r10540;
        float r10542 = r10541 / r10540;
        float r10543 = r10536 * r10542;
        return r10543;
}

double f_id(double x, double y, double z, double t) {
        double r10544 = x;
        double r10545 = y;
        double r10546 = z;
        double r10547 = r10545 / r10546;
        double r10548 = t;
        double r10549 = r10547 * r10548;
        double r10550 = r10549 / r10548;
        double r10551 = r10544 * r10550;
        return r10551;
}


double f_of(float x, float y, float z, float t) {
        float r10552 = z;
        float r10553 = x;
        float r10554 = r10552 / r10553;
        float r10555 = -3.2845100879270977e+275;
        bool r10556 = r10554 <= r10555;
        float r10557 = y;
        float r10558 = r10557 * r10553;
        float r10559 = r10558 / r10552;
        float r10560 = -3.933914952147978e-304;
        bool r10561 = r10554 <= r10560;
        float r10562 = r10557 / r10554;
        float r10563 = 2.3540314842465144e-303;
        bool r10564 = r10554 <= r10563;
        float r10565 = r10557 / r10552;
        float r10566 = t;
        float r10567 = r10565 * r10566;
        float r10568 = r10567 / r10566;
        float r10569 = r10553 * r10568;
        float r10570 = 2.3930233669727197e+230;
        bool r10571 = r10554 <= r10570;
        float r10572 = r10571 ? r10562 : r10559;
        float r10573 = r10564 ? r10569 : r10572;
        float r10574 = r10561 ? r10562 : r10573;
        float r10575 = r10556 ? r10559 : r10574;
        return r10575;
}

double f_od(double x, double y, double z, double t) {
        double r10576 = z;
        double r10577 = x;
        double r10578 = r10576 / r10577;
        double r10579 = -3.2845100879270977e+275;
        bool r10580 = r10578 <= r10579;
        double r10581 = y;
        double r10582 = r10581 * r10577;
        double r10583 = r10582 / r10576;
        double r10584 = -3.933914952147978e-304;
        bool r10585 = r10578 <= r10584;
        double r10586 = r10581 / r10578;
        double r10587 = 2.3540314842465144e-303;
        bool r10588 = r10578 <= r10587;
        double r10589 = r10581 / r10576;
        double r10590 = t;
        double r10591 = r10589 * r10590;
        double r10592 = r10591 / r10590;
        double r10593 = r10577 * r10592;
        double r10594 = 2.3930233669727197e+230;
        bool r10595 = r10578 <= r10594;
        double r10596 = r10595 ? r10586 : r10583;
        double r10597 = r10588 ? r10593 : r10596;
        double r10598 = r10585 ? r10586 : r10597;
        double r10599 = r10580 ? r10583 : r10598;
        return r10599;
}

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 r10600, r10601, r10602, r10603, r10604, r10605, r10606, r10607;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10600);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init(r10606);
        mpfr_init(r10607);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r10600, x, MPFR_RNDN);
        mpfr_set_d(r10601, y, MPFR_RNDN);
        mpfr_set_d(r10602, z, MPFR_RNDN);
        mpfr_div(r10603, r10601, r10602, MPFR_RNDN);
        mpfr_set_d(r10604, t, MPFR_RNDN);
        mpfr_mul(r10605, r10603, r10604, MPFR_RNDN);
        mpfr_div(r10606, r10605, r10604, MPFR_RNDN);
        mpfr_mul(r10607, r10600, r10606, MPFR_RNDN);
        return mpfr_get_d(r10607, MPFR_RNDN);
}

static mpfr_t r10608, r10609, r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10608);
        mpfr_init(r10609);
        mpfr_init(r10610);
        mpfr_init_set_str(r10611, "-3.2845100879270977e+275", 10, MPFR_RNDN);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init(r10615);
        mpfr_init_set_str(r10616, "-3.933914952147978e-304", 10, MPFR_RNDN);
        mpfr_init(r10617);
        mpfr_init(r10618);
        mpfr_init_set_str(r10619, "2.3540314842465144e-303", 10, MPFR_RNDN);
        mpfr_init(r10620);
        mpfr_init(r10621);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init_set_str(r10626, "2.3930233669727197e+230", 10, MPFR_RNDN);
        mpfr_init(r10627);
        mpfr_init(r10628);
        mpfr_init(r10629);
        mpfr_init(r10630);
        mpfr_init(r10631);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r10608, z, MPFR_RNDN);
        mpfr_set_d(r10609, x, MPFR_RNDN);
        mpfr_div(r10610, r10608, r10609, MPFR_RNDN);
        ;
        mpfr_set_si(r10612, mpfr_cmp(r10610, r10611) <= 0, MPFR_RNDN);
        mpfr_set_d(r10613, y, MPFR_RNDN);
        mpfr_mul(r10614, r10613, r10609, MPFR_RNDN);
        mpfr_div(r10615, r10614, r10608, MPFR_RNDN);
        ;
        mpfr_set_si(r10617, mpfr_cmp(r10610, r10616) <= 0, MPFR_RNDN);
        mpfr_div(r10618, r10613, r10610, MPFR_RNDN);
        ;
        mpfr_set_si(r10620, mpfr_cmp(r10610, r10619) <= 0, MPFR_RNDN);
        mpfr_div(r10621, r10613, r10608, MPFR_RNDN);
        mpfr_set_d(r10622, t, MPFR_RNDN);
        mpfr_mul(r10623, r10621, r10622, MPFR_RNDN);
        mpfr_div(r10624, r10623, r10622, MPFR_RNDN);
        mpfr_mul(r10625, r10609, r10624, MPFR_RNDN);
        ;
        mpfr_set_si(r10627, mpfr_cmp(r10610, r10626) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10627, MPFR_RNDN)) { mpfr_set(r10628, r10618, MPFR_RNDN); } else { mpfr_set(r10628, r10615, MPFR_RNDN); };
        if (mpfr_get_si(r10620, MPFR_RNDN)) { mpfr_set(r10629, r10625, MPFR_RNDN); } else { mpfr_set(r10629, r10628, MPFR_RNDN); };
        if (mpfr_get_si(r10617, MPFR_RNDN)) { mpfr_set(r10630, r10618, MPFR_RNDN); } else { mpfr_set(r10630, r10629, MPFR_RNDN); };
        if (mpfr_get_si(r10612, MPFR_RNDN)) { mpfr_set(r10631, r10615, MPFR_RNDN); } else { mpfr_set(r10631, r10630, MPFR_RNDN); };
        return mpfr_get_d(r10631, MPFR_RNDN);
}

static mpfr_t r10632, r10633, r10634, r10635, r10636, r10637, r10638, r10639, r10640, r10641, r10642, r10643, r10644, r10645, r10646, r10647, r10648, r10649, r10650, r10651, r10652, r10653, r10654, r10655;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10632);
        mpfr_init(r10633);
        mpfr_init(r10634);
        mpfr_init_set_str(r10635, "-3.2845100879270977e+275", 10, MPFR_RNDN);
        mpfr_init(r10636);
        mpfr_init(r10637);
        mpfr_init(r10638);
        mpfr_init(r10639);
        mpfr_init_set_str(r10640, "-3.933914952147978e-304", 10, MPFR_RNDN);
        mpfr_init(r10641);
        mpfr_init(r10642);
        mpfr_init_set_str(r10643, "2.3540314842465144e-303", 10, MPFR_RNDN);
        mpfr_init(r10644);
        mpfr_init(r10645);
        mpfr_init(r10646);
        mpfr_init(r10647);
        mpfr_init(r10648);
        mpfr_init(r10649);
        mpfr_init_set_str(r10650, "2.3930233669727197e+230", 10, MPFR_RNDN);
        mpfr_init(r10651);
        mpfr_init(r10652);
        mpfr_init(r10653);
        mpfr_init(r10654);
        mpfr_init(r10655);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r10632, z, MPFR_RNDN);
        mpfr_set_d(r10633, x, MPFR_RNDN);
        mpfr_div(r10634, r10632, r10633, MPFR_RNDN);
        ;
        mpfr_set_si(r10636, mpfr_cmp(r10634, r10635) <= 0, MPFR_RNDN);
        mpfr_set_d(r10637, y, MPFR_RNDN);
        mpfr_mul(r10638, r10637, r10633, MPFR_RNDN);
        mpfr_div(r10639, r10638, r10632, MPFR_RNDN);
        ;
        mpfr_set_si(r10641, mpfr_cmp(r10634, r10640) <= 0, MPFR_RNDN);
        mpfr_div(r10642, r10637, r10634, MPFR_RNDN);
        ;
        mpfr_set_si(r10644, mpfr_cmp(r10634, r10643) <= 0, MPFR_RNDN);
        mpfr_div(r10645, r10637, r10632, MPFR_RNDN);
        mpfr_set_d(r10646, t, MPFR_RNDN);
        mpfr_mul(r10647, r10645, r10646, MPFR_RNDN);
        mpfr_div(r10648, r10647, r10646, MPFR_RNDN);
        mpfr_mul(r10649, r10633, r10648, MPFR_RNDN);
        ;
        mpfr_set_si(r10651, mpfr_cmp(r10634, r10650) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10651, MPFR_RNDN)) { mpfr_set(r10652, r10642, MPFR_RNDN); } else { mpfr_set(r10652, r10639, MPFR_RNDN); };
        if (mpfr_get_si(r10644, MPFR_RNDN)) { mpfr_set(r10653, r10649, MPFR_RNDN); } else { mpfr_set(r10653, r10652, MPFR_RNDN); };
        if (mpfr_get_si(r10641, MPFR_RNDN)) { mpfr_set(r10654, r10642, MPFR_RNDN); } else { mpfr_set(r10654, r10653, MPFR_RNDN); };
        if (mpfr_get_si(r10636, MPFR_RNDN)) { mpfr_set(r10655, r10639, MPFR_RNDN); } else { mpfr_set(r10655, r10654, MPFR_RNDN); };
        return mpfr_get_d(r10655, MPFR_RNDN);
}

