#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 r10728 = x;
        float r10729 = y;
        float r10730 = z;
        float r10731 = r10729 / r10730;
        float r10732 = t;
        float r10733 = r10731 * r10732;
        float r10734 = r10733 / r10732;
        float r10735 = r10728 * r10734;
        return r10735;
}

double f_id(double x, double y, double z, double t) {
        double r10736 = x;
        double r10737 = y;
        double r10738 = z;
        double r10739 = r10737 / r10738;
        double r10740 = t;
        double r10741 = r10739 * r10740;
        double r10742 = r10741 / r10740;
        double r10743 = r10736 * r10742;
        return r10743;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r10744 = x;
        float r10745 = y;
        float r10746 = r10744 * r10745;
        float r10747 = -2.701705248459643e+97;
        bool r10748 = r10746 <= r10747;
        float r10749 = z;
        float r10750 = r10744 / r10749;
        float r10751 = r10750 * r10745;
        float r10752 = -1.2460807539482867e-130;
        bool r10753 = r10746 <= r10752;
        float r10754 = r10746 / r10749;
        float r10755 = 3.084811635157326e-167;
        bool r10756 = r10746 <= r10755;
        float r10757 = 1.6843692024798482e+225;
        bool r10758 = r10746 <= r10757;
        float r10759 = r10758 ? r10754 : r10751;
        float r10760 = r10756 ? r10751 : r10759;
        float r10761 = r10753 ? r10754 : r10760;
        float r10762 = r10748 ? r10751 : r10761;
        return r10762;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r10763 = x;
        double r10764 = y;
        double r10765 = r10763 * r10764;
        double r10766 = -2.701705248459643e+97;
        bool r10767 = r10765 <= r10766;
        double r10768 = z;
        double r10769 = r10763 / r10768;
        double r10770 = r10769 * r10764;
        double r10771 = -1.2460807539482867e-130;
        bool r10772 = r10765 <= r10771;
        double r10773 = r10765 / r10768;
        double r10774 = 3.084811635157326e-167;
        bool r10775 = r10765 <= r10774;
        double r10776 = 1.6843692024798482e+225;
        bool r10777 = r10765 <= r10776;
        double r10778 = r10777 ? r10773 : r10770;
        double r10779 = r10775 ? r10770 : r10778;
        double r10780 = r10772 ? r10773 : r10779;
        double r10781 = r10767 ? r10770 : r10780;
        return r10781;
}

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 r10782, r10783, r10784, r10785, r10786, r10787, r10788, r10789;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10782);
        mpfr_init(r10783);
        mpfr_init(r10784);
        mpfr_init(r10785);
        mpfr_init(r10786);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init(r10789);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r10782, x, MPFR_RNDN);
        mpfr_set_d(r10783, y, MPFR_RNDN);
        mpfr_set_d(r10784, z, MPFR_RNDN);
        mpfr_div(r10785, r10783, r10784, MPFR_RNDN);
        mpfr_set_d(r10786, t, MPFR_RNDN);
        mpfr_mul(r10787, r10785, r10786, MPFR_RNDN);
        mpfr_div(r10788, r10787, r10786, MPFR_RNDN);
        mpfr_mul(r10789, r10782, r10788, MPFR_RNDN);
        return mpfr_get_d(r10789, MPFR_RNDN);
}

