#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 r50173 = x;
        float r50174 = y;
        float r50175 = r50174 - r50173;
        float r50176 = z;
        float r50177 = t;
        float r50178 = r50176 - r50177;
        float r50179 = r50175 * r50178;
        float r50180 = a;
        float r50181 = r50180 - r50177;
        float r50182 = r50179 / r50181;
        float r50183 = r50173 + r50182;
        return r50183;
}

double f_id(double x, double y, double z, double t, double a) {
        double r50184 = x;
        double r50185 = y;
        double r50186 = r50185 - r50184;
        double r50187 = z;
        double r50188 = t;
        double r50189 = r50187 - r50188;
        double r50190 = r50186 * r50189;
        double r50191 = a;
        double r50192 = r50191 - r50188;
        double r50193 = r50190 / r50192;
        double r50194 = r50184 + r50193;
        return r50194;
}


double f_of(float x, float y, float z, float t, float a) {
        float r50195 = t;
        float r50196 = -7.564860689693754e+187;
        bool r50197 = r50195 <= r50196;
        float r50198 = y;
        float r50199 = x;
        float r50200 = r50198 - r50199;
        float r50201 = z;
        float r50202 = r50201 / r50195;
        float r50203 = r50200 * r50202;
        float r50204 = r50198 - r50203;
        float r50205 = 8.081559980459926e+183;
        bool r50206 = r50195 <= r50205;
        float r50207 = 1;
        float r50208 = r50200 / r50207;
        float r50209 = r50201 - r50195;
        float r50210 = a;
        float r50211 = r50210 - r50195;
        float r50212 = r50209 / r50211;
        float r50213 = r50208 * r50212;
        float r50214 = r50199 + r50213;
        float r50215 = r50206 ? r50214 : r50204;
        float r50216 = r50197 ? r50204 : r50215;
        return r50216;
}

double f_od(double x, double y, double z, double t, double a) {
        double r50217 = t;
        double r50218 = -7.564860689693754e+187;
        bool r50219 = r50217 <= r50218;
        double r50220 = y;
        double r50221 = x;
        double r50222 = r50220 - r50221;
        double r50223 = z;
        double r50224 = r50223 / r50217;
        double r50225 = r50222 * r50224;
        double r50226 = r50220 - r50225;
        double r50227 = 8.081559980459926e+183;
        bool r50228 = r50217 <= r50227;
        double r50229 = 1;
        double r50230 = r50222 / r50229;
        double r50231 = r50223 - r50217;
        double r50232 = a;
        double r50233 = r50232 - r50217;
        double r50234 = r50231 / r50233;
        double r50235 = r50230 * r50234;
        double r50236 = r50221 + r50235;
        double r50237 = r50228 ? r50236 : r50226;
        double r50238 = r50219 ? r50226 : r50237;
        return r50238;
}

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 r50239, r50240, r50241, r50242, r50243, r50244, r50245, r50246, r50247, r50248, r50249;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50239);
        mpfr_init(r50240);
        mpfr_init(r50241);
        mpfr_init(r50242);
        mpfr_init(r50243);
        mpfr_init(r50244);
        mpfr_init(r50245);
        mpfr_init(r50246);
        mpfr_init(r50247);
        mpfr_init(r50248);
        mpfr_init(r50249);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50239, x, MPFR_RNDN);
        mpfr_set_d(r50240, y, MPFR_RNDN);
        mpfr_sub(r50241, r50240, r50239, MPFR_RNDN);
        mpfr_set_d(r50242, z, MPFR_RNDN);
        mpfr_set_d(r50243, t, MPFR_RNDN);
        mpfr_sub(r50244, r50242, r50243, MPFR_RNDN);
        mpfr_mul(r50245, r50241, r50244, MPFR_RNDN);
        mpfr_set_d(r50246, a, MPFR_RNDN);
        mpfr_sub(r50247, r50246, r50243, MPFR_RNDN);
        mpfr_div(r50248, r50245, r50247, MPFR_RNDN);
        mpfr_add(r50249, r50239, r50248, MPFR_RNDN);
        return mpfr_get_d(r50249, MPFR_RNDN);
}

