#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 r50149 = x;
        float r50150 = y;
        float r50151 = z;
        float r50152 = r50150 - r50151;
        float r50153 = r50149 * r50152;
        float r50154 = t;
        float r50155 = r50154 - r50151;
        float r50156 = r50153 / r50155;
        return r50156;
}

double f_id(double x, double y, double z, double t) {
        double r50157 = x;
        double r50158 = y;
        double r50159 = z;
        double r50160 = r50158 - r50159;
        double r50161 = r50157 * r50160;
        double r50162 = t;
        double r50163 = r50162 - r50159;
        double r50164 = r50161 / r50163;
        return r50164;
}


double f_of(float x, float y, float z, float t) {
        float r50165 = z;
        float r50166 = -1.8904526391866433e-46;
        bool r50167 = r50165 <= r50166;
        float r50168 = x;
        float r50169 = 1;
        float r50170 = r50168 / r50169;
        float r50171 = y;
        float r50172 = r50171 - r50165;
        float r50173 = t;
        float r50174 = r50173 - r50165;
        float r50175 = r50172 / r50174;
        float r50176 = r50170 * r50175;
        float r50177 = -2.2005782380220625e-285;
        bool r50178 = r50165 <= r50177;
        float r50179 = r50174 / r50172;
        float r50180 = r50179 / r50168;
        float r50181 = r50169 / r50180;
        float r50182 = r50168 / r50179;
        float r50183 = r50178 ? r50181 : r50182;
        float r50184 = r50167 ? r50176 : r50183;
        return r50184;
}

double f_od(double x, double y, double z, double t) {
        double r50185 = z;
        double r50186 = -1.8904526391866433e-46;
        bool r50187 = r50185 <= r50186;
        double r50188 = x;
        double r50189 = 1;
        double r50190 = r50188 / r50189;
        double r50191 = y;
        double r50192 = r50191 - r50185;
        double r50193 = t;
        double r50194 = r50193 - r50185;
        double r50195 = r50192 / r50194;
        double r50196 = r50190 * r50195;
        double r50197 = -2.2005782380220625e-285;
        bool r50198 = r50185 <= r50197;
        double r50199 = r50194 / r50192;
        double r50200 = r50199 / r50188;
        double r50201 = r50189 / r50200;
        double r50202 = r50188 / r50199;
        double r50203 = r50198 ? r50201 : r50202;
        double r50204 = r50187 ? r50196 : r50203;
        return r50204;
}

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 r50205, r50206, r50207, r50208, r50209, r50210, r50211, r50212;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50205);
        mpfr_init(r50206);
        mpfr_init(r50207);
        mpfr_init(r50208);
        mpfr_init(r50209);
        mpfr_init(r50210);
        mpfr_init(r50211);
        mpfr_init(r50212);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r50205, x, MPFR_RNDN);
        mpfr_set_d(r50206, y, MPFR_RNDN);
        mpfr_set_d(r50207, z, MPFR_RNDN);
        mpfr_sub(r50208, r50206, r50207, MPFR_RNDN);
        mpfr_mul(r50209, r50205, r50208, MPFR_RNDN);
        mpfr_set_d(r50210, t, MPFR_RNDN);
        mpfr_sub(r50211, r50210, r50207, MPFR_RNDN);
        mpfr_div(r50212, r50209, r50211, MPFR_RNDN);
        return mpfr_get_d(r50212, MPFR_RNDN);
}

