#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 r42550 = x;
        float r42551 = y;
        float r42552 = r42550 - r42551;
        float r42553 = z;
        float r42554 = r42553 - r42551;
        float r42555 = r42552 / r42554;
        float r42556 = t;
        float r42557 = r42555 * r42556;
        return r42557;
}

double f_id(double x, double y, double z, double t) {
        double r42558 = x;
        double r42559 = y;
        double r42560 = r42558 - r42559;
        double r42561 = z;
        double r42562 = r42561 - r42559;
        double r42563 = r42560 / r42562;
        double r42564 = t;
        double r42565 = r42563 * r42564;
        return r42565;
}


double f_of(float x, float y, float z, float t) {
        float r42566 = x;
        float r42567 = y;
        float r42568 = r42566 - r42567;
        float r42569 = z;
        float r42570 = r42569 - r42567;
        float r42571 = r42568 / r42570;
        float r42572 = t;
        float r42573 = r42571 * r42572;
        float r42574 = -6.607091110953482e-14f;
        bool r42575 = r42573 <= r42574;
        float r42576 = r42572 / r42570;
        float r42577 = r42568 * r42576;
        float r42578 = 2.5719851404145336e-248f;
        bool r42579 = r42573 <= r42578;
        float r42580 = r42568 * r42572;
        float r42581 = r42580 / r42570;
        float r42582 = r42579 ? r42581 : r42573;
        float r42583 = r42575 ? r42577 : r42582;
        return r42583;
}

double f_od(double x, double y, double z, double t) {
        double r42584 = x;
        double r42585 = y;
        double r42586 = r42584 - r42585;
        double r42587 = z;
        double r42588 = r42587 - r42585;
        double r42589 = r42586 / r42588;
        double r42590 = t;
        double r42591 = r42589 * r42590;
        double r42592 = -6.607091110953482e-14;
        bool r42593 = r42591 <= r42592;
        double r42594 = r42590 / r42588;
        double r42595 = r42586 * r42594;
        double r42596 = 2.5719851404145336e-248;
        bool r42597 = r42591 <= r42596;
        double r42598 = r42586 * r42590;
        double r42599 = r42598 / r42588;
        double r42600 = r42597 ? r42599 : r42591;
        double r42601 = r42593 ? r42595 : r42600;
        return r42601;
}

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 r42602, r42603, r42604, r42605, r42606, r42607, r42608, r42609;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r42602);
        mpfr_init(r42603);
        mpfr_init(r42604);
        mpfr_init(r42605);
        mpfr_init(r42606);
        mpfr_init(r42607);
        mpfr_init(r42608);
        mpfr_init(r42609);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r42602, x, MPFR_RNDN);
        mpfr_set_d(r42603, y, MPFR_RNDN);
        mpfr_sub(r42604, r42602, r42603, MPFR_RNDN);
        mpfr_set_d(r42605, z, MPFR_RNDN);
        mpfr_sub(r42606, r42605, r42603, MPFR_RNDN);
        mpfr_div(r42607, r42604, r42606, MPFR_RNDN);
        mpfr_set_d(r42608, t, MPFR_RNDN);
        mpfr_mul(r42609, r42607, r42608, MPFR_RNDN);
        return mpfr_get_d(r42609, MPFR_RNDN);
}

