#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 r47562 = x;
        float r47563 = y;
        float r47564 = r47563 - r47562;
        float r47565 = z;
        float r47566 = t;
        float r47567 = r47565 - r47566;
        float r47568 = r47564 * r47567;
        float r47569 = a;
        float r47570 = r47569 - r47566;
        float r47571 = r47568 / r47570;
        float r47572 = r47562 + r47571;
        return r47572;
}

double f_id(double x, double y, double z, double t, double a) {
        double r47573 = x;
        double r47574 = y;
        double r47575 = r47574 - r47573;
        double r47576 = z;
        double r47577 = t;
        double r47578 = r47576 - r47577;
        double r47579 = r47575 * r47578;
        double r47580 = a;
        double r47581 = r47580 - r47577;
        double r47582 = r47579 / r47581;
        double r47583 = r47573 + r47582;
        return r47583;
}


double f_of(float x, float y, float z, float t, float a) {
        float r47584 = a;
        float r47585 = -1.0857363802206783e-54f;
        bool r47586 = r47584 <= r47585;
        float r47587 = x;
        float r47588 = y;
        float r47589 = r47588 - r47587;
        float r47590 = cbrt(r47589);
        float r47591 = z;
        float r47592 = t;
        float r47593 = r47591 - r47592;
        float r47594 = cbrt(r47593);
        float r47595 = r47590 * r47594;
        float r47596 = r47584 - r47592;
        float r47597 = cbrt(r47596);
        float r47598 = r47595 / r47597;
        float r47599 = r47598 * (r47598 * r47598);
        float r47600 = r47587 + r47599;
        float r47601 = 3.0098787995381245e-89f;
        bool r47602 = r47584 <= r47601;
        float r47603 = r47591 / r47592;
        float r47604 = r47603 * r47589;
        float r47605 = r47588 - r47604;
        float r47606 = 1.0f;
        float r47607 = r47589 / r47606;
        float r47608 = r47593 / r47596;
        float r47609 = r47607 * r47608;
        float r47610 = r47587 + r47609;
        float r47611 = r47602 ? r47605 : r47610;
        float r47612 = r47586 ? r47600 : r47611;
        return r47612;
}

double f_od(double x, double y, double z, double t, double a) {
        double r47613 = a;
        double r47614 = -1.0857363802206783e-54;
        bool r47615 = r47613 <= r47614;
        double r47616 = x;
        double r47617 = y;
        double r47618 = r47617 - r47616;
        double r47619 = cbrt(r47618);
        double r47620 = z;
        double r47621 = t;
        double r47622 = r47620 - r47621;
        double r47623 = cbrt(r47622);
        double r47624 = r47619 * r47623;
        double r47625 = r47613 - r47621;
        double r47626 = cbrt(r47625);
        double r47627 = r47624 / r47626;
        double r47628 = r47627 * (r47627 * r47627);
        double r47629 = r47616 + r47628;
        double r47630 = 3.0098787995381245e-89;
        bool r47631 = r47613 <= r47630;
        double r47632 = r47620 / r47621;
        double r47633 = r47632 * r47618;
        double r47634 = r47617 - r47633;
        double r47635 = 1.0;
        double r47636 = r47618 / r47635;
        double r47637 = r47622 / r47625;
        double r47638 = r47636 * r47637;
        double r47639 = r47616 + r47638;
        double r47640 = r47631 ? r47634 : r47639;
        double r47641 = r47615 ? r47629 : r47640;
        return r47641;
}

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 r47642, r47643, r47644, r47645, r47646, r47647, r47648, r47649, r47650, r47651, r47652;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r47642);
        mpfr_init(r47643);
        mpfr_init(r47644);
        mpfr_init(r47645);
        mpfr_init(r47646);
        mpfr_init(r47647);
        mpfr_init(r47648);
        mpfr_init(r47649);
        mpfr_init(r47650);
        mpfr_init(r47651);
        mpfr_init(r47652);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r47642, x, MPFR_RNDN);
        mpfr_set_d(r47643, y, MPFR_RNDN);
        mpfr_sub(r47644, r47643, r47642, MPFR_RNDN);
        mpfr_set_d(r47645, z, MPFR_RNDN);
        mpfr_set_d(r47646, t, MPFR_RNDN);
        mpfr_sub(r47647, r47645, r47646, MPFR_RNDN);
        mpfr_mul(r47648, r47644, r47647, MPFR_RNDN);
        mpfr_set_d(r47649, a, MPFR_RNDN);
        mpfr_sub(r47650, r47649, r47646, MPFR_RNDN);
        mpfr_div(r47651, r47648, r47650, MPFR_RNDN);
        mpfr_add(r47652, r47642, r47651, MPFR_RNDN);
        return mpfr_get_d(r47652, MPFR_RNDN);
}

