#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 r50382 = x;
        float r50383 = y;
        float r50384 = z;
        float r50385 = r50383 - r50384;
        float r50386 = t;
        float r50387 = r50386 - r50382;
        float r50388 = r50385 * r50387;
        float r50389 = a;
        float r50390 = r50389 - r50384;
        float r50391 = r50388 / r50390;
        float r50392 = r50382 + r50391;
        return r50392;
}

double f_id(double x, double y, double z, double t, double a) {
        double r50393 = x;
        double r50394 = y;
        double r50395 = z;
        double r50396 = r50394 - r50395;
        double r50397 = t;
        double r50398 = r50397 - r50393;
        double r50399 = r50396 * r50398;
        double r50400 = a;
        double r50401 = r50400 - r50395;
        double r50402 = r50399 / r50401;
        double r50403 = r50393 + r50402;
        return r50403;
}


double f_of(float x, float y, float z, float t, float a) {
        float r50404 = a;
        float r50405 = -5.431975634518425e-180;
        bool r50406 = r50404 <= r50405;
        float r50407 = x;
        float r50408 = y;
        float r50409 = z;
        float r50410 = r50408 - r50409;
        float r50411 = r50404 - r50409;
        float r50412 = cbrt(r50411);
        float r50413 = r50412 * r50412;
        float r50414 = r50410 / r50413;
        float r50415 = t;
        float r50416 = r50415 - r50407;
        float r50417 = r50416 / r50412;
        float r50418 = r50414 * r50417;
        float r50419 = r50407 + r50418;
        float r50420 = 4.364749231637734e-136;
        bool r50421 = r50404 <= r50420;
        float r50422 = r50408 / r50409;
        float r50423 = r50416 * r50422;
        float r50424 = r50415 - r50423;
        float r50425 = 2.1615660863766092e-41;
        bool r50426 = r50404 <= r50425;
        float r50427 = r50410 * r50416;
        float r50428 = 1;
        float r50429 = r50428 / r50411;
        float r50430 = r50427 * r50429;
        float r50431 = r50407 + r50430;
        float r50432 = 92563423223.6119;
        bool r50433 = r50404 <= r50432;
        float r50434 = r50433 ? r50424 : r50419;
        float r50435 = r50426 ? r50431 : r50434;
        float r50436 = r50421 ? r50424 : r50435;
        float r50437 = r50406 ? r50419 : r50436;
        return r50437;
}

double f_od(double x, double y, double z, double t, double a) {
        double r50438 = a;
        double r50439 = -5.431975634518425e-180;
        bool r50440 = r50438 <= r50439;
        double r50441 = x;
        double r50442 = y;
        double r50443 = z;
        double r50444 = r50442 - r50443;
        double r50445 = r50438 - r50443;
        double r50446 = cbrt(r50445);
        double r50447 = r50446 * r50446;
        double r50448 = r50444 / r50447;
        double r50449 = t;
        double r50450 = r50449 - r50441;
        double r50451 = r50450 / r50446;
        double r50452 = r50448 * r50451;
        double r50453 = r50441 + r50452;
        double r50454 = 4.364749231637734e-136;
        bool r50455 = r50438 <= r50454;
        double r50456 = r50442 / r50443;
        double r50457 = r50450 * r50456;
        double r50458 = r50449 - r50457;
        double r50459 = 2.1615660863766092e-41;
        bool r50460 = r50438 <= r50459;
        double r50461 = r50444 * r50450;
        double r50462 = 1;
        double r50463 = r50462 / r50445;
        double r50464 = r50461 * r50463;
        double r50465 = r50441 + r50464;
        double r50466 = 92563423223.6119;
        bool r50467 = r50438 <= r50466;
        double r50468 = r50467 ? r50458 : r50453;
        double r50469 = r50460 ? r50465 : r50468;
        double r50470 = r50455 ? r50458 : r50469;
        double r50471 = r50440 ? r50453 : r50470;
        return r50471;
}

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 r50472, r50473, r50474, r50475, r50476, r50477, r50478, r50479, r50480, r50481, r50482;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1680);
        mpfr_init(r50472);
        mpfr_init(r50473);
        mpfr_init(r50474);
        mpfr_init(r50475);
        mpfr_init(r50476);
        mpfr_init(r50477);
        mpfr_init(r50478);
        mpfr_init(r50479);
        mpfr_init(r50480);
        mpfr_init(r50481);
        mpfr_init(r50482);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50472, x, MPFR_RNDN);
        mpfr_set_d(r50473, y, MPFR_RNDN);
        mpfr_set_d(r50474, z, MPFR_RNDN);
        mpfr_sub(r50475, r50473, r50474, MPFR_RNDN);
        mpfr_set_d(r50476, t, MPFR_RNDN);
        mpfr_sub(r50477, r50476, r50472, MPFR_RNDN);
        mpfr_mul(r50478, r50475, r50477, MPFR_RNDN);
        mpfr_set_d(r50479, a, MPFR_RNDN);
        mpfr_sub(r50480, r50479, r50474, MPFR_RNDN);
        mpfr_div(r50481, r50478, r50480, MPFR_RNDN);
        mpfr_add(r50482, r50472, r50481, MPFR_RNDN);
        return mpfr_get_d(r50482, MPFR_RNDN);
}

