#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 r11249 = x;
        float r11250 = y;
        float r11251 = z;
        float r11252 = r11250 / r11251;
        float r11253 = t;
        float r11254 = r11252 * r11253;
        float r11255 = r11254 / r11253;
        float r11256 = r11249 * r11255;
        return r11256;
}

double f_id(double x, double y, double z, double t) {
        double r11257 = x;
        double r11258 = y;
        double r11259 = z;
        double r11260 = r11258 / r11259;
        double r11261 = t;
        double r11262 = r11260 * r11261;
        double r11263 = r11262 / r11261;
        double r11264 = r11257 * r11263;
        return r11264;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r11265 = z;
        float r11266 = x;
        float r11267 = r11265 / r11266;
        float r11268 = -3.222695108487588e+245;
        bool r11269 = r11267 <= r11268;
        float r11270 = y;
        float r11271 = r11270 / r11265;
        float r11272 = r11266 * r11271;
        float r11273 = -3.627028867899059e-102;
        bool r11274 = r11267 <= r11273;
        float r11275 = r11266 / r11265;
        float r11276 = r11275 * r11270;
        float r11277 = 1.4103190471996078e-300;
        bool r11278 = r11267 <= r11277;
        float r11279 = r11270 * r11266;
        float r11280 = 1;
        float r11281 = r11280 / r11265;
        float r11282 = r11279 * r11281;
        float r11283 = 3.9866603406054462e+236;
        bool r11284 = r11267 <= r11283;
        float r11285 = r11284 ? r11276 : r11272;
        float r11286 = r11278 ? r11282 : r11285;
        float r11287 = r11274 ? r11276 : r11286;
        float r11288 = r11269 ? r11272 : r11287;
        return r11288;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r11289 = z;
        double r11290 = x;
        double r11291 = r11289 / r11290;
        double r11292 = -3.222695108487588e+245;
        bool r11293 = r11291 <= r11292;
        double r11294 = y;
        double r11295 = r11294 / r11289;
        double r11296 = r11290 * r11295;
        double r11297 = -3.627028867899059e-102;
        bool r11298 = r11291 <= r11297;
        double r11299 = r11290 / r11289;
        double r11300 = r11299 * r11294;
        double r11301 = 1.4103190471996078e-300;
        bool r11302 = r11291 <= r11301;
        double r11303 = r11294 * r11290;
        double r11304 = 1;
        double r11305 = r11304 / r11289;
        double r11306 = r11303 * r11305;
        double r11307 = 3.9866603406054462e+236;
        bool r11308 = r11291 <= r11307;
        double r11309 = r11308 ? r11300 : r11296;
        double r11310 = r11302 ? r11306 : r11309;
        double r11311 = r11298 ? r11300 : r11310;
        double r11312 = r11293 ? r11296 : r11311;
        return r11312;
}

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 r11313, r11314, r11315, r11316, r11317, r11318, r11319, r11320;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r11313);
        mpfr_init(r11314);
        mpfr_init(r11315);
        mpfr_init(r11316);
        mpfr_init(r11317);
        mpfr_init(r11318);
        mpfr_init(r11319);
        mpfr_init(r11320);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r11313, x, MPFR_RNDN);
        mpfr_set_d(r11314, y, MPFR_RNDN);
        mpfr_set_d(r11315, z, MPFR_RNDN);
        mpfr_div(r11316, r11314, r11315, MPFR_RNDN);
        mpfr_set_d(r11317, t, MPFR_RNDN);
        mpfr_mul(r11318, r11316, r11317, MPFR_RNDN);
        mpfr_div(r11319, r11318, r11317, MPFR_RNDN);
        mpfr_mul(r11320, r11313, r11319, MPFR_RNDN);
        return mpfr_get_d(r11320, MPFR_RNDN);
}