static mpfr_t r47653, r47654, r47655, r47656, r47657, r47658, r47659, r47660, r47661, r47662, r47663, r47664, r47665, r47666, r47667, r47668, r47669, r47670, r47671, r47672, r47673, r47674, r47675, r47676, r47677, r47678, r47679, r47680, r47681;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47653);
        mpfr_init_set_str(r47654, "-1.0857363802206783e-54", 10, MPFR_RNDN);
        mpfr_init(r47655);
        mpfr_init(r47656);
        mpfr_init(r47657);
        mpfr_init(r47658);
        mpfr_init(r47659);
        mpfr_init(r47660);
        mpfr_init(r47661);
        mpfr_init(r47662);
        mpfr_init(r47663);
        mpfr_init(r47664);
        mpfr_init(r47665);
        mpfr_init(r47666);
        mpfr_init(r47667);
        mpfr_init(r47668);
        mpfr_init(r47669);
        mpfr_init_set_str(r47670, "3.0098787995381245e-89", 10, MPFR_RNDN);
        mpfr_init(r47671);
        mpfr_init(r47672);
        mpfr_init(r47673);
        mpfr_init(r47674);
        mpfr_init_set_str(r47675, "1", 10, MPFR_RNDN);
        mpfr_init(r47676);
        mpfr_init(r47677);
        mpfr_init(r47678);
        mpfr_init(r47679);
        mpfr_init(r47680);
        mpfr_init(r47681);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r47653, a, MPFR_RNDN);
        ;
        mpfr_set_si(r47655, mpfr_cmp(r47653, r47654) <= 0, MPFR_RNDN);
        mpfr_set_d(r47656, x, MPFR_RNDN);
        mpfr_set_d(r47657, y, MPFR_RNDN);
        mpfr_sub(r47658, r47657, r47656, MPFR_RNDN);
        mpfr_cbrt(r47659, r47658, MPFR_RNDN);
        mpfr_set_d(r47660, z, MPFR_RNDN);
        mpfr_set_d(r47661, t, MPFR_RNDN);
        mpfr_sub(r47662, r47660, r47661, MPFR_RNDN);
        mpfr_cbrt(r47663, r47662, MPFR_RNDN);
        mpfr_mul(r47664, r47659, r47663, MPFR_RNDN);
        mpfr_sub(r47665, r47653, r47661, MPFR_RNDN);
        mpfr_cbrt(r47666, r47665, MPFR_RNDN);
        mpfr_div(r47667, r47664, r47666, MPFR_RNDN);
        mpfr_mul(r47668, r47667, r47667, MPFR_RNDN); mpfr_mul(r47668, r47668, r47667, MPFR_RNDN);
        mpfr_add(r47669, r47656, r47668, MPFR_RNDN);
        ;
        mpfr_set_si(r47671, mpfr_cmp(r47653, r47670) <= 0, MPFR_RNDN);
        mpfr_div(r47672, r47660, r47661, MPFR_RNDN);
        mpfr_mul(r47673, r47672, r47658, MPFR_RNDN);
        mpfr_sub(r47674, r47657, r47673, MPFR_RNDN);
        ;
        mpfr_div(r47676, r47658, r47675, MPFR_RNDN);
        mpfr_div(r47677, r47662, r47665, MPFR_RNDN);
        mpfr_mul(r47678, r47676, r47677, MPFR_RNDN);
        mpfr_add(r47679, r47656, r47678, MPFR_RNDN);
        if (mpfr_get_si(r47671, MPFR_RNDN)) { mpfr_set(r47680, r47674, MPFR_RNDN); } else { mpfr_set(r47680, r47679, MPFR_RNDN); };
        if (mpfr_get_si(r47655, MPFR_RNDN)) { mpfr_set(r47681, r47669, MPFR_RNDN); } else { mpfr_set(r47681, r47680, MPFR_RNDN); };
        return mpfr_get_d(r47681, MPFR_RNDN);
}

