#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 r27287 = x;
        float r27288 = y;
        float r27289 = z;
        float r27290 = r27288 / r27289;
        float r27291 = t;
        float r27292 = r27290 * r27291;
        float r27293 = r27292 / r27291;
        float r27294 = r27287 * r27293;
        return r27294;
}

double f_id(double x, double y, double z, double t) {
        double r27295 = x;
        double r27296 = y;
        double r27297 = z;
        double r27298 = r27296 / r27297;
        double r27299 = t;
        double r27300 = r27298 * r27299;
        double r27301 = r27300 / r27299;
        double r27302 = r27295 * r27301;
        return r27302;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r27303 = x;
        float r27304 = y;
        float r27305 = r27303 * r27304;
        float r27306 = -4.0489496635322154e+300;
        bool r27307 = r27305 <= r27306;
        float r27308 = z;
        float r27309 = r27304 / r27308;
        float r27310 = r27303 * r27309;
        float r27311 = -3.671985826538214e-194;
        bool r27312 = r27305 <= r27311;
        float r27313 = r27305 / r27308;
        float r27314 = 4.150998984392305e-192;
        bool r27315 = r27305 <= r27314;
        float r27316 = r27308 / r27303;
        float r27317 = r27304 / r27316;
        float r27318 = 1.1751250528686869e+229;
        bool r27319 = r27305 <= r27318;
        float r27320 = r27319 ? r27313 : r27317;
        float r27321 = r27315 ? r27317 : r27320;
        float r27322 = r27312 ? r27313 : r27321;
        float r27323 = r27307 ? r27310 : r27322;
        return r27323;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r27324 = x;
        double r27325 = y;
        double r27326 = r27324 * r27325;
        double r27327 = -4.0489496635322154e+300;
        bool r27328 = r27326 <= r27327;
        double r27329 = z;
        double r27330 = r27325 / r27329;
        double r27331 = r27324 * r27330;
        double r27332 = -3.671985826538214e-194;
        bool r27333 = r27326 <= r27332;
        double r27334 = r27326 / r27329;
        double r27335 = 4.150998984392305e-192;
        bool r27336 = r27326 <= r27335;
        double r27337 = r27329 / r27324;
        double r27338 = r27325 / r27337;
        double r27339 = 1.1751250528686869e+229;
        bool r27340 = r27326 <= r27339;
        double r27341 = r27340 ? r27334 : r27338;
        double r27342 = r27336 ? r27338 : r27341;
        double r27343 = r27333 ? r27334 : r27342;
        double r27344 = r27328 ? r27331 : r27343;
        return r27344;
}

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 r27345, r27346, r27347, r27348, r27349, r27350, r27351, r27352;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27345);
        mpfr_init(r27346);
        mpfr_init(r27347);
        mpfr_init(r27348);
        mpfr_init(r27349);
        mpfr_init(r27350);
        mpfr_init(r27351);
        mpfr_init(r27352);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r27345, x, MPFR_RNDN);
        mpfr_set_d(r27346, y, MPFR_RNDN);
        mpfr_set_d(r27347, z, MPFR_RNDN);
        mpfr_div(r27348, r27346, r27347, MPFR_RNDN);
        mpfr_set_d(r27349, t, MPFR_RNDN);
        mpfr_mul(r27350, r27348, r27349, MPFR_RNDN);
        mpfr_div(r27351, r27350, r27349, MPFR_RNDN);
        mpfr_mul(r27352, r27345, r27351, MPFR_RNDN);
        return mpfr_get_d(r27352, MPFR_RNDN);
}