static mpfr_t r42610, r42611, r42612, r42613, r42614, r42615, r42616, r42617, r42618, r42619, r42620, r42621, r42622, r42623, r42624, r42625, r42626, r42627;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42610);
        mpfr_init(r42611);
        mpfr_init(r42612);
        mpfr_init(r42613);
        mpfr_init(r42614);
        mpfr_init(r42615);
        mpfr_init(r42616);
        mpfr_init(r42617);
        mpfr_init_set_str(r42618, "-6.607091110953482e-14", 10, MPFR_RNDN);
        mpfr_init(r42619);
        mpfr_init(r42620);
        mpfr_init(r42621);
        mpfr_init_set_str(r42622, "2.5719851404145336e-248", 10, MPFR_RNDN);
        mpfr_init(r42623);
        mpfr_init(r42624);
        mpfr_init(r42625);
        mpfr_init(r42626);
        mpfr_init(r42627);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r42610, x, MPFR_RNDN);
        mpfr_set_d(r42611, y, MPFR_RNDN);
        mpfr_sub(r42612, r42610, r42611, MPFR_RNDN);
        mpfr_set_d(r42613, z, MPFR_RNDN);
        mpfr_sub(r42614, r42613, r42611, MPFR_RNDN);
        mpfr_div(r42615, r42612, r42614, MPFR_RNDN);
        mpfr_set_d(r42616, t, MPFR_RNDN);
        mpfr_mul(r42617, r42615, r42616, MPFR_RNDN);
        ;
        mpfr_set_si(r42619, mpfr_cmp(r42617, r42618) <= 0, MPFR_RNDN);
        mpfr_div(r42620, r42616, r42614, MPFR_RNDN);
        mpfr_mul(r42621, r42612, r42620, MPFR_RNDN);
        ;
        mpfr_set_si(r42623, mpfr_cmp(r42617, r42622) <= 0, MPFR_RNDN);
        mpfr_mul(r42624, r42612, r42616, MPFR_RNDN);
        mpfr_div(r42625, r42624, r42614, MPFR_RNDN);
        if (mpfr_get_si(r42623, MPFR_RNDN)) { mpfr_set(r42626, r42625, MPFR_RNDN); } else { mpfr_set(r42626, r42617, MPFR_RNDN); };
        if (mpfr_get_si(r42619, MPFR_RNDN)) { mpfr_set(r42627, r42621, MPFR_RNDN); } else { mpfr_set(r42627, r42626, MPFR_RNDN); };
        return mpfr_get_d(r42627, MPFR_RNDN);
}

static mpfr_t r42628, r42629, r42630, r42631, r42632, r42633, r42634, r42635, r42636, r42637, r42638, r42639, r42640, r42641, r42642, r42643, r42644, r42645;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42628);
        mpfr_init(r42629);
        mpfr_init(r42630);
        mpfr_init(r42631);
        mpfr_init(r42632);
        mpfr_init(r42633);
        mpfr_init(r42634);
        mpfr_init(r42635);
        mpfr_init_set_str(r42636, "-6.607091110953482e-14", 10, MPFR_RNDN);
        mpfr_init(r42637);
        mpfr_init(r42638);
        mpfr_init(r42639);
        mpfr_init_set_str(r42640, "2.5719851404145336e-248", 10, MPFR_RNDN);
        mpfr_init(r42641);
        mpfr_init(r42642);
        mpfr_init(r42643);
        mpfr_init(r42644);
        mpfr_init(r42645);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r42628, x, MPFR_RNDN);
        mpfr_set_d(r42629, y, MPFR_RNDN);
        mpfr_sub(r42630, r42628, r42629, MPFR_RNDN);
        mpfr_set_d(r42631, z, MPFR_RNDN);
        mpfr_sub(r42632, r42631, r42629, MPFR_RNDN);
        mpfr_div(r42633, r42630, r42632, MPFR_RNDN);
        mpfr_set_d(r42634, t, MPFR_RNDN);
        mpfr_mul(r42635, r42633, r42634, MPFR_RNDN);
        ;
        mpfr_set_si(r42637, mpfr_cmp(r42635, r42636) <= 0, MPFR_RNDN);
        mpfr_div(r42638, r42634, r42632, MPFR_RNDN);
        mpfr_mul(r42639, r42630, r42638, MPFR_RNDN);
        ;
        mpfr_set_si(r42641, mpfr_cmp(r42635, r42640) <= 0, MPFR_RNDN);
        mpfr_mul(r42642, r42630, r42634, MPFR_RNDN);
        mpfr_div(r42643, r42642, r42632, MPFR_RNDN);
        if (mpfr_get_si(r42641, MPFR_RNDN)) { mpfr_set(r42644, r42643, MPFR_RNDN); } else { mpfr_set(r42644, r42635, MPFR_RNDN); };
        if (mpfr_get_si(r42637, MPFR_RNDN)) { mpfr_set(r42645, r42639, MPFR_RNDN); } else { mpfr_set(r42645, r42644, MPFR_RNDN); };
        return mpfr_get_d(r42645, MPFR_RNDN);
}

