#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 r50229 = x;
        float r50230 = y;
        float r50231 = r50230 - r50229;
        float r50232 = z;
        float r50233 = t;
        float r50234 = r50232 - r50233;
        float r50235 = r50231 * r50234;
        float r50236 = a;
        float r50237 = r50236 - r50233;
        float r50238 = r50235 / r50237;
        float r50239 = r50229 + r50238;
        return r50239;
}

double f_id(double x, double y, double z, double t, double a) {
        double r50240 = x;
        double r50241 = y;
        double r50242 = r50241 - r50240;
        double r50243 = z;
        double r50244 = t;
        double r50245 = r50243 - r50244;
        double r50246 = r50242 * r50245;
        double r50247 = a;
        double r50248 = r50247 - r50244;
        double r50249 = r50246 / r50248;
        double r50250 = r50240 + r50249;
        return r50250;
}


double f_of(float x, float y, float z, float t, float a) {
        float r50251 = t;
        float r50252 = -1.6330932831281188e+188;
        bool r50253 = r50251 <= r50252;
        float r50254 = y;
        float r50255 = x;
        float r50256 = r50254 - r50255;
        float r50257 = z;
        float r50258 = r50257 / r50251;
        float r50259 = r50256 * r50258;
        float r50260 = r50254 - r50259;
        float r50261 = 1.297238936877692e+183;
        bool r50262 = r50251 <= r50261;
        float r50263 = 1;
        float r50264 = r50256 / r50263;
        float r50265 = r50257 - r50251;
        float r50266 = a;
        float r50267 = r50266 - r50251;
        float r50268 = r50265 / r50267;
        float r50269 = r50264 * r50268;
        float r50270 = r50255 + r50269;
        float r50271 = r50262 ? r50270 : r50260;
        float r50272 = r50253 ? r50260 : r50271;
        return r50272;
}

double f_od(double x, double y, double z, double t, double a) {
        double r50273 = t;
        double r50274 = -1.6330932831281188e+188;
        bool r50275 = r50273 <= r50274;
        double r50276 = y;
        double r50277 = x;
        double r50278 = r50276 - r50277;
        double r50279 = z;
        double r50280 = r50279 / r50273;
        double r50281 = r50278 * r50280;
        double r50282 = r50276 - r50281;
        double r50283 = 1.297238936877692e+183;
        bool r50284 = r50273 <= r50283;
        double r50285 = 1;
        double r50286 = r50278 / r50285;
        double r50287 = r50279 - r50273;
        double r50288 = a;
        double r50289 = r50288 - r50273;
        double r50290 = r50287 / r50289;
        double r50291 = r50286 * r50290;
        double r50292 = r50277 + r50291;
        double r50293 = r50284 ? r50292 : r50282;
        double r50294 = r50275 ? r50282 : r50293;
        return r50294;
}

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 r50295, r50296, r50297, r50298, r50299, r50300, r50301, r50302, r50303, r50304, r50305;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50295);
        mpfr_init(r50296);
        mpfr_init(r50297);
        mpfr_init(r50298);
        mpfr_init(r50299);
        mpfr_init(r50300);
        mpfr_init(r50301);
        mpfr_init(r50302);
        mpfr_init(r50303);
        mpfr_init(r50304);
        mpfr_init(r50305);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50295, x, MPFR_RNDN);
        mpfr_set_d(r50296, y, MPFR_RNDN);
        mpfr_sub(r50297, r50296, r50295, MPFR_RNDN);
        mpfr_set_d(r50298, z, MPFR_RNDN);
        mpfr_set_d(r50299, t, MPFR_RNDN);
        mpfr_sub(r50300, r50298, r50299, MPFR_RNDN);
        mpfr_mul(r50301, r50297, r50300, MPFR_RNDN);
        mpfr_set_d(r50302, a, MPFR_RNDN);
        mpfr_sub(r50303, r50302, r50299, MPFR_RNDN);
        mpfr_div(r50304, r50301, r50303, MPFR_RNDN);
        mpfr_add(r50305, r50295, r50304, MPFR_RNDN);
        return mpfr_get_d(r50305, MPFR_RNDN);
}

