#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 r49659 = x;
        float r49660 = y;
        float r49661 = z;
        float r49662 = r49660 - r49661;
        float r49663 = t;
        float r49664 = r49663 - r49661;
        float r49665 = 1.0;
        float r49666 = r49664 + r49665;
        float r49667 = a;
        float r49668 = r49666 / r49667;
        float r49669 = r49662 / r49668;
        float r49670 = r49659 - r49669;
        return r49670;
}

double f_id(double x, double y, double z, double t, double a) {
        double r49671 = x;
        double r49672 = y;
        double r49673 = z;
        double r49674 = r49672 - r49673;
        double r49675 = t;
        double r49676 = r49675 - r49673;
        double r49677 = 1.0;
        double r49678 = r49676 + r49677;
        double r49679 = a;
        double r49680 = r49678 / r49679;
        double r49681 = r49674 / r49680;
        double r49682 = r49671 - r49681;
        return r49682;
}


double f_of(float x, float y, float z, float t, float a) {
        float r49683 = x;
        float r49684 = y;
        float r49685 = z;
        float r49686 = r49684 - r49685;
        float r49687 = t;
        float r49688 = r49687 - r49685;
        float r49689 = 1.0;
        float r49690 = r49688 + r49689;
        float r49691 = r49686 / r49690;
        float r49692 = a;
        float r49693 = r49691 * r49692;
        float r49694 = r49683 - r49693;
        return r49694;
}

double f_od(double x, double y, double z, double t, double a) {
        double r49695 = x;
        double r49696 = y;
        double r49697 = z;
        double r49698 = r49696 - r49697;
        double r49699 = t;
        double r49700 = r49699 - r49697;
        double r49701 = 1.0;
        double r49702 = r49700 + r49701;
        double r49703 = r49698 / r49702;
        double r49704 = a;
        double r49705 = r49703 * r49704;
        double r49706 = r49695 - r49705;
        return r49706;
}

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 r49707, r49708, r49709, r49710, r49711, r49712, r49713, r49714, r49715, r49716, r49717, r49718;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(656);
        mpfr_init(r49707);
        mpfr_init(r49708);
        mpfr_init(r49709);
        mpfr_init(r49710);
        mpfr_init(r49711);
        mpfr_init(r49712);
        mpfr_init_set_str(r49713, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49714);
        mpfr_init(r49715);
        mpfr_init(r49716);
        mpfr_init(r49717);
        mpfr_init(r49718);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49707, x, MPFR_RNDN);
        mpfr_set_d(r49708, y, MPFR_RNDN);
        mpfr_set_d(r49709, z, MPFR_RNDN);
        mpfr_sub(r49710, r49708, r49709, MPFR_RNDN);
        mpfr_set_d(r49711, t, MPFR_RNDN);
        mpfr_sub(r49712, r49711, r49709, MPFR_RNDN);
        ;
        mpfr_add(r49714, r49712, r49713, MPFR_RNDN);
        mpfr_set_d(r49715, a, MPFR_RNDN);
        mpfr_div(r49716, r49714, r49715, MPFR_RNDN);
        mpfr_div(r49717, r49710, r49716, MPFR_RNDN);
        mpfr_sub(r49718, r49707, r49717, MPFR_RNDN);
        return mpfr_get_d(r49718, MPFR_RNDN);
}

static mpfr_t r49719, r49720, r49721, r49722, r49723, r49724, r49725, r49726, r49727, r49728, r49729, r49730;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49719);
        mpfr_init(r49720);
        mpfr_init(r49721);
        mpfr_init(r49722);
        mpfr_init(r49723);
        mpfr_init(r49724);
        mpfr_init_set_str(r49725, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49726);
        mpfr_init(r49727);
        mpfr_init(r49728);
        mpfr_init(r49729);
        mpfr_init(r49730);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49719, x, MPFR_RNDN);
        mpfr_set_d(r49720, y, MPFR_RNDN);
        mpfr_set_d(r49721, z, MPFR_RNDN);
        mpfr_sub(r49722, r49720, r49721, MPFR_RNDN);
        mpfr_set_d(r49723, t, MPFR_RNDN);
        mpfr_sub(r49724, r49723, r49721, MPFR_RNDN);
        ;
        mpfr_add(r49726, r49724, r49725, MPFR_RNDN);
        mpfr_div(r49727, r49722, r49726, MPFR_RNDN);
        mpfr_set_d(r49728, a, MPFR_RNDN);
        mpfr_mul(r49729, r49727, r49728, MPFR_RNDN);
        mpfr_sub(r49730, r49719, r49729, MPFR_RNDN);
        return mpfr_get_d(r49730, MPFR_RNDN);
}

static mpfr_t r49731, r49732, r49733, r49734, r49735, r49736, r49737, r49738, r49739, r49740, r49741, r49742;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(656);
        mpfr_init(r49731);
        mpfr_init(r49732);
        mpfr_init(r49733);
        mpfr_init(r49734);
        mpfr_init(r49735);
        mpfr_init(r49736);
        mpfr_init_set_str(r49737, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49738);
        mpfr_init(r49739);
        mpfr_init(r49740);
        mpfr_init(r49741);
        mpfr_init(r49742);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49731, x, MPFR_RNDN);
        mpfr_set_d(r49732, y, MPFR_RNDN);
        mpfr_set_d(r49733, z, MPFR_RNDN);
        mpfr_sub(r49734, r49732, r49733, MPFR_RNDN);
        mpfr_set_d(r49735, t, MPFR_RNDN);
        mpfr_sub(r49736, r49735, r49733, MPFR_RNDN);
        ;
        mpfr_add(r49738, r49736, r49737, MPFR_RNDN);
        mpfr_div(r49739, r49734, r49738, MPFR_RNDN);
        mpfr_set_d(r49740, a, MPFR_RNDN);
        mpfr_mul(r49741, r49739, r49740, MPFR_RNDN);
        mpfr_sub(r49742, r49731, r49741, MPFR_RNDN);
        return mpfr_get_d(r49742, MPFR_RNDN);
}

