#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 r49181 = x;
        float r49182 = y;
        float r49183 = z;
        float r49184 = r49182 - r49183;
        float r49185 = t;
        float r49186 = r49185 - r49183;
        float r49187 = 1.0;
        float r49188 = r49186 + r49187;
        float r49189 = a;
        float r49190 = r49188 / r49189;
        float r49191 = r49184 / r49190;
        float r49192 = r49181 - r49191;
        return r49192;
}

double f_id(double x, double y, double z, double t, double a) {
        double r49193 = x;
        double r49194 = y;
        double r49195 = z;
        double r49196 = r49194 - r49195;
        double r49197 = t;
        double r49198 = r49197 - r49195;
        double r49199 = 1.0;
        double r49200 = r49198 + r49199;
        double r49201 = a;
        double r49202 = r49200 / r49201;
        double r49203 = r49196 / r49202;
        double r49204 = r49193 - r49203;
        return r49204;
}


double f_of(float x, float y, float z, float t, float a) {
        float r49205 = x;
        float r49206 = y;
        float r49207 = z;
        float r49208 = r49206 - r49207;
        float r49209 = t;
        float r49210 = r49209 - r49207;
        float r49211 = 1.0;
        float r49212 = r49210 + r49211;
        float r49213 = r49208 / r49212;
        float r49214 = a;
        float r49215 = r49213 * r49214;
        float r49216 = r49205 - r49215;
        return r49216;
}

double f_od(double x, double y, double z, double t, double a) {
        double r49217 = x;
        double r49218 = y;
        double r49219 = z;
        double r49220 = r49218 - r49219;
        double r49221 = t;
        double r49222 = r49221 - r49219;
        double r49223 = 1.0;
        double r49224 = r49222 + r49223;
        double r49225 = r49220 / r49224;
        double r49226 = a;
        double r49227 = r49225 * r49226;
        double r49228 = r49217 - r49227;
        return r49228;
}

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 r49229, r49230, r49231, r49232, r49233, r49234, r49235, r49236, r49237, r49238, r49239, r49240;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r49229);
        mpfr_init(r49230);
        mpfr_init(r49231);
        mpfr_init(r49232);
        mpfr_init(r49233);
        mpfr_init(r49234);
        mpfr_init_set_str(r49235, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49236);
        mpfr_init(r49237);
        mpfr_init(r49238);
        mpfr_init(r49239);
        mpfr_init(r49240);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49229, x, MPFR_RNDN);
        mpfr_set_d(r49230, y, MPFR_RNDN);
        mpfr_set_d(r49231, z, MPFR_RNDN);
        mpfr_sub(r49232, r49230, r49231, MPFR_RNDN);
        mpfr_set_d(r49233, t, MPFR_RNDN);
        mpfr_sub(r49234, r49233, r49231, MPFR_RNDN);
        ;
        mpfr_add(r49236, r49234, r49235, MPFR_RNDN);
        mpfr_set_d(r49237, a, MPFR_RNDN);
        mpfr_div(r49238, r49236, r49237, MPFR_RNDN);
        mpfr_div(r49239, r49232, r49238, MPFR_RNDN);
        mpfr_sub(r49240, r49229, r49239, MPFR_RNDN);
        return mpfr_get_d(r49240, MPFR_RNDN);
}

static mpfr_t r49241, r49242, r49243, r49244, r49245, r49246, r49247, r49248, r49249, r49250, r49251, r49252;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49241);
        mpfr_init(r49242);
        mpfr_init(r49243);
        mpfr_init(r49244);
        mpfr_init(r49245);
        mpfr_init(r49246);
        mpfr_init_set_str(r49247, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49248);
        mpfr_init(r49249);
        mpfr_init(r49250);
        mpfr_init(r49251);
        mpfr_init(r49252);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49241, x, MPFR_RNDN);
        mpfr_set_d(r49242, y, MPFR_RNDN);
        mpfr_set_d(r49243, z, MPFR_RNDN);
        mpfr_sub(r49244, r49242, r49243, MPFR_RNDN);
        mpfr_set_d(r49245, t, MPFR_RNDN);
        mpfr_sub(r49246, r49245, r49243, MPFR_RNDN);
        ;
        mpfr_add(r49248, r49246, r49247, MPFR_RNDN);
        mpfr_div(r49249, r49244, r49248, MPFR_RNDN);
        mpfr_set_d(r49250, a, MPFR_RNDN);
        mpfr_mul(r49251, r49249, r49250, MPFR_RNDN);
        mpfr_sub(r49252, r49241, r49251, MPFR_RNDN);
        return mpfr_get_d(r49252, MPFR_RNDN);
}

static mpfr_t r49253, r49254, r49255, r49256, r49257, r49258, r49259, r49260, r49261, r49262, r49263, r49264;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49253);
        mpfr_init(r49254);
        mpfr_init(r49255);
        mpfr_init(r49256);
        mpfr_init(r49257);
        mpfr_init(r49258);
        mpfr_init_set_str(r49259, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49260);
        mpfr_init(r49261);
        mpfr_init(r49262);
        mpfr_init(r49263);
        mpfr_init(r49264);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49253, x, MPFR_RNDN);
        mpfr_set_d(r49254, y, MPFR_RNDN);
        mpfr_set_d(r49255, z, MPFR_RNDN);
        mpfr_sub(r49256, r49254, r49255, MPFR_RNDN);
        mpfr_set_d(r49257, t, MPFR_RNDN);
        mpfr_sub(r49258, r49257, r49255, MPFR_RNDN);
        ;
        mpfr_add(r49260, r49258, r49259, MPFR_RNDN);
        mpfr_div(r49261, r49256, r49260, MPFR_RNDN);
        mpfr_set_d(r49262, a, MPFR_RNDN);
        mpfr_mul(r49263, r49261, r49262, MPFR_RNDN);
        mpfr_sub(r49264, r49253, r49263, MPFR_RNDN);
        return mpfr_get_d(r49264, MPFR_RNDN);
}

