#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 r50461 = x;
        float r50462 = y;
        float r50463 = r50462 - r50461;
        float r50464 = z;
        float r50465 = t;
        float r50466 = r50464 - r50465;
        float r50467 = r50463 * r50466;
        float r50468 = a;
        float r50469 = r50468 - r50465;
        float r50470 = r50467 / r50469;
        float r50471 = r50461 + r50470;
        return r50471;
}

double f_id(double x, double y, double z, double t, double a) {
        double r50472 = x;
        double r50473 = y;
        double r50474 = r50473 - r50472;
        double r50475 = z;
        double r50476 = t;
        double r50477 = r50475 - r50476;
        double r50478 = r50474 * r50477;
        double r50479 = a;
        double r50480 = r50479 - r50476;
        double r50481 = r50478 / r50480;
        double r50482 = r50472 + r50481;
        return r50482;
}


double f_of(float x, float y, float z, float t, float a) {
        float r50483 = t;
        float r50484 = -1.6330932831281188e+188;
        bool r50485 = r50483 <= r50484;
        float r50486 = y;
        float r50487 = x;
        float r50488 = r50486 - r50487;
        float r50489 = z;
        float r50490 = r50489 / r50483;
        float r50491 = r50488 * r50490;
        float r50492 = r50486 - r50491;
        float r50493 = 1.297238936877692e+183;
        bool r50494 = r50483 <= r50493;
        float r50495 = 1;
        float r50496 = r50488 / r50495;
        float r50497 = r50489 - r50483;
        float r50498 = a;
        float r50499 = r50498 - r50483;
        float r50500 = r50497 / r50499;
        float r50501 = r50496 * r50500;
        float r50502 = r50487 + r50501;
        float r50503 = r50494 ? r50502 : r50492;
        float r50504 = r50485 ? r50492 : r50503;
        return r50504;
}

double f_od(double x, double y, double z, double t, double a) {
        double r50505 = t;
        double r50506 = -1.6330932831281188e+188;
        bool r50507 = r50505 <= r50506;
        double r50508 = y;
        double r50509 = x;
        double r50510 = r50508 - r50509;
        double r50511 = z;
        double r50512 = r50511 / r50505;
        double r50513 = r50510 * r50512;
        double r50514 = r50508 - r50513;
        double r50515 = 1.297238936877692e+183;
        bool r50516 = r50505 <= r50515;
        double r50517 = 1;
        double r50518 = r50510 / r50517;
        double r50519 = r50511 - r50505;
        double r50520 = a;
        double r50521 = r50520 - r50505;
        double r50522 = r50519 / r50521;
        double r50523 = r50518 * r50522;
        double r50524 = r50509 + r50523;
        double r50525 = r50516 ? r50524 : r50514;
        double r50526 = r50507 ? r50514 : r50525;
        return r50526;
}

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 r50527, r50528, r50529, r50530, r50531, r50532, r50533, r50534, r50535, r50536, r50537;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50527);
        mpfr_init(r50528);
        mpfr_init(r50529);
        mpfr_init(r50530);
        mpfr_init(r50531);
        mpfr_init(r50532);
        mpfr_init(r50533);
        mpfr_init(r50534);
        mpfr_init(r50535);
        mpfr_init(r50536);
        mpfr_init(r50537);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50527, x, MPFR_RNDN);
        mpfr_set_d(r50528, y, MPFR_RNDN);
        mpfr_sub(r50529, r50528, r50527, MPFR_RNDN);
        mpfr_set_d(r50530, z, MPFR_RNDN);
        mpfr_set_d(r50531, t, MPFR_RNDN);
        mpfr_sub(r50532, r50530, r50531, MPFR_RNDN);
        mpfr_mul(r50533, r50529, r50532, MPFR_RNDN);
        mpfr_set_d(r50534, a, MPFR_RNDN);
        mpfr_sub(r50535, r50534, r50531, MPFR_RNDN);
        mpfr_div(r50536, r50533, r50535, MPFR_RNDN);
        mpfr_add(r50537, r50527, r50536, MPFR_RNDN);
        return mpfr_get_d(r50537, MPFR_RNDN);
}