static mpfr_t r50250, r50251, r50252, r50253, r50254, r50255, r50256, r50257, r50258, r50259, r50260, r50261, r50262, r50263, r50264, r50265, r50266, r50267, r50268, r50269, r50270, r50271;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50250);
        mpfr_init_set_str(r50251, "-7.564860689693754e+187", 10, MPFR_RNDN);
        mpfr_init(r50252);
        mpfr_init(r50253);
        mpfr_init(r50254);
        mpfr_init(r50255);
        mpfr_init(r50256);
        mpfr_init(r50257);
        mpfr_init(r50258);
        mpfr_init(r50259);
        mpfr_init_set_str(r50260, "8.081559980459926e+183", 10, MPFR_RNDN);
        mpfr_init(r50261);
        mpfr_init_set_str(r50262, "1", 10, MPFR_RNDN);
        mpfr_init(r50263);
        mpfr_init(r50264);
        mpfr_init(r50265);
        mpfr_init(r50266);
        mpfr_init(r50267);
        mpfr_init(r50268);
        mpfr_init(r50269);
        mpfr_init(r50270);
        mpfr_init(r50271);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50250, t, MPFR_RNDN);
        ;
        mpfr_set_si(r50252, mpfr_cmp(r50250, r50251) <= 0, MPFR_RNDN);
        mpfr_set_d(r50253, y, MPFR_RNDN);
        mpfr_set_d(r50254, x, MPFR_RNDN);
        mpfr_sub(r50255, r50253, r50254, MPFR_RNDN);
        mpfr_set_d(r50256, z, MPFR_RNDN);
        mpfr_div(r50257, r50256, r50250, MPFR_RNDN);
        mpfr_mul(r50258, r50255, r50257, MPFR_RNDN);
        mpfr_sub(r50259, r50253, r50258, MPFR_RNDN);
        ;
        mpfr_set_si(r50261, mpfr_cmp(r50250, r50260) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r50263, r50255, r50262, MPFR_RNDN);
        mpfr_sub(r50264, r50256, r50250, MPFR_RNDN);
        mpfr_set_d(r50265, a, MPFR_RNDN);
        mpfr_sub(r50266, r50265, r50250, MPFR_RNDN);
        mpfr_div(r50267, r50264, r50266, MPFR_RNDN);
        mpfr_mul(r50268, r50263, r50267, MPFR_RNDN);
        mpfr_add(r50269, r50254, r50268, MPFR_RNDN);
        if (mpfr_get_si(r50261, MPFR_RNDN)) { mpfr_set(r50270, r50269, MPFR_RNDN); } else { mpfr_set(r50270, r50259, MPFR_RNDN); };
        if (mpfr_get_si(r50252, MPFR_RNDN)) { mpfr_set(r50271, r50259, MPFR_RNDN); } else { mpfr_set(r50271, r50270, MPFR_RNDN); };
        return mpfr_get_d(r50271, MPFR_RNDN);
}

static mpfr_t r50272, r50273, r50274, r50275, r50276, r50277, r50278, r50279, r50280, r50281, r50282, r50283, r50284, r50285, r50286, r50287, r50288, r50289, r50290, r50291, r50292, r50293;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50272);
        mpfr_init_set_str(r50273, "-7.564860689693754e+187", 10, MPFR_RNDN);
        mpfr_init(r50274);
        mpfr_init(r50275);
        mpfr_init(r50276);
        mpfr_init(r50277);
        mpfr_init(r50278);
        mpfr_init(r50279);
        mpfr_init(r50280);
        mpfr_init(r50281);
        mpfr_init_set_str(r50282, "8.081559980459926e+183", 10, MPFR_RNDN);
        mpfr_init(r50283);
        mpfr_init_set_str(r50284, "1", 10, MPFR_RNDN);
        mpfr_init(r50285);
        mpfr_init(r50286);
        mpfr_init(r50287);
        mpfr_init(r50288);
        mpfr_init(r50289);
        mpfr_init(r50290);
        mpfr_init(r50291);
        mpfr_init(r50292);
        mpfr_init(r50293);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50272, t, MPFR_RNDN);
        ;
        mpfr_set_si(r50274, mpfr_cmp(r50272, r50273) <= 0, MPFR_RNDN);
        mpfr_set_d(r50275, y, MPFR_RNDN);
        mpfr_set_d(r50276, x, MPFR_RNDN);
        mpfr_sub(r50277, r50275, r50276, MPFR_RNDN);
        mpfr_set_d(r50278, z, MPFR_RNDN);
        mpfr_div(r50279, r50278, r50272, MPFR_RNDN);
        mpfr_mul(r50280, r50277, r50279, MPFR_RNDN);
        mpfr_sub(r50281, r50275, r50280, MPFR_RNDN);
        ;
        mpfr_set_si(r50283, mpfr_cmp(r50272, r50282) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r50285, r50277, r50284, MPFR_RNDN);
        mpfr_sub(r50286, r50278, r50272, MPFR_RNDN);
        mpfr_set_d(r50287, a, MPFR_RNDN);
        mpfr_sub(r50288, r50287, r50272, MPFR_RNDN);
        mpfr_div(r50289, r50286, r50288, MPFR_RNDN);
        mpfr_mul(r50290, r50285, r50289, MPFR_RNDN);
        mpfr_add(r50291, r50276, r50290, MPFR_RNDN);
        if (mpfr_get_si(r50283, MPFR_RNDN)) { mpfr_set(r50292, r50291, MPFR_RNDN); } else { mpfr_set(r50292, r50281, MPFR_RNDN); };
        if (mpfr_get_si(r50274, MPFR_RNDN)) { mpfr_set(r50293, r50281, MPFR_RNDN); } else { mpfr_set(r50293, r50292, MPFR_RNDN); };
        return mpfr_get_d(r50293, MPFR_RNDN);
}