static mpfr_t r47682, r47683, r47684, r47685, r47686, r47687, r47688, r47689, r47690, r47691, r47692, r47693, r47694, r47695, r47696, r47697, r47698, r47699, r47700, r47701, r47702, r47703, r47704, r47705, r47706, r47707, r47708, r47709, r47710;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r47682);
        mpfr_init_set_str(r47683, "-1.0857363802206783e-54", 10, MPFR_RNDN);
        mpfr_init(r47684);
        mpfr_init(r47685);
        mpfr_init(r47686);
        mpfr_init(r47687);
        mpfr_init(r47688);
        mpfr_init(r47689);
        mpfr_init(r47690);
        mpfr_init(r47691);
        mpfr_init(r47692);
        mpfr_init(r47693);
        mpfr_init(r47694);
        mpfr_init(r47695);
        mpfr_init(r47696);
        mpfr_init(r47697);
        mpfr_init(r47698);
        mpfr_init_set_str(r47699, "3.0098787995381245e-89", 10, MPFR_RNDN);
        mpfr_init(r47700);
        mpfr_init(r47701);
        mpfr_init(r47702);
        mpfr_init(r47703);
        mpfr_init_set_str(r47704, "1", 10, MPFR_RNDN);
        mpfr_init(r47705);
        mpfr_init(r47706);
        mpfr_init(r47707);
        mpfr_init(r47708);
        mpfr_init(r47709);
        mpfr_init(r47710);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r47682, a, MPFR_RNDN);
        ;
        mpfr_set_si(r47684, mpfr_cmp(r47682, r47683) <= 0, MPFR_RNDN);
        mpfr_set_d(r47685, x, MPFR_RNDN);
        mpfr_set_d(r47686, y, MPFR_RNDN);
        mpfr_sub(r47687, r47686, r47685, MPFR_RNDN);
        mpfr_cbrt(r47688, r47687, MPFR_RNDN);
        mpfr_set_d(r47689, z, MPFR_RNDN);
        mpfr_set_d(r47690, t, MPFR_RNDN);
        mpfr_sub(r47691, r47689, r47690, MPFR_RNDN);
        mpfr_cbrt(r47692, r47691, MPFR_RNDN);
        mpfr_mul(r47693, r47688, r47692, MPFR_RNDN);
        mpfr_sub(r47694, r47682, r47690, MPFR_RNDN);
        mpfr_cbrt(r47695, r47694, MPFR_RNDN);
        mpfr_div(r47696, r47693, r47695, MPFR_RNDN);
        mpfr_mul(r47697, r47696, r47696, MPFR_RNDN); mpfr_mul(r47697, r47697, r47696, MPFR_RNDN);
        mpfr_add(r47698, r47685, r47697, MPFR_RNDN);
        ;
        mpfr_set_si(r47700, mpfr_cmp(r47682, r47699) <= 0, MPFR_RNDN);
        mpfr_div(r47701, r47689, r47690, MPFR_RNDN);
        mpfr_mul(r47702, r47701, r47687, MPFR_RNDN);
        mpfr_sub(r47703, r47686, r47702, MPFR_RNDN);
        ;
        mpfr_div(r47705, r47687, r47704, MPFR_RNDN);
        mpfr_div(r47706, r47691, r47694, MPFR_RNDN);
        mpfr_mul(r47707, r47705, r47706, MPFR_RNDN);
        mpfr_add(r47708, r47685, r47707, MPFR_RNDN);
        if (mpfr_get_si(r47700, MPFR_RNDN)) { mpfr_set(r47709, r47703, MPFR_RNDN); } else { mpfr_set(r47709, r47708, MPFR_RNDN); };
        if (mpfr_get_si(r47684, MPFR_RNDN)) { mpfr_set(r47710, r47698, MPFR_RNDN); } else { mpfr_set(r47710, r47709, MPFR_RNDN); };
        return mpfr_get_d(r47710, MPFR_RNDN);
}

