#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 r47266 = x;
        float r47267 = y;
        float r47268 = z;
        float r47269 = r47267 - r47268;
        float r47270 = r47266 * r47269;
        float r47271 = t;
        float r47272 = r47271 - r47268;
        float r47273 = r47270 / r47272;
        return r47273;
}

double f_id(double x, double y, double z, double t) {
        double r47274 = x;
        double r47275 = y;
        double r47276 = z;
        double r47277 = r47275 - r47276;
        double r47278 = r47274 * r47277;
        double r47279 = t;
        double r47280 = r47279 - r47276;
        double r47281 = r47278 / r47280;
        return r47281;
}


double f_of(float x, float y, float z, float t) {
        float r47282 = x;
        float r47283 = 1.0f;
        float r47284 = r47282 / r47283;
        float r47285 = y;
        float r47286 = z;
        float r47287 = r47285 - r47286;
        float r47288 = t;
        float r47289 = r47288 - r47286;
        float r47290 = r47287 / r47289;
        float r47291 = r47284 * r47290;
        return r47291;
}

double f_od(double x, double y, double z, double t) {
        double r47292 = x;
        double r47293 = 1.0;
        double r47294 = r47292 / r47293;
        double r47295 = y;
        double r47296 = z;
        double r47297 = r47295 - r47296;
        double r47298 = t;
        double r47299 = r47298 - r47296;
        double r47300 = r47297 / r47299;
        double r47301 = r47294 * r47300;
        return r47301;
}

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 r47302, r47303, r47304, r47305, r47306, r47307, r47308, r47309;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r47302);
        mpfr_init(r47303);
        mpfr_init(r47304);
        mpfr_init(r47305);
        mpfr_init(r47306);
        mpfr_init(r47307);
        mpfr_init(r47308);
        mpfr_init(r47309);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r47302, x, MPFR_RNDN);
        mpfr_set_d(r47303, y, MPFR_RNDN);
        mpfr_set_d(r47304, z, MPFR_RNDN);
        mpfr_sub(r47305, r47303, r47304, MPFR_RNDN);
        mpfr_mul(r47306, r47302, r47305, MPFR_RNDN);
        mpfr_set_d(r47307, t, MPFR_RNDN);
        mpfr_sub(r47308, r47307, r47304, MPFR_RNDN);
        mpfr_div(r47309, r47306, r47308, MPFR_RNDN);
        return mpfr_get_d(r47309, MPFR_RNDN);
}

static mpfr_t r47310, r47311, r47312, r47313, r47314, r47315, r47316, r47317, r47318, r47319;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47310);
        mpfr_init_set_str(r47311, "1", 10, MPFR_RNDN);
        mpfr_init(r47312);
        mpfr_init(r47313);
        mpfr_init(r47314);
        mpfr_init(r47315);
        mpfr_init(r47316);
        mpfr_init(r47317);
        mpfr_init(r47318);
        mpfr_init(r47319);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r47310, x, MPFR_RNDN);
        ;
        mpfr_div(r47312, r47310, r47311, MPFR_RNDN);
        mpfr_set_d(r47313, y, MPFR_RNDN);
        mpfr_set_d(r47314, z, MPFR_RNDN);
        mpfr_sub(r47315, r47313, r47314, MPFR_RNDN);
        mpfr_set_d(r47316, t, MPFR_RNDN);
        mpfr_sub(r47317, r47316, r47314, MPFR_RNDN);
        mpfr_div(r47318, r47315, r47317, MPFR_RNDN);
        mpfr_mul(r47319, r47312, r47318, MPFR_RNDN);
        return mpfr_get_d(r47319, MPFR_RNDN);
}

static mpfr_t r47320, r47321, r47322, r47323, r47324, r47325, r47326, r47327, r47328, r47329;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47320);
        mpfr_init_set_str(r47321, "1", 10, MPFR_RNDN);
        mpfr_init(r47322);
        mpfr_init(r47323);
        mpfr_init(r47324);
        mpfr_init(r47325);
        mpfr_init(r47326);
        mpfr_init(r47327);
        mpfr_init(r47328);
        mpfr_init(r47329);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r47320, x, MPFR_RNDN);
        ;
        mpfr_div(r47322, r47320, r47321, MPFR_RNDN);
        mpfr_set_d(r47323, y, MPFR_RNDN);
        mpfr_set_d(r47324, z, MPFR_RNDN);
        mpfr_sub(r47325, r47323, r47324, MPFR_RNDN);
        mpfr_set_d(r47326, t, MPFR_RNDN);
        mpfr_sub(r47327, r47326, r47324, MPFR_RNDN);
        mpfr_div(r47328, r47325, r47327, MPFR_RNDN);
        mpfr_mul(r47329, r47322, r47328, MPFR_RNDN);
        return mpfr_get_d(r47329, MPFR_RNDN);
}

