#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 r47711 = x;
        float r47712 = y;
        float r47713 = z;
        float r47714 = r47712 - r47713;
        float r47715 = t;
        float r47716 = r47715 - r47711;
        float r47717 = r47714 * r47716;
        float r47718 = a;
        float r47719 = r47718 - r47713;
        float r47720 = r47717 / r47719;
        float r47721 = r47711 + r47720;
        return r47721;
}

double f_id(double x, double y, double z, double t, double a) {
        double r47722 = x;
        double r47723 = y;
        double r47724 = z;
        double r47725 = r47723 - r47724;
        double r47726 = t;
        double r47727 = r47726 - r47722;
        double r47728 = r47725 * r47727;
        double r47729 = a;
        double r47730 = r47729 - r47724;
        double r47731 = r47728 / r47730;
        double r47732 = r47722 + r47731;
        return r47732;
}


double f_of(float x, float y, float z, float t, float a) {
        float r47733 = a;
        float r47734 = -7.346288643304349e-35f;
        bool r47735 = r47733 <= r47734;
        float r47736 = x;
        float r47737 = y;
        float r47738 = z;
        float r47739 = r47737 - r47738;
        float r47740 = cbrt(r47739);
        float r47741 = t;
        float r47742 = r47741 - r47736;
        float r47743 = cbrt(r47742);
        float r47744 = r47740 * r47743;
        float r47745 = r47733 - r47738;
        float r47746 = cbrt(r47745);
        float r47747 = r47744 / r47746;
        float r47748 = 3.0f;
        float r47749 = pow(r47747, r47748);
        float r47750 = r47736 + r47749;
        float r47751 = 2.4800667194058456e-134f;
        bool r47752 = r47733 <= r47751;
        float r47753 = r47737 / r47738;
        float r47754 = r47753 * r47742;
        float r47755 = r47741 - r47754;
        float r47756 = 9.581782060813449e-54f;
        bool r47757 = r47733 <= r47756;
        float r47758 = 2.9697010902129357e-33f;
        bool r47759 = r47733 <= r47758;
        float r47760 = r47747 * (r47747 * r47747);
        float r47761 = r47736 + r47760;
        float r47762 = r47759 ? r47755 : r47761;
        float r47763 = r47757 ? r47750 : r47762;
        float r47764 = r47752 ? r47755 : r47763;
        float r47765 = r47735 ? r47750 : r47764;
        return r47765;
}

double f_od(double x, double y, double z, double t, double a) {
        double r47766 = a;
        double r47767 = -7.346288643304349e-35;
        bool r47768 = r47766 <= r47767;
        double r47769 = x;
        double r47770 = y;
        double r47771 = z;
        double r47772 = r47770 - r47771;
        double r47773 = cbrt(r47772);
        double r47774 = t;
        double r47775 = r47774 - r47769;
        double r47776 = cbrt(r47775);
        double r47777 = r47773 * r47776;
        double r47778 = r47766 - r47771;
        double r47779 = cbrt(r47778);
        double r47780 = r47777 / r47779;
        double r47781 = 3.0;
        double r47782 = pow(r47780, r47781);
        double r47783 = r47769 + r47782;
        double r47784 = 2.4800667194058456e-134;
        bool r47785 = r47766 <= r47784;
        double r47786 = r47770 / r47771;
        double r47787 = r47786 * r47775;
        double r47788 = r47774 - r47787;
        double r47789 = 9.581782060813449e-54;
        bool r47790 = r47766 <= r47789;
        double r47791 = 2.9697010902129357e-33;
        bool r47792 = r47766 <= r47791;
        double r47793 = r47780 * (r47780 * r47780);
        double r47794 = r47769 + r47793;
        double r47795 = r47792 ? r47788 : r47794;
        double r47796 = r47790 ? r47783 : r47795;
        double r47797 = r47785 ? r47788 : r47796;
        double r47798 = r47768 ? r47783 : r47797;
        return r47798;
}

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 r47799, r47800, r47801, r47802, r47803, r47804, r47805, r47806, r47807, r47808, r47809;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r47799);
        mpfr_init(r47800);
        mpfr_init(r47801);
        mpfr_init(r47802);
        mpfr_init(r47803);
        mpfr_init(r47804);
        mpfr_init(r47805);
        mpfr_init(r47806);
        mpfr_init(r47807);
        mpfr_init(r47808);
        mpfr_init(r47809);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r47799, x, MPFR_RNDN);
        mpfr_set_d(r47800, y, MPFR_RNDN);
        mpfr_set_d(r47801, z, MPFR_RNDN);
        mpfr_sub(r47802, r47800, r47801, MPFR_RNDN);
        mpfr_set_d(r47803, t, MPFR_RNDN);
        mpfr_sub(r47804, r47803, r47799, MPFR_RNDN);
        mpfr_mul(r47805, r47802, r47804, MPFR_RNDN);
        mpfr_set_d(r47806, a, MPFR_RNDN);
        mpfr_sub(r47807, r47806, r47801, MPFR_RNDN);
        mpfr_div(r47808, r47805, r47807, MPFR_RNDN);
        mpfr_add(r47809, r47799, r47808, MPFR_RNDN);
        return mpfr_get_d(r47809, MPFR_RNDN);
}

