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

char *name = "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3";

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

double f_id(double x, double y, double z, double t, double a) {
        double r49706 = x;
        double r49707 = y;
        double r49708 = r49707 - r49706;
        double r49709 = z;
        double r49710 = t;
        double r49711 = r49709 - r49710;
        double r49712 = r49708 * r49711;
        double r49713 = a;
        double r49714 = r49713 - r49710;
        double r49715 = r49712 / r49714;
        double r49716 = r49706 + r49715;
        return r49716;
}


double f_of(float x, float y, float z, float t, float a) {
        float r49717 = t;
        float r49718 = -1.6330932831281188e+188;
        bool r49719 = r49717 <= r49718;
        float r49720 = y;
        float r49721 = x;
        float r49722 = r49720 - r49721;
        float r49723 = z;
        float r49724 = r49723 / r49717;
        float r49725 = r49722 * r49724;
        float r49726 = r49720 - r49725;
        float r49727 = 1.297238936877692e+183;
        bool r49728 = r49717 <= r49727;
        float r49729 = 1;
        float r49730 = r49722 / r49729;
        float r49731 = r49723 - r49717;
        float r49732 = a;
        float r49733 = r49732 - r49717;
        float r49734 = r49731 / r49733;
        float r49735 = r49730 * r49734;
        float r49736 = r49721 + r49735;
        float r49737 = r49728 ? r49736 : r49726;
        float r49738 = r49719 ? r49726 : r49737;
        return r49738;
}

double f_od(double x, double y, double z, double t, double a) {
        double r49739 = t;
        double r49740 = -1.6330932831281188e+188;
        bool r49741 = r49739 <= r49740;
        double r49742 = y;
        double r49743 = x;
        double r49744 = r49742 - r49743;
        double r49745 = z;
        double r49746 = r49745 / r49739;
        double r49747 = r49744 * r49746;
        double r49748 = r49742 - r49747;
        double r49749 = 1.297238936877692e+183;
        bool r49750 = r49739 <= r49749;
        double r49751 = 1;
        double r49752 = r49744 / r49751;
        double r49753 = r49745 - r49739;
        double r49754 = a;
        double r49755 = r49754 - r49739;
        double r49756 = r49753 / r49755;
        double r49757 = r49752 * r49756;
        double r49758 = r49743 + r49757;
        double r49759 = r49750 ? r49758 : r49748;
        double r49760 = r49741 ? r49748 : r49759;
        return r49760;
}

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 r49761, r49762, r49763, r49764, r49765, r49766, r49767, r49768, r49769, r49770, r49771;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r49761);
        mpfr_init(r49762);
        mpfr_init(r49763);
        mpfr_init(r49764);
        mpfr_init(r49765);
        mpfr_init(r49766);
        mpfr_init(r49767);
        mpfr_init(r49768);
        mpfr_init(r49769);
        mpfr_init(r49770);
        mpfr_init(r49771);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49761, x, MPFR_RNDN);
        mpfr_set_d(r49762, y, MPFR_RNDN);
        mpfr_sub(r49763, r49762, r49761, MPFR_RNDN);
        mpfr_set_d(r49764, z, MPFR_RNDN);
        mpfr_set_d(r49765, t, MPFR_RNDN);
        mpfr_sub(r49766, r49764, r49765, MPFR_RNDN);
        mpfr_mul(r49767, r49763, r49766, MPFR_RNDN);
        mpfr_set_d(r49768, a, MPFR_RNDN);
        mpfr_sub(r49769, r49768, r49765, MPFR_RNDN);
        mpfr_div(r49770, r49767, r49769, MPFR_RNDN);
        mpfr_add(r49771, r49761, r49770, MPFR_RNDN);
        return mpfr_get_d(r49771, MPFR_RNDN);
}

