#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 r45924 = x;
        float r45925 = y;
        float r45926 = r45924 / r45925;
        float r45927 = z;
        float r45928 = t;
        float r45929 = r45927 - r45928;
        float r45930 = r45926 * r45929;
        float r45931 = r45930 + r45928;
        return r45931;
}

double f_id(double x, double y, double z, double t) {
        double r45932 = x;
        double r45933 = y;
        double r45934 = r45932 / r45933;
        double r45935 = z;
        double r45936 = t;
        double r45937 = r45935 - r45936;
        double r45938 = r45934 * r45937;
        double r45939 = r45938 + r45936;
        return r45939;
}


double f_of(float x, float y, float z, float t) {
        float r45940 = y;
        float r45941 = -1.3647715936252021e+175;
        bool r45942 = r45940 <= r45941;
        float r45943 = x;
        float r45944 = z;
        float r45945 = t;
        float r45946 = r45944 - r45945;
        float r45947 = r45946 / r45940;
        float r45948 = r45943 * r45947;
        float r45949 = r45948 + r45945;
        float r45950 = 1.9607321077053286e+33;
        bool r45951 = r45940 <= r45950;
        float r45952 = r45943 * r45946;
        float r45953 = r45952 / r45940;
        float r45954 = r45953 + r45945;
        float r45955 = r45951 ? r45954 : r45949;
        float r45956 = r45942 ? r45949 : r45955;
        return r45956;
}

double f_od(double x, double y, double z, double t) {
        double r45957 = y;
        double r45958 = -1.3647715936252021e+175;
        bool r45959 = r45957 <= r45958;
        double r45960 = x;
        double r45961 = z;
        double r45962 = t;
        double r45963 = r45961 - r45962;
        double r45964 = r45963 / r45957;
        double r45965 = r45960 * r45964;
        double r45966 = r45965 + r45962;
        double r45967 = 1.9607321077053286e+33;
        bool r45968 = r45957 <= r45967;
        double r45969 = r45960 * r45963;
        double r45970 = r45969 / r45957;
        double r45971 = r45970 + r45962;
        double r45972 = r45968 ? r45971 : r45966;
        double r45973 = r45959 ? r45966 : r45972;
        return r45973;
}

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 r45974, r45975, r45976, r45977, r45978, r45979, r45980, r45981;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45974);
        mpfr_init(r45975);
        mpfr_init(r45976);
        mpfr_init(r45977);
        mpfr_init(r45978);
        mpfr_init(r45979);
        mpfr_init(r45980);
        mpfr_init(r45981);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45974, x, MPFR_RNDN);
        mpfr_set_d(r45975, y, MPFR_RNDN);
        mpfr_div(r45976, r45974, r45975, MPFR_RNDN);
        mpfr_set_d(r45977, z, MPFR_RNDN);
        mpfr_set_d(r45978, t, MPFR_RNDN);
        mpfr_sub(r45979, r45977, r45978, MPFR_RNDN);
        mpfr_mul(r45980, r45976, r45979, MPFR_RNDN);
        mpfr_add(r45981, r45980, r45978, MPFR_RNDN);
        return mpfr_get_d(r45981, MPFR_RNDN);
}

