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

char *name = "Graphics.Rendering.Chart.SparkLine:renderSparkLine from Chart-1.5.3";

double f_if(float x, float y, float z, float t, float a) {
        float r49918 = x;
        float r49919 = y;
        float r49920 = z;
        float r49921 = r49919 - r49920;
        float r49922 = t;
        float r49923 = r49922 - r49920;
        float r49924 = 1.0;
        float r49925 = r49923 + r49924;
        float r49926 = a;
        float r49927 = r49925 / r49926;
        float r49928 = r49921 / r49927;
        float r49929 = r49918 - r49928;
        return r49929;
}

double f_id(double x, double y, double z, double t, double a) {
        double r49930 = x;
        double r49931 = y;
        double r49932 = z;
        double r49933 = r49931 - r49932;
        double r49934 = t;
        double r49935 = r49934 - r49932;
        double r49936 = 1.0;
        double r49937 = r49935 + r49936;
        double r49938 = a;
        double r49939 = r49937 / r49938;
        double r49940 = r49933 / r49939;
        double r49941 = r49930 - r49940;
        return r49941;
}


double f_of(float x, float y, float z, float t, float a) {
        float r49942 = x;
        float r49943 = y;
        float r49944 = z;
        float r49945 = r49943 - r49944;
        float r49946 = t;
        float r49947 = r49946 - r49944;
        float r49948 = 1.0;
        float r49949 = r49947 + r49948;
        float r49950 = r49945 / r49949;
        float r49951 = a;
        float r49952 = r49950 * r49951;
        float r49953 = r49942 - r49952;
        return r49953;
}

double f_od(double x, double y, double z, double t, double a) {
        double r49954 = x;
        double r49955 = y;
        double r49956 = z;
        double r49957 = r49955 - r49956;
        double r49958 = t;
        double r49959 = r49958 - r49956;
        double r49960 = 1.0;
        double r49961 = r49959 + r49960;
        double r49962 = r49957 / r49961;
        double r49963 = a;
        double r49964 = r49962 * r49963;
        double r49965 = r49954 - r49964;
        return r49965;
}

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 r49966, r49967, r49968, r49969, r49970, r49971, r49972, r49973, r49974, r49975, r49976, r49977;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r49966);
        mpfr_init(r49967);
        mpfr_init(r49968);
        mpfr_init(r49969);
        mpfr_init(r49970);
        mpfr_init(r49971);
        mpfr_init_set_str(r49972, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49973);
        mpfr_init(r49974);
        mpfr_init(r49975);
        mpfr_init(r49976);
        mpfr_init(r49977);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49966, x, MPFR_RNDN);
        mpfr_set_d(r49967, y, MPFR_RNDN);
        mpfr_set_d(r49968, z, MPFR_RNDN);
        mpfr_sub(r49969, r49967, r49968, MPFR_RNDN);
        mpfr_set_d(r49970, t, MPFR_RNDN);
        mpfr_sub(r49971, r49970, r49968, MPFR_RNDN);
        ;
        mpfr_add(r49973, r49971, r49972, MPFR_RNDN);
        mpfr_set_d(r49974, a, MPFR_RNDN);
        mpfr_div(r49975, r49973, r49974, MPFR_RNDN);
        mpfr_div(r49976, r49969, r49975, MPFR_RNDN);
        mpfr_sub(r49977, r49966, r49976, MPFR_RNDN);
        return mpfr_get_d(r49977, MPFR_RNDN);
}

static mpfr_t r49978, r49979, r49980, r49981, r49982, r49983, r49984, r49985, r49986, r49987, r49988, r49989;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49978);
        mpfr_init(r49979);
        mpfr_init(r49980);
        mpfr_init(r49981);
        mpfr_init(r49982);
        mpfr_init(r49983);
        mpfr_init_set_str(r49984, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49985);
        mpfr_init(r49986);
        mpfr_init(r49987);
        mpfr_init(r49988);
        mpfr_init(r49989);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49978, x, MPFR_RNDN);
        mpfr_set_d(r49979, y, MPFR_RNDN);
        mpfr_set_d(r49980, z, MPFR_RNDN);
        mpfr_sub(r49981, r49979, r49980, MPFR_RNDN);
        mpfr_set_d(r49982, t, MPFR_RNDN);
        mpfr_sub(r49983, r49982, r49980, MPFR_RNDN);
        ;
        mpfr_add(r49985, r49983, r49984, MPFR_RNDN);
        mpfr_div(r49986, r49981, r49985, MPFR_RNDN);
        mpfr_set_d(r49987, a, MPFR_RNDN);
        mpfr_mul(r49988, r49986, r49987, MPFR_RNDN);
        mpfr_sub(r49989, r49978, r49988, MPFR_RNDN);
        return mpfr_get_d(r49989, MPFR_RNDN);
}

static mpfr_t r49990, r49991, r49992, r49993, r49994, r49995, r49996, r49997, r49998, r49999, r50000, r50001;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49990);
        mpfr_init(r49991);
        mpfr_init(r49992);
        mpfr_init(r49993);
        mpfr_init(r49994);
        mpfr_init(r49995);
        mpfr_init_set_str(r49996, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49997);
        mpfr_init(r49998);
        mpfr_init(r49999);
        mpfr_init(r50000);
        mpfr_init(r50001);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49990, x, MPFR_RNDN);
        mpfr_set_d(r49991, y, MPFR_RNDN);
        mpfr_set_d(r49992, z, MPFR_RNDN);
        mpfr_sub(r49993, r49991, r49992, MPFR_RNDN);
        mpfr_set_d(r49994, t, MPFR_RNDN);
        mpfr_sub(r49995, r49994, r49992, MPFR_RNDN);
        ;
        mpfr_add(r49997, r49995, r49996, MPFR_RNDN);
        mpfr_div(r49998, r49993, r49997, MPFR_RNDN);
        mpfr_set_d(r49999, a, MPFR_RNDN);
        mpfr_mul(r50000, r49998, r49999, MPFR_RNDN);
        mpfr_sub(r50001, r49990, r50000, MPFR_RNDN);
        return mpfr_get_d(r50001, MPFR_RNDN);
}

