#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, B";

double f_if(float x, float y, float z, float t) {
        float r47386 = x;
        float r47387 = y;
        float r47388 = z;
        float r47389 = r47387 / r47388;
        float r47390 = t;
        float r47391 = r47389 * r47390;
        float r47392 = r47391 / r47390;
        float r47393 = r47386 * r47392;
        return r47393;
}

double f_id(double x, double y, double z, double t) {
        double r47394 = x;
        double r47395 = y;
        double r47396 = z;
        double r47397 = r47395 / r47396;
        double r47398 = t;
        double r47399 = r47397 * r47398;
        double r47400 = r47399 / r47398;
        double r47401 = r47394 * r47400;
        return r47401;
}


double f_of(float x, float y, float z, float t) {
        float r47402 = y;
        float r47403 = z;
        float r47404 = r47402 / r47403;
        float r47405 = t;
        float r47406 = r47404 * r47405;
        float r47407 = r47406 / r47405;
        float r47408 = -6.4042332376573255e+208f;
        bool r47409 = r47407 <= r47408;
        float r47410 = x;
        float r47411 = r47402 * r47410;
        float r47412 = r47411 / r47403;
        float r47413 = -1.2665794875040561e-228f;
        bool r47414 = r47407 <= r47413;
        float r47415 = r47403 / r47402;
        float r47416 = r47410 / r47415;
        float r47417 = -0.0f;
        bool r47418 = r47407 <= r47417;
        float r47419 = 8.240287997287591e+264f;
        bool r47420 = r47407 <= r47419;
        float r47421 = r47410 * r47404;
        float r47422 = r47420 ? r47421 : r47412;
        float r47423 = r47418 ? r47412 : r47422;
        float r47424 = r47414 ? r47416 : r47423;
        float r47425 = r47409 ? r47412 : r47424;
        return r47425;
}

double f_od(double x, double y, double z, double t) {
        double r47426 = y;
        double r47427 = z;
        double r47428 = r47426 / r47427;
        double r47429 = t;
        double r47430 = r47428 * r47429;
        double r47431 = r47430 / r47429;
        double r47432 = -6.4042332376573255e+208;
        bool r47433 = r47431 <= r47432;
        double r47434 = x;
        double r47435 = r47426 * r47434;
        double r47436 = r47435 / r47427;
        double r47437 = -1.2665794875040561e-228;
        bool r47438 = r47431 <= r47437;
        double r47439 = r47427 / r47426;
        double r47440 = r47434 / r47439;
        double r47441 = -0.0;
        bool r47442 = r47431 <= r47441;
        double r47443 = 8.240287997287591e+264;
        bool r47444 = r47431 <= r47443;
        double r47445 = r47434 * r47428;
        double r47446 = r47444 ? r47445 : r47436;
        double r47447 = r47442 ? r47436 : r47446;
        double r47448 = r47438 ? r47440 : r47447;
        double r47449 = r47433 ? r47436 : r47448;
        return r47449;
}

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 r47450, r47451, r47452, r47453, r47454, r47455, r47456, r47457;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r47450);
        mpfr_init(r47451);
        mpfr_init(r47452);
        mpfr_init(r47453);
        mpfr_init(r47454);
        mpfr_init(r47455);
        mpfr_init(r47456);
        mpfr_init(r47457);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r47450, x, MPFR_RNDN);
        mpfr_set_d(r47451, y, MPFR_RNDN);
        mpfr_set_d(r47452, z, MPFR_RNDN);
        mpfr_div(r47453, r47451, r47452, MPFR_RNDN);
        mpfr_set_d(r47454, t, MPFR_RNDN);
        mpfr_mul(r47455, r47453, r47454, MPFR_RNDN);
        mpfr_div(r47456, r47455, r47454, MPFR_RNDN);
        mpfr_mul(r47457, r47450, r47456, MPFR_RNDN);
        return mpfr_get_d(r47457, MPFR_RNDN);
}

