#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 r45399 = x;
        float r45400 = y;
        float r45401 = r45399 / r45400;
        float r45402 = z;
        float r45403 = t;
        float r45404 = r45402 - r45403;
        float r45405 = r45401 * r45404;
        float r45406 = r45405 + r45403;
        return r45406;
}

double f_id(double x, double y, double z, double t) {
        double r45407 = x;
        double r45408 = y;
        double r45409 = r45407 / r45408;
        double r45410 = z;
        double r45411 = t;
        double r45412 = r45410 - r45411;
        double r45413 = r45409 * r45412;
        double r45414 = r45413 + r45411;
        return r45414;
}


double f_of(float x, float y, float z, float t) {
        float r45415 = t;
        float r45416 = -4.436992858070483e-38;
        bool r45417 = r45415 <= r45416;
        float r45418 = x;
        float r45419 = y;
        float r45420 = r45418 / r45419;
        float r45421 = z;
        float r45422 = r45421 - r45415;
        float r45423 = r45420 * r45422;
        float r45424 = r45423 + r45415;
        float r45425 = 1.4830043097274956e-188;
        bool r45426 = r45415 <= r45425;
        float r45427 = r45418 * r45422;
        float r45428 = 1;
        float r45429 = r45428 / r45419;
        float r45430 = r45427 * r45429;
        float r45431 = r45430 + r45415;
        float r45432 = r45426 ? r45431 : r45424;
        float r45433 = r45417 ? r45424 : r45432;
        return r45433;
}

double f_od(double x, double y, double z, double t) {
        double r45434 = t;
        double r45435 = -4.436992858070483e-38;
        bool r45436 = r45434 <= r45435;
        double r45437 = x;
        double r45438 = y;
        double r45439 = r45437 / r45438;
        double r45440 = z;
        double r45441 = r45440 - r45434;
        double r45442 = r45439 * r45441;
        double r45443 = r45442 + r45434;
        double r45444 = 1.4830043097274956e-188;
        bool r45445 = r45434 <= r45444;
        double r45446 = r45437 * r45441;
        double r45447 = 1;
        double r45448 = r45447 / r45438;
        double r45449 = r45446 * r45448;
        double r45450 = r45449 + r45434;
        double r45451 = r45445 ? r45450 : r45443;
        double r45452 = r45436 ? r45443 : r45451;
        return r45452;
}

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 r45453, r45454, r45455, r45456, r45457, r45458, r45459, r45460;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45453);
        mpfr_init(r45454);
        mpfr_init(r45455);
        mpfr_init(r45456);
        mpfr_init(r45457);
        mpfr_init(r45458);
        mpfr_init(r45459);
        mpfr_init(r45460);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45453, x, MPFR_RNDN);
        mpfr_set_d(r45454, y, MPFR_RNDN);
        mpfr_div(r45455, r45453, r45454, MPFR_RNDN);
        mpfr_set_d(r45456, z, MPFR_RNDN);
        mpfr_set_d(r45457, t, MPFR_RNDN);
        mpfr_sub(r45458, r45456, r45457, MPFR_RNDN);
        mpfr_mul(r45459, r45455, r45458, MPFR_RNDN);
        mpfr_add(r45460, r45459, r45457, MPFR_RNDN);
        return mpfr_get_d(r45460, MPFR_RNDN);
}

