#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1";

double f_if(float x, float y, float z, float t) {
        float r45661 = x;
        float r45662 = y;
        float r45663 = r45661 / r45662;
        float r45664 = z;
        float r45665 = t;
        float r45666 = r45664 - r45665;
        float r45667 = r45663 * r45666;
        float r45668 = r45667 + r45665;
        return r45668;
}

double f_id(double x, double y, double z, double t) {
        double r45669 = x;
        double r45670 = y;
        double r45671 = r45669 / r45670;
        double r45672 = z;
        double r45673 = t;
        double r45674 = r45672 - r45673;
        double r45675 = r45671 * r45674;
        double r45676 = r45675 + r45673;
        return r45676;
}


double f_of(float x, float y, float z, float t) {
        float r45677 = y;
        float r45678 = -4.4405590618824735e+174;
        bool r45679 = r45677 <= r45678;
        float r45680 = x;
        float r45681 = z;
        float r45682 = t;
        float r45683 = r45681 - r45682;
        float r45684 = r45683 / r45677;
        float r45685 = r45680 * r45684;
        float r45686 = r45685 + r45682;
        float r45687 = 7.842928430821296e+33;
        bool r45688 = r45677 <= r45687;
        float r45689 = r45680 * r45683;
        float r45690 = r45689 / r45677;
        float r45691 = r45690 + r45682;
        float r45692 = r45688 ? r45691 : r45686;
        float r45693 = r45679 ? r45686 : r45692;
        return r45693;
}

double f_od(double x, double y, double z, double t) {
        double r45694 = y;
        double r45695 = -4.4405590618824735e+174;
        bool r45696 = r45694 <= r45695;
        double r45697 = x;
        double r45698 = z;
        double r45699 = t;
        double r45700 = r45698 - r45699;
        double r45701 = r45700 / r45694;
        double r45702 = r45697 * r45701;
        double r45703 = r45702 + r45699;
        double r45704 = 7.842928430821296e+33;
        bool r45705 = r45694 <= r45704;
        double r45706 = r45697 * r45700;
        double r45707 = r45706 / r45694;
        double r45708 = r45707 + r45699;
        double r45709 = r45705 ? r45708 : r45703;
        double r45710 = r45696 ? r45703 : r45709;
        return r45710;
}

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 r45711, r45712, r45713, r45714, r45715, r45716, r45717, r45718;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45711);
        mpfr_init(r45712);
        mpfr_init(r45713);
        mpfr_init(r45714);
        mpfr_init(r45715);
        mpfr_init(r45716);
        mpfr_init(r45717);
        mpfr_init(r45718);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45711, x, MPFR_RNDN);
        mpfr_set_d(r45712, y, MPFR_RNDN);
        mpfr_div(r45713, r45711, r45712, MPFR_RNDN);
        mpfr_set_d(r45714, z, MPFR_RNDN);
        mpfr_set_d(r45715, t, MPFR_RNDN);
        mpfr_sub(r45716, r45714, r45715, MPFR_RNDN);
        mpfr_mul(r45717, r45713, r45716, MPFR_RNDN);
        mpfr_add(r45718, r45717, r45715, MPFR_RNDN);
        return mpfr_get_d(r45718, MPFR_RNDN);
}

