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

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


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r10550 = y;
        float r10551 = x;
        float r10552 = r10550 * r10551;
        float r10553 = -3.9632570729893533e+295f;
        bool r10554 = r10552 <= r10553;
        float r10555 = z;
        float r10556 = r10551 / r10555;
        float r10557 = r10550 * r10556;
        float r10558 = -2.3421821286895737e-141f;
        bool r10559 = r10552 <= r10558;
        float r10560 = r10552 / r10555;
        float r10561 = 8.507385469605398e-166f;
        bool r10562 = r10552 <= r10561;
        float r10563 = 8.854482967741617e+153f;
        bool r10564 = r10552 <= r10563;
        float r10565 = r10564 ? r10560 : r10557;
        float r10566 = r10562 ? r10557 : r10565;
        float r10567 = r10559 ? r10560 : r10566;
        float r10568 = r10554 ? r10557 : r10567;
        return r10568;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r10569 = y;
        double r10570 = x;
        double r10571 = r10569 * r10570;
        double r10572 = -3.9632570729893533e+295;
        bool r10573 = r10571 <= r10572;
        double r10574 = z;
        double r10575 = r10570 / r10574;
        double r10576 = r10569 * r10575;
        double r10577 = -2.3421821286895737e-141;
        bool r10578 = r10571 <= r10577;
        double r10579 = r10571 / r10574;
        double r10580 = 8.507385469605398e-166;
        bool r10581 = r10571 <= r10580;
        double r10582 = 8.854482967741617e+153;
        bool r10583 = r10571 <= r10582;
        double r10584 = r10583 ? r10579 : r10576;
        double r10585 = r10581 ? r10576 : r10584;
        double r10586 = r10578 ? r10579 : r10585;
        double r10587 = r10573 ? r10576 : r10586;
        return r10587;
}

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 r10588, r10589, r10590, r10591, r10592, r10593, r10594, r10595;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10588);
        mpfr_init(r10589);
        mpfr_init(r10590);
        mpfr_init(r10591);
        mpfr_init(r10592);
        mpfr_init(r10593);
        mpfr_init(r10594);
        mpfr_init(r10595);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r10588, x, MPFR_RNDN);
        mpfr_set_d(r10589, y, MPFR_RNDN);
        mpfr_set_d(r10590, z, MPFR_RNDN);
        mpfr_div(r10591, r10589, r10590, MPFR_RNDN);
        mpfr_set_d(r10592, t, MPFR_RNDN);
        mpfr_mul(r10593, r10591, r10592, MPFR_RNDN);
        mpfr_div(r10594, r10593, r10592, MPFR_RNDN);
        mpfr_mul(r10595, r10588, r10594, MPFR_RNDN);
        return mpfr_get_d(r10595, MPFR_RNDN);
}

