#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 r49747 = x;
        float r49748 = y;
        float r49749 = z;
        float r49750 = r49748 - r49749;
        float r49751 = t;
        float r49752 = r49751 - r49749;
        float r49753 = 1.0;
        float r49754 = r49752 + r49753;
        float r49755 = a;
        float r49756 = r49754 / r49755;
        float r49757 = r49750 / r49756;
        float r49758 = r49747 - r49757;
        return r49758;
}

double f_id(double x, double y, double z, double t, double a) {
        double r49759 = x;
        double r49760 = y;
        double r49761 = z;
        double r49762 = r49760 - r49761;
        double r49763 = t;
        double r49764 = r49763 - r49761;
        double r49765 = 1.0;
        double r49766 = r49764 + r49765;
        double r49767 = a;
        double r49768 = r49766 / r49767;
        double r49769 = r49762 / r49768;
        double r49770 = r49759 - r49769;
        return r49770;
}


double f_of(float x, float y, float z, float t, float a) {
        float r49771 = x;
        float r49772 = y;
        float r49773 = z;
        float r49774 = r49772 - r49773;
        float r49775 = t;
        float r49776 = r49775 - r49773;
        float r49777 = 1.0;
        float r49778 = r49776 + r49777;
        float r49779 = r49774 / r49778;
        float r49780 = a;
        float r49781 = r49779 * r49780;
        float r49782 = r49771 - r49781;
        return r49782;
}

double f_od(double x, double y, double z, double t, double a) {
        double r49783 = x;
        double r49784 = y;
        double r49785 = z;
        double r49786 = r49784 - r49785;
        double r49787 = t;
        double r49788 = r49787 - r49785;
        double r49789 = 1.0;
        double r49790 = r49788 + r49789;
        double r49791 = r49786 / r49790;
        double r49792 = a;
        double r49793 = r49791 * r49792;
        double r49794 = r49783 - r49793;
        return r49794;
}

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 r49795, r49796, r49797, r49798, r49799, r49800, r49801, r49802, r49803, r49804, r49805, r49806;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r49795);
        mpfr_init(r49796);
        mpfr_init(r49797);
        mpfr_init(r49798);
        mpfr_init(r49799);
        mpfr_init(r49800);
        mpfr_init_set_str(r49801, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49802);
        mpfr_init(r49803);
        mpfr_init(r49804);
        mpfr_init(r49805);
        mpfr_init(r49806);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49795, x, MPFR_RNDN);
        mpfr_set_d(r49796, y, MPFR_RNDN);
        mpfr_set_d(r49797, z, MPFR_RNDN);
        mpfr_sub(r49798, r49796, r49797, MPFR_RNDN);
        mpfr_set_d(r49799, t, MPFR_RNDN);
        mpfr_sub(r49800, r49799, r49797, MPFR_RNDN);
        ;
        mpfr_add(r49802, r49800, r49801, MPFR_RNDN);
        mpfr_set_d(r49803, a, MPFR_RNDN);
        mpfr_div(r49804, r49802, r49803, MPFR_RNDN);
        mpfr_div(r49805, r49798, r49804, MPFR_RNDN);
        mpfr_sub(r49806, r49795, r49805, MPFR_RNDN);
        return mpfr_get_d(r49806, MPFR_RNDN);
}

static mpfr_t r49807, r49808, r49809, r49810, r49811, r49812, r49813, r49814, r49815, r49816, r49817, r49818;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49807);
        mpfr_init(r49808);
        mpfr_init(r49809);
        mpfr_init(r49810);
        mpfr_init(r49811);
        mpfr_init(r49812);
        mpfr_init_set_str(r49813, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49814);
        mpfr_init(r49815);
        mpfr_init(r49816);
        mpfr_init(r49817);
        mpfr_init(r49818);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49807, x, MPFR_RNDN);
        mpfr_set_d(r49808, y, MPFR_RNDN);
        mpfr_set_d(r49809, z, MPFR_RNDN);
        mpfr_sub(r49810, r49808, r49809, MPFR_RNDN);
        mpfr_set_d(r49811, t, MPFR_RNDN);
        mpfr_sub(r49812, r49811, r49809, MPFR_RNDN);
        ;
        mpfr_add(r49814, r49812, r49813, MPFR_RNDN);
        mpfr_div(r49815, r49810, r49814, MPFR_RNDN);
        mpfr_set_d(r49816, a, MPFR_RNDN);
        mpfr_mul(r49817, r49815, r49816, MPFR_RNDN);
        mpfr_sub(r49818, r49807, r49817, MPFR_RNDN);
        return mpfr_get_d(r49818, MPFR_RNDN);
}

static mpfr_t r49819, r49820, r49821, r49822, r49823, r49824, r49825, r49826, r49827, r49828, r49829, r49830;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49819);
        mpfr_init(r49820);
        mpfr_init(r49821);
        mpfr_init(r49822);
        mpfr_init(r49823);
        mpfr_init(r49824);
        mpfr_init_set_str(r49825, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49826);
        mpfr_init(r49827);
        mpfr_init(r49828);
        mpfr_init(r49829);
        mpfr_init(r49830);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49819, x, MPFR_RNDN);
        mpfr_set_d(r49820, y, MPFR_RNDN);
        mpfr_set_d(r49821, z, MPFR_RNDN);
        mpfr_sub(r49822, r49820, r49821, MPFR_RNDN);
        mpfr_set_d(r49823, t, MPFR_RNDN);
        mpfr_sub(r49824, r49823, r49821, MPFR_RNDN);
        ;
        mpfr_add(r49826, r49824, r49825, MPFR_RNDN);
        mpfr_div(r49827, r49822, r49826, MPFR_RNDN);
        mpfr_set_d(r49828, a, MPFR_RNDN);
        mpfr_mul(r49829, r49827, r49828, MPFR_RNDN);
        mpfr_sub(r49830, r49819, r49829, MPFR_RNDN);
        return mpfr_get_d(r49830, MPFR_RNDN);
}