static mpfr_t r49772, r49773, r49774, r49775, r49776, r49777, r49778, r49779, r49780, r49781, r49782, r49783, r49784, r49785, r49786, r49787, r49788, r49789, r49790, r49791, r49792, r49793;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r49772);
        mpfr_init_set_str(r49773, "-1.6330932831281188e+188", 10, MPFR_RNDN);
        mpfr_init(r49774);
        mpfr_init(r49775);
        mpfr_init(r49776);
        mpfr_init(r49777);
        mpfr_init(r49778);
        mpfr_init(r49779);
        mpfr_init(r49780);
        mpfr_init(r49781);
        mpfr_init_set_str(r49782, "1.297238936877692e+183", 10, MPFR_RNDN);
        mpfr_init(r49783);
        mpfr_init_set_str(r49784, "1", 10, MPFR_RNDN);
        mpfr_init(r49785);
        mpfr_init(r49786);
        mpfr_init(r49787);
        mpfr_init(r49788);
        mpfr_init(r49789);
        mpfr_init(r49790);
        mpfr_init(r49791);
        mpfr_init(r49792);
        mpfr_init(r49793);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49772, t, MPFR_RNDN);
        ;
        mpfr_set_si(r49774, mpfr_cmp(r49772, r49773) <= 0, MPFR_RNDN);
        mpfr_set_d(r49775, y, MPFR_RNDN);
        mpfr_set_d(r49776, x, MPFR_RNDN);
        mpfr_sub(r49777, r49775, r49776, MPFR_RNDN);
        mpfr_set_d(r49778, z, MPFR_RNDN);
        mpfr_div(r49779, r49778, r49772, MPFR_RNDN);
        mpfr_mul(r49780, r49777, r49779, MPFR_RNDN);
        mpfr_sub(r49781, r49775, r49780, MPFR_RNDN);
        ;
        mpfr_set_si(r49783, mpfr_cmp(r49772, r49782) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r49785, r49777, r49784, MPFR_RNDN);
        mpfr_sub(r49786, r49778, r49772, MPFR_RNDN);
        mpfr_set_d(r49787, a, MPFR_RNDN);
        mpfr_sub(r49788, r49787, r49772, MPFR_RNDN);
        mpfr_div(r49789, r49786, r49788, MPFR_RNDN);
        mpfr_mul(r49790, r49785, r49789, MPFR_RNDN);
        mpfr_add(r49791, r49776, r49790, MPFR_RNDN);
        if (mpfr_get_si(r49783, MPFR_RNDN)) { mpfr_set(r49792, r49791, MPFR_RNDN); } else { mpfr_set(r49792, r49781, MPFR_RNDN); };
        if (mpfr_get_si(r49774, MPFR_RNDN)) { mpfr_set(r49793, r49781, MPFR_RNDN); } else { mpfr_set(r49793, r49792, MPFR_RNDN); };
        return mpfr_get_d(r49793, MPFR_RNDN);
}

static mpfr_t r49794, r49795, r49796, r49797, r49798, r49799, r49800, r49801, r49802, r49803, r49804, r49805, r49806, r49807, r49808, r49809, r49810, r49811, r49812, r49813, r49814, r49815;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r49794);
        mpfr_init_set_str(r49795, "-1.6330932831281188e+188", 10, MPFR_RNDN);
        mpfr_init(r49796);
        mpfr_init(r49797);
        mpfr_init(r49798);
        mpfr_init(r49799);
        mpfr_init(r49800);
        mpfr_init(r49801);
        mpfr_init(r49802);
        mpfr_init(r49803);
        mpfr_init_set_str(r49804, "1.297238936877692e+183", 10, MPFR_RNDN);
        mpfr_init(r49805);
        mpfr_init_set_str(r49806, "1", 10, MPFR_RNDN);
        mpfr_init(r49807);
        mpfr_init(r49808);
        mpfr_init(r49809);
        mpfr_init(r49810);
        mpfr_init(r49811);
        mpfr_init(r49812);
        mpfr_init(r49813);
        mpfr_init(r49814);
        mpfr_init(r49815);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49794, t, MPFR_RNDN);
        ;
        mpfr_set_si(r49796, mpfr_cmp(r49794, r49795) <= 0, MPFR_RNDN);
        mpfr_set_d(r49797, y, MPFR_RNDN);
        mpfr_set_d(r49798, x, MPFR_RNDN);
        mpfr_sub(r49799, r49797, r49798, MPFR_RNDN);
        mpfr_set_d(r49800, z, MPFR_RNDN);
        mpfr_div(r49801, r49800, r49794, MPFR_RNDN);
        mpfr_mul(r49802, r49799, r49801, MPFR_RNDN);
        mpfr_sub(r49803, r49797, r49802, MPFR_RNDN);
        ;
        mpfr_set_si(r49805, mpfr_cmp(r49794, r49804) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r49807, r49799, r49806, MPFR_RNDN);
        mpfr_sub(r49808, r49800, r49794, MPFR_RNDN);
        mpfr_set_d(r49809, a, MPFR_RNDN);
        mpfr_sub(r49810, r49809, r49794, MPFR_RNDN);
        mpfr_div(r49811, r49808, r49810, MPFR_RNDN);
        mpfr_mul(r49812, r49807, r49811, MPFR_RNDN);
        mpfr_add(r49813, r49798, r49812, MPFR_RNDN);
        if (mpfr_get_si(r49805, MPFR_RNDN)) { mpfr_set(r49814, r49813, MPFR_RNDN); } else { mpfr_set(r49814, r49803, MPFR_RNDN); };
        if (mpfr_get_si(r49796, MPFR_RNDN)) { mpfr_set(r49815, r49803, MPFR_RNDN); } else { mpfr_set(r49815, r49814, MPFR_RNDN); };
        return mpfr_get_d(r49815, MPFR_RNDN);
}