static mpfr_t r10596, r10597, r10598, r10599, r10600, r10601, r10602, r10603, r10604, r10605, r10606, r10607, r10608, r10609, r10610, r10611, r10612, r10613, r10614;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10596);
        mpfr_init(r10597);
        mpfr_init(r10598);
        mpfr_init_set_str(r10599, "-3.9632570729893533e+295", 10, MPFR_RNDN);
        mpfr_init(r10600);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init_set_str(r10604, "-2.3421821286895737e-141", 10, MPFR_RNDN);
        mpfr_init(r10605);
        mpfr_init(r10606);
        mpfr_init_set_str(r10607, "8.507385469605398e-166", 10, MPFR_RNDN);
        mpfr_init(r10608);
        mpfr_init_set_str(r10609, "8.854482967741617e+153", 10, MPFR_RNDN);
        mpfr_init(r10610);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r10596, y, MPFR_RNDN);
        mpfr_set_d(r10597, x, MPFR_RNDN);
        mpfr_mul(r10598, r10596, r10597, MPFR_RNDN);
        ;
        mpfr_set_si(r10600, mpfr_cmp(r10598, r10599) <= 0, MPFR_RNDN);
        mpfr_set_d(r10601, z, MPFR_RNDN);
        mpfr_div(r10602, r10597, r10601, MPFR_RNDN);
        mpfr_mul(r10603, r10596, r10602, MPFR_RNDN);
        ;
        mpfr_set_si(r10605, mpfr_cmp(r10598, r10604) <= 0, MPFR_RNDN);
        mpfr_div(r10606, r10598, r10601, MPFR_RNDN);
        ;
        mpfr_set_si(r10608, mpfr_cmp(r10598, r10607) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10610, mpfr_cmp(r10598, r10609) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10610, MPFR_RNDN)) { mpfr_set(r10611, r10606, MPFR_RNDN); } else { mpfr_set(r10611, r10603, MPFR_RNDN); };
        if (mpfr_get_si(r10608, MPFR_RNDN)) { mpfr_set(r10612, r10603, MPFR_RNDN); } else { mpfr_set(r10612, r10611, MPFR_RNDN); };
        if (mpfr_get_si(r10605, MPFR_RNDN)) { mpfr_set(r10613, r10606, MPFR_RNDN); } else { mpfr_set(r10613, r10612, MPFR_RNDN); };
        if (mpfr_get_si(r10600, MPFR_RNDN)) { mpfr_set(r10614, r10603, MPFR_RNDN); } else { mpfr_set(r10614, r10613, MPFR_RNDN); };
        return mpfr_get_d(r10614, MPFR_RNDN);
}

static mpfr_t r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631, r10632, r10633;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10615);
        mpfr_init(r10616);
        mpfr_init(r10617);
        mpfr_init_set_str(r10618, "-3.9632570729893533e+295", 10, MPFR_RNDN);
        mpfr_init(r10619);
        mpfr_init(r10620);
        mpfr_init(r10621);
        mpfr_init(r10622);
        mpfr_init_set_str(r10623, "-2.3421821286895737e-141", 10, MPFR_RNDN);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init_set_str(r10626, "8.507385469605398e-166", 10, MPFR_RNDN);
        mpfr_init(r10627);
        mpfr_init_set_str(r10628, "8.854482967741617e+153", 10, MPFR_RNDN);
        mpfr_init(r10629);
        mpfr_init(r10630);
        mpfr_init(r10631);
        mpfr_init(r10632);
        mpfr_init(r10633);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r10615, y, MPFR_RNDN);
        mpfr_set_d(r10616, x, MPFR_RNDN);
        mpfr_mul(r10617, r10615, r10616, MPFR_RNDN);
        ;
        mpfr_set_si(r10619, mpfr_cmp(r10617, r10618) <= 0, MPFR_RNDN);
        mpfr_set_d(r10620, z, MPFR_RNDN);
        mpfr_div(r10621, r10616, r10620, MPFR_RNDN);
        mpfr_mul(r10622, r10615, r10621, MPFR_RNDN);
        ;
        mpfr_set_si(r10624, mpfr_cmp(r10617, r10623) <= 0, MPFR_RNDN);
        mpfr_div(r10625, r10617, r10620, MPFR_RNDN);
        ;
        mpfr_set_si(r10627, mpfr_cmp(r10617, r10626) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10629, mpfr_cmp(r10617, r10628) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10629, MPFR_RNDN)) { mpfr_set(r10630, r10625, MPFR_RNDN); } else { mpfr_set(r10630, r10622, MPFR_RNDN); };
        if (mpfr_get_si(r10627, MPFR_RNDN)) { mpfr_set(r10631, r10622, MPFR_RNDN); } else { mpfr_set(r10631, r10630, MPFR_RNDN); };
        if (mpfr_get_si(r10624, MPFR_RNDN)) { mpfr_set(r10632, r10625, MPFR_RNDN); } else { mpfr_set(r10632, r10631, MPFR_RNDN); };
        if (mpfr_get_si(r10619, MPFR_RNDN)) { mpfr_set(r10633, r10622, MPFR_RNDN); } else { mpfr_set(r10633, r10632, MPFR_RNDN); };
        return mpfr_get_d(r10633, MPFR_RNDN);
}