static mpfr_t r47810, r47811, r47812, r47813, r47814, r47815, r47816, r47817, r47818, r47819, r47820, r47821, r47822, r47823, r47824, r47825, r47826, r47827, r47828, r47829, r47830, r47831, r47832, r47833, r47834, r47835, r47836, r47837, r47838, r47839, r47840, r47841, r47842;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47810);
        mpfr_init_set_str(r47811, "-7.346288643304349e-35", 10, MPFR_RNDN);
        mpfr_init(r47812);
        mpfr_init(r47813);
        mpfr_init(r47814);
        mpfr_init(r47815);
        mpfr_init(r47816);
        mpfr_init(r47817);
        mpfr_init(r47818);
        mpfr_init(r47819);
        mpfr_init(r47820);
        mpfr_init(r47821);
        mpfr_init(r47822);
        mpfr_init(r47823);
        mpfr_init(r47824);
        mpfr_init_set_str(r47825, "3", 10, MPFR_RNDN);
        mpfr_init(r47826);
        mpfr_init(r47827);
        mpfr_init_set_str(r47828, "2.4800667194058456e-134", 10, MPFR_RNDN);
        mpfr_init(r47829);
        mpfr_init(r47830);
        mpfr_init(r47831);
        mpfr_init(r47832);
        mpfr_init_set_str(r47833, "9.581782060813449e-54", 10, MPFR_RNDN);
        mpfr_init(r47834);
        mpfr_init_set_str(r47835, "2.9697010902129357e-33", 10, MPFR_RNDN);
        mpfr_init(r47836);
        mpfr_init(r47837);
        mpfr_init(r47838);
        mpfr_init(r47839);
        mpfr_init(r47840);
        mpfr_init(r47841);
        mpfr_init(r47842);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r47810, a, MPFR_RNDN);
        ;
        mpfr_set_si(r47812, mpfr_cmp(r47810, r47811) <= 0, MPFR_RNDN);
        mpfr_set_d(r47813, x, MPFR_RNDN);
        mpfr_set_d(r47814, y, MPFR_RNDN);
        mpfr_set_d(r47815, z, MPFR_RNDN);
        mpfr_sub(r47816, r47814, r47815, MPFR_RNDN);
        mpfr_cbrt(r47817, r47816, MPFR_RNDN);
        mpfr_set_d(r47818, t, MPFR_RNDN);
        mpfr_sub(r47819, r47818, r47813, MPFR_RNDN);
        mpfr_cbrt(r47820, r47819, MPFR_RNDN);
        mpfr_mul(r47821, r47817, r47820, MPFR_RNDN);
        mpfr_sub(r47822, r47810, r47815, MPFR_RNDN);
        mpfr_cbrt(r47823, r47822, MPFR_RNDN);
        mpfr_div(r47824, r47821, r47823, MPFR_RNDN);
        ;
        mpfr_pow(r47826, r47824, r47825, MPFR_RNDN);
        mpfr_add(r47827, r47813, r47826, MPFR_RNDN);
        ;
        mpfr_set_si(r47829, mpfr_cmp(r47810, r47828) <= 0, MPFR_RNDN);
        mpfr_div(r47830, r47814, r47815, MPFR_RNDN);
        mpfr_mul(r47831, r47830, r47819, MPFR_RNDN);
        mpfr_sub(r47832, r47818, r47831, MPFR_RNDN);
        ;
        mpfr_set_si(r47834, mpfr_cmp(r47810, r47833) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r47836, mpfr_cmp(r47810, r47835) <= 0, MPFR_RNDN);
        mpfr_mul(r47837, r47824, r47824, MPFR_RNDN); mpfr_mul(r47837, r47837, r47824, MPFR_RNDN);
        mpfr_add(r47838, r47813, r47837, MPFR_RNDN);
        if (mpfr_get_si(r47836, MPFR_RNDN)) { mpfr_set(r47839, r47832, MPFR_RNDN); } else { mpfr_set(r47839, r47838, MPFR_RNDN); };
        if (mpfr_get_si(r47834, MPFR_RNDN)) { mpfr_set(r47840, r47827, MPFR_RNDN); } else { mpfr_set(r47840, r47839, MPFR_RNDN); };
        if (mpfr_get_si(r47829, MPFR_RNDN)) { mpfr_set(r47841, r47832, MPFR_RNDN); } else { mpfr_set(r47841, r47840, MPFR_RNDN); };
        if (mpfr_get_si(r47812, MPFR_RNDN)) { mpfr_set(r47842, r47827, MPFR_RNDN); } else { mpfr_set(r47842, r47841, MPFR_RNDN); };
        return mpfr_get_d(r47842, MPFR_RNDN);
}