static mpfr_t r50306, r50307, r50308, r50309, r50310, r50311, r50312, r50313, r50314, r50315, r50316, r50317, r50318, r50319, r50320, r50321, r50322, r50323, r50324, r50325, r50326, r50327;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50306);
        mpfr_init_set_str(r50307, "-1.6330932831281188e+188", 10, MPFR_RNDN);
        mpfr_init(r50308);
        mpfr_init(r50309);
        mpfr_init(r50310);
        mpfr_init(r50311);
        mpfr_init(r50312);
        mpfr_init(r50313);
        mpfr_init(r50314);
        mpfr_init(r50315);
        mpfr_init_set_str(r50316, "1.297238936877692e+183", 10, MPFR_RNDN);
        mpfr_init(r50317);
        mpfr_init_set_str(r50318, "1", 10, MPFR_RNDN);
        mpfr_init(r50319);
        mpfr_init(r50320);
        mpfr_init(r50321);
        mpfr_init(r50322);
        mpfr_init(r50323);
        mpfr_init(r50324);
        mpfr_init(r50325);
        mpfr_init(r50326);
        mpfr_init(r50327);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50306, t, MPFR_RNDN);
        ;
        mpfr_set_si(r50308, mpfr_cmp(r50306, r50307) <= 0, MPFR_RNDN);
        mpfr_set_d(r50309, y, MPFR_RNDN);
        mpfr_set_d(r50310, x, MPFR_RNDN);
        mpfr_sub(r50311, r50309, r50310, MPFR_RNDN);
        mpfr_set_d(r50312, z, MPFR_RNDN);
        mpfr_div(r50313, r50312, r50306, MPFR_RNDN);
        mpfr_mul(r50314, r50311, r50313, MPFR_RNDN);
        mpfr_sub(r50315, r50309, r50314, MPFR_RNDN);
        ;
        mpfr_set_si(r50317, mpfr_cmp(r50306, r50316) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r50319, r50311, r50318, MPFR_RNDN);
        mpfr_sub(r50320, r50312, r50306, MPFR_RNDN);
        mpfr_set_d(r50321, a, MPFR_RNDN);
        mpfr_sub(r50322, r50321, r50306, MPFR_RNDN);
        mpfr_div(r50323, r50320, r50322, MPFR_RNDN);
        mpfr_mul(r50324, r50319, r50323, MPFR_RNDN);
        mpfr_add(r50325, r50310, r50324, MPFR_RNDN);
        if (mpfr_get_si(r50317, MPFR_RNDN)) { mpfr_set(r50326, r50325, MPFR_RNDN); } else { mpfr_set(r50326, r50315, MPFR_RNDN); };
        if (mpfr_get_si(r50308, MPFR_RNDN)) { mpfr_set(r50327, r50315, MPFR_RNDN); } else { mpfr_set(r50327, r50326, MPFR_RNDN); };
        return mpfr_get_d(r50327, MPFR_RNDN);
}

static mpfr_t r50328, r50329, r50330, r50331, r50332, r50333, r50334, r50335, r50336, r50337, r50338, r50339, r50340, r50341, r50342, r50343, r50344, r50345, r50346, r50347, r50348, r50349;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50328);
        mpfr_init_set_str(r50329, "-1.6330932831281188e+188", 10, MPFR_RNDN);
        mpfr_init(r50330);
        mpfr_init(r50331);
        mpfr_init(r50332);
        mpfr_init(r50333);
        mpfr_init(r50334);
        mpfr_init(r50335);
        mpfr_init(r50336);
        mpfr_init(r50337);
        mpfr_init_set_str(r50338, "1.297238936877692e+183", 10, MPFR_RNDN);
        mpfr_init(r50339);
        mpfr_init_set_str(r50340, "1", 10, MPFR_RNDN);
        mpfr_init(r50341);
        mpfr_init(r50342);
        mpfr_init(r50343);
        mpfr_init(r50344);
        mpfr_init(r50345);
        mpfr_init(r50346);
        mpfr_init(r50347);
        mpfr_init(r50348);
        mpfr_init(r50349);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50328, t, MPFR_RNDN);
        ;
        mpfr_set_si(r50330, mpfr_cmp(r50328, r50329) <= 0, MPFR_RNDN);
        mpfr_set_d(r50331, y, MPFR_RNDN);
        mpfr_set_d(r50332, x, MPFR_RNDN);
        mpfr_sub(r50333, r50331, r50332, MPFR_RNDN);
        mpfr_set_d(r50334, z, MPFR_RNDN);
        mpfr_div(r50335, r50334, r50328, MPFR_RNDN);
        mpfr_mul(r50336, r50333, r50335, MPFR_RNDN);
        mpfr_sub(r50337, r50331, r50336, MPFR_RNDN);
        ;
        mpfr_set_si(r50339, mpfr_cmp(r50328, r50338) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r50341, r50333, r50340, MPFR_RNDN);
        mpfr_sub(r50342, r50334, r50328, MPFR_RNDN);
        mpfr_set_d(r50343, a, MPFR_RNDN);
        mpfr_sub(r50344, r50343, r50328, MPFR_RNDN);
        mpfr_div(r50345, r50342, r50344, MPFR_RNDN);
        mpfr_mul(r50346, r50341, r50345, MPFR_RNDN);
        mpfr_add(r50347, r50332, r50346, MPFR_RNDN);
        if (mpfr_get_si(r50339, MPFR_RNDN)) { mpfr_set(r50348, r50347, MPFR_RNDN); } else { mpfr_set(r50348, r50337, MPFR_RNDN); };
        if (mpfr_get_si(r50330, MPFR_RNDN)) { mpfr_set(r50349, r50337, MPFR_RNDN); } else { mpfr_set(r50349, r50348, MPFR_RNDN); };
        return mpfr_get_d(r50349, MPFR_RNDN);
}

