#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 r45897 = x;
        float r45898 = y;
        float r45899 = r45897 / r45898;
        float r45900 = z;
        float r45901 = t;
        float r45902 = r45900 - r45901;
        float r45903 = r45899 * r45902;
        float r45904 = r45903 + r45901;
        return r45904;
}

double f_id(double x, double y, double z, double t) {
        double r45905 = x;
        double r45906 = y;
        double r45907 = r45905 / r45906;
        double r45908 = z;
        double r45909 = t;
        double r45910 = r45908 - r45909;
        double r45911 = r45907 * r45910;
        double r45912 = r45911 + r45909;
        return r45912;
}


double f_of(float x, float y, float z, float t) {
        float r45913 = t;
        float r45914 = -1.0656602041483226e-38;
        bool r45915 = r45913 <= r45914;
        float r45916 = x;
        float r45917 = y;
        float r45918 = r45916 / r45917;
        float r45919 = z;
        float r45920 = r45919 - r45913;
        float r45921 = r45918 * r45920;
        float r45922 = r45921 + r45913;
        float r45923 = 6.223312755956837e-188;
        bool r45924 = r45913 <= r45923;
        float r45925 = r45916 * r45920;
        float r45926 = 1;
        float r45927 = r45926 / r45917;
        float r45928 = r45925 * r45927;
        float r45929 = r45928 + r45913;
        float r45930 = r45924 ? r45929 : r45922;
        float r45931 = r45915 ? r45922 : r45930;
        return r45931;
}

double f_od(double x, double y, double z, double t) {
        double r45932 = t;
        double r45933 = -1.0656602041483226e-38;
        bool r45934 = r45932 <= r45933;
        double r45935 = x;
        double r45936 = y;
        double r45937 = r45935 / r45936;
        double r45938 = z;
        double r45939 = r45938 - r45932;
        double r45940 = r45937 * r45939;
        double r45941 = r45940 + r45932;
        double r45942 = 6.223312755956837e-188;
        bool r45943 = r45932 <= r45942;
        double r45944 = r45935 * r45939;
        double r45945 = 1;
        double r45946 = r45945 / r45936;
        double r45947 = r45944 * r45946;
        double r45948 = r45947 + r45932;
        double r45949 = r45943 ? r45948 : r45941;
        double r45950 = r45934 ? r45941 : r45949;
        return r45950;
}

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 r45951, r45952, r45953, r45954, r45955, r45956, r45957, r45958;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45951);
        mpfr_init(r45952);
        mpfr_init(r45953);
        mpfr_init(r45954);
        mpfr_init(r45955);
        mpfr_init(r45956);
        mpfr_init(r45957);
        mpfr_init(r45958);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45951, x, MPFR_RNDN);
        mpfr_set_d(r45952, y, MPFR_RNDN);
        mpfr_div(r45953, r45951, r45952, MPFR_RNDN);
        mpfr_set_d(r45954, z, MPFR_RNDN);
        mpfr_set_d(r45955, t, MPFR_RNDN);
        mpfr_sub(r45956, r45954, r45955, MPFR_RNDN);
        mpfr_mul(r45957, r45953, r45956, MPFR_RNDN);
        mpfr_add(r45958, r45957, r45955, MPFR_RNDN);
        return mpfr_get_d(r45958, MPFR_RNDN);
}

static mpfr_t r45959, r45960, r45961, r45962, r45963, r45964, r45965, r45966, r45967, r45968, r45969, r45970, r45971, r45972, r45973, r45974, r45975, r45976, r45977;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45959);
        mpfr_init_set_str(r45960, "-1.0656602041483226e-38", 10, MPFR_RNDN);
        mpfr_init(r45961);
        mpfr_init(r45962);
        mpfr_init(r45963);
        mpfr_init(r45964);
        mpfr_init(r45965);
        mpfr_init(r45966);
        mpfr_init(r45967);
        mpfr_init(r45968);
        mpfr_init_set_str(r45969, "6.223312755956837e-188", 10, MPFR_RNDN);
        mpfr_init(r45970);
        mpfr_init(r45971);
        mpfr_init_set_str(r45972, "1", 10, MPFR_RNDN);
        mpfr_init(r45973);
        mpfr_init(r45974);
        mpfr_init(r45975);
        mpfr_init(r45976);
        mpfr_init(r45977);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45959, t, MPFR_RNDN);
        ;
        mpfr_set_si(r45961, mpfr_cmp(r45959, r45960) <= 0, MPFR_RNDN);
        mpfr_set_d(r45962, x, MPFR_RNDN);
        mpfr_set_d(r45963, y, MPFR_RNDN);
        mpfr_div(r45964, r45962, r45963, MPFR_RNDN);
        mpfr_set_d(r45965, z, MPFR_RNDN);
        mpfr_sub(r45966, r45965, r45959, MPFR_RNDN);
        mpfr_mul(r45967, r45964, r45966, MPFR_RNDN);
        mpfr_add(r45968, r45967, r45959, MPFR_RNDN);
        ;
        mpfr_set_si(r45970, mpfr_cmp(r45959, r45969) <= 0, MPFR_RNDN);
        mpfr_mul(r45971, r45962, r45966, MPFR_RNDN);
        ;
        mpfr_div(r45973, r45972, r45963, MPFR_RNDN);
        mpfr_mul(r45974, r45971, r45973, MPFR_RNDN);
        mpfr_add(r45975, r45974, r45959, MPFR_RNDN);
        if (mpfr_get_si(r45970, MPFR_RNDN)) { mpfr_set(r45976, r45975, MPFR_RNDN); } else { mpfr_set(r45976, r45968, MPFR_RNDN); };
        if (mpfr_get_si(r45961, MPFR_RNDN)) { mpfr_set(r45977, r45968, MPFR_RNDN); } else { mpfr_set(r45977, r45976, MPFR_RNDN); };
        return mpfr_get_d(r45977, MPFR_RNDN);
}

static mpfr_t r45978, r45979, r45980, r45981, r45982, r45983, r45984, r45985, r45986, r45987, r45988, r45989, r45990, r45991, r45992, r45993, r45994, r45995, r45996;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45978);
        mpfr_init_set_str(r45979, "-1.0656602041483226e-38", 10, MPFR_RNDN);
        mpfr_init(r45980);
        mpfr_init(r45981);
        mpfr_init(r45982);
        mpfr_init(r45983);
        mpfr_init(r45984);
        mpfr_init(r45985);
        mpfr_init(r45986);
        mpfr_init(r45987);
        mpfr_init_set_str(r45988, "6.223312755956837e-188", 10, MPFR_RNDN);
        mpfr_init(r45989);
        mpfr_init(r45990);
        mpfr_init_set_str(r45991, "1", 10, MPFR_RNDN);
        mpfr_init(r45992);
        mpfr_init(r45993);
        mpfr_init(r45994);
        mpfr_init(r45995);
        mpfr_init(r45996);
}

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

