#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 r30288 = x;
        float r30289 = y;
        float r30290 = z;
        float r30291 = r30289 / r30290;
        float r30292 = t;
        float r30293 = r30291 * r30292;
        float r30294 = r30293 / r30292;
        float r30295 = r30288 * r30294;
        return r30295;
}

double f_id(double x, double y, double z, double t) {
        double r30296 = x;
        double r30297 = y;
        double r30298 = z;
        double r30299 = r30297 / r30298;
        double r30300 = t;
        double r30301 = r30299 * r30300;
        double r30302 = r30301 / r30300;
        double r30303 = r30296 * r30302;
        return r30303;
}


double f_of(float x, float y, float z, float t) {
        float r30304 = y;
        float r30305 = z;
        float r30306 = r30304 / r30305;
        float r30307 = t;
        float r30308 = r30306 * r30307;
        float r30309 = r30308 / r30307;
        float r30310 = -6.4042332376573255e+208f;
        bool r30311 = r30309 <= r30310;
        float r30312 = x;
        float r30313 = r30304 * r30312;
        float r30314 = r30313 / r30305;
        float r30315 = -1.2665794875040561e-228f;
        bool r30316 = r30309 <= r30315;
        float r30317 = r30305 / r30304;
        float r30318 = r30312 / r30317;
        float r30319 = -0.0f;
        bool r30320 = r30309 <= r30319;
        float r30321 = 8.240287997287591e+264f;
        bool r30322 = r30309 <= r30321;
        float r30323 = r30312 * r30306;
        float r30324 = r30322 ? r30323 : r30314;
        float r30325 = r30320 ? r30314 : r30324;
        float r30326 = r30316 ? r30318 : r30325;
        float r30327 = r30311 ? r30314 : r30326;
        return r30327;
}

double f_od(double x, double y, double z, double t) {
        double r30328 = y;
        double r30329 = z;
        double r30330 = r30328 / r30329;
        double r30331 = t;
        double r30332 = r30330 * r30331;
        double r30333 = r30332 / r30331;
        double r30334 = -6.4042332376573255e+208;
        bool r30335 = r30333 <= r30334;
        double r30336 = x;
        double r30337 = r30328 * r30336;
        double r30338 = r30337 / r30329;
        double r30339 = -1.2665794875040561e-228;
        bool r30340 = r30333 <= r30339;
        double r30341 = r30329 / r30328;
        double r30342 = r30336 / r30341;
        double r30343 = -0.0;
        bool r30344 = r30333 <= r30343;
        double r30345 = 8.240287997287591e+264;
        bool r30346 = r30333 <= r30345;
        double r30347 = r30336 * r30330;
        double r30348 = r30346 ? r30347 : r30338;
        double r30349 = r30344 ? r30338 : r30348;
        double r30350 = r30340 ? r30342 : r30349;
        double r30351 = r30335 ? r30338 : r30350;
        return r30351;
}

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 r30352, r30353, r30354, r30355, r30356, r30357, r30358, r30359;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r30352);
        mpfr_init(r30353);
        mpfr_init(r30354);
        mpfr_init(r30355);
        mpfr_init(r30356);
        mpfr_init(r30357);
        mpfr_init(r30358);
        mpfr_init(r30359);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r30352, x, MPFR_RNDN);
        mpfr_set_d(r30353, y, MPFR_RNDN);
        mpfr_set_d(r30354, z, MPFR_RNDN);
        mpfr_div(r30355, r30353, r30354, MPFR_RNDN);
        mpfr_set_d(r30356, t, MPFR_RNDN);
        mpfr_mul(r30357, r30355, r30356, MPFR_RNDN);
        mpfr_div(r30358, r30357, r30356, MPFR_RNDN);
        mpfr_mul(r30359, r30352, r30358, MPFR_RNDN);
        return mpfr_get_d(r30359, MPFR_RNDN);
}