static mpfr_t r11321, r11322, r11323, r11324, r11325, r11326, r11327, r11328, r11329, r11330, r11331, r11332, r11333, r11334, r11335, r11336, r11337, r11338, r11339, r11340, r11341, r11342, r11343, r11344;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11321);
        mpfr_init(r11322);
        mpfr_init(r11323);
        mpfr_init_set_str(r11324, "-3.222695108487588e+245", 10, MPFR_RNDN);
        mpfr_init(r11325);
        mpfr_init(r11326);
        mpfr_init(r11327);
        mpfr_init(r11328);
        mpfr_init_set_str(r11329, "-3.627028867899059e-102", 10, MPFR_RNDN);
        mpfr_init(r11330);
        mpfr_init(r11331);
        mpfr_init(r11332);
        mpfr_init_set_str(r11333, "1.4103190471996078e-300", 10, MPFR_RNDN);
        mpfr_init(r11334);
        mpfr_init(r11335);
        mpfr_init_set_str(r11336, "1", 10, MPFR_RNDN);
        mpfr_init(r11337);
        mpfr_init(r11338);
        mpfr_init_set_str(r11339, "3.9866603406054462e+236", 10, MPFR_RNDN);
        mpfr_init(r11340);
        mpfr_init(r11341);
        mpfr_init(r11342);
        mpfr_init(r11343);
        mpfr_init(r11344);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r11321, z, MPFR_RNDN);
        mpfr_set_d(r11322, x, MPFR_RNDN);
        mpfr_div(r11323, r11321, r11322, MPFR_RNDN);
        ;
        mpfr_set_si(r11325, mpfr_cmp(r11323, r11324) <= 0, MPFR_RNDN);
        mpfr_set_d(r11326, y, MPFR_RNDN);
        mpfr_div(r11327, r11326, r11321, MPFR_RNDN);
        mpfr_mul(r11328, r11322, r11327, MPFR_RNDN);
        ;
        mpfr_set_si(r11330, mpfr_cmp(r11323, r11329) <= 0, MPFR_RNDN);
        mpfr_div(r11331, r11322, r11321, MPFR_RNDN);
        mpfr_mul(r11332, r11331, r11326, MPFR_RNDN);
        ;
        mpfr_set_si(r11334, mpfr_cmp(r11323, r11333) <= 0, MPFR_RNDN);
        mpfr_mul(r11335, r11326, r11322, MPFR_RNDN);
        ;
        mpfr_div(r11337, r11336, r11321, MPFR_RNDN);
        mpfr_mul(r11338, r11335, r11337, MPFR_RNDN);
        ;
        mpfr_set_si(r11340, mpfr_cmp(r11323, r11339) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r11340, MPFR_RNDN)) { mpfr_set(r11341, r11332, MPFR_RNDN); } else { mpfr_set(r11341, r11328, MPFR_RNDN); };
        if (mpfr_get_si(r11334, MPFR_RNDN)) { mpfr_set(r11342, r11338, MPFR_RNDN); } else { mpfr_set(r11342, r11341, MPFR_RNDN); };
        if (mpfr_get_si(r11330, MPFR_RNDN)) { mpfr_set(r11343, r11332, MPFR_RNDN); } else { mpfr_set(r11343, r11342, MPFR_RNDN); };
        if (mpfr_get_si(r11325, MPFR_RNDN)) { mpfr_set(r11344, r11328, MPFR_RNDN); } else { mpfr_set(r11344, r11343, MPFR_RNDN); };
        return mpfr_get_d(r11344, MPFR_RNDN);
}

static mpfr_t r11345, r11346, r11347, r11348, r11349, r11350, r11351, r11352, r11353, r11354, r11355, r11356, r11357, r11358, r11359, r11360, r11361, r11362, r11363, r11364, r11365, r11366, r11367, r11368;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11345);
        mpfr_init(r11346);
        mpfr_init(r11347);
        mpfr_init_set_str(r11348, "-3.222695108487588e+245", 10, MPFR_RNDN);
        mpfr_init(r11349);
        mpfr_init(r11350);
        mpfr_init(r11351);
        mpfr_init(r11352);
        mpfr_init_set_str(r11353, "-3.627028867899059e-102", 10, MPFR_RNDN);
        mpfr_init(r11354);
        mpfr_init(r11355);
        mpfr_init(r11356);
        mpfr_init_set_str(r11357, "1.4103190471996078e-300", 10, MPFR_RNDN);
        mpfr_init(r11358);
        mpfr_init(r11359);
        mpfr_init_set_str(r11360, "1", 10, MPFR_RNDN);
        mpfr_init(r11361);
        mpfr_init(r11362);
        mpfr_init_set_str(r11363, "3.9866603406054462e+236", 10, MPFR_RNDN);
        mpfr_init(r11364);
        mpfr_init(r11365);
        mpfr_init(r11366);
        mpfr_init(r11367);
        mpfr_init(r11368);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r11345, z, MPFR_RNDN);
        mpfr_set_d(r11346, x, MPFR_RNDN);
        mpfr_div(r11347, r11345, r11346, MPFR_RNDN);
        ;
        mpfr_set_si(r11349, mpfr_cmp(r11347, r11348) <= 0, MPFR_RNDN);
        mpfr_set_d(r11350, y, MPFR_RNDN);
        mpfr_div(r11351, r11350, r11345, MPFR_RNDN);
        mpfr_mul(r11352, r11346, r11351, MPFR_RNDN);
        ;
        mpfr_set_si(r11354, mpfr_cmp(r11347, r11353) <= 0, MPFR_RNDN);
        mpfr_div(r11355, r11346, r11345, MPFR_RNDN);
        mpfr_mul(r11356, r11355, r11350, MPFR_RNDN);
        ;
        mpfr_set_si(r11358, mpfr_cmp(r11347, r11357) <= 0, MPFR_RNDN);
        mpfr_mul(r11359, r11350, r11346, MPFR_RNDN);
        ;
        mpfr_div(r11361, r11360, r11345, MPFR_RNDN);
        mpfr_mul(r11362, r11359, r11361, MPFR_RNDN);
        ;
        mpfr_set_si(r11364, mpfr_cmp(r11347, r11363) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r11364, MPFR_RNDN)) { mpfr_set(r11365, r11356, MPFR_RNDN); } else { mpfr_set(r11365, r11352, MPFR_RNDN); };
        if (mpfr_get_si(r11358, MPFR_RNDN)) { mpfr_set(r11366, r11362, MPFR_RNDN); } else { mpfr_set(r11366, r11365, MPFR_RNDN); };
        if (mpfr_get_si(r11354, MPFR_RNDN)) { mpfr_set(r11367, r11356, MPFR_RNDN); } else { mpfr_set(r11367, r11366, MPFR_RNDN); };
        if (mpfr_get_si(r11349, MPFR_RNDN)) { mpfr_set(r11368, r11352, MPFR_RNDN); } else { mpfr_set(r11368, r11367, MPFR_RNDN); };
        return mpfr_get_d(r11368, MPFR_RNDN);
}

