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

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

double f_if(float x, float y, float z, float t, float a) {
        float r50294 = x;
        float r50295 = y;
        float r50296 = z;
        float r50297 = r50295 - r50296;
        float r50298 = t;
        float r50299 = r50298 - r50294;
        float r50300 = r50297 * r50299;
        float r50301 = a;
        float r50302 = r50301 - r50296;
        float r50303 = r50300 / r50302;
        float r50304 = r50294 + r50303;
        return r50304;
}

double f_id(double x, double y, double z, double t, double a) {
        double r50305 = x;
        double r50306 = y;
        double r50307 = z;
        double r50308 = r50306 - r50307;
        double r50309 = t;
        double r50310 = r50309 - r50305;
        double r50311 = r50308 * r50310;
        double r50312 = a;
        double r50313 = r50312 - r50307;
        double r50314 = r50311 / r50313;
        double r50315 = r50305 + r50314;
        return r50315;
}


double f_of(float x, float y, float z, float t, float a) {
        float r50316 = a;
        float r50317 = -5.431975634518425e-180;
        bool r50318 = r50316 <= r50317;
        float r50319 = x;
        float r50320 = y;
        float r50321 = z;
        float r50322 = r50320 - r50321;
        float r50323 = r50316 - r50321;
        float r50324 = cbrt(r50323);
        float r50325 = r50324 * r50324;
        float r50326 = r50322 / r50325;
        float r50327 = t;
        float r50328 = r50327 - r50319;
        float r50329 = r50328 / r50324;
        float r50330 = r50326 * r50329;
        float r50331 = r50319 + r50330;
        float r50332 = 4.364749231637734e-136;
        bool r50333 = r50316 <= r50332;
        float r50334 = r50320 / r50321;
        float r50335 = r50328 * r50334;
        float r50336 = r50327 - r50335;
        float r50337 = 2.1615660863766092e-41;
        bool r50338 = r50316 <= r50337;
        float r50339 = r50322 * r50328;
        float r50340 = 1;
        float r50341 = r50340 / r50323;
        float r50342 = r50339 * r50341;
        float r50343 = r50319 + r50342;
        float r50344 = 92563423223.6119;
        bool r50345 = r50316 <= r50344;
        float r50346 = r50345 ? r50336 : r50331;
        float r50347 = r50338 ? r50343 : r50346;
        float r50348 = r50333 ? r50336 : r50347;
        float r50349 = r50318 ? r50331 : r50348;
        return r50349;
}

double f_od(double x, double y, double z, double t, double a) {
        double r50350 = a;
        double r50351 = -5.431975634518425e-180;
        bool r50352 = r50350 <= r50351;
        double r50353 = x;
        double r50354 = y;
        double r50355 = z;
        double r50356 = r50354 - r50355;
        double r50357 = r50350 - r50355;
        double r50358 = cbrt(r50357);
        double r50359 = r50358 * r50358;
        double r50360 = r50356 / r50359;
        double r50361 = t;
        double r50362 = r50361 - r50353;
        double r50363 = r50362 / r50358;
        double r50364 = r50360 * r50363;
        double r50365 = r50353 + r50364;
        double r50366 = 4.364749231637734e-136;
        bool r50367 = r50350 <= r50366;
        double r50368 = r50354 / r50355;
        double r50369 = r50362 * r50368;
        double r50370 = r50361 - r50369;
        double r50371 = 2.1615660863766092e-41;
        bool r50372 = r50350 <= r50371;
        double r50373 = r50356 * r50362;
        double r50374 = 1;
        double r50375 = r50374 / r50357;
        double r50376 = r50373 * r50375;
        double r50377 = r50353 + r50376;
        double r50378 = 92563423223.6119;
        bool r50379 = r50350 <= r50378;
        double r50380 = r50379 ? r50370 : r50365;
        double r50381 = r50372 ? r50377 : r50380;
        double r50382 = r50367 ? r50370 : r50381;
        double r50383 = r50352 ? r50365 : r50382;
        return r50383;
}

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 r50384, r50385, r50386, r50387, r50388, r50389, r50390, r50391, r50392, r50393, r50394;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1680);
        mpfr_init(r50384);
        mpfr_init(r50385);
        mpfr_init(r50386);
        mpfr_init(r50387);
        mpfr_init(r50388);
        mpfr_init(r50389);
        mpfr_init(r50390);
        mpfr_init(r50391);
        mpfr_init(r50392);
        mpfr_init(r50393);
        mpfr_init(r50394);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50384, x, MPFR_RNDN);
        mpfr_set_d(r50385, y, MPFR_RNDN);
        mpfr_set_d(r50386, z, MPFR_RNDN);
        mpfr_sub(r50387, r50385, r50386, MPFR_RNDN);
        mpfr_set_d(r50388, t, MPFR_RNDN);
        mpfr_sub(r50389, r50388, r50384, MPFR_RNDN);
        mpfr_mul(r50390, r50387, r50389, MPFR_RNDN);
        mpfr_set_d(r50391, a, MPFR_RNDN);
        mpfr_sub(r50392, r50391, r50386, MPFR_RNDN);
        mpfr_div(r50393, r50390, r50392, MPFR_RNDN);
        mpfr_add(r50394, r50384, r50393, MPFR_RNDN);
        return mpfr_get_d(r50394, MPFR_RNDN);
}

