#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 r50582 = x;
        float r50583 = y;
        float r50584 = z;
        float r50585 = r50583 - r50584;
        float r50586 = t;
        float r50587 = r50586 - r50582;
        float r50588 = r50585 * r50587;
        float r50589 = a;
        float r50590 = r50589 - r50584;
        float r50591 = r50588 / r50590;
        float r50592 = r50582 + r50591;
        return r50592;
}

double f_id(double x, double y, double z, double t, double a) {
        double r50593 = x;
        double r50594 = y;
        double r50595 = z;
        double r50596 = r50594 - r50595;
        double r50597 = t;
        double r50598 = r50597 - r50593;
        double r50599 = r50596 * r50598;
        double r50600 = a;
        double r50601 = r50600 - r50595;
        double r50602 = r50599 / r50601;
        double r50603 = r50593 + r50602;
        return r50603;
}


double f_of(float x, float y, float z, float t, float a) {
        float r50604 = a;
        float r50605 = -4.2533961552866985e-171;
        bool r50606 = r50604 <= r50605;
        float r50607 = x;
        float r50608 = y;
        float r50609 = z;
        float r50610 = r50608 - r50609;
        float r50611 = r50604 - r50609;
        float r50612 = cbrt(r50611);
        float r50613 = r50612 * r50612;
        float r50614 = r50610 / r50613;
        float r50615 = t;
        float r50616 = r50615 - r50607;
        float r50617 = r50616 / r50612;
        float r50618 = r50614 * r50617;
        float r50619 = r50607 + r50618;
        float r50620 = 8.183905144226627e-137;
        bool r50621 = r50604 <= r50620;
        float r50622 = r50608 / r50609;
        float r50623 = r50616 * r50622;
        float r50624 = r50615 - r50623;
        float r50625 = 1.215880926283839e-41;
        bool r50626 = r50604 <= r50625;
        float r50627 = r50610 * r50616;
        float r50628 = 1;
        float r50629 = r50628 / r50611;
        float r50630 = r50627 * r50629;
        float r50631 = r50607 + r50630;
        float r50632 = 1820749428.2327986;
        bool r50633 = r50604 <= r50632;
        float r50634 = r50633 ? r50624 : r50619;
        float r50635 = r50626 ? r50631 : r50634;
        float r50636 = r50621 ? r50624 : r50635;
        float r50637 = r50606 ? r50619 : r50636;
        return r50637;
}

double f_od(double x, double y, double z, double t, double a) {
        double r50638 = a;
        double r50639 = -4.2533961552866985e-171;
        bool r50640 = r50638 <= r50639;
        double r50641 = x;
        double r50642 = y;
        double r50643 = z;
        double r50644 = r50642 - r50643;
        double r50645 = r50638 - r50643;
        double r50646 = cbrt(r50645);
        double r50647 = r50646 * r50646;
        double r50648 = r50644 / r50647;
        double r50649 = t;
        double r50650 = r50649 - r50641;
        double r50651 = r50650 / r50646;
        double r50652 = r50648 * r50651;
        double r50653 = r50641 + r50652;
        double r50654 = 8.183905144226627e-137;
        bool r50655 = r50638 <= r50654;
        double r50656 = r50642 / r50643;
        double r50657 = r50650 * r50656;
        double r50658 = r50649 - r50657;
        double r50659 = 1.215880926283839e-41;
        bool r50660 = r50638 <= r50659;
        double r50661 = r50644 * r50650;
        double r50662 = 1;
        double r50663 = r50662 / r50645;
        double r50664 = r50661 * r50663;
        double r50665 = r50641 + r50664;
        double r50666 = 1820749428.2327986;
        bool r50667 = r50638 <= r50666;
        double r50668 = r50667 ? r50658 : r50653;
        double r50669 = r50660 ? r50665 : r50668;
        double r50670 = r50655 ? r50658 : r50669;
        double r50671 = r50640 ? r50653 : r50670;
        return r50671;
}

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 r50672, r50673, r50674, r50675, r50676, r50677, r50678, r50679, r50680, r50681, r50682;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50672);
        mpfr_init(r50673);
        mpfr_init(r50674);
        mpfr_init(r50675);
        mpfr_init(r50676);
        mpfr_init(r50677);
        mpfr_init(r50678);
        mpfr_init(r50679);
        mpfr_init(r50680);
        mpfr_init(r50681);
        mpfr_init(r50682);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50672, x, MPFR_RNDN);
        mpfr_set_d(r50673, y, MPFR_RNDN);
        mpfr_set_d(r50674, z, MPFR_RNDN);
        mpfr_sub(r50675, r50673, r50674, MPFR_RNDN);
        mpfr_set_d(r50676, t, MPFR_RNDN);
        mpfr_sub(r50677, r50676, r50672, MPFR_RNDN);
        mpfr_mul(r50678, r50675, r50677, MPFR_RNDN);
        mpfr_set_d(r50679, a, MPFR_RNDN);
        mpfr_sub(r50680, r50679, r50674, MPFR_RNDN);
        mpfr_div(r50681, r50678, r50680, MPFR_RNDN);
        mpfr_add(r50682, r50672, r50681, MPFR_RNDN);
        return mpfr_get_d(r50682, MPFR_RNDN);
}

