#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 r26957 = x;
        float r26958 = y;
        float r26959 = z;
        float r26960 = r26958 / r26959;
        float r26961 = t;
        float r26962 = r26960 * r26961;
        float r26963 = r26962 / r26961;
        float r26964 = r26957 * r26963;
        return r26964;
}

double f_id(double x, double y, double z, double t) {
        double r26965 = x;
        double r26966 = y;
        double r26967 = z;
        double r26968 = r26966 / r26967;
        double r26969 = t;
        double r26970 = r26968 * r26969;
        double r26971 = r26970 / r26969;
        double r26972 = r26965 * r26971;
        return r26972;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r26973 = z;
        float r26974 = x;
        float r26975 = r26973 / r26974;
        float r26976 = -1.489621586324841e+84;
        bool r26977 = r26975 <= r26976;
        float r26978 = y;
        float r26979 = r26978 / r26973;
        float r26980 = r26979 * r26974;
        float r26981 = -1.4602807494355828e-158;
        bool r26982 = r26975 <= r26981;
        float r26983 = r26978 / r26975;
        float r26984 = 6.564452799338788e-204;
        bool r26985 = r26975 <= r26984;
        float r26986 = r26973 / r26978;
        float r26987 = r26974 / r26986;
        float r26988 = 3.844362876556608e+64;
        bool r26989 = r26975 <= r26988;
        float r26990 = r26989 ? r26983 : r26987;
        float r26991 = r26985 ? r26987 : r26990;
        float r26992 = r26982 ? r26983 : r26991;
        float r26993 = r26977 ? r26980 : r26992;
        return r26993;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r26994 = z;
        double r26995 = x;
        double r26996 = r26994 / r26995;
        double r26997 = -1.489621586324841e+84;
        bool r26998 = r26996 <= r26997;
        double r26999 = y;
        double r27000 = r26999 / r26994;
        double r27001 = r27000 * r26995;
        double r27002 = -1.4602807494355828e-158;
        bool r27003 = r26996 <= r27002;
        double r27004 = r26999 / r26996;
        double r27005 = 6.564452799338788e-204;
        bool r27006 = r26996 <= r27005;
        double r27007 = r26994 / r26999;
        double r27008 = r26995 / r27007;
        double r27009 = 3.844362876556608e+64;
        bool r27010 = r26996 <= r27009;
        double r27011 = r27010 ? r27004 : r27008;
        double r27012 = r27006 ? r27008 : r27011;
        double r27013 = r27003 ? r27004 : r27012;
        double r27014 = r26998 ? r27001 : r27013;
        return r27014;
}

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 r27015, r27016, r27017, r27018, r27019, r27020, r27021, r27022;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27015);
        mpfr_init(r27016);
        mpfr_init(r27017);
        mpfr_init(r27018);
        mpfr_init(r27019);
        mpfr_init(r27020);
        mpfr_init(r27021);
        mpfr_init(r27022);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r27015, x, MPFR_RNDN);
        mpfr_set_d(r27016, y, MPFR_RNDN);
        mpfr_set_d(r27017, z, MPFR_RNDN);
        mpfr_div(r27018, r27016, r27017, MPFR_RNDN);
        mpfr_set_d(r27019, t, MPFR_RNDN);
        mpfr_mul(r27020, r27018, r27019, MPFR_RNDN);
        mpfr_div(r27021, r27020, r27019, MPFR_RNDN);
        mpfr_mul(r27022, r27015, r27021, MPFR_RNDN);
        return mpfr_get_d(r27022, MPFR_RNDN);
}

