#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 r10162 = x;
        float r10163 = y;
        float r10164 = z;
        float r10165 = r10163 / r10164;
        float r10166 = t;
        float r10167 = r10165 * r10166;
        float r10168 = r10167 / r10166;
        float r10169 = r10162 * r10168;
        return r10169;
}

double f_id(double x, double y, double z, double t) {
        double r10170 = x;
        double r10171 = y;
        double r10172 = z;
        double r10173 = r10171 / r10172;
        double r10174 = t;
        double r10175 = r10173 * r10174;
        double r10176 = r10175 / r10174;
        double r10177 = r10170 * r10176;
        return r10177;
}


double f_of(float x, float y, float z, float t) {
        float r10178 = z;
        float r10179 = x;
        float r10180 = r10178 / r10179;
        float r10181 = -3.2845100879270977e+275;
        bool r10182 = r10180 <= r10181;
        float r10183 = y;
        float r10184 = r10183 * r10179;
        float r10185 = r10184 / r10178;
        float r10186 = -3.933914952147978e-304;
        bool r10187 = r10180 <= r10186;
        float r10188 = r10183 / r10180;
        float r10189 = 2.3540314842465144e-303;
        bool r10190 = r10180 <= r10189;
        float r10191 = r10183 / r10178;
        float r10192 = t;
        float r10193 = r10191 * r10192;
        float r10194 = r10193 / r10192;
        float r10195 = r10179 * r10194;
        float r10196 = 2.3930233669727197e+230;
        bool r10197 = r10180 <= r10196;
        float r10198 = r10197 ? r10188 : r10185;
        float r10199 = r10190 ? r10195 : r10198;
        float r10200 = r10187 ? r10188 : r10199;
        float r10201 = r10182 ? r10185 : r10200;
        return r10201;
}

double f_od(double x, double y, double z, double t) {
        double r10202 = z;
        double r10203 = x;
        double r10204 = r10202 / r10203;
        double r10205 = -3.2845100879270977e+275;
        bool r10206 = r10204 <= r10205;
        double r10207 = y;
        double r10208 = r10207 * r10203;
        double r10209 = r10208 / r10202;
        double r10210 = -3.933914952147978e-304;
        bool r10211 = r10204 <= r10210;
        double r10212 = r10207 / r10204;
        double r10213 = 2.3540314842465144e-303;
        bool r10214 = r10204 <= r10213;
        double r10215 = r10207 / r10202;
        double r10216 = t;
        double r10217 = r10215 * r10216;
        double r10218 = r10217 / r10216;
        double r10219 = r10203 * r10218;
        double r10220 = 2.3930233669727197e+230;
        bool r10221 = r10204 <= r10220;
        double r10222 = r10221 ? r10212 : r10209;
        double r10223 = r10214 ? r10219 : r10222;
        double r10224 = r10211 ? r10212 : r10223;
        double r10225 = r10206 ? r10209 : r10224;
        return r10225;
}

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 r10226, r10227, r10228, r10229, r10230, r10231, r10232, r10233;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r10226);
        mpfr_init(r10227);
        mpfr_init(r10228);
        mpfr_init(r10229);
        mpfr_init(r10230);
        mpfr_init(r10231);
        mpfr_init(r10232);
        mpfr_init(r10233);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r10226, x, MPFR_RNDN);
        mpfr_set_d(r10227, y, MPFR_RNDN);
        mpfr_set_d(r10228, z, MPFR_RNDN);
        mpfr_div(r10229, r10227, r10228, MPFR_RNDN);
        mpfr_set_d(r10230, t, MPFR_RNDN);
        mpfr_mul(r10231, r10229, r10230, MPFR_RNDN);
        mpfr_div(r10232, r10231, r10230, MPFR_RNDN);
        mpfr_mul(r10233, r10226, r10232, MPFR_RNDN);
        return mpfr_get_d(r10233, MPFR_RNDN);
}