static mpfr_t r30360, r30361, r30362, r30363, r30364, r30365, r30366, r30367, r30368, r30369, r30370, r30371, r30372, r30373, r30374, r30375, r30376, r30377, r30378, r30379, r30380, r30381, r30382, r30383;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r30360);
        mpfr_init(r30361);
        mpfr_init(r30362);
        mpfr_init(r30363);
        mpfr_init(r30364);
        mpfr_init(r30365);
        mpfr_init_set_str(r30366, "-6.4042332376573255e+208", 10, MPFR_RNDN);
        mpfr_init(r30367);
        mpfr_init(r30368);
        mpfr_init(r30369);
        mpfr_init(r30370);
        mpfr_init_set_str(r30371, "-1.2665794875040561e-228", 10, MPFR_RNDN);
        mpfr_init(r30372);
        mpfr_init(r30373);
        mpfr_init(r30374);
        mpfr_init_set_str(r30375, "-0.0", 10, MPFR_RNDN);
        mpfr_init(r30376);
        mpfr_init_set_str(r30377, "8.240287997287591e+264", 10, MPFR_RNDN);
        mpfr_init(r30378);
        mpfr_init(r30379);
        mpfr_init(r30380);
        mpfr_init(r30381);
        mpfr_init(r30382);
        mpfr_init(r30383);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r30360, y, MPFR_RNDN);
        mpfr_set_d(r30361, z, MPFR_RNDN);
        mpfr_div(r30362, r30360, r30361, MPFR_RNDN);
        mpfr_set_d(r30363, t, MPFR_RNDN);
        mpfr_mul(r30364, r30362, r30363, MPFR_RNDN);
        mpfr_div(r30365, r30364, r30363, MPFR_RNDN);
        ;
        mpfr_set_si(r30367, mpfr_cmp(r30365, r30366) <= 0, MPFR_RNDN);
        mpfr_set_d(r30368, x, MPFR_RNDN);
        mpfr_mul(r30369, r30360, r30368, MPFR_RNDN);
        mpfr_div(r30370, r30369, r30361, MPFR_RNDN);
        ;
        mpfr_set_si(r30372, mpfr_cmp(r30365, r30371) <= 0, MPFR_RNDN);
        mpfr_div(r30373, r30361, r30360, MPFR_RNDN);
        mpfr_div(r30374, r30368, r30373, MPFR_RNDN);
        ;
        mpfr_set_si(r30376, mpfr_cmp(r30365, r30375) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r30378, mpfr_cmp(r30365, r30377) <= 0, MPFR_RNDN);
        mpfr_mul(r30379, r30368, r30362, MPFR_RNDN);
        if (mpfr_get_si(r30378, MPFR_RNDN)) { mpfr_set(r30380, r30379, MPFR_RNDN); } else { mpfr_set(r30380, r30370, MPFR_RNDN); };
        if (mpfr_get_si(r30376, MPFR_RNDN)) { mpfr_set(r30381, r30370, MPFR_RNDN); } else { mpfr_set(r30381, r30380, MPFR_RNDN); };
        if (mpfr_get_si(r30372, MPFR_RNDN)) { mpfr_set(r30382, r30374, MPFR_RNDN); } else { mpfr_set(r30382, r30381, MPFR_RNDN); };
        if (mpfr_get_si(r30367, MPFR_RNDN)) { mpfr_set(r30383, r30370, MPFR_RNDN); } else { mpfr_set(r30383, r30382, MPFR_RNDN); };
        return mpfr_get_d(r30383, MPFR_RNDN);
}

static mpfr_t r30384, r30385, r30386, r30387, r30388, r30389, r30390, r30391, r30392, r30393, r30394, r30395, r30396, r30397, r30398, r30399, r30400, r30401, r30402, r30403, r30404, r30405, r30406, r30407;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r30384);
        mpfr_init(r30385);
        mpfr_init(r30386);
        mpfr_init(r30387);
        mpfr_init(r30388);
        mpfr_init(r30389);
        mpfr_init_set_str(r30390, "-6.4042332376573255e+208", 10, MPFR_RNDN);
        mpfr_init(r30391);
        mpfr_init(r30392);
        mpfr_init(r30393);
        mpfr_init(r30394);
        mpfr_init_set_str(r30395, "-1.2665794875040561e-228", 10, MPFR_RNDN);
        mpfr_init(r30396);
        mpfr_init(r30397);
        mpfr_init(r30398);
        mpfr_init_set_str(r30399, "-0.0", 10, MPFR_RNDN);
        mpfr_init(r30400);
        mpfr_init_set_str(r30401, "8.240287997287591e+264", 10, MPFR_RNDN);
        mpfr_init(r30402);
        mpfr_init(r30403);
        mpfr_init(r30404);
        mpfr_init(r30405);
        mpfr_init(r30406);
        mpfr_init(r30407);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r30384, y, MPFR_RNDN);
        mpfr_set_d(r30385, z, MPFR_RNDN);
        mpfr_div(r30386, r30384, r30385, MPFR_RNDN);
        mpfr_set_d(r30387, t, MPFR_RNDN);
        mpfr_mul(r30388, r30386, r30387, MPFR_RNDN);
        mpfr_div(r30389, r30388, r30387, MPFR_RNDN);
        ;
        mpfr_set_si(r30391, mpfr_cmp(r30389, r30390) <= 0, MPFR_RNDN);
        mpfr_set_d(r30392, x, MPFR_RNDN);
        mpfr_mul(r30393, r30384, r30392, MPFR_RNDN);
        mpfr_div(r30394, r30393, r30385, MPFR_RNDN);
        ;
        mpfr_set_si(r30396, mpfr_cmp(r30389, r30395) <= 0, MPFR_RNDN);
        mpfr_div(r30397, r30385, r30384, MPFR_RNDN);
        mpfr_div(r30398, r30392, r30397, MPFR_RNDN);
        ;
        mpfr_set_si(r30400, mpfr_cmp(r30389, r30399) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r30402, mpfr_cmp(r30389, r30401) <= 0, MPFR_RNDN);
        mpfr_mul(r30403, r30392, r30386, MPFR_RNDN);
        if (mpfr_get_si(r30402, MPFR_RNDN)) { mpfr_set(r30404, r30403, MPFR_RNDN); } else { mpfr_set(r30404, r30394, MPFR_RNDN); };
        if (mpfr_get_si(r30400, MPFR_RNDN)) { mpfr_set(r30405, r30394, MPFR_RNDN); } else { mpfr_set(r30405, r30404, MPFR_RNDN); };
        if (mpfr_get_si(r30396, MPFR_RNDN)) { mpfr_set(r30406, r30398, MPFR_RNDN); } else { mpfr_set(r30406, r30405, MPFR_RNDN); };
        if (mpfr_get_si(r30391, MPFR_RNDN)) { mpfr_set(r30407, r30394, MPFR_RNDN); } else { mpfr_set(r30407, r30406, MPFR_RNDN); };
        return mpfr_get_d(r30407, MPFR_RNDN);
}

