#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 r26462 = x;
        float r26463 = y;
        float r26464 = z;
        float r26465 = r26463 / r26464;
        float r26466 = t;
        float r26467 = r26465 * r26466;
        float r26468 = r26467 / r26466;
        float r26469 = r26462 * r26468;
        return r26469;
}

double f_id(double x, double y, double z, double t) {
        double r26470 = x;
        double r26471 = y;
        double r26472 = z;
        double r26473 = r26471 / r26472;
        double r26474 = t;
        double r26475 = r26473 * r26474;
        double r26476 = r26475 / r26474;
        double r26477 = r26470 * r26476;
        return r26477;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r26478 = y;
        float r26479 = z;
        float r26480 = r26478 / r26479;
        float r26481 = -4.448330001222229e+248;
        bool r26482 = r26480 <= r26481;
        float r26483 = x;
        float r26484 = r26483 * r26478;
        float r26485 = r26484 / r26479;
        float r26486 = -3.0631198141689857e-91;
        bool r26487 = r26480 <= r26486;
        float r26488 = r26483 * r26480;
        float r26489 = 2.0561240807536962e-191;
        bool r26490 = r26480 <= r26489;
        float r26491 = r26483 / r26479;
        float r26492 = r26491 * r26478;
        float r26493 = 5.206301519867918e+229;
        bool r26494 = r26480 <= r26493;
        float r26495 = r26494 ? r26488 : r26485;
        float r26496 = r26490 ? r26492 : r26495;
        float r26497 = r26487 ? r26488 : r26496;
        float r26498 = r26482 ? r26485 : r26497;
        return r26498;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r26499 = y;
        double r26500 = z;
        double r26501 = r26499 / r26500;
        double r26502 = -4.448330001222229e+248;
        bool r26503 = r26501 <= r26502;
        double r26504 = x;
        double r26505 = r26504 * r26499;
        double r26506 = r26505 / r26500;
        double r26507 = -3.0631198141689857e-91;
        bool r26508 = r26501 <= r26507;
        double r26509 = r26504 * r26501;
        double r26510 = 2.0561240807536962e-191;
        bool r26511 = r26501 <= r26510;
        double r26512 = r26504 / r26500;
        double r26513 = r26512 * r26499;
        double r26514 = 5.206301519867918e+229;
        bool r26515 = r26501 <= r26514;
        double r26516 = r26515 ? r26509 : r26506;
        double r26517 = r26511 ? r26513 : r26516;
        double r26518 = r26508 ? r26509 : r26517;
        double r26519 = r26503 ? r26506 : r26518;
        return r26519;
}

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 r26520, r26521, r26522, r26523, r26524, r26525, r26526, r26527;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26520);
        mpfr_init(r26521);
        mpfr_init(r26522);
        mpfr_init(r26523);
        mpfr_init(r26524);
        mpfr_init(r26525);
        mpfr_init(r26526);
        mpfr_init(r26527);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r26520, x, MPFR_RNDN);
        mpfr_set_d(r26521, y, MPFR_RNDN);
        mpfr_set_d(r26522, z, MPFR_RNDN);
        mpfr_div(r26523, r26521, r26522, MPFR_RNDN);
        mpfr_set_d(r26524, t, MPFR_RNDN);
        mpfr_mul(r26525, r26523, r26524, MPFR_RNDN);
        mpfr_div(r26526, r26525, r26524, MPFR_RNDN);
        mpfr_mul(r26527, r26520, r26526, MPFR_RNDN);
        return mpfr_get_d(r26527, MPFR_RNDN);
}