static mpfr_t r45719, r45720, r45721, r45722, r45723, r45724, r45725, r45726, r45727, r45728, r45729, r45730, r45731, r45732, r45733, r45734, r45735;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45719);
        mpfr_init_set_str(r45720, "-4.4405590618824735e+174", 10, MPFR_RNDN);
        mpfr_init(r45721);
        mpfr_init(r45722);
        mpfr_init(r45723);
        mpfr_init(r45724);
        mpfr_init(r45725);
        mpfr_init(r45726);
        mpfr_init(r45727);
        mpfr_init(r45728);
        mpfr_init_set_str(r45729, "7.842928430821296e+33", 10, MPFR_RNDN);
        mpfr_init(r45730);
        mpfr_init(r45731);
        mpfr_init(r45732);
        mpfr_init(r45733);
        mpfr_init(r45734);
        mpfr_init(r45735);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45719, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45721, mpfr_cmp(r45719, r45720) <= 0, MPFR_RNDN);
        mpfr_set_d(r45722, x, MPFR_RNDN);
        mpfr_set_d(r45723, z, MPFR_RNDN);
        mpfr_set_d(r45724, t, MPFR_RNDN);
        mpfr_sub(r45725, r45723, r45724, MPFR_RNDN);
        mpfr_div(r45726, r45725, r45719, MPFR_RNDN);
        mpfr_mul(r45727, r45722, r45726, MPFR_RNDN);
        mpfr_add(r45728, r45727, r45724, MPFR_RNDN);
        ;
        mpfr_set_si(r45730, mpfr_cmp(r45719, r45729) <= 0, MPFR_RNDN);
        mpfr_mul(r45731, r45722, r45725, MPFR_RNDN);
        mpfr_div(r45732, r45731, r45719, MPFR_RNDN);
        mpfr_add(r45733, r45732, r45724, MPFR_RNDN);
        if (mpfr_get_si(r45730, MPFR_RNDN)) { mpfr_set(r45734, r45733, MPFR_RNDN); } else { mpfr_set(r45734, r45728, MPFR_RNDN); };
        if (mpfr_get_si(r45721, MPFR_RNDN)) { mpfr_set(r45735, r45728, MPFR_RNDN); } else { mpfr_set(r45735, r45734, MPFR_RNDN); };
        return mpfr_get_d(r45735, MPFR_RNDN);
}

static mpfr_t r45736, r45737, r45738, r45739, r45740, r45741, r45742, r45743, r45744, r45745, r45746, r45747, r45748, r45749, r45750, r45751, r45752;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45736);
        mpfr_init_set_str(r45737, "-4.4405590618824735e+174", 10, MPFR_RNDN);
        mpfr_init(r45738);
        mpfr_init(r45739);
        mpfr_init(r45740);
        mpfr_init(r45741);
        mpfr_init(r45742);
        mpfr_init(r45743);
        mpfr_init(r45744);
        mpfr_init(r45745);
        mpfr_init_set_str(r45746, "7.842928430821296e+33", 10, MPFR_RNDN);
        mpfr_init(r45747);
        mpfr_init(r45748);
        mpfr_init(r45749);
        mpfr_init(r45750);
        mpfr_init(r45751);
        mpfr_init(r45752);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45736, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45738, mpfr_cmp(r45736, r45737) <= 0, MPFR_RNDN);
        mpfr_set_d(r45739, x, MPFR_RNDN);
        mpfr_set_d(r45740, z, MPFR_RNDN);
        mpfr_set_d(r45741, t, MPFR_RNDN);
        mpfr_sub(r45742, r45740, r45741, MPFR_RNDN);
        mpfr_div(r45743, r45742, r45736, MPFR_RNDN);
        mpfr_mul(r45744, r45739, r45743, MPFR_RNDN);
        mpfr_add(r45745, r45744, r45741, MPFR_RNDN);
        ;
        mpfr_set_si(r45747, mpfr_cmp(r45736, r45746) <= 0, MPFR_RNDN);
        mpfr_mul(r45748, r45739, r45742, MPFR_RNDN);
        mpfr_div(r45749, r45748, r45736, MPFR_RNDN);
        mpfr_add(r45750, r45749, r45741, MPFR_RNDN);
        if (mpfr_get_si(r45747, MPFR_RNDN)) { mpfr_set(r45751, r45750, MPFR_RNDN); } else { mpfr_set(r45751, r45745, MPFR_RNDN); };
        if (mpfr_get_si(r45738, MPFR_RNDN)) { mpfr_set(r45752, r45745, MPFR_RNDN); } else { mpfr_set(r45752, r45751, MPFR_RNDN); };
        return mpfr_get_d(r45752, MPFR_RNDN);
}

