#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Graphics.Rendering.Chart.Plot.AreaSpots:renderAreaSpots4D from Chart-1.5.3";

double f_if(float x, float y, float z, float t) {
        float r49383 = x;
        float r49384 = y;
        float r49385 = z;
        float r49386 = r49384 - r49385;
        float r49387 = r49383 * r49386;
        float r49388 = t;
        float r49389 = r49388 - r49385;
        float r49390 = r49387 / r49389;
        return r49390;
}

double f_id(double x, double y, double z, double t) {
        double r49391 = x;
        double r49392 = y;
        double r49393 = z;
        double r49394 = r49392 - r49393;
        double r49395 = r49391 * r49394;
        double r49396 = t;
        double r49397 = r49396 - r49393;
        double r49398 = r49395 / r49397;
        return r49398;
}


double f_of(float x, float y, float z, float t) {
        float r49399 = z;
        float r49400 = -1.8904526391866433e-46;
        bool r49401 = r49399 <= r49400;
        float r49402 = x;
        float r49403 = 1;
        float r49404 = r49402 / r49403;
        float r49405 = y;
        float r49406 = r49405 - r49399;
        float r49407 = t;
        float r49408 = r49407 - r49399;
        float r49409 = r49406 / r49408;
        float r49410 = r49404 * r49409;
        float r49411 = -2.2005782380220625e-285;
        bool r49412 = r49399 <= r49411;
        float r49413 = r49408 / r49406;
        float r49414 = r49413 / r49402;
        float r49415 = r49403 / r49414;
        float r49416 = r49402 / r49413;
        float r49417 = r49412 ? r49415 : r49416;
        float r49418 = r49401 ? r49410 : r49417;
        return r49418;
}

double f_od(double x, double y, double z, double t) {
        double r49419 = z;
        double r49420 = -1.8904526391866433e-46;
        bool r49421 = r49419 <= r49420;
        double r49422 = x;
        double r49423 = 1;
        double r49424 = r49422 / r49423;
        double r49425 = y;
        double r49426 = r49425 - r49419;
        double r49427 = t;
        double r49428 = r49427 - r49419;
        double r49429 = r49426 / r49428;
        double r49430 = r49424 * r49429;
        double r49431 = -2.2005782380220625e-285;
        bool r49432 = r49419 <= r49431;
        double r49433 = r49428 / r49426;
        double r49434 = r49433 / r49422;
        double r49435 = r49423 / r49434;
        double r49436 = r49422 / r49433;
        double r49437 = r49432 ? r49435 : r49436;
        double r49438 = r49421 ? r49430 : r49437;
        return r49438;
}

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 r49439, r49440, r49441, r49442, r49443, r49444, r49445, r49446;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r49439);
        mpfr_init(r49440);
        mpfr_init(r49441);
        mpfr_init(r49442);
        mpfr_init(r49443);
        mpfr_init(r49444);
        mpfr_init(r49445);
        mpfr_init(r49446);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r49439, x, MPFR_RNDN);
        mpfr_set_d(r49440, y, MPFR_RNDN);
        mpfr_set_d(r49441, z, MPFR_RNDN);
        mpfr_sub(r49442, r49440, r49441, MPFR_RNDN);
        mpfr_mul(r49443, r49439, r49442, MPFR_RNDN);
        mpfr_set_d(r49444, t, MPFR_RNDN);
        mpfr_sub(r49445, r49444, r49441, MPFR_RNDN);
        mpfr_div(r49446, r49443, r49445, MPFR_RNDN);
        return mpfr_get_d(r49446, MPFR_RNDN);
}