static mpfr_t r50395, r50396, r50397, r50398, r50399, r50400, r50401, r50402, r50403, r50404, r50405, r50406, r50407, r50408, r50409, r50410, r50411, r50412, r50413, r50414, r50415, r50416, r50417, r50418, r50419, r50420, r50421, r50422, r50423, r50424, r50425, r50426, r50427, r50428;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1680);
        mpfr_init(r50395);
        mpfr_init_set_str(r50396, "-5.431975634518425e-180", 10, MPFR_RNDN);
        mpfr_init(r50397);
        mpfr_init(r50398);
        mpfr_init(r50399);
        mpfr_init(r50400);
        mpfr_init(r50401);
        mpfr_init(r50402);
        mpfr_init(r50403);
        mpfr_init(r50404);
        mpfr_init(r50405);
        mpfr_init(r50406);
        mpfr_init(r50407);
        mpfr_init(r50408);
        mpfr_init(r50409);
        mpfr_init(r50410);
        mpfr_init_set_str(r50411, "4.364749231637734e-136", 10, MPFR_RNDN);
        mpfr_init(r50412);
        mpfr_init(r50413);
        mpfr_init(r50414);
        mpfr_init(r50415);
        mpfr_init_set_str(r50416, "2.1615660863766092e-41", 10, MPFR_RNDN);
        mpfr_init(r50417);
        mpfr_init(r50418);
        mpfr_init_set_str(r50419, "1", 10, MPFR_RNDN);
        mpfr_init(r50420);
        mpfr_init(r50421);
        mpfr_init(r50422);
        mpfr_init_set_str(r50423, "92563423223.6119", 10, MPFR_RNDN);
        mpfr_init(r50424);
        mpfr_init(r50425);
        mpfr_init(r50426);
        mpfr_init(r50427);
        mpfr_init(r50428);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50395, a, MPFR_RNDN);
        ;
        mpfr_set_si(r50397, mpfr_cmp(r50395, r50396) <= 0, MPFR_RNDN);
        mpfr_set_d(r50398, x, MPFR_RNDN);
        mpfr_set_d(r50399, y, MPFR_RNDN);
        mpfr_set_d(r50400, z, MPFR_RNDN);
        mpfr_sub(r50401, r50399, r50400, MPFR_RNDN);
        mpfr_sub(r50402, r50395, r50400, MPFR_RNDN);
        mpfr_cbrt(r50403, r50402, MPFR_RNDN);
        mpfr_mul(r50404, r50403, r50403, MPFR_RNDN);
        mpfr_div(r50405, r50401, r50404, MPFR_RNDN);
        mpfr_set_d(r50406, t, MPFR_RNDN);
        mpfr_sub(r50407, r50406, r50398, MPFR_RNDN);
        mpfr_div(r50408, r50407, r50403, MPFR_RNDN);
        mpfr_mul(r50409, r50405, r50408, MPFR_RNDN);
        mpfr_add(r50410, r50398, r50409, MPFR_RNDN);
        ;
        mpfr_set_si(r50412, mpfr_cmp(r50395, r50411) <= 0, MPFR_RNDN);
        mpfr_div(r50413, r50399, r50400, MPFR_RNDN);
        mpfr_mul(r50414, r50407, r50413, MPFR_RNDN);
        mpfr_sub(r50415, r50406, r50414, MPFR_RNDN);
        ;
        mpfr_set_si(r50417, mpfr_cmp(r50395, r50416) <= 0, MPFR_RNDN);
        mpfr_mul(r50418, r50401, r50407, MPFR_RNDN);
        ;
        mpfr_div(r50420, r50419, r50402, MPFR_RNDN);
        mpfr_mul(r50421, r50418, r50420, MPFR_RNDN);
        mpfr_add(r50422, r50398, r50421, MPFR_RNDN);
        ;
        mpfr_set_si(r50424, mpfr_cmp(r50395, r50423) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r50424, MPFR_RNDN)) { mpfr_set(r50425, r50415, MPFR_RNDN); } else { mpfr_set(r50425, r50410, MPFR_RNDN); };
        if (mpfr_get_si(r50417, MPFR_RNDN)) { mpfr_set(r50426, r50422, MPFR_RNDN); } else { mpfr_set(r50426, r50425, MPFR_RNDN); };
        if (mpfr_get_si(r50412, MPFR_RNDN)) { mpfr_set(r50427, r50415, MPFR_RNDN); } else { mpfr_set(r50427, r50426, MPFR_RNDN); };
        if (mpfr_get_si(r50397, MPFR_RNDN)) { mpfr_set(r50428, r50410, MPFR_RNDN); } else { mpfr_set(r50428, r50427, MPFR_RNDN); };
        return mpfr_get_d(r50428, MPFR_RNDN);
}

