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

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

double f_if(float x, float y, float z, float t) {
        float r45565 = x;
        float r45566 = y;
        float r45567 = r45565 - r45566;
        float r45568 = z;
        float r45569 = r45568 - r45566;
        float r45570 = r45567 / r45569;
        float r45571 = t;
        float r45572 = r45570 * r45571;
        return r45572;
}

double f_id(double x, double y, double z, double t) {
        double r45573 = x;
        double r45574 = y;
        double r45575 = r45573 - r45574;
        double r45576 = z;
        double r45577 = r45576 - r45574;
        double r45578 = r45575 / r45577;
        double r45579 = t;
        double r45580 = r45578 * r45579;
        return r45580;
}


double f_of(float x, float y, float z, float t) {
        float r45581 = y;
        float r45582 = -2.5055034693753377e-107;
        bool r45583 = r45581 <= r45582;
        float r45584 = x;
        float r45585 = r45584 - r45581;
        float r45586 = z;
        float r45587 = r45586 - r45581;
        float r45588 = r45585 / r45587;
        float r45589 = t;
        float r45590 = r45588 * r45589;
        float r45591 = 4.4400627125562316e-139;
        bool r45592 = r45581 <= r45591;
        float r45593 = 1;
        float r45594 = r45593 / r45589;
        float r45595 = r45585 / r45594;
        float r45596 = r45595 / r45587;
        float r45597 = r45592 ? r45596 : r45590;
        float r45598 = r45583 ? r45590 : r45597;
        return r45598;
}

double f_od(double x, double y, double z, double t) {
        double r45599 = y;
        double r45600 = -2.5055034693753377e-107;
        bool r45601 = r45599 <= r45600;
        double r45602 = x;
        double r45603 = r45602 - r45599;
        double r45604 = z;
        double r45605 = r45604 - r45599;
        double r45606 = r45603 / r45605;
        double r45607 = t;
        double r45608 = r45606 * r45607;
        double r45609 = 4.4400627125562316e-139;
        bool r45610 = r45599 <= r45609;
        double r45611 = 1;
        double r45612 = r45611 / r45607;
        double r45613 = r45603 / r45612;
        double r45614 = r45613 / r45605;
        double r45615 = r45610 ? r45614 : r45608;
        double r45616 = r45601 ? r45608 : r45615;
        return r45616;
}

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 r45617, r45618, r45619, r45620, r45621, r45622, r45623, r45624;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45617);
        mpfr_init(r45618);
        mpfr_init(r45619);
        mpfr_init(r45620);
        mpfr_init(r45621);
        mpfr_init(r45622);
        mpfr_init(r45623);
        mpfr_init(r45624);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45617, x, MPFR_RNDN);
        mpfr_set_d(r45618, y, MPFR_RNDN);
        mpfr_sub(r45619, r45617, r45618, MPFR_RNDN);
        mpfr_set_d(r45620, z, MPFR_RNDN);
        mpfr_sub(r45621, r45620, r45618, MPFR_RNDN);
        mpfr_div(r45622, r45619, r45621, MPFR_RNDN);
        mpfr_set_d(r45623, t, MPFR_RNDN);
        mpfr_mul(r45624, r45622, r45623, MPFR_RNDN);
        return mpfr_get_d(r45624, MPFR_RNDN);
}

