#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 r26496 = x;
        float r26497 = y;
        float r26498 = z;
        float r26499 = r26497 / r26498;
        float r26500 = t;
        float r26501 = r26499 * r26500;
        float r26502 = r26501 / r26500;
        float r26503 = r26496 * r26502;
        return r26503;
}

double f_id(double x, double y, double z, double t) {
        double r26504 = x;
        double r26505 = y;
        double r26506 = z;
        double r26507 = r26505 / r26506;
        double r26508 = t;
        double r26509 = r26507 * r26508;
        double r26510 = r26509 / r26508;
        double r26511 = r26504 * r26510;
        return r26511;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r26512 = x;
        float r26513 = z;
        float r26514 = y;
        float r26515 = r26513 / r26514;
        float r26516 = r26512 / r26515;
        float r26517 = -9.284971931809574e-304;
        bool r26518 = r26516 <= r26517;
        float r26519 = 5.0394695875807e-322;
        bool r26520 = r26516 <= r26519;
        float r26521 = r26512 * r26514;
        float r26522 = r26521 / r26513;
        float r26523 = 1.1181989019239861e+212;
        bool r26524 = r26516 <= r26523;
        float r26525 = r26524 ? r26516 : r26522;
        float r26526 = r26520 ? r26522 : r26525;
        float r26527 = r26518 ? r26516 : r26526;
        return r26527;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r26528 = x;
        double r26529 = z;
        double r26530 = y;
        double r26531 = r26529 / r26530;
        double r26532 = r26528 / r26531;
        double r26533 = -9.284971931809574e-304;
        bool r26534 = r26532 <= r26533;
        double r26535 = 5.0394695875807e-322;
        bool r26536 = r26532 <= r26535;
        double r26537 = r26528 * r26530;
        double r26538 = r26537 / r26529;
        double r26539 = 1.1181989019239861e+212;
        bool r26540 = r26532 <= r26539;
        double r26541 = r26540 ? r26532 : r26538;
        double r26542 = r26536 ? r26538 : r26541;
        double r26543 = r26534 ? r26532 : r26542;
        return r26543;
}

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 r26544, r26545, r26546, r26547, r26548, r26549, r26550, r26551;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r26544);
        mpfr_init(r26545);
        mpfr_init(r26546);
        mpfr_init(r26547);
        mpfr_init(r26548);
        mpfr_init(r26549);
        mpfr_init(r26550);
        mpfr_init(r26551);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r26544, x, MPFR_RNDN);
        mpfr_set_d(r26545, y, MPFR_RNDN);
        mpfr_set_d(r26546, z, MPFR_RNDN);
        mpfr_div(r26547, r26545, r26546, MPFR_RNDN);
        mpfr_set_d(r26548, t, MPFR_RNDN);
        mpfr_mul(r26549, r26547, r26548, MPFR_RNDN);
        mpfr_div(r26550, r26549, r26548, MPFR_RNDN);
        mpfr_mul(r26551, r26544, r26550, MPFR_RNDN);
        return mpfr_get_d(r26551, MPFR_RNDN);
}

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26552);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init(r26556);
        mpfr_init_set_str(r26557, "-9.284971931809574e-304", 10, MPFR_RNDN);
        mpfr_init(r26558);
        mpfr_init_set_str(r26559, "5.0394695875807e-322", 10, MPFR_RNDN);
        mpfr_init(r26560);
        mpfr_init(r26561);
        mpfr_init(r26562);
        mpfr_init_set_str(r26563, "1.1181989019239861e+212", 10, MPFR_RNDN);
        mpfr_init(r26564);
        mpfr_init(r26565);
        mpfr_init(r26566);
        mpfr_init(r26567);
}

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

static mpfr_t r26568, r26569, r26570, r26571, r26572, r26573, r26574, r26575, r26576, r26577, r26578, r26579, r26580, r26581, r26582, r26583;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r26568);
        mpfr_init(r26569);
        mpfr_init(r26570);
        mpfr_init(r26571);
        mpfr_init(r26572);
        mpfr_init_set_str(r26573, "-9.284971931809574e-304", 10, MPFR_RNDN);
        mpfr_init(r26574);
        mpfr_init_set_str(r26575, "5.0394695875807e-322", 10, MPFR_RNDN);
        mpfr_init(r26576);
        mpfr_init(r26577);
        mpfr_init(r26578);
        mpfr_init_set_str(r26579, "1.1181989019239861e+212", 10, MPFR_RNDN);
        mpfr_init(r26580);
        mpfr_init(r26581);
        mpfr_init(r26582);
        mpfr_init(r26583);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r26568, x, MPFR_RNDN);
        mpfr_set_d(r26569, z, MPFR_RNDN);
        mpfr_set_d(r26570, y, MPFR_RNDN);
        mpfr_div(r26571, r26569, r26570, MPFR_RNDN);
        mpfr_div(r26572, r26568, r26571, MPFR_RNDN);
        ;
        mpfr_set_si(r26574, mpfr_cmp(r26572, r26573) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26576, mpfr_cmp(r26572, r26575) <= 0, MPFR_RNDN);
        mpfr_mul(r26577, r26568, r26570, MPFR_RNDN);
        mpfr_div(r26578, r26577, r26569, MPFR_RNDN);
        ;
        mpfr_set_si(r26580, mpfr_cmp(r26572, r26579) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r26580, MPFR_RNDN)) { mpfr_set(r26581, r26572, MPFR_RNDN); } else { mpfr_set(r26581, r26578, MPFR_RNDN); };
        if (mpfr_get_si(r26576, MPFR_RNDN)) { mpfr_set(r26582, r26578, MPFR_RNDN); } else { mpfr_set(r26582, r26581, MPFR_RNDN); };
        if (mpfr_get_si(r26574, MPFR_RNDN)) { mpfr_set(r26583, r26572, MPFR_RNDN); } else { mpfr_set(r26583, r26582, MPFR_RNDN); };
        return mpfr_get_d(r26583, MPFR_RNDN);
}