static mpfr_t r45982, r45983, r45984, r45985, r45986, r45987, r45988, r45989, r45990, r45991, r45992, r45993, r45994, r45995, r45996, r45997, r45998;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45982);
        mpfr_init_set_str(r45983, "-1.3647715936252021e+175", 10, MPFR_RNDN);
        mpfr_init(r45984);
        mpfr_init(r45985);
        mpfr_init(r45986);
        mpfr_init(r45987);
        mpfr_init(r45988);
        mpfr_init(r45989);
        mpfr_init(r45990);
        mpfr_init(r45991);
        mpfr_init_set_str(r45992, "1.9607321077053286e+33", 10, MPFR_RNDN);
        mpfr_init(r45993);
        mpfr_init(r45994);
        mpfr_init(r45995);
        mpfr_init(r45996);
        mpfr_init(r45997);
        mpfr_init(r45998);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45982, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45984, mpfr_cmp(r45982, r45983) <= 0, MPFR_RNDN);
        mpfr_set_d(r45985, x, MPFR_RNDN);
        mpfr_set_d(r45986, z, MPFR_RNDN);
        mpfr_set_d(r45987, t, MPFR_RNDN);
        mpfr_sub(r45988, r45986, r45987, MPFR_RNDN);
        mpfr_div(r45989, r45988, r45982, MPFR_RNDN);
        mpfr_mul(r45990, r45985, r45989, MPFR_RNDN);
        mpfr_add(r45991, r45990, r45987, MPFR_RNDN);
        ;
        mpfr_set_si(r45993, mpfr_cmp(r45982, r45992) <= 0, MPFR_RNDN);
        mpfr_mul(r45994, r45985, r45988, MPFR_RNDN);
        mpfr_div(r45995, r45994, r45982, MPFR_RNDN);
        mpfr_add(r45996, r45995, r45987, MPFR_RNDN);
        if (mpfr_get_si(r45993, MPFR_RNDN)) { mpfr_set(r45997, r45996, MPFR_RNDN); } else { mpfr_set(r45997, r45991, MPFR_RNDN); };
        if (mpfr_get_si(r45984, MPFR_RNDN)) { mpfr_set(r45998, r45991, MPFR_RNDN); } else { mpfr_set(r45998, r45997, MPFR_RNDN); };
        return mpfr_get_d(r45998, MPFR_RNDN);
}

static mpfr_t r45999, r46000, r46001, r46002, r46003, r46004, r46005, r46006, r46007, r46008, r46009, r46010, r46011, r46012, r46013, r46014, r46015;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45999);
        mpfr_init_set_str(r46000, "-1.3647715936252021e+175", 10, MPFR_RNDN);
        mpfr_init(r46001);
        mpfr_init(r46002);
        mpfr_init(r46003);
        mpfr_init(r46004);
        mpfr_init(r46005);
        mpfr_init(r46006);
        mpfr_init(r46007);
        mpfr_init(r46008);
        mpfr_init_set_str(r46009, "1.9607321077053286e+33", 10, MPFR_RNDN);
        mpfr_init(r46010);
        mpfr_init(r46011);
        mpfr_init(r46012);
        mpfr_init(r46013);
        mpfr_init(r46014);
        mpfr_init(r46015);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45999, y, MPFR_RNDN);
        ;
        mpfr_set_si(r46001, mpfr_cmp(r45999, r46000) <= 0, MPFR_RNDN);
        mpfr_set_d(r46002, x, MPFR_RNDN);
        mpfr_set_d(r46003, z, MPFR_RNDN);
        mpfr_set_d(r46004, t, MPFR_RNDN);
        mpfr_sub(r46005, r46003, r46004, MPFR_RNDN);
        mpfr_div(r46006, r46005, r45999, MPFR_RNDN);
        mpfr_mul(r46007, r46002, r46006, MPFR_RNDN);
        mpfr_add(r46008, r46007, r46004, MPFR_RNDN);
        ;
        mpfr_set_si(r46010, mpfr_cmp(r45999, r46009) <= 0, MPFR_RNDN);
        mpfr_mul(r46011, r46002, r46005, MPFR_RNDN);
        mpfr_div(r46012, r46011, r45999, MPFR_RNDN);
        mpfr_add(r46013, r46012, r46004, MPFR_RNDN);
        if (mpfr_get_si(r46010, MPFR_RNDN)) { mpfr_set(r46014, r46013, MPFR_RNDN); } else { mpfr_set(r46014, r46008, MPFR_RNDN); };
        if (mpfr_get_si(r46001, MPFR_RNDN)) { mpfr_set(r46015, r46008, MPFR_RNDN); } else { mpfr_set(r46015, r46014, MPFR_RNDN); };
        return mpfr_get_d(r46015, MPFR_RNDN);
}