static mpfr_t r27023, r27024, r27025, r27026, r27027, r27028, r27029, r27030, r27031, r27032, r27033, r27034, r27035, r27036, r27037, r27038, r27039, r27040, r27041, r27042, r27043;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27023);
        mpfr_init(r27024);
        mpfr_init(r27025);
        mpfr_init_set_str(r27026, "-1.489621586324841e+84", 10, MPFR_RNDN);
        mpfr_init(r27027);
        mpfr_init(r27028);
        mpfr_init(r27029);
        mpfr_init(r27030);
        mpfr_init_set_str(r27031, "-1.4602807494355828e-158", 10, MPFR_RNDN);
        mpfr_init(r27032);
        mpfr_init(r27033);
        mpfr_init_set_str(r27034, "6.564452799338788e-204", 10, MPFR_RNDN);
        mpfr_init(r27035);
        mpfr_init(r27036);
        mpfr_init(r27037);
        mpfr_init_set_str(r27038, "3.844362876556608e+64", 10, MPFR_RNDN);
        mpfr_init(r27039);
        mpfr_init(r27040);
        mpfr_init(r27041);
        mpfr_init(r27042);
        mpfr_init(r27043);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r27023, z, MPFR_RNDN);
        mpfr_set_d(r27024, x, MPFR_RNDN);
        mpfr_div(r27025, r27023, r27024, MPFR_RNDN);
        ;
        mpfr_set_si(r27027, mpfr_cmp(r27025, r27026) <= 0, MPFR_RNDN);
        mpfr_set_d(r27028, y, MPFR_RNDN);
        mpfr_div(r27029, r27028, r27023, MPFR_RNDN);
        mpfr_mul(r27030, r27029, r27024, MPFR_RNDN);
        ;
        mpfr_set_si(r27032, mpfr_cmp(r27025, r27031) <= 0, MPFR_RNDN);
        mpfr_div(r27033, r27028, r27025, MPFR_RNDN);
        ;
        mpfr_set_si(r27035, mpfr_cmp(r27025, r27034) <= 0, MPFR_RNDN);
        mpfr_div(r27036, r27023, r27028, MPFR_RNDN);
        mpfr_div(r27037, r27024, r27036, MPFR_RNDN);
        ;
        mpfr_set_si(r27039, mpfr_cmp(r27025, r27038) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27039, MPFR_RNDN)) { mpfr_set(r27040, r27033, MPFR_RNDN); } else { mpfr_set(r27040, r27037, MPFR_RNDN); };
        if (mpfr_get_si(r27035, MPFR_RNDN)) { mpfr_set(r27041, r27037, MPFR_RNDN); } else { mpfr_set(r27041, r27040, MPFR_RNDN); };
        if (mpfr_get_si(r27032, MPFR_RNDN)) { mpfr_set(r27042, r27033, MPFR_RNDN); } else { mpfr_set(r27042, r27041, MPFR_RNDN); };
        if (mpfr_get_si(r27027, MPFR_RNDN)) { mpfr_set(r27043, r27030, MPFR_RNDN); } else { mpfr_set(r27043, r27042, MPFR_RNDN); };
        return mpfr_get_d(r27043, MPFR_RNDN);
}

static mpfr_t r27044, r27045, r27046, r27047, r27048, r27049, r27050, r27051, r27052, r27053, r27054, r27055, r27056, r27057, r27058, r27059, r27060, r27061, r27062, r27063, r27064;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27044);
        mpfr_init(r27045);
        mpfr_init(r27046);
        mpfr_init_set_str(r27047, "-1.489621586324841e+84", 10, MPFR_RNDN);
        mpfr_init(r27048);
        mpfr_init(r27049);
        mpfr_init(r27050);
        mpfr_init(r27051);
        mpfr_init_set_str(r27052, "-1.4602807494355828e-158", 10, MPFR_RNDN);
        mpfr_init(r27053);
        mpfr_init(r27054);
        mpfr_init_set_str(r27055, "6.564452799338788e-204", 10, MPFR_RNDN);
        mpfr_init(r27056);
        mpfr_init(r27057);
        mpfr_init(r27058);
        mpfr_init_set_str(r27059, "3.844362876556608e+64", 10, MPFR_RNDN);
        mpfr_init(r27060);
        mpfr_init(r27061);
        mpfr_init(r27062);
        mpfr_init(r27063);
        mpfr_init(r27064);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r27044, z, MPFR_RNDN);
        mpfr_set_d(r27045, x, MPFR_RNDN);
        mpfr_div(r27046, r27044, r27045, MPFR_RNDN);
        ;
        mpfr_set_si(r27048, mpfr_cmp(r27046, r27047) <= 0, MPFR_RNDN);
        mpfr_set_d(r27049, y, MPFR_RNDN);
        mpfr_div(r27050, r27049, r27044, MPFR_RNDN);
        mpfr_mul(r27051, r27050, r27045, MPFR_RNDN);
        ;
        mpfr_set_si(r27053, mpfr_cmp(r27046, r27052) <= 0, MPFR_RNDN);
        mpfr_div(r27054, r27049, r27046, MPFR_RNDN);
        ;
        mpfr_set_si(r27056, mpfr_cmp(r27046, r27055) <= 0, MPFR_RNDN);
        mpfr_div(r27057, r27044, r27049, MPFR_RNDN);
        mpfr_div(r27058, r27045, r27057, MPFR_RNDN);
        ;
        mpfr_set_si(r27060, mpfr_cmp(r27046, r27059) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r27060, MPFR_RNDN)) { mpfr_set(r27061, r27054, MPFR_RNDN); } else { mpfr_set(r27061, r27058, MPFR_RNDN); };
        if (mpfr_get_si(r27056, MPFR_RNDN)) { mpfr_set(r27062, r27058, MPFR_RNDN); } else { mpfr_set(r27062, r27061, MPFR_RNDN); };
        if (mpfr_get_si(r27053, MPFR_RNDN)) { mpfr_set(r27063, r27054, MPFR_RNDN); } else { mpfr_set(r27063, r27062, MPFR_RNDN); };
        if (mpfr_get_si(r27048, MPFR_RNDN)) { mpfr_set(r27064, r27051, MPFR_RNDN); } else { mpfr_set(r27064, r27063, MPFR_RNDN); };
        return mpfr_get_d(r27064, MPFR_RNDN);
}