static mpfr_t r45461, r45462, r45463, r45464, r45465, r45466, r45467, r45468, r45469, r45470, r45471, r45472, r45473, r45474, r45475, r45476, r45477, r45478, r45479;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45461);
        mpfr_init_set_str(r45462, "-4.436992858070483e-38", 10, MPFR_RNDN);
        mpfr_init(r45463);
        mpfr_init(r45464);
        mpfr_init(r45465);
        mpfr_init(r45466);
        mpfr_init(r45467);
        mpfr_init(r45468);
        mpfr_init(r45469);
        mpfr_init(r45470);
        mpfr_init_set_str(r45471, "1.4830043097274956e-188", 10, MPFR_RNDN);
        mpfr_init(r45472);
        mpfr_init(r45473);
        mpfr_init_set_str(r45474, "1", 10, MPFR_RNDN);
        mpfr_init(r45475);
        mpfr_init(r45476);
        mpfr_init(r45477);
        mpfr_init(r45478);
        mpfr_init(r45479);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45461, t, MPFR_RNDN);
        ;
        mpfr_set_si(r45463, mpfr_cmp(r45461, r45462) <= 0, MPFR_RNDN);
        mpfr_set_d(r45464, x, MPFR_RNDN);
        mpfr_set_d(r45465, y, MPFR_RNDN);
        mpfr_div(r45466, r45464, r45465, MPFR_RNDN);
        mpfr_set_d(r45467, z, MPFR_RNDN);
        mpfr_sub(r45468, r45467, r45461, MPFR_RNDN);
        mpfr_mul(r45469, r45466, r45468, MPFR_RNDN);
        mpfr_add(r45470, r45469, r45461, MPFR_RNDN);
        ;
        mpfr_set_si(r45472, mpfr_cmp(r45461, r45471) <= 0, MPFR_RNDN);
        mpfr_mul(r45473, r45464, r45468, MPFR_RNDN);
        ;
        mpfr_div(r45475, r45474, r45465, MPFR_RNDN);
        mpfr_mul(r45476, r45473, r45475, MPFR_RNDN);
        mpfr_add(r45477, r45476, r45461, MPFR_RNDN);
        if (mpfr_get_si(r45472, MPFR_RNDN)) { mpfr_set(r45478, r45477, MPFR_RNDN); } else { mpfr_set(r45478, r45470, MPFR_RNDN); };
        if (mpfr_get_si(r45463, MPFR_RNDN)) { mpfr_set(r45479, r45470, MPFR_RNDN); } else { mpfr_set(r45479, r45478, MPFR_RNDN); };
        return mpfr_get_d(r45479, MPFR_RNDN);
}

static mpfr_t r45480, r45481, r45482, r45483, r45484, r45485, r45486, r45487, r45488, r45489, r45490, r45491, r45492, r45493, r45494, r45495, r45496, r45497, r45498;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45480);
        mpfr_init_set_str(r45481, "-4.436992858070483e-38", 10, MPFR_RNDN);
        mpfr_init(r45482);
        mpfr_init(r45483);
        mpfr_init(r45484);
        mpfr_init(r45485);
        mpfr_init(r45486);
        mpfr_init(r45487);
        mpfr_init(r45488);
        mpfr_init(r45489);
        mpfr_init_set_str(r45490, "1.4830043097274956e-188", 10, MPFR_RNDN);
        mpfr_init(r45491);
        mpfr_init(r45492);
        mpfr_init_set_str(r45493, "1", 10, MPFR_RNDN);
        mpfr_init(r45494);
        mpfr_init(r45495);
        mpfr_init(r45496);
        mpfr_init(r45497);
        mpfr_init(r45498);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45480, t, MPFR_RNDN);
        ;
        mpfr_set_si(r45482, mpfr_cmp(r45480, r45481) <= 0, MPFR_RNDN);
        mpfr_set_d(r45483, x, MPFR_RNDN);
        mpfr_set_d(r45484, y, MPFR_RNDN);
        mpfr_div(r45485, r45483, r45484, MPFR_RNDN);
        mpfr_set_d(r45486, z, MPFR_RNDN);
        mpfr_sub(r45487, r45486, r45480, MPFR_RNDN);
        mpfr_mul(r45488, r45485, r45487, MPFR_RNDN);
        mpfr_add(r45489, r45488, r45480, MPFR_RNDN);
        ;
        mpfr_set_si(r45491, mpfr_cmp(r45480, r45490) <= 0, MPFR_RNDN);
        mpfr_mul(r45492, r45483, r45487, MPFR_RNDN);
        ;
        mpfr_div(r45494, r45493, r45484, MPFR_RNDN);
        mpfr_mul(r45495, r45492, r45494, MPFR_RNDN);
        mpfr_add(r45496, r45495, r45480, MPFR_RNDN);
        if (mpfr_get_si(r45491, MPFR_RNDN)) { mpfr_set(r45497, r45496, MPFR_RNDN); } else { mpfr_set(r45497, r45489, MPFR_RNDN); };
        if (mpfr_get_si(r45482, MPFR_RNDN)) { mpfr_set(r45498, r45489, MPFR_RNDN); } else { mpfr_set(r45498, r45497, MPFR_RNDN); };
        return mpfr_get_d(r45498, MPFR_RNDN);
}