static mpfr_t r50213, r50214, r50215, r50216, r50217, r50218, r50219, r50220, r50221, r50222, r50223, r50224, r50225, r50226, r50227, r50228, r50229, r50230, r50231, r50232;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50213);
        mpfr_init_set_str(r50214, "-1.8904526391866433e-46", 10, MPFR_RNDN);
        mpfr_init(r50215);
        mpfr_init(r50216);
        mpfr_init_set_str(r50217, "1", 10, MPFR_RNDN);
        mpfr_init(r50218);
        mpfr_init(r50219);
        mpfr_init(r50220);
        mpfr_init(r50221);
        mpfr_init(r50222);
        mpfr_init(r50223);
        mpfr_init(r50224);
        mpfr_init_set_str(r50225, "-2.2005782380220625e-285", 10, MPFR_RNDN);
        mpfr_init(r50226);
        mpfr_init(r50227);
        mpfr_init(r50228);
        mpfr_init(r50229);
        mpfr_init(r50230);
        mpfr_init(r50231);
        mpfr_init(r50232);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r50213, z, MPFR_RNDN);
        ;
        mpfr_set_si(r50215, mpfr_cmp(r50213, r50214) <= 0, MPFR_RNDN);
        mpfr_set_d(r50216, x, MPFR_RNDN);
        ;
        mpfr_div(r50218, r50216, r50217, MPFR_RNDN);
        mpfr_set_d(r50219, y, MPFR_RNDN);
        mpfr_sub(r50220, r50219, r50213, MPFR_RNDN);
        mpfr_set_d(r50221, t, MPFR_RNDN);
        mpfr_sub(r50222, r50221, r50213, MPFR_RNDN);
        mpfr_div(r50223, r50220, r50222, MPFR_RNDN);
        mpfr_mul(r50224, r50218, r50223, MPFR_RNDN);
        ;
        mpfr_set_si(r50226, mpfr_cmp(r50213, r50225) <= 0, MPFR_RNDN);
        mpfr_div(r50227, r50222, r50220, MPFR_RNDN);
        mpfr_div(r50228, r50227, r50216, MPFR_RNDN);
        mpfr_div(r50229, r50217, r50228, MPFR_RNDN);
        mpfr_div(r50230, r50216, r50227, MPFR_RNDN);
        if (mpfr_get_si(r50226, MPFR_RNDN)) { mpfr_set(r50231, r50229, MPFR_RNDN); } else { mpfr_set(r50231, r50230, MPFR_RNDN); };
        if (mpfr_get_si(r50215, MPFR_RNDN)) { mpfr_set(r50232, r50224, MPFR_RNDN); } else { mpfr_set(r50232, r50231, MPFR_RNDN); };
        return mpfr_get_d(r50232, MPFR_RNDN);
}

static mpfr_t r50233, r50234, r50235, r50236, r50237, r50238, r50239, r50240, r50241, r50242, r50243, r50244, r50245, r50246, r50247, r50248, r50249, r50250, r50251, r50252;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50233);
        mpfr_init_set_str(r50234, "-1.8904526391866433e-46", 10, MPFR_RNDN);
        mpfr_init(r50235);
        mpfr_init(r50236);
        mpfr_init_set_str(r50237, "1", 10, MPFR_RNDN);
        mpfr_init(r50238);
        mpfr_init(r50239);
        mpfr_init(r50240);
        mpfr_init(r50241);
        mpfr_init(r50242);
        mpfr_init(r50243);
        mpfr_init(r50244);
        mpfr_init_set_str(r50245, "-2.2005782380220625e-285", 10, MPFR_RNDN);
        mpfr_init(r50246);
        mpfr_init(r50247);
        mpfr_init(r50248);
        mpfr_init(r50249);
        mpfr_init(r50250);
        mpfr_init(r50251);
        mpfr_init(r50252);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r50233, z, MPFR_RNDN);
        ;
        mpfr_set_si(r50235, mpfr_cmp(r50233, r50234) <= 0, MPFR_RNDN);
        mpfr_set_d(r50236, x, MPFR_RNDN);
        ;
        mpfr_div(r50238, r50236, r50237, MPFR_RNDN);
        mpfr_set_d(r50239, y, MPFR_RNDN);
        mpfr_sub(r50240, r50239, r50233, MPFR_RNDN);
        mpfr_set_d(r50241, t, MPFR_RNDN);
        mpfr_sub(r50242, r50241, r50233, MPFR_RNDN);
        mpfr_div(r50243, r50240, r50242, MPFR_RNDN);
        mpfr_mul(r50244, r50238, r50243, MPFR_RNDN);
        ;
        mpfr_set_si(r50246, mpfr_cmp(r50233, r50245) <= 0, MPFR_RNDN);
        mpfr_div(r50247, r50242, r50240, MPFR_RNDN);
        mpfr_div(r50248, r50247, r50236, MPFR_RNDN);
        mpfr_div(r50249, r50237, r50248, MPFR_RNDN);
        mpfr_div(r50250, r50236, r50247, MPFR_RNDN);
        if (mpfr_get_si(r50246, MPFR_RNDN)) { mpfr_set(r50251, r50249, MPFR_RNDN); } else { mpfr_set(r50251, r50250, MPFR_RNDN); };
        if (mpfr_get_si(r50235, MPFR_RNDN)) { mpfr_set(r50252, r50244, MPFR_RNDN); } else { mpfr_set(r50252, r50251, MPFR_RNDN); };
        return mpfr_get_d(r50252, MPFR_RNDN);
}