static mpfr_t r10790, r10791, r10792, r10793, r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804, r10805, r10806, r10807, r10808;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10790);
        mpfr_init(r10791);
        mpfr_init(r10792);
        mpfr_init_set_str(r10793, "-2.701705248459643e+97", 10, MPFR_RNDN);
        mpfr_init(r10794);
        mpfr_init(r10795);
        mpfr_init(r10796);
        mpfr_init(r10797);
        mpfr_init_set_str(r10798, "-1.2460807539482867e-130", 10, MPFR_RNDN);
        mpfr_init(r10799);
        mpfr_init(r10800);
        mpfr_init_set_str(r10801, "3.084811635157326e-167", 10, MPFR_RNDN);
        mpfr_init(r10802);
        mpfr_init_set_str(r10803, "1.6843692024798482e+225", 10, MPFR_RNDN);
        mpfr_init(r10804);
        mpfr_init(r10805);
        mpfr_init(r10806);
        mpfr_init(r10807);
        mpfr_init(r10808);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r10790, x, MPFR_RNDN);
        mpfr_set_d(r10791, y, MPFR_RNDN);
        mpfr_mul(r10792, r10790, r10791, MPFR_RNDN);
        ;
        mpfr_set_si(r10794, mpfr_cmp(r10792, r10793) <= 0, MPFR_RNDN);
        mpfr_set_d(r10795, z, MPFR_RNDN);
        mpfr_div(r10796, r10790, r10795, MPFR_RNDN);
        mpfr_mul(r10797, r10796, r10791, MPFR_RNDN);
        ;
        mpfr_set_si(r10799, mpfr_cmp(r10792, r10798) <= 0, MPFR_RNDN);
        mpfr_div(r10800, r10792, r10795, MPFR_RNDN);
        ;
        mpfr_set_si(r10802, mpfr_cmp(r10792, r10801) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10804, mpfr_cmp(r10792, r10803) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10804, MPFR_RNDN)) { mpfr_set(r10805, r10800, MPFR_RNDN); } else { mpfr_set(r10805, r10797, MPFR_RNDN); };
        if (mpfr_get_si(r10802, MPFR_RNDN)) { mpfr_set(r10806, r10797, MPFR_RNDN); } else { mpfr_set(r10806, r10805, MPFR_RNDN); };
        if (mpfr_get_si(r10799, MPFR_RNDN)) { mpfr_set(r10807, r10800, MPFR_RNDN); } else { mpfr_set(r10807, r10806, MPFR_RNDN); };
        if (mpfr_get_si(r10794, MPFR_RNDN)) { mpfr_set(r10808, r10797, MPFR_RNDN); } else { mpfr_set(r10808, r10807, MPFR_RNDN); };
        return mpfr_get_d(r10808, MPFR_RNDN);
}

static mpfr_t r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817, r10818, r10819, r10820, r10821, r10822, r10823, r10824, r10825, r10826, r10827;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10809);
        mpfr_init(r10810);
        mpfr_init(r10811);
        mpfr_init_set_str(r10812, "-2.701705248459643e+97", 10, MPFR_RNDN);
        mpfr_init(r10813);
        mpfr_init(r10814);
        mpfr_init(r10815);
        mpfr_init(r10816);
        mpfr_init_set_str(r10817, "-1.2460807539482867e-130", 10, MPFR_RNDN);
        mpfr_init(r10818);
        mpfr_init(r10819);
        mpfr_init_set_str(r10820, "3.084811635157326e-167", 10, MPFR_RNDN);
        mpfr_init(r10821);
        mpfr_init_set_str(r10822, "1.6843692024798482e+225", 10, MPFR_RNDN);
        mpfr_init(r10823);
        mpfr_init(r10824);
        mpfr_init(r10825);
        mpfr_init(r10826);
        mpfr_init(r10827);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r10809, x, MPFR_RNDN);
        mpfr_set_d(r10810, y, MPFR_RNDN);
        mpfr_mul(r10811, r10809, r10810, MPFR_RNDN);
        ;
        mpfr_set_si(r10813, mpfr_cmp(r10811, r10812) <= 0, MPFR_RNDN);
        mpfr_set_d(r10814, z, MPFR_RNDN);
        mpfr_div(r10815, r10809, r10814, MPFR_RNDN);
        mpfr_mul(r10816, r10815, r10810, MPFR_RNDN);
        ;
        mpfr_set_si(r10818, mpfr_cmp(r10811, r10817) <= 0, MPFR_RNDN);
        mpfr_div(r10819, r10811, r10814, MPFR_RNDN);
        ;
        mpfr_set_si(r10821, mpfr_cmp(r10811, r10820) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10823, mpfr_cmp(r10811, r10822) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10823, MPFR_RNDN)) { mpfr_set(r10824, r10819, MPFR_RNDN); } else { mpfr_set(r10824, r10816, MPFR_RNDN); };
        if (mpfr_get_si(r10821, MPFR_RNDN)) { mpfr_set(r10825, r10816, MPFR_RNDN); } else { mpfr_set(r10825, r10824, MPFR_RNDN); };
        if (mpfr_get_si(r10818, MPFR_RNDN)) { mpfr_set(r10826, r10819, MPFR_RNDN); } else { mpfr_set(r10826, r10825, MPFR_RNDN); };
        if (mpfr_get_si(r10813, MPFR_RNDN)) { mpfr_set(r10827, r10816, MPFR_RNDN); } else { mpfr_set(r10827, r10826, MPFR_RNDN); };
        return mpfr_get_d(r10827, MPFR_RNDN);
}