static mpfr_t r26528, r26529, r26530, r26531, r26532, r26533, r26534, r26535, r26536, r26537, r26538, r26539, r26540, r26541, r26542, r26543, r26544, r26545, r26546, r26547, r26548;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26528);
        mpfr_init(r26529);
        mpfr_init(r26530);
        mpfr_init_set_str(r26531, "-4.448330001222229e+248", 10, MPFR_RNDN);
        mpfr_init(r26532);
        mpfr_init(r26533);
        mpfr_init(r26534);
        mpfr_init(r26535);
        mpfr_init_set_str(r26536, "-3.0631198141689857e-91", 10, MPFR_RNDN);
        mpfr_init(r26537);
        mpfr_init(r26538);
        mpfr_init_set_str(r26539, "2.0561240807536962e-191", 10, MPFR_RNDN);
        mpfr_init(r26540);
        mpfr_init(r26541);
        mpfr_init(r26542);
        mpfr_init_set_str(r26543, "5.206301519867918e+229", 10, MPFR_RNDN);
        mpfr_init(r26544);
        mpfr_init(r26545);
        mpfr_init(r26546);
        mpfr_init(r26547);
        mpfr_init(r26548);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r26528, y, MPFR_RNDN);
        mpfr_set_d(r26529, z, MPFR_RNDN);
        mpfr_div(r26530, r26528, r26529, MPFR_RNDN);
        ;
        mpfr_set_si(r26532, mpfr_cmp(r26530, r26531) <= 0, MPFR_RNDN);
        mpfr_set_d(r26533, x, MPFR_RNDN);
        mpfr_mul(r26534, r26533, r26528, MPFR_RNDN);
        mpfr_div(r26535, r26534, r26529, MPFR_RNDN);
        ;
        mpfr_set_si(r26537, mpfr_cmp(r26530, r26536) <= 0, MPFR_RNDN);
        mpfr_mul(r26538, r26533, r26530, MPFR_RNDN);
        ;
        mpfr_set_si(r26540, mpfr_cmp(r26530, r26539) <= 0, MPFR_RNDN);
        mpfr_div(r26541, r26533, r26529, MPFR_RNDN);
        mpfr_mul(r26542, r26541, r26528, MPFR_RNDN);
        ;
        mpfr_set_si(r26544, mpfr_cmp(r26530, r26543) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r26544, MPFR_RNDN)) { mpfr_set(r26545, r26538, MPFR_RNDN); } else { mpfr_set(r26545, r26535, MPFR_RNDN); };
        if (mpfr_get_si(r26540, MPFR_RNDN)) { mpfr_set(r26546, r26542, MPFR_RNDN); } else { mpfr_set(r26546, r26545, MPFR_RNDN); };
        if (mpfr_get_si(r26537, MPFR_RNDN)) { mpfr_set(r26547, r26538, MPFR_RNDN); } else { mpfr_set(r26547, r26546, MPFR_RNDN); };
        if (mpfr_get_si(r26532, MPFR_RNDN)) { mpfr_set(r26548, r26535, MPFR_RNDN); } else { mpfr_set(r26548, r26547, MPFR_RNDN); };
        return mpfr_get_d(r26548, MPFR_RNDN);
}

static mpfr_t r26549, r26550, r26551, r26552, r26553, r26554, r26555, r26556, r26557, r26558, r26559, r26560, r26561, r26562, r26563, r26564, r26565, r26566, r26567, r26568, r26569;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26549);
        mpfr_init(r26550);
        mpfr_init(r26551);
        mpfr_init_set_str(r26552, "-4.448330001222229e+248", 10, MPFR_RNDN);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init(r26556);
        mpfr_init_set_str(r26557, "-3.0631198141689857e-91", 10, MPFR_RNDN);
        mpfr_init(r26558);
        mpfr_init(r26559);
        mpfr_init_set_str(r26560, "2.0561240807536962e-191", 10, MPFR_RNDN);
        mpfr_init(r26561);
        mpfr_init(r26562);
        mpfr_init(r26563);
        mpfr_init_set_str(r26564, "5.206301519867918e+229", 10, MPFR_RNDN);
        mpfr_init(r26565);
        mpfr_init(r26566);
        mpfr_init(r26567);
        mpfr_init(r26568);
        mpfr_init(r26569);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r26549, y, MPFR_RNDN);
        mpfr_set_d(r26550, z, MPFR_RNDN);
        mpfr_div(r26551, r26549, r26550, MPFR_RNDN);
        ;
        mpfr_set_si(r26553, mpfr_cmp(r26551, r26552) <= 0, MPFR_RNDN);
        mpfr_set_d(r26554, x, MPFR_RNDN);
        mpfr_mul(r26555, r26554, r26549, MPFR_RNDN);
        mpfr_div(r26556, r26555, r26550, MPFR_RNDN);
        ;
        mpfr_set_si(r26558, mpfr_cmp(r26551, r26557) <= 0, MPFR_RNDN);
        mpfr_mul(r26559, r26554, r26551, MPFR_RNDN);
        ;
        mpfr_set_si(r26561, mpfr_cmp(r26551, r26560) <= 0, MPFR_RNDN);
        mpfr_div(r26562, r26554, r26550, MPFR_RNDN);
        mpfr_mul(r26563, r26562, r26549, MPFR_RNDN);
        ;
        mpfr_set_si(r26565, mpfr_cmp(r26551, r26564) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r26565, MPFR_RNDN)) { mpfr_set(r26566, r26559, MPFR_RNDN); } else { mpfr_set(r26566, r26556, MPFR_RNDN); };
        if (mpfr_get_si(r26561, MPFR_RNDN)) { mpfr_set(r26567, r26563, MPFR_RNDN); } else { mpfr_set(r26567, r26566, MPFR_RNDN); };
        if (mpfr_get_si(r26558, MPFR_RNDN)) { mpfr_set(r26568, r26559, MPFR_RNDN); } else { mpfr_set(r26568, r26567, MPFR_RNDN); };
        if (mpfr_get_si(r26553, MPFR_RNDN)) { mpfr_set(r26569, r26556, MPFR_RNDN); } else { mpfr_set(r26569, r26568, MPFR_RNDN); };
        return mpfr_get_d(r26569, MPFR_RNDN);
}

