#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 r45901 = x;
        float r45902 = y;
        float r45903 = r45901 / r45902;
        float r45904 = z;
        float r45905 = t;
        float r45906 = r45904 - r45905;
        float r45907 = r45903 * r45906;
        float r45908 = r45907 + r45905;
        return r45908;
}

double f_id(double x, double y, double z, double t) {
        double r45909 = x;
        double r45910 = y;
        double r45911 = r45909 / r45910;
        double r45912 = z;
        double r45913 = t;
        double r45914 = r45912 - r45913;
        double r45915 = r45911 * r45914;
        double r45916 = r45915 + r45913;
        return r45916;
}


double f_of(float x, float y, float z, float t) {
        float r45917 = t;
        float r45918 = -4.436992858070483e-38;
        bool r45919 = r45917 <= r45918;
        float r45920 = x;
        float r45921 = y;
        float r45922 = r45920 / r45921;
        float r45923 = z;
        float r45924 = r45923 - r45917;
        float r45925 = r45922 * r45924;
        float r45926 = r45925 + r45917;
        float r45927 = 1.4830043097274956e-188;
        bool r45928 = r45917 <= r45927;
        float r45929 = r45920 * r45924;
        float r45930 = 1;
        float r45931 = r45930 / r45921;
        float r45932 = r45929 * r45931;
        float r45933 = r45932 + r45917;
        float r45934 = r45928 ? r45933 : r45926;
        float r45935 = r45919 ? r45926 : r45934;
        return r45935;
}

double f_od(double x, double y, double z, double t) {
        double r45936 = t;
        double r45937 = -4.436992858070483e-38;
        bool r45938 = r45936 <= r45937;
        double r45939 = x;
        double r45940 = y;
        double r45941 = r45939 / r45940;
        double r45942 = z;
        double r45943 = r45942 - r45936;
        double r45944 = r45941 * r45943;
        double r45945 = r45944 + r45936;
        double r45946 = 1.4830043097274956e-188;
        bool r45947 = r45936 <= r45946;
        double r45948 = r45939 * r45943;
        double r45949 = 1;
        double r45950 = r45949 / r45940;
        double r45951 = r45948 * r45950;
        double r45952 = r45951 + r45936;
        double r45953 = r45947 ? r45952 : r45945;
        double r45954 = r45938 ? r45945 : r45953;
        return r45954;
}

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 r45955, r45956, r45957, r45958, r45959, r45960, r45961, r45962;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45955);
        mpfr_init(r45956);
        mpfr_init(r45957);
        mpfr_init(r45958);
        mpfr_init(r45959);
        mpfr_init(r45960);
        mpfr_init(r45961);
        mpfr_init(r45962);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45955, x, MPFR_RNDN);
        mpfr_set_d(r45956, y, MPFR_RNDN);
        mpfr_div(r45957, r45955, r45956, MPFR_RNDN);
        mpfr_set_d(r45958, z, MPFR_RNDN);
        mpfr_set_d(r45959, t, MPFR_RNDN);
        mpfr_sub(r45960, r45958, r45959, MPFR_RNDN);
        mpfr_mul(r45961, r45957, r45960, MPFR_RNDN);
        mpfr_add(r45962, r45961, r45959, MPFR_RNDN);
        return mpfr_get_d(r45962, MPFR_RNDN);
}

static mpfr_t r45963, r45964, r45965, r45966, r45967, r45968, r45969, r45970, r45971, r45972, r45973, r45974, r45975, r45976, r45977, r45978, r45979, r45980, r45981;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45963);
        mpfr_init_set_str(r45964, "-4.436992858070483e-38", 10, MPFR_RNDN);
        mpfr_init(r45965);
        mpfr_init(r45966);
        mpfr_init(r45967);
        mpfr_init(r45968);
        mpfr_init(r45969);
        mpfr_init(r45970);
        mpfr_init(r45971);
        mpfr_init(r45972);
        mpfr_init_set_str(r45973, "1.4830043097274956e-188", 10, MPFR_RNDN);
        mpfr_init(r45974);
        mpfr_init(r45975);
        mpfr_init_set_str(r45976, "1", 10, MPFR_RNDN);
        mpfr_init(r45977);
        mpfr_init(r45978);
        mpfr_init(r45979);
        mpfr_init(r45980);
        mpfr_init(r45981);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45963, t, MPFR_RNDN);
        ;
        mpfr_set_si(r45965, mpfr_cmp(r45963, r45964) <= 0, MPFR_RNDN);
        mpfr_set_d(r45966, x, MPFR_RNDN);
        mpfr_set_d(r45967, y, MPFR_RNDN);
        mpfr_div(r45968, r45966, r45967, MPFR_RNDN);
        mpfr_set_d(r45969, z, MPFR_RNDN);
        mpfr_sub(r45970, r45969, r45963, MPFR_RNDN);
        mpfr_mul(r45971, r45968, r45970, MPFR_RNDN);
        mpfr_add(r45972, r45971, r45963, MPFR_RNDN);
        ;
        mpfr_set_si(r45974, mpfr_cmp(r45963, r45973) <= 0, MPFR_RNDN);
        mpfr_mul(r45975, r45966, r45970, MPFR_RNDN);
        ;
        mpfr_div(r45977, r45976, r45967, MPFR_RNDN);
        mpfr_mul(r45978, r45975, r45977, MPFR_RNDN);
        mpfr_add(r45979, r45978, r45963, MPFR_RNDN);
        if (mpfr_get_si(r45974, MPFR_RNDN)) { mpfr_set(r45980, r45979, MPFR_RNDN); } else { mpfr_set(r45980, r45972, MPFR_RNDN); };
        if (mpfr_get_si(r45965, MPFR_RNDN)) { mpfr_set(r45981, r45972, MPFR_RNDN); } else { mpfr_set(r45981, r45980, 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, r45999, r46000;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45982);
        mpfr_init_set_str(r45983, "-4.436992858070483e-38", 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.4830043097274956e-188", 10, MPFR_RNDN);
        mpfr_init(r45993);
        mpfr_init(r45994);
        mpfr_init_set_str(r45995, "1", 10, MPFR_RNDN);
        mpfr_init(r45996);
        mpfr_init(r45997);
        mpfr_init(r45998);
        mpfr_init(r45999);
        mpfr_init(r46000);
}

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

