#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 r49861 = x;
        float r49862 = y;
        float r49863 = z;
        float r49864 = r49862 - r49863;
        float r49865 = r49861 * r49864;
        float r49866 = t;
        float r49867 = r49866 - r49863;
        float r49868 = r49865 / r49867;
        return r49868;
}

double f_id(double x, double y, double z, double t) {
        double r49869 = x;
        double r49870 = y;
        double r49871 = z;
        double r49872 = r49870 - r49871;
        double r49873 = r49869 * r49872;
        double r49874 = t;
        double r49875 = r49874 - r49871;
        double r49876 = r49873 / r49875;
        return r49876;
}


double f_of(float x, float y, float z, float t) {
        float r49877 = z;
        float r49878 = -6.328658816588737e-51;
        bool r49879 = r49877 <= r49878;
        float r49880 = x;
        float r49881 = 1;
        float r49882 = r49880 / r49881;
        float r49883 = y;
        float r49884 = r49883 - r49877;
        float r49885 = t;
        float r49886 = r49885 - r49877;
        float r49887 = r49884 / r49886;
        float r49888 = r49882 * r49887;
        float r49889 = -5.630417899394863e-287;
        bool r49890 = r49877 <= r49889;
        float r49891 = r49886 / r49884;
        float r49892 = r49891 / r49880;
        float r49893 = r49881 / r49892;
        float r49894 = r49880 / r49891;
        float r49895 = r49890 ? r49893 : r49894;
        float r49896 = r49879 ? r49888 : r49895;
        return r49896;
}

double f_od(double x, double y, double z, double t) {
        double r49897 = z;
        double r49898 = -6.328658816588737e-51;
        bool r49899 = r49897 <= r49898;
        double r49900 = x;
        double r49901 = 1;
        double r49902 = r49900 / r49901;
        double r49903 = y;
        double r49904 = r49903 - r49897;
        double r49905 = t;
        double r49906 = r49905 - r49897;
        double r49907 = r49904 / r49906;
        double r49908 = r49902 * r49907;
        double r49909 = -5.630417899394863e-287;
        bool r49910 = r49897 <= r49909;
        double r49911 = r49906 / r49904;
        double r49912 = r49911 / r49900;
        double r49913 = r49901 / r49912;
        double r49914 = r49900 / r49911;
        double r49915 = r49910 ? r49913 : r49914;
        double r49916 = r49899 ? r49908 : r49915;
        return r49916;
}

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 r49917, r49918, r49919, r49920, r49921, r49922, r49923, r49924;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r49917);
        mpfr_init(r49918);
        mpfr_init(r49919);
        mpfr_init(r49920);
        mpfr_init(r49921);
        mpfr_init(r49922);
        mpfr_init(r49923);
        mpfr_init(r49924);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r49917, x, MPFR_RNDN);
        mpfr_set_d(r49918, y, MPFR_RNDN);
        mpfr_set_d(r49919, z, MPFR_RNDN);
        mpfr_sub(r49920, r49918, r49919, MPFR_RNDN);
        mpfr_mul(r49921, r49917, r49920, MPFR_RNDN);
        mpfr_set_d(r49922, t, MPFR_RNDN);
        mpfr_sub(r49923, r49922, r49919, MPFR_RNDN);
        mpfr_div(r49924, r49921, r49923, MPFR_RNDN);
        return mpfr_get_d(r49924, MPFR_RNDN);
}