static mpfr_t r50429, r50430, r50431, r50432, r50433, r50434, r50435, r50436, r50437, r50438, r50439, r50440, r50441, r50442, r50443, r50444, r50445, r50446, r50447, r50448, r50449, r50450, r50451, r50452, r50453, r50454, r50455, r50456, r50457, r50458, r50459, r50460, r50461, r50462;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1680);
        mpfr_init(r50429);
        mpfr_init_set_str(r50430, "-5.431975634518425e-180", 10, MPFR_RNDN);
        mpfr_init(r50431);
        mpfr_init(r50432);
        mpfr_init(r50433);
        mpfr_init(r50434);
        mpfr_init(r50435);
        mpfr_init(r50436);
        mpfr_init(r50437);
        mpfr_init(r50438);
        mpfr_init(r50439);
        mpfr_init(r50440);
        mpfr_init(r50441);
        mpfr_init(r50442);
        mpfr_init(r50443);
        mpfr_init(r50444);
        mpfr_init_set_str(r50445, "4.364749231637734e-136", 10, MPFR_RNDN);
        mpfr_init(r50446);
        mpfr_init(r50447);
        mpfr_init(r50448);
        mpfr_init(r50449);
        mpfr_init_set_str(r50450, "2.1615660863766092e-41", 10, MPFR_RNDN);
        mpfr_init(r50451);
        mpfr_init(r50452);
        mpfr_init_set_str(r50453, "1", 10, MPFR_RNDN);
        mpfr_init(r50454);
        mpfr_init(r50455);
        mpfr_init(r50456);
        mpfr_init_set_str(r50457, "92563423223.6119", 10, MPFR_RNDN);
        mpfr_init(r50458);
        mpfr_init(r50459);
        mpfr_init(r50460);
        mpfr_init(r50461);
        mpfr_init(r50462);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50429, a, MPFR_RNDN);
        ;
        mpfr_set_si(r50431, mpfr_cmp(r50429, r50430) <= 0, MPFR_RNDN);
        mpfr_set_d(r50432, x, MPFR_RNDN);
        mpfr_set_d(r50433, y, MPFR_RNDN);
        mpfr_set_d(r50434, z, MPFR_RNDN);
        mpfr_sub(r50435, r50433, r50434, MPFR_RNDN);
        mpfr_sub(r50436, r50429, r50434, MPFR_RNDN);
        mpfr_cbrt(r50437, r50436, MPFR_RNDN);
        mpfr_mul(r50438, r50437, r50437, MPFR_RNDN);
        mpfr_div(r50439, r50435, r50438, MPFR_RNDN);
        mpfr_set_d(r50440, t, MPFR_RNDN);
        mpfr_sub(r50441, r50440, r50432, MPFR_RNDN);
        mpfr_div(r50442, r50441, r50437, MPFR_RNDN);
        mpfr_mul(r50443, r50439, r50442, MPFR_RNDN);
        mpfr_add(r50444, r50432, r50443, MPFR_RNDN);
        ;
        mpfr_set_si(r50446, mpfr_cmp(r50429, r50445) <= 0, MPFR_RNDN);
        mpfr_div(r50447, r50433, r50434, MPFR_RNDN);
        mpfr_mul(r50448, r50441, r50447, MPFR_RNDN);
        mpfr_sub(r50449, r50440, r50448, MPFR_RNDN);
        ;
        mpfr_set_si(r50451, mpfr_cmp(r50429, r50450) <= 0, MPFR_RNDN);
        mpfr_mul(r50452, r50435, r50441, MPFR_RNDN);
        ;
        mpfr_div(r50454, r50453, r50436, MPFR_RNDN);
        mpfr_mul(r50455, r50452, r50454, MPFR_RNDN);
        mpfr_add(r50456, r50432, r50455, MPFR_RNDN);
        ;
        mpfr_set_si(r50458, mpfr_cmp(r50429, r50457) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r50458, MPFR_RNDN)) { mpfr_set(r50459, r50449, MPFR_RNDN); } else { mpfr_set(r50459, r50444, MPFR_RNDN); };
        if (mpfr_get_si(r50451, MPFR_RNDN)) { mpfr_set(r50460, r50456, MPFR_RNDN); } else { mpfr_set(r50460, r50459, MPFR_RNDN); };
        if (mpfr_get_si(r50446, MPFR_RNDN)) { mpfr_set(r50461, r50449, MPFR_RNDN); } else { mpfr_set(r50461, r50460, MPFR_RNDN); };
        if (mpfr_get_si(r50431, MPFR_RNDN)) { mpfr_set(r50462, r50444, MPFR_RNDN); } else { mpfr_set(r50462, r50461, MPFR_RNDN); };
        return mpfr_get_d(r50462, MPFR_RNDN);
}