static mpfr_t r50683, r50684, r50685, r50686, r50687, r50688, r50689, r50690, r50691, r50692, r50693, r50694, r50695, r50696, r50697, r50698, r50699, r50700, r50701, r50702, r50703, r50704, r50705, r50706, r50707, r50708, r50709, r50710, r50711, r50712, r50713, r50714, r50715, r50716;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50683);
        mpfr_init_set_str(r50684, "-4.2533961552866985e-171", 10, MPFR_RNDN);
        mpfr_init(r50685);
        mpfr_init(r50686);
        mpfr_init(r50687);
        mpfr_init(r50688);
        mpfr_init(r50689);
        mpfr_init(r50690);
        mpfr_init(r50691);
        mpfr_init(r50692);
        mpfr_init(r50693);
        mpfr_init(r50694);
        mpfr_init(r50695);
        mpfr_init(r50696);
        mpfr_init(r50697);
        mpfr_init(r50698);
        mpfr_init_set_str(r50699, "8.183905144226627e-137", 10, MPFR_RNDN);
        mpfr_init(r50700);
        mpfr_init(r50701);
        mpfr_init(r50702);
        mpfr_init(r50703);
        mpfr_init_set_str(r50704, "1.215880926283839e-41", 10, MPFR_RNDN);
        mpfr_init(r50705);
        mpfr_init(r50706);
        mpfr_init_set_str(r50707, "1", 10, MPFR_RNDN);
        mpfr_init(r50708);
        mpfr_init(r50709);
        mpfr_init(r50710);
        mpfr_init_set_str(r50711, "1820749428.2327986", 10, MPFR_RNDN);
        mpfr_init(r50712);
        mpfr_init(r50713);
        mpfr_init(r50714);
        mpfr_init(r50715);
        mpfr_init(r50716);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50683, a, MPFR_RNDN);
        ;
        mpfr_set_si(r50685, mpfr_cmp(r50683, r50684) <= 0, MPFR_RNDN);
        mpfr_set_d(r50686, x, MPFR_RNDN);
        mpfr_set_d(r50687, y, MPFR_RNDN);
        mpfr_set_d(r50688, z, MPFR_RNDN);
        mpfr_sub(r50689, r50687, r50688, MPFR_RNDN);
        mpfr_sub(r50690, r50683, r50688, MPFR_RNDN);
        mpfr_cbrt(r50691, r50690, MPFR_RNDN);
        mpfr_mul(r50692, r50691, r50691, MPFR_RNDN);
        mpfr_div(r50693, r50689, r50692, MPFR_RNDN);
        mpfr_set_d(r50694, t, MPFR_RNDN);
        mpfr_sub(r50695, r50694, r50686, MPFR_RNDN);
        mpfr_div(r50696, r50695, r50691, MPFR_RNDN);
        mpfr_mul(r50697, r50693, r50696, MPFR_RNDN);
        mpfr_add(r50698, r50686, r50697, MPFR_RNDN);
        ;
        mpfr_set_si(r50700, mpfr_cmp(r50683, r50699) <= 0, MPFR_RNDN);
        mpfr_div(r50701, r50687, r50688, MPFR_RNDN);
        mpfr_mul(r50702, r50695, r50701, MPFR_RNDN);
        mpfr_sub(r50703, r50694, r50702, MPFR_RNDN);
        ;
        mpfr_set_si(r50705, mpfr_cmp(r50683, r50704) <= 0, MPFR_RNDN);
        mpfr_mul(r50706, r50689, r50695, MPFR_RNDN);
        ;
        mpfr_div(r50708, r50707, r50690, MPFR_RNDN);
        mpfr_mul(r50709, r50706, r50708, MPFR_RNDN);
        mpfr_add(r50710, r50686, r50709, MPFR_RNDN);
        ;
        mpfr_set_si(r50712, mpfr_cmp(r50683, r50711) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r50712, MPFR_RNDN)) { mpfr_set(r50713, r50703, MPFR_RNDN); } else { mpfr_set(r50713, r50698, MPFR_RNDN); };
        if (mpfr_get_si(r50705, MPFR_RNDN)) { mpfr_set(r50714, r50710, MPFR_RNDN); } else { mpfr_set(r50714, r50713, MPFR_RNDN); };
        if (mpfr_get_si(r50700, MPFR_RNDN)) { mpfr_set(r50715, r50703, MPFR_RNDN); } else { mpfr_set(r50715, r50714, MPFR_RNDN); };
        if (mpfr_get_si(r50685, MPFR_RNDN)) { mpfr_set(r50716, r50698, MPFR_RNDN); } else { mpfr_set(r50716, r50715, MPFR_RNDN); };
        return mpfr_get_d(r50716, MPFR_RNDN);
}