static mpfr_t r50538, r50539, r50540, r50541, r50542, r50543, r50544, r50545, r50546, r50547, r50548, r50549, r50550, r50551, r50552, r50553, r50554, r50555, r50556, r50557, r50558, r50559;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50538);
        mpfr_init_set_str(r50539, "-1.6330932831281188e+188", 10, MPFR_RNDN);
        mpfr_init(r50540);
        mpfr_init(r50541);
        mpfr_init(r50542);
        mpfr_init(r50543);
        mpfr_init(r50544);
        mpfr_init(r50545);
        mpfr_init(r50546);
        mpfr_init(r50547);
        mpfr_init_set_str(r50548, "1.297238936877692e+183", 10, MPFR_RNDN);
        mpfr_init(r50549);
        mpfr_init_set_str(r50550, "1", 10, MPFR_RNDN);
        mpfr_init(r50551);
        mpfr_init(r50552);
        mpfr_init(r50553);
        mpfr_init(r50554);
        mpfr_init(r50555);
        mpfr_init(r50556);
        mpfr_init(r50557);
        mpfr_init(r50558);
        mpfr_init(r50559);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50538, t, MPFR_RNDN);
        ;
        mpfr_set_si(r50540, mpfr_cmp(r50538, r50539) <= 0, MPFR_RNDN);
        mpfr_set_d(r50541, y, MPFR_RNDN);
        mpfr_set_d(r50542, x, MPFR_RNDN);
        mpfr_sub(r50543, r50541, r50542, MPFR_RNDN);
        mpfr_set_d(r50544, z, MPFR_RNDN);
        mpfr_div(r50545, r50544, r50538, MPFR_RNDN);
        mpfr_mul(r50546, r50543, r50545, MPFR_RNDN);
        mpfr_sub(r50547, r50541, r50546, MPFR_RNDN);
        ;
        mpfr_set_si(r50549, mpfr_cmp(r50538, r50548) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r50551, r50543, r50550, MPFR_RNDN);
        mpfr_sub(r50552, r50544, r50538, MPFR_RNDN);
        mpfr_set_d(r50553, a, MPFR_RNDN);
        mpfr_sub(r50554, r50553, r50538, MPFR_RNDN);
        mpfr_div(r50555, r50552, r50554, MPFR_RNDN);
        mpfr_mul(r50556, r50551, r50555, MPFR_RNDN);
        mpfr_add(r50557, r50542, r50556, MPFR_RNDN);
        if (mpfr_get_si(r50549, MPFR_RNDN)) { mpfr_set(r50558, r50557, MPFR_RNDN); } else { mpfr_set(r50558, r50547, MPFR_RNDN); };
        if (mpfr_get_si(r50540, MPFR_RNDN)) { mpfr_set(r50559, r50547, MPFR_RNDN); } else { mpfr_set(r50559, r50558, MPFR_RNDN); };
        return mpfr_get_d(r50559, MPFR_RNDN);
}

static mpfr_t r50560, r50561, r50562, r50563, r50564, r50565, r50566, r50567, r50568, r50569, r50570, r50571, r50572, r50573, r50574, r50575, r50576, r50577, r50578, r50579, r50580, r50581;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50560);
        mpfr_init_set_str(r50561, "-1.6330932831281188e+188", 10, MPFR_RNDN);
        mpfr_init(r50562);
        mpfr_init(r50563);
        mpfr_init(r50564);
        mpfr_init(r50565);
        mpfr_init(r50566);
        mpfr_init(r50567);
        mpfr_init(r50568);
        mpfr_init(r50569);
        mpfr_init_set_str(r50570, "1.297238936877692e+183", 10, MPFR_RNDN);
        mpfr_init(r50571);
        mpfr_init_set_str(r50572, "1", 10, MPFR_RNDN);
        mpfr_init(r50573);
        mpfr_init(r50574);
        mpfr_init(r50575);
        mpfr_init(r50576);
        mpfr_init(r50577);
        mpfr_init(r50578);
        mpfr_init(r50579);
        mpfr_init(r50580);
        mpfr_init(r50581);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50560, t, MPFR_RNDN);
        ;
        mpfr_set_si(r50562, mpfr_cmp(r50560, r50561) <= 0, MPFR_RNDN);
        mpfr_set_d(r50563, y, MPFR_RNDN);
        mpfr_set_d(r50564, x, MPFR_RNDN);
        mpfr_sub(r50565, r50563, r50564, MPFR_RNDN);
        mpfr_set_d(r50566, z, MPFR_RNDN);
        mpfr_div(r50567, r50566, r50560, MPFR_RNDN);
        mpfr_mul(r50568, r50565, r50567, MPFR_RNDN);
        mpfr_sub(r50569, r50563, r50568, MPFR_RNDN);
        ;
        mpfr_set_si(r50571, mpfr_cmp(r50560, r50570) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r50573, r50565, r50572, MPFR_RNDN);
        mpfr_sub(r50574, r50566, r50560, MPFR_RNDN);
        mpfr_set_d(r50575, a, MPFR_RNDN);
        mpfr_sub(r50576, r50575, r50560, MPFR_RNDN);
        mpfr_div(r50577, r50574, r50576, MPFR_RNDN);
        mpfr_mul(r50578, r50573, r50577, MPFR_RNDN);
        mpfr_add(r50579, r50564, r50578, MPFR_RNDN);
        if (mpfr_get_si(r50571, MPFR_RNDN)) { mpfr_set(r50580, r50579, MPFR_RNDN); } else { mpfr_set(r50580, r50569, MPFR_RNDN); };
        if (mpfr_get_si(r50562, MPFR_RNDN)) { mpfr_set(r50581, r50569, MPFR_RNDN); } else { mpfr_set(r50581, r50580, MPFR_RNDN); };
        return mpfr_get_d(r50581, MPFR_RNDN);
}