static mpfr_t r50483, r50484, r50485, r50486, r50487, r50488, r50489, r50490, r50491, r50492, r50493, r50494, r50495, r50496, r50497, r50498, r50499, r50500, r50501, r50502, r50503, r50504, r50505, r50506, r50507, r50508, r50509, r50510, r50511, r50512, r50513, r50514, r50515, r50516;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1680);
        mpfr_init(r50483);
        mpfr_init_set_str(r50484, "-5.431975634518425e-180", 10, MPFR_RNDN);
        mpfr_init(r50485);
        mpfr_init(r50486);
        mpfr_init(r50487);
        mpfr_init(r50488);
        mpfr_init(r50489);
        mpfr_init(r50490);
        mpfr_init(r50491);
        mpfr_init(r50492);
        mpfr_init(r50493);
        mpfr_init(r50494);
        mpfr_init(r50495);
        mpfr_init(r50496);
        mpfr_init(r50497);
        mpfr_init(r50498);
        mpfr_init_set_str(r50499, "4.364749231637734e-136", 10, MPFR_RNDN);
        mpfr_init(r50500);
        mpfr_init(r50501);
        mpfr_init(r50502);
        mpfr_init(r50503);
        mpfr_init_set_str(r50504, "2.1615660863766092e-41", 10, MPFR_RNDN);
        mpfr_init(r50505);
        mpfr_init(r50506);
        mpfr_init_set_str(r50507, "1", 10, MPFR_RNDN);
        mpfr_init(r50508);
        mpfr_init(r50509);
        mpfr_init(r50510);
        mpfr_init_set_str(r50511, "92563423223.6119", 10, MPFR_RNDN);
        mpfr_init(r50512);
        mpfr_init(r50513);
        mpfr_init(r50514);
        mpfr_init(r50515);
        mpfr_init(r50516);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50483, a, MPFR_RNDN);
        ;
        mpfr_set_si(r50485, mpfr_cmp(r50483, r50484) <= 0, MPFR_RNDN);
        mpfr_set_d(r50486, x, MPFR_RNDN);
        mpfr_set_d(r50487, y, MPFR_RNDN);
        mpfr_set_d(r50488, z, MPFR_RNDN);
        mpfr_sub(r50489, r50487, r50488, MPFR_RNDN);
        mpfr_sub(r50490, r50483, r50488, MPFR_RNDN);
        mpfr_cbrt(r50491, r50490, MPFR_RNDN);
        mpfr_mul(r50492, r50491, r50491, MPFR_RNDN);
        mpfr_div(r50493, r50489, r50492, MPFR_RNDN);
        mpfr_set_d(r50494, t, MPFR_RNDN);
        mpfr_sub(r50495, r50494, r50486, MPFR_RNDN);
        mpfr_div(r50496, r50495, r50491, MPFR_RNDN);
        mpfr_mul(r50497, r50493, r50496, MPFR_RNDN);
        mpfr_add(r50498, r50486, r50497, MPFR_RNDN);
        ;
        mpfr_set_si(r50500, mpfr_cmp(r50483, r50499) <= 0, MPFR_RNDN);
        mpfr_div(r50501, r50487, r50488, MPFR_RNDN);
        mpfr_mul(r50502, r50495, r50501, MPFR_RNDN);
        mpfr_sub(r50503, r50494, r50502, MPFR_RNDN);
        ;
        mpfr_set_si(r50505, mpfr_cmp(r50483, r50504) <= 0, MPFR_RNDN);
        mpfr_mul(r50506, r50489, r50495, MPFR_RNDN);
        ;
        mpfr_div(r50508, r50507, r50490, MPFR_RNDN);
        mpfr_mul(r50509, r50506, r50508, MPFR_RNDN);
        mpfr_add(r50510, r50486, r50509, MPFR_RNDN);
        ;
        mpfr_set_si(r50512, mpfr_cmp(r50483, r50511) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r50512, MPFR_RNDN)) { mpfr_set(r50513, r50503, MPFR_RNDN); } else { mpfr_set(r50513, r50498, MPFR_RNDN); };
        if (mpfr_get_si(r50505, MPFR_RNDN)) { mpfr_set(r50514, r50510, MPFR_RNDN); } else { mpfr_set(r50514, r50513, MPFR_RNDN); };
        if (mpfr_get_si(r50500, MPFR_RNDN)) { mpfr_set(r50515, r50503, MPFR_RNDN); } else { mpfr_set(r50515, r50514, MPFR_RNDN); };
        if (mpfr_get_si(r50485, MPFR_RNDN)) { mpfr_set(r50516, r50498, MPFR_RNDN); } else { mpfr_set(r50516, r50515, MPFR_RNDN); };
        return mpfr_get_d(r50516, MPFR_RNDN);
}