static mpfr_t r47458, r47459, r47460, r47461, r47462, r47463, r47464, r47465, r47466, r47467, r47468, r47469, r47470, r47471, r47472, r47473, r47474, r47475, r47476, r47477, r47478, r47479, r47480, r47481;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47458);
        mpfr_init(r47459);
        mpfr_init(r47460);
        mpfr_init(r47461);
        mpfr_init(r47462);
        mpfr_init(r47463);
        mpfr_init_set_str(r47464, "-6.4042332376573255e+208", 10, MPFR_RNDN);
        mpfr_init(r47465);
        mpfr_init(r47466);
        mpfr_init(r47467);
        mpfr_init(r47468);
        mpfr_init_set_str(r47469, "-1.2665794875040561e-228", 10, MPFR_RNDN);
        mpfr_init(r47470);
        mpfr_init(r47471);
        mpfr_init(r47472);
        mpfr_init_set_str(r47473, "-0.0", 10, MPFR_RNDN);
        mpfr_init(r47474);
        mpfr_init_set_str(r47475, "8.240287997287591e+264", 10, MPFR_RNDN);
        mpfr_init(r47476);
        mpfr_init(r47477);
        mpfr_init(r47478);
        mpfr_init(r47479);
        mpfr_init(r47480);
        mpfr_init(r47481);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r47458, y, MPFR_RNDN);
        mpfr_set_d(r47459, z, MPFR_RNDN);
        mpfr_div(r47460, r47458, r47459, MPFR_RNDN);
        mpfr_set_d(r47461, t, MPFR_RNDN);
        mpfr_mul(r47462, r47460, r47461, MPFR_RNDN);
        mpfr_div(r47463, r47462, r47461, MPFR_RNDN);
        ;
        mpfr_set_si(r47465, mpfr_cmp(r47463, r47464) <= 0, MPFR_RNDN);
        mpfr_set_d(r47466, x, MPFR_RNDN);
        mpfr_mul(r47467, r47458, r47466, MPFR_RNDN);
        mpfr_div(r47468, r47467, r47459, MPFR_RNDN);
        ;
        mpfr_set_si(r47470, mpfr_cmp(r47463, r47469) <= 0, MPFR_RNDN);
        mpfr_div(r47471, r47459, r47458, MPFR_RNDN);
        mpfr_div(r47472, r47466, r47471, MPFR_RNDN);
        ;
        mpfr_set_si(r47474, mpfr_cmp(r47463, r47473) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r47476, mpfr_cmp(r47463, r47475) <= 0, MPFR_RNDN);
        mpfr_mul(r47477, r47466, r47460, MPFR_RNDN);
        if (mpfr_get_si(r47476, MPFR_RNDN)) { mpfr_set(r47478, r47477, MPFR_RNDN); } else { mpfr_set(r47478, r47468, MPFR_RNDN); };
        if (mpfr_get_si(r47474, MPFR_RNDN)) { mpfr_set(r47479, r47468, MPFR_RNDN); } else { mpfr_set(r47479, r47478, MPFR_RNDN); };
        if (mpfr_get_si(r47470, MPFR_RNDN)) { mpfr_set(r47480, r47472, MPFR_RNDN); } else { mpfr_set(r47480, r47479, MPFR_RNDN); };
        if (mpfr_get_si(r47465, MPFR_RNDN)) { mpfr_set(r47481, r47468, MPFR_RNDN); } else { mpfr_set(r47481, r47480, MPFR_RNDN); };
        return mpfr_get_d(r47481, MPFR_RNDN);
}

static mpfr_t r47482, r47483, r47484, r47485, r47486, r47487, r47488, r47489, r47490, r47491, r47492, r47493, r47494, r47495, r47496, r47497, r47498, r47499, r47500, r47501, r47502, r47503, r47504, r47505;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47482);
        mpfr_init(r47483);
        mpfr_init(r47484);
        mpfr_init(r47485);
        mpfr_init(r47486);
        mpfr_init(r47487);
        mpfr_init_set_str(r47488, "-6.4042332376573255e+208", 10, MPFR_RNDN);
        mpfr_init(r47489);
        mpfr_init(r47490);
        mpfr_init(r47491);
        mpfr_init(r47492);
        mpfr_init_set_str(r47493, "-1.2665794875040561e-228", 10, MPFR_RNDN);
        mpfr_init(r47494);
        mpfr_init(r47495);
        mpfr_init(r47496);
        mpfr_init_set_str(r47497, "-0.0", 10, MPFR_RNDN);
        mpfr_init(r47498);
        mpfr_init_set_str(r47499, "8.240287997287591e+264", 10, MPFR_RNDN);
        mpfr_init(r47500);
        mpfr_init(r47501);
        mpfr_init(r47502);
        mpfr_init(r47503);
        mpfr_init(r47504);
        mpfr_init(r47505);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r47482, y, MPFR_RNDN);
        mpfr_set_d(r47483, z, MPFR_RNDN);
        mpfr_div(r47484, r47482, r47483, MPFR_RNDN);
        mpfr_set_d(r47485, t, MPFR_RNDN);
        mpfr_mul(r47486, r47484, r47485, MPFR_RNDN);
        mpfr_div(r47487, r47486, r47485, MPFR_RNDN);
        ;
        mpfr_set_si(r47489, mpfr_cmp(r47487, r47488) <= 0, MPFR_RNDN);
        mpfr_set_d(r47490, x, MPFR_RNDN);
        mpfr_mul(r47491, r47482, r47490, MPFR_RNDN);
        mpfr_div(r47492, r47491, r47483, MPFR_RNDN);
        ;
        mpfr_set_si(r47494, mpfr_cmp(r47487, r47493) <= 0, MPFR_RNDN);
        mpfr_div(r47495, r47483, r47482, MPFR_RNDN);
        mpfr_div(r47496, r47490, r47495, MPFR_RNDN);
        ;
        mpfr_set_si(r47498, mpfr_cmp(r47487, r47497) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r47500, mpfr_cmp(r47487, r47499) <= 0, MPFR_RNDN);
        mpfr_mul(r47501, r47490, r47484, MPFR_RNDN);
        if (mpfr_get_si(r47500, MPFR_RNDN)) { mpfr_set(r47502, r47501, MPFR_RNDN); } else { mpfr_set(r47502, r47492, MPFR_RNDN); };
        if (mpfr_get_si(r47498, MPFR_RNDN)) { mpfr_set(r47503, r47492, MPFR_RNDN); } else { mpfr_set(r47503, r47502, MPFR_RNDN); };
        if (mpfr_get_si(r47494, MPFR_RNDN)) { mpfr_set(r47504, r47496, MPFR_RNDN); } else { mpfr_set(r47504, r47503, MPFR_RNDN); };
        if (mpfr_get_si(r47489, MPFR_RNDN)) { mpfr_set(r47505, r47492, MPFR_RNDN); } else { mpfr_set(r47505, r47504, MPFR_RNDN); };
        return mpfr_get_d(r47505, MPFR_RNDN);
}