static mpfr_t r49447, r49448, r49449, r49450, r49451, r49452, r49453, r49454, r49455, r49456, r49457, r49458, r49459, r49460, r49461, r49462, r49463, r49464, r49465, r49466;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49447);
        mpfr_init_set_str(r49448, "-1.8904526391866433e-46", 10, MPFR_RNDN);
        mpfr_init(r49449);
        mpfr_init(r49450);
        mpfr_init_set_str(r49451, "1", 10, MPFR_RNDN);
        mpfr_init(r49452);
        mpfr_init(r49453);
        mpfr_init(r49454);
        mpfr_init(r49455);
        mpfr_init(r49456);
        mpfr_init(r49457);
        mpfr_init(r49458);
        mpfr_init_set_str(r49459, "-2.2005782380220625e-285", 10, MPFR_RNDN);
        mpfr_init(r49460);
        mpfr_init(r49461);
        mpfr_init(r49462);
        mpfr_init(r49463);
        mpfr_init(r49464);
        mpfr_init(r49465);
        mpfr_init(r49466);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r49447, z, MPFR_RNDN);
        ;
        mpfr_set_si(r49449, mpfr_cmp(r49447, r49448) <= 0, MPFR_RNDN);
        mpfr_set_d(r49450, x, MPFR_RNDN);
        ;
        mpfr_div(r49452, r49450, r49451, MPFR_RNDN);
        mpfr_set_d(r49453, y, MPFR_RNDN);
        mpfr_sub(r49454, r49453, r49447, MPFR_RNDN);
        mpfr_set_d(r49455, t, MPFR_RNDN);
        mpfr_sub(r49456, r49455, r49447, MPFR_RNDN);
        mpfr_div(r49457, r49454, r49456, MPFR_RNDN);
        mpfr_mul(r49458, r49452, r49457, MPFR_RNDN);
        ;
        mpfr_set_si(r49460, mpfr_cmp(r49447, r49459) <= 0, MPFR_RNDN);
        mpfr_div(r49461, r49456, r49454, MPFR_RNDN);
        mpfr_div(r49462, r49461, r49450, MPFR_RNDN);
        mpfr_div(r49463, r49451, r49462, MPFR_RNDN);
        mpfr_div(r49464, r49450, r49461, MPFR_RNDN);
        if (mpfr_get_si(r49460, MPFR_RNDN)) { mpfr_set(r49465, r49463, MPFR_RNDN); } else { mpfr_set(r49465, r49464, MPFR_RNDN); };
        if (mpfr_get_si(r49449, MPFR_RNDN)) { mpfr_set(r49466, r49458, MPFR_RNDN); } else { mpfr_set(r49466, r49465, MPFR_RNDN); };
        return mpfr_get_d(r49466, MPFR_RNDN);
}

static mpfr_t r49467, r49468, r49469, r49470, r49471, r49472, r49473, r49474, r49475, r49476, r49477, r49478, r49479, r49480, r49481, r49482, r49483, r49484, r49485, r49486;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49467);
        mpfr_init_set_str(r49468, "-1.8904526391866433e-46", 10, MPFR_RNDN);
        mpfr_init(r49469);
        mpfr_init(r49470);
        mpfr_init_set_str(r49471, "1", 10, MPFR_RNDN);
        mpfr_init(r49472);
        mpfr_init(r49473);
        mpfr_init(r49474);
        mpfr_init(r49475);
        mpfr_init(r49476);
        mpfr_init(r49477);
        mpfr_init(r49478);
        mpfr_init_set_str(r49479, "-2.2005782380220625e-285", 10, MPFR_RNDN);
        mpfr_init(r49480);
        mpfr_init(r49481);
        mpfr_init(r49482);
        mpfr_init(r49483);
        mpfr_init(r49484);
        mpfr_init(r49485);
        mpfr_init(r49486);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r49467, z, MPFR_RNDN);
        ;
        mpfr_set_si(r49469, mpfr_cmp(r49467, r49468) <= 0, MPFR_RNDN);
        mpfr_set_d(r49470, x, MPFR_RNDN);
        ;
        mpfr_div(r49472, r49470, r49471, MPFR_RNDN);
        mpfr_set_d(r49473, y, MPFR_RNDN);
        mpfr_sub(r49474, r49473, r49467, MPFR_RNDN);
        mpfr_set_d(r49475, t, MPFR_RNDN);
        mpfr_sub(r49476, r49475, r49467, MPFR_RNDN);
        mpfr_div(r49477, r49474, r49476, MPFR_RNDN);
        mpfr_mul(r49478, r49472, r49477, MPFR_RNDN);
        ;
        mpfr_set_si(r49480, mpfr_cmp(r49467, r49479) <= 0, MPFR_RNDN);
        mpfr_div(r49481, r49476, r49474, MPFR_RNDN);
        mpfr_div(r49482, r49481, r49470, MPFR_RNDN);
        mpfr_div(r49483, r49471, r49482, MPFR_RNDN);
        mpfr_div(r49484, r49470, r49481, MPFR_RNDN);
        if (mpfr_get_si(r49480, MPFR_RNDN)) { mpfr_set(r49485, r49483, MPFR_RNDN); } else { mpfr_set(r49485, r49484, MPFR_RNDN); };
        if (mpfr_get_si(r49469, MPFR_RNDN)) { mpfr_set(r49486, r49478, MPFR_RNDN); } else { mpfr_set(r49486, r49485, MPFR_RNDN); };
        return mpfr_get_d(r49486, MPFR_RNDN);
}