static mpfr_t r27353, r27354, r27355, r27356, r27357, r27358, r27359, r27360, r27361, r27362, r27363, r27364, r27365, r27366, r27367, r27368, r27369, r27370, r27371, r27372, r27373;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27353);
        mpfr_init(r27354);
        mpfr_init(r27355);
        mpfr_init_set_str(r27356, "-4.0489496635322154e+300", 10, MPFR_RNDN);
        mpfr_init(r27357);
        mpfr_init(r27358);
        mpfr_init(r27359);
        mpfr_init(r27360);
        mpfr_init_set_str(r27361, "-3.671985826538214e-194", 10, MPFR_RNDN);
        mpfr_init(r27362);
        mpfr_init(r27363);
        mpfr_init_set_str(r27364, "4.150998984392305e-192", 10, MPFR_RNDN);
        mpfr_init(r27365);
        mpfr_init(r27366);
        mpfr_init(r27367);
        mpfr_init_set_str(r27368, "1.1751250528686869e+229", 10, MPFR_RNDN);
        mpfr_init(r27369);
        mpfr_init(r27370);
        mpfr_init(r27371);
        mpfr_init(r27372);
        mpfr_init(r27373);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r27353, x, MPFR_RNDN);
        mpfr_set_d(r27354, y, MPFR_RNDN);
        mpfr_mul(r27355, r27353, r27354, MPFR_RNDN);
        ;
        mpfr_set_si(r27357, mpfr_cmp(r27355, r27356) <= 0, MPFR_RNDN);
        mpfr_set_d(r27358, z, MPFR_RNDN);
        mpfr_div(r27359, r27354, r27358, MPFR_RNDN);
        mpfr_mul(r27360, r27353, r27359, MPFR_RNDN);
        ;
        mpfr_set_si(r27362, mpfr_cmp(r27355, r27361) <= 0, MPFR_RNDN);
        mpfr_div(r27363, r27355, r27358, MPFR_RNDN);
        ;
        mpfr_set_si(r27365, mpfr_cmp(r27355, r27364) <= 0, MPFR_RNDN);
        mpfr_div(r27366, r27358, r27353, MPFR_RNDN);
        mpfr_div(r27367, r27354, r27366, MPFR_RNDN);
        ;
        mpfr_set_si(r27369, mpfr_cmp(r27355, r27368) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27369, MPFR_RNDN)) { mpfr_set(r27370, r27363, MPFR_RNDN); } else { mpfr_set(r27370, r27367, MPFR_RNDN); };
        if (mpfr_get_si(r27365, MPFR_RNDN)) { mpfr_set(r27371, r27367, MPFR_RNDN); } else { mpfr_set(r27371, r27370, MPFR_RNDN); };
        if (mpfr_get_si(r27362, MPFR_RNDN)) { mpfr_set(r27372, r27363, MPFR_RNDN); } else { mpfr_set(r27372, r27371, MPFR_RNDN); };
        if (mpfr_get_si(r27357, MPFR_RNDN)) { mpfr_set(r27373, r27360, MPFR_RNDN); } else { mpfr_set(r27373, r27372, MPFR_RNDN); };
        return mpfr_get_d(r27373, MPFR_RNDN);
}

static mpfr_t r27374, r27375, r27376, r27377, r27378, r27379, r27380, r27381, r27382, r27383, r27384, r27385, r27386, r27387, r27388, r27389, r27390, r27391, r27392, r27393, r27394;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27374);
        mpfr_init(r27375);
        mpfr_init(r27376);
        mpfr_init_set_str(r27377, "-4.0489496635322154e+300", 10, MPFR_RNDN);
        mpfr_init(r27378);
        mpfr_init(r27379);
        mpfr_init(r27380);
        mpfr_init(r27381);
        mpfr_init_set_str(r27382, "-3.671985826538214e-194", 10, MPFR_RNDN);
        mpfr_init(r27383);
        mpfr_init(r27384);
        mpfr_init_set_str(r27385, "4.150998984392305e-192", 10, MPFR_RNDN);
        mpfr_init(r27386);
        mpfr_init(r27387);
        mpfr_init(r27388);
        mpfr_init_set_str(r27389, "1.1751250528686869e+229", 10, MPFR_RNDN);
        mpfr_init(r27390);
        mpfr_init(r27391);
        mpfr_init(r27392);
        mpfr_init(r27393);
        mpfr_init(r27394);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r27374, x, MPFR_RNDN);
        mpfr_set_d(r27375, y, MPFR_RNDN);
        mpfr_mul(r27376, r27374, r27375, MPFR_RNDN);
        ;
        mpfr_set_si(r27378, mpfr_cmp(r27376, r27377) <= 0, MPFR_RNDN);
        mpfr_set_d(r27379, z, MPFR_RNDN);
        mpfr_div(r27380, r27375, r27379, MPFR_RNDN);
        mpfr_mul(r27381, r27374, r27380, MPFR_RNDN);
        ;
        mpfr_set_si(r27383, mpfr_cmp(r27376, r27382) <= 0, MPFR_RNDN);
        mpfr_div(r27384, r27376, r27379, MPFR_RNDN);
        ;
        mpfr_set_si(r27386, mpfr_cmp(r27376, r27385) <= 0, MPFR_RNDN);
        mpfr_div(r27387, r27379, r27374, MPFR_RNDN);
        mpfr_div(r27388, r27375, r27387, MPFR_RNDN);
        ;
        mpfr_set_si(r27390, mpfr_cmp(r27376, r27389) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27390, MPFR_RNDN)) { mpfr_set(r27391, r27384, MPFR_RNDN); } else { mpfr_set(r27391, r27388, MPFR_RNDN); };
        if (mpfr_get_si(r27386, MPFR_RNDN)) { mpfr_set(r27392, r27388, MPFR_RNDN); } else { mpfr_set(r27392, r27391, MPFR_RNDN); };
        if (mpfr_get_si(r27383, MPFR_RNDN)) { mpfr_set(r27393, r27384, MPFR_RNDN); } else { mpfr_set(r27393, r27392, MPFR_RNDN); };
        if (mpfr_get_si(r27378, MPFR_RNDN)) { mpfr_set(r27394, r27381, MPFR_RNDN); } else { mpfr_set(r27394, r27393, MPFR_RNDN); };
        return mpfr_get_d(r27394, MPFR_RNDN);
}