static mpfr_t r45625, r45626, r45627, r45628, r45629, r45630, r45631, r45632, r45633, r45634, r45635, r45636, r45637, r45638, r45639, r45640, r45641, r45642;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45625);
        mpfr_init_set_str(r45626, "-2.5055034693753377e-107", 10, MPFR_RNDN);
        mpfr_init(r45627);
        mpfr_init(r45628);
        mpfr_init(r45629);
        mpfr_init(r45630);
        mpfr_init(r45631);
        mpfr_init(r45632);
        mpfr_init(r45633);
        mpfr_init(r45634);
        mpfr_init_set_str(r45635, "4.4400627125562316e-139", 10, MPFR_RNDN);
        mpfr_init(r45636);
        mpfr_init_set_str(r45637, "1", 10, MPFR_RNDN);
        mpfr_init(r45638);
        mpfr_init(r45639);
        mpfr_init(r45640);
        mpfr_init(r45641);
        mpfr_init(r45642);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45625, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45627, mpfr_cmp(r45625, r45626) <= 0, MPFR_RNDN);
        mpfr_set_d(r45628, x, MPFR_RNDN);
        mpfr_sub(r45629, r45628, r45625, MPFR_RNDN);
        mpfr_set_d(r45630, z, MPFR_RNDN);
        mpfr_sub(r45631, r45630, r45625, MPFR_RNDN);
        mpfr_div(r45632, r45629, r45631, MPFR_RNDN);
        mpfr_set_d(r45633, t, MPFR_RNDN);
        mpfr_mul(r45634, r45632, r45633, MPFR_RNDN);
        ;
        mpfr_set_si(r45636, mpfr_cmp(r45625, r45635) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r45638, r45637, r45633, MPFR_RNDN);
        mpfr_div(r45639, r45629, r45638, MPFR_RNDN);
        mpfr_div(r45640, r45639, r45631, MPFR_RNDN);
        if (mpfr_get_si(r45636, MPFR_RNDN)) { mpfr_set(r45641, r45640, MPFR_RNDN); } else { mpfr_set(r45641, r45634, MPFR_RNDN); };
        if (mpfr_get_si(r45627, MPFR_RNDN)) { mpfr_set(r45642, r45634, MPFR_RNDN); } else { mpfr_set(r45642, r45641, MPFR_RNDN); };
        return mpfr_get_d(r45642, MPFR_RNDN);
}

static mpfr_t r45643, r45644, r45645, r45646, r45647, r45648, r45649, r45650, r45651, r45652, r45653, r45654, r45655, r45656, r45657, r45658, r45659, r45660;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45643);
        mpfr_init_set_str(r45644, "-2.5055034693753377e-107", 10, MPFR_RNDN);
        mpfr_init(r45645);
        mpfr_init(r45646);
        mpfr_init(r45647);
        mpfr_init(r45648);
        mpfr_init(r45649);
        mpfr_init(r45650);
        mpfr_init(r45651);
        mpfr_init(r45652);
        mpfr_init_set_str(r45653, "4.4400627125562316e-139", 10, MPFR_RNDN);
        mpfr_init(r45654);
        mpfr_init_set_str(r45655, "1", 10, MPFR_RNDN);
        mpfr_init(r45656);
        mpfr_init(r45657);
        mpfr_init(r45658);
        mpfr_init(r45659);
        mpfr_init(r45660);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45643, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45645, mpfr_cmp(r45643, r45644) <= 0, MPFR_RNDN);
        mpfr_set_d(r45646, x, MPFR_RNDN);
        mpfr_sub(r45647, r45646, r45643, MPFR_RNDN);
        mpfr_set_d(r45648, z, MPFR_RNDN);
        mpfr_sub(r45649, r45648, r45643, MPFR_RNDN);
        mpfr_div(r45650, r45647, r45649, MPFR_RNDN);
        mpfr_set_d(r45651, t, MPFR_RNDN);
        mpfr_mul(r45652, r45650, r45651, MPFR_RNDN);
        ;
        mpfr_set_si(r45654, mpfr_cmp(r45643, r45653) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r45656, r45655, r45651, MPFR_RNDN);
        mpfr_div(r45657, r45647, r45656, MPFR_RNDN);
        mpfr_div(r45658, r45657, r45649, MPFR_RNDN);
        if (mpfr_get_si(r45654, MPFR_RNDN)) { mpfr_set(r45659, r45658, MPFR_RNDN); } else { mpfr_set(r45659, r45652, MPFR_RNDN); };
        if (mpfr_get_si(r45645, MPFR_RNDN)) { mpfr_set(r45660, r45652, MPFR_RNDN); } else { mpfr_set(r45660, r45659, MPFR_RNDN); };
        return mpfr_get_d(r45660, MPFR_RNDN);
}