static mpfr_t r50517, r50518, r50519, r50520, r50521, r50522, r50523, r50524, r50525, r50526, r50527, r50528, r50529, r50530, r50531, r50532, r50533, r50534, r50535, r50536, r50537, r50538, r50539, r50540, r50541, r50542, r50543, r50544, r50545, r50546, r50547, r50548, r50549, r50550;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1680);
        mpfr_init(r50517);
        mpfr_init_set_str(r50518, "-5.431975634518425e-180", 10, MPFR_RNDN);
        mpfr_init(r50519);
        mpfr_init(r50520);
        mpfr_init(r50521);
        mpfr_init(r50522);
        mpfr_init(r50523);
        mpfr_init(r50524);
        mpfr_init(r50525);
        mpfr_init(r50526);
        mpfr_init(r50527);
        mpfr_init(r50528);
        mpfr_init(r50529);
        mpfr_init(r50530);
        mpfr_init(r50531);
        mpfr_init(r50532);
        mpfr_init_set_str(r50533, "4.364749231637734e-136", 10, MPFR_RNDN);
        mpfr_init(r50534);
        mpfr_init(r50535);
        mpfr_init(r50536);
        mpfr_init(r50537);
        mpfr_init_set_str(r50538, "2.1615660863766092e-41", 10, MPFR_RNDN);
        mpfr_init(r50539);
        mpfr_init(r50540);
        mpfr_init_set_str(r50541, "1", 10, MPFR_RNDN);
        mpfr_init(r50542);
        mpfr_init(r50543);
        mpfr_init(r50544);
        mpfr_init_set_str(r50545, "92563423223.6119", 10, MPFR_RNDN);
        mpfr_init(r50546);
        mpfr_init(r50547);
        mpfr_init(r50548);
        mpfr_init(r50549);
        mpfr_init(r50550);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50517, a, MPFR_RNDN);
        ;
        mpfr_set_si(r50519, mpfr_cmp(r50517, r50518) <= 0, MPFR_RNDN);
        mpfr_set_d(r50520, x, MPFR_RNDN);
        mpfr_set_d(r50521, y, MPFR_RNDN);
        mpfr_set_d(r50522, z, MPFR_RNDN);
        mpfr_sub(r50523, r50521, r50522, MPFR_RNDN);
        mpfr_sub(r50524, r50517, r50522, MPFR_RNDN);
        mpfr_cbrt(r50525, r50524, MPFR_RNDN);
        mpfr_mul(r50526, r50525, r50525, MPFR_RNDN);
        mpfr_div(r50527, r50523, r50526, MPFR_RNDN);
        mpfr_set_d(r50528, t, MPFR_RNDN);
        mpfr_sub(r50529, r50528, r50520, MPFR_RNDN);
        mpfr_div(r50530, r50529, r50525, MPFR_RNDN);
        mpfr_mul(r50531, r50527, r50530, MPFR_RNDN);
        mpfr_add(r50532, r50520, r50531, MPFR_RNDN);
        ;
        mpfr_set_si(r50534, mpfr_cmp(r50517, r50533) <= 0, MPFR_RNDN);
        mpfr_div(r50535, r50521, r50522, MPFR_RNDN);
        mpfr_mul(r50536, r50529, r50535, MPFR_RNDN);
        mpfr_sub(r50537, r50528, r50536, MPFR_RNDN);
        ;
        mpfr_set_si(r50539, mpfr_cmp(r50517, r50538) <= 0, MPFR_RNDN);
        mpfr_mul(r50540, r50523, r50529, MPFR_RNDN);
        ;
        mpfr_div(r50542, r50541, r50524, MPFR_RNDN);
        mpfr_mul(r50543, r50540, r50542, MPFR_RNDN);
        mpfr_add(r50544, r50520, r50543, MPFR_RNDN);
        ;
        mpfr_set_si(r50546, mpfr_cmp(r50517, r50545) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r50546, MPFR_RNDN)) { mpfr_set(r50547, r50537, MPFR_RNDN); } else { mpfr_set(r50547, r50532, MPFR_RNDN); };
        if (mpfr_get_si(r50539, MPFR_RNDN)) { mpfr_set(r50548, r50544, MPFR_RNDN); } else { mpfr_set(r50548, r50547, MPFR_RNDN); };
        if (mpfr_get_si(r50534, MPFR_RNDN)) { mpfr_set(r50549, r50537, MPFR_RNDN); } else { mpfr_set(r50549, r50548, MPFR_RNDN); };
        if (mpfr_get_si(r50519, MPFR_RNDN)) { mpfr_set(r50550, r50532, MPFR_RNDN); } else { mpfr_set(r50550, r50549, MPFR_RNDN); };
        return mpfr_get_d(r50550, MPFR_RNDN);
}