static mpfr_t r47843, r47844, r47845, r47846, r47847, r47848, r47849, r47850, r47851, r47852, r47853, r47854, r47855, r47856, r47857, r47858, r47859, r47860, r47861, r47862, r47863, r47864, r47865, r47866, r47867, r47868, r47869, r47870, r47871, r47872, r47873, r47874, r47875;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47843);
        mpfr_init_set_str(r47844, "-7.346288643304349e-35", 10, MPFR_RNDN);
        mpfr_init(r47845);
        mpfr_init(r47846);
        mpfr_init(r47847);
        mpfr_init(r47848);
        mpfr_init(r47849);
        mpfr_init(r47850);
        mpfr_init(r47851);
        mpfr_init(r47852);
        mpfr_init(r47853);
        mpfr_init(r47854);
        mpfr_init(r47855);
        mpfr_init(r47856);
        mpfr_init(r47857);
        mpfr_init_set_str(r47858, "3", 10, MPFR_RNDN);
        mpfr_init(r47859);
        mpfr_init(r47860);
        mpfr_init_set_str(r47861, "2.4800667194058456e-134", 10, MPFR_RNDN);
        mpfr_init(r47862);
        mpfr_init(r47863);
        mpfr_init(r47864);
        mpfr_init(r47865);
        mpfr_init_set_str(r47866, "9.581782060813449e-54", 10, MPFR_RNDN);
        mpfr_init(r47867);
        mpfr_init_set_str(r47868, "2.9697010902129357e-33", 10, MPFR_RNDN);
        mpfr_init(r47869);
        mpfr_init(r47870);
        mpfr_init(r47871);
        mpfr_init(r47872);
        mpfr_init(r47873);
        mpfr_init(r47874);
        mpfr_init(r47875);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r47843, a, MPFR_RNDN);
        ;
        mpfr_set_si(r47845, mpfr_cmp(r47843, r47844) <= 0, MPFR_RNDN);
        mpfr_set_d(r47846, x, MPFR_RNDN);
        mpfr_set_d(r47847, y, MPFR_RNDN);
        mpfr_set_d(r47848, z, MPFR_RNDN);
        mpfr_sub(r47849, r47847, r47848, MPFR_RNDN);
        mpfr_cbrt(r47850, r47849, MPFR_RNDN);
        mpfr_set_d(r47851, t, MPFR_RNDN);
        mpfr_sub(r47852, r47851, r47846, MPFR_RNDN);
        mpfr_cbrt(r47853, r47852, MPFR_RNDN);
        mpfr_mul(r47854, r47850, r47853, MPFR_RNDN);
        mpfr_sub(r47855, r47843, r47848, MPFR_RNDN);
        mpfr_cbrt(r47856, r47855, MPFR_RNDN);
        mpfr_div(r47857, r47854, r47856, MPFR_RNDN);
        ;
        mpfr_pow(r47859, r47857, r47858, MPFR_RNDN);
        mpfr_add(r47860, r47846, r47859, MPFR_RNDN);
        ;
        mpfr_set_si(r47862, mpfr_cmp(r47843, r47861) <= 0, MPFR_RNDN);
        mpfr_div(r47863, r47847, r47848, MPFR_RNDN);
        mpfr_mul(r47864, r47863, r47852, MPFR_RNDN);
        mpfr_sub(r47865, r47851, r47864, MPFR_RNDN);
        ;
        mpfr_set_si(r47867, mpfr_cmp(r47843, r47866) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r47869, mpfr_cmp(r47843, r47868) <= 0, MPFR_RNDN);
        mpfr_mul(r47870, r47857, r47857, MPFR_RNDN); mpfr_mul(r47870, r47870, r47857, MPFR_RNDN);
        mpfr_add(r47871, r47846, r47870, MPFR_RNDN);
        if (mpfr_get_si(r47869, MPFR_RNDN)) { mpfr_set(r47872, r47865, MPFR_RNDN); } else { mpfr_set(r47872, r47871, MPFR_RNDN); };
        if (mpfr_get_si(r47867, MPFR_RNDN)) { mpfr_set(r47873, r47860, MPFR_RNDN); } else { mpfr_set(r47873, r47872, MPFR_RNDN); };
        if (mpfr_get_si(r47862, MPFR_RNDN)) { mpfr_set(r47874, r47865, MPFR_RNDN); } else { mpfr_set(r47874, r47873, MPFR_RNDN); };
        if (mpfr_get_si(r47845, MPFR_RNDN)) { mpfr_set(r47875, r47860, MPFR_RNDN); } else { mpfr_set(r47875, r47874, MPFR_RNDN); };
        return mpfr_get_d(r47875, MPFR_RNDN);
}