static mpfr_t r49925, r49926, r49927, r49928, r49929, r49930, r49931, r49932, r49933, r49934, r49935, r49936, r49937, r49938, r49939, r49940, r49941, r49942, r49943, r49944;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49925);
        mpfr_init_set_str(r49926, "-6.328658816588737e-51", 10, MPFR_RNDN);
        mpfr_init(r49927);
        mpfr_init(r49928);
        mpfr_init_set_str(r49929, "1", 10, MPFR_RNDN);
        mpfr_init(r49930);
        mpfr_init(r49931);
        mpfr_init(r49932);
        mpfr_init(r49933);
        mpfr_init(r49934);
        mpfr_init(r49935);
        mpfr_init(r49936);
        mpfr_init_set_str(r49937, "-5.630417899394863e-287", 10, MPFR_RNDN);
        mpfr_init(r49938);
        mpfr_init(r49939);
        mpfr_init(r49940);
        mpfr_init(r49941);
        mpfr_init(r49942);
        mpfr_init(r49943);
        mpfr_init(r49944);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r49925, z, MPFR_RNDN);
        ;
        mpfr_set_si(r49927, mpfr_cmp(r49925, r49926) <= 0, MPFR_RNDN);
        mpfr_set_d(r49928, x, MPFR_RNDN);
        ;
        mpfr_div(r49930, r49928, r49929, MPFR_RNDN);
        mpfr_set_d(r49931, y, MPFR_RNDN);
        mpfr_sub(r49932, r49931, r49925, MPFR_RNDN);
        mpfr_set_d(r49933, t, MPFR_RNDN);
        mpfr_sub(r49934, r49933, r49925, MPFR_RNDN);
        mpfr_div(r49935, r49932, r49934, MPFR_RNDN);
        mpfr_mul(r49936, r49930, r49935, MPFR_RNDN);
        ;
        mpfr_set_si(r49938, mpfr_cmp(r49925, r49937) <= 0, MPFR_RNDN);
        mpfr_div(r49939, r49934, r49932, MPFR_RNDN);
        mpfr_div(r49940, r49939, r49928, MPFR_RNDN);
        mpfr_div(r49941, r49929, r49940, MPFR_RNDN);
        mpfr_div(r49942, r49928, r49939, MPFR_RNDN);
        if (mpfr_get_si(r49938, MPFR_RNDN)) { mpfr_set(r49943, r49941, MPFR_RNDN); } else { mpfr_set(r49943, r49942, MPFR_RNDN); };
        if (mpfr_get_si(r49927, MPFR_RNDN)) { mpfr_set(r49944, r49936, MPFR_RNDN); } else { mpfr_set(r49944, r49943, MPFR_RNDN); };
        return mpfr_get_d(r49944, MPFR_RNDN);
}

static mpfr_t r49945, r49946, r49947, r49948, r49949, r49950, r49951, r49952, r49953, r49954, r49955, r49956, r49957, r49958, r49959, r49960, r49961, r49962, r49963, r49964;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49945);
        mpfr_init_set_str(r49946, "-6.328658816588737e-51", 10, MPFR_RNDN);
        mpfr_init(r49947);
        mpfr_init(r49948);
        mpfr_init_set_str(r49949, "1", 10, MPFR_RNDN);
        mpfr_init(r49950);
        mpfr_init(r49951);
        mpfr_init(r49952);
        mpfr_init(r49953);
        mpfr_init(r49954);
        mpfr_init(r49955);
        mpfr_init(r49956);
        mpfr_init_set_str(r49957, "-5.630417899394863e-287", 10, MPFR_RNDN);
        mpfr_init(r49958);
        mpfr_init(r49959);
        mpfr_init(r49960);
        mpfr_init(r49961);
        mpfr_init(r49962);
        mpfr_init(r49963);
        mpfr_init(r49964);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r49945, z, MPFR_RNDN);
        ;
        mpfr_set_si(r49947, mpfr_cmp(r49945, r49946) <= 0, MPFR_RNDN);
        mpfr_set_d(r49948, x, MPFR_RNDN);
        ;
        mpfr_div(r49950, r49948, r49949, MPFR_RNDN);
        mpfr_set_d(r49951, y, MPFR_RNDN);
        mpfr_sub(r49952, r49951, r49945, MPFR_RNDN);
        mpfr_set_d(r49953, t, MPFR_RNDN);
        mpfr_sub(r49954, r49953, r49945, MPFR_RNDN);
        mpfr_div(r49955, r49952, r49954, MPFR_RNDN);
        mpfr_mul(r49956, r49950, r49955, MPFR_RNDN);
        ;
        mpfr_set_si(r49958, mpfr_cmp(r49945, r49957) <= 0, MPFR_RNDN);
        mpfr_div(r49959, r49954, r49952, MPFR_RNDN);
        mpfr_div(r49960, r49959, r49948, MPFR_RNDN);
        mpfr_div(r49961, r49949, r49960, MPFR_RNDN);
        mpfr_div(r49962, r49948, r49959, MPFR_RNDN);
        if (mpfr_get_si(r49958, MPFR_RNDN)) { mpfr_set(r49963, r49961, MPFR_RNDN); } else { mpfr_set(r49963, r49962, MPFR_RNDN); };
        if (mpfr_get_si(r49947, MPFR_RNDN)) { mpfr_set(r49964, r49956, MPFR_RNDN); } else { mpfr_set(r49964, r49963, MPFR_RNDN); };
        return mpfr_get_d(r49964, MPFR_RNDN);
}