static mpfr_t r50717, r50718, r50719, r50720, r50721, r50722, r50723, r50724, r50725, r50726, r50727, r50728, r50729, r50730, r50731, r50732, r50733, r50734, r50735, r50736, r50737, r50738, r50739, r50740, r50741, r50742, r50743, r50744, r50745, r50746, r50747, r50748, r50749, r50750;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1936);
        mpfr_init(r50717);
        mpfr_init_set_str(r50718, "-4.2533961552866985e-171", 10, MPFR_RNDN);
        mpfr_init(r50719);
        mpfr_init(r50720);
        mpfr_init(r50721);
        mpfr_init(r50722);
        mpfr_init(r50723);
        mpfr_init(r50724);
        mpfr_init(r50725);
        mpfr_init(r50726);
        mpfr_init(r50727);
        mpfr_init(r50728);
        mpfr_init(r50729);
        mpfr_init(r50730);
        mpfr_init(r50731);
        mpfr_init(r50732);
        mpfr_init_set_str(r50733, "8.183905144226627e-137", 10, MPFR_RNDN);
        mpfr_init(r50734);
        mpfr_init(r50735);
        mpfr_init(r50736);
        mpfr_init(r50737);
        mpfr_init_set_str(r50738, "1.215880926283839e-41", 10, MPFR_RNDN);
        mpfr_init(r50739);
        mpfr_init(r50740);
        mpfr_init_set_str(r50741, "1", 10, MPFR_RNDN);
        mpfr_init(r50742);
        mpfr_init(r50743);
        mpfr_init(r50744);
        mpfr_init_set_str(r50745, "1820749428.2327986", 10, MPFR_RNDN);
        mpfr_init(r50746);
        mpfr_init(r50747);
        mpfr_init(r50748);
        mpfr_init(r50749);
        mpfr_init(r50750);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r50717, a, MPFR_RNDN);
        ;
        mpfr_set_si(r50719, mpfr_cmp(r50717, r50718) <= 0, MPFR_RNDN);
        mpfr_set_d(r50720, x, MPFR_RNDN);
        mpfr_set_d(r50721, y, MPFR_RNDN);
        mpfr_set_d(r50722, z, MPFR_RNDN);
        mpfr_sub(r50723, r50721, r50722, MPFR_RNDN);
        mpfr_sub(r50724, r50717, r50722, MPFR_RNDN);
        mpfr_cbrt(r50725, r50724, MPFR_RNDN);
        mpfr_mul(r50726, r50725, r50725, MPFR_RNDN);
        mpfr_div(r50727, r50723, r50726, MPFR_RNDN);
        mpfr_set_d(r50728, t, MPFR_RNDN);
        mpfr_sub(r50729, r50728, r50720, MPFR_RNDN);
        mpfr_div(r50730, r50729, r50725, MPFR_RNDN);
        mpfr_mul(r50731, r50727, r50730, MPFR_RNDN);
        mpfr_add(r50732, r50720, r50731, MPFR_RNDN);
        ;
        mpfr_set_si(r50734, mpfr_cmp(r50717, r50733) <= 0, MPFR_RNDN);
        mpfr_div(r50735, r50721, r50722, MPFR_RNDN);
        mpfr_mul(r50736, r50729, r50735, MPFR_RNDN);
        mpfr_sub(r50737, r50728, r50736, MPFR_RNDN);
        ;
        mpfr_set_si(r50739, mpfr_cmp(r50717, r50738) <= 0, MPFR_RNDN);
        mpfr_mul(r50740, r50723, r50729, MPFR_RNDN);
        ;
        mpfr_div(r50742, r50741, r50724, MPFR_RNDN);
        mpfr_mul(r50743, r50740, r50742, MPFR_RNDN);
        mpfr_add(r50744, r50720, r50743, MPFR_RNDN);
        ;
        mpfr_set_si(r50746, mpfr_cmp(r50717, r50745) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r50746, MPFR_RNDN)) { mpfr_set(r50747, r50737, MPFR_RNDN); } else { mpfr_set(r50747, r50732, MPFR_RNDN); };
        if (mpfr_get_si(r50739, MPFR_RNDN)) { mpfr_set(r50748, r50744, MPFR_RNDN); } else { mpfr_set(r50748, r50747, MPFR_RNDN); };
        if (mpfr_get_si(r50734, MPFR_RNDN)) { mpfr_set(r50749, r50737, MPFR_RNDN); } else { mpfr_set(r50749, r50748, MPFR_RNDN); };
        if (mpfr_get_si(r50719, MPFR_RNDN)) { mpfr_set(r50750, r50732, MPFR_RNDN); } else { mpfr_set(r50750, r50749, MPFR_RNDN); };
        return mpfr_get_d(r50750, MPFR_RNDN);
}