static mpfr_t r10234, r10235, r10236, r10237, r10238, r10239, r10240, r10241, r10242, r10243, r10244, r10245, r10246, r10247, r10248, r10249, r10250, r10251, r10252, r10253, r10254, r10255, r10256, r10257;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10234);
        mpfr_init(r10235);
        mpfr_init(r10236);
        mpfr_init_set_str(r10237, "-3.2845100879270977e+275", 10, MPFR_RNDN);
        mpfr_init(r10238);
        mpfr_init(r10239);
        mpfr_init(r10240);
        mpfr_init(r10241);
        mpfr_init_set_str(r10242, "-3.933914952147978e-304", 10, MPFR_RNDN);
        mpfr_init(r10243);
        mpfr_init(r10244);
        mpfr_init_set_str(r10245, "2.3540314842465144e-303", 10, MPFR_RNDN);
        mpfr_init(r10246);
        mpfr_init(r10247);
        mpfr_init(r10248);
        mpfr_init(r10249);
        mpfr_init(r10250);
        mpfr_init(r10251);
        mpfr_init_set_str(r10252, "2.3930233669727197e+230", 10, MPFR_RNDN);
        mpfr_init(r10253);
        mpfr_init(r10254);
        mpfr_init(r10255);
        mpfr_init(r10256);
        mpfr_init(r10257);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r10234, z, MPFR_RNDN);
        mpfr_set_d(r10235, x, MPFR_RNDN);
        mpfr_div(r10236, r10234, r10235, MPFR_RNDN);
        ;
        mpfr_set_si(r10238, mpfr_cmp(r10236, r10237) <= 0, MPFR_RNDN);
        mpfr_set_d(r10239, y, MPFR_RNDN);
        mpfr_mul(r10240, r10239, r10235, MPFR_RNDN);
        mpfr_div(r10241, r10240, r10234, MPFR_RNDN);
        ;
        mpfr_set_si(r10243, mpfr_cmp(r10236, r10242) <= 0, MPFR_RNDN);
        mpfr_div(r10244, r10239, r10236, MPFR_RNDN);
        ;
        mpfr_set_si(r10246, mpfr_cmp(r10236, r10245) <= 0, MPFR_RNDN);
        mpfr_div(r10247, r10239, r10234, MPFR_RNDN);
        mpfr_set_d(r10248, t, MPFR_RNDN);
        mpfr_mul(r10249, r10247, r10248, MPFR_RNDN);
        mpfr_div(r10250, r10249, r10248, MPFR_RNDN);
        mpfr_mul(r10251, r10235, r10250, MPFR_RNDN);
        ;
        mpfr_set_si(r10253, mpfr_cmp(r10236, r10252) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10253, MPFR_RNDN)) { mpfr_set(r10254, r10244, MPFR_RNDN); } else { mpfr_set(r10254, r10241, MPFR_RNDN); };
        if (mpfr_get_si(r10246, MPFR_RNDN)) { mpfr_set(r10255, r10251, MPFR_RNDN); } else { mpfr_set(r10255, r10254, MPFR_RNDN); };
        if (mpfr_get_si(r10243, MPFR_RNDN)) { mpfr_set(r10256, r10244, MPFR_RNDN); } else { mpfr_set(r10256, r10255, MPFR_RNDN); };
        if (mpfr_get_si(r10238, MPFR_RNDN)) { mpfr_set(r10257, r10241, MPFR_RNDN); } else { mpfr_set(r10257, r10256, MPFR_RNDN); };
        return mpfr_get_d(r10257, MPFR_RNDN);
}

static mpfr_t r10258, r10259, r10260, r10261, r10262, r10263, r10264, r10265, r10266, r10267, r10268, r10269, r10270, r10271, r10272, r10273, r10274, r10275, r10276, r10277, r10278, r10279, r10280, r10281;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10258);
        mpfr_init(r10259);
        mpfr_init(r10260);
        mpfr_init_set_str(r10261, "-3.2845100879270977e+275", 10, MPFR_RNDN);
        mpfr_init(r10262);
        mpfr_init(r10263);
        mpfr_init(r10264);
        mpfr_init(r10265);
        mpfr_init_set_str(r10266, "-3.933914952147978e-304", 10, MPFR_RNDN);
        mpfr_init(r10267);
        mpfr_init(r10268);
        mpfr_init_set_str(r10269, "2.3540314842465144e-303", 10, MPFR_RNDN);
        mpfr_init(r10270);
        mpfr_init(r10271);
        mpfr_init(r10272);
        mpfr_init(r10273);
        mpfr_init(r10274);
        mpfr_init(r10275);
        mpfr_init_set_str(r10276, "2.3930233669727197e+230", 10, MPFR_RNDN);
        mpfr_init(r10277);
        mpfr_init(r10278);
        mpfr_init(r10279);
        mpfr_init(r10280);
        mpfr_init(r10281);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r10258, z, MPFR_RNDN);
        mpfr_set_d(r10259, x, MPFR_RNDN);
        mpfr_div(r10260, r10258, r10259, MPFR_RNDN);
        ;
        mpfr_set_si(r10262, mpfr_cmp(r10260, r10261) <= 0, MPFR_RNDN);
        mpfr_set_d(r10263, y, MPFR_RNDN);
        mpfr_mul(r10264, r10263, r10259, MPFR_RNDN);
        mpfr_div(r10265, r10264, r10258, MPFR_RNDN);
        ;
        mpfr_set_si(r10267, mpfr_cmp(r10260, r10266) <= 0, MPFR_RNDN);
        mpfr_div(r10268, r10263, r10260, MPFR_RNDN);
        ;
        mpfr_set_si(r10270, mpfr_cmp(r10260, r10269) <= 0, MPFR_RNDN);
        mpfr_div(r10271, r10263, r10258, MPFR_RNDN);
        mpfr_set_d(r10272, t, MPFR_RNDN);
        mpfr_mul(r10273, r10271, r10272, MPFR_RNDN);
        mpfr_div(r10274, r10273, r10272, MPFR_RNDN);
        mpfr_mul(r10275, r10259, r10274, MPFR_RNDN);
        ;
        mpfr_set_si(r10277, mpfr_cmp(r10260, r10276) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r10277, MPFR_RNDN)) { mpfr_set(r10278, r10268, MPFR_RNDN); } else { mpfr_set(r10278, r10265, MPFR_RNDN); };
        if (mpfr_get_si(r10270, MPFR_RNDN)) { mpfr_set(r10279, r10275, MPFR_RNDN); } else { mpfr_set(r10279, r10278, MPFR_RNDN); };
        if (mpfr_get_si(r10267, MPFR_RNDN)) { mpfr_set(r10280, r10268, MPFR_RNDN); } else { mpfr_set(r10280, r10279, MPFR_RNDN); };
        if (mpfr_get_si(r10262, MPFR_RNDN)) { mpfr_set(r10281, r10265, MPFR_RNDN); } else { mpfr_set(r10281, r10280, MPFR_RNDN); };
        return mpfr_get_d(r10281, MPFR_RNDN);
}

