#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 r45311 = x;
        float r45312 = y;
        float r45313 = r45311 - r45312;
        float r45314 = z;
        float r45315 = r45314 - r45312;
        float r45316 = r45313 / r45315;
        float r45317 = t;
        float r45318 = r45316 * r45317;
        return r45318;
}

double f_id(double x, double y, double z, double t) {
        double r45319 = x;
        double r45320 = y;
        double r45321 = r45319 - r45320;
        double r45322 = z;
        double r45323 = r45322 - r45320;
        double r45324 = r45321 / r45323;
        double r45325 = t;
        double r45326 = r45324 * r45325;
        return r45326;
}


double f_of(float x, float y, float z, float t) {
        float r45327 = y;
        float r45328 = -6.5957413497510635e-87;
        bool r45329 = r45327 <= r45328;
        float r45330 = x;
        float r45331 = r45330 - r45327;
        float r45332 = z;
        float r45333 = r45332 - r45327;
        float r45334 = r45331 / r45333;
        float r45335 = t;
        float r45336 = r45334 * r45335;
        float r45337 = 1.149126986208414e-104;
        bool r45338 = r45327 <= r45337;
        float r45339 = r45335 / r45333;
        float r45340 = r45331 * r45339;
        float r45341 = r45338 ? r45340 : r45336;
        float r45342 = r45329 ? r45336 : r45341;
        return r45342;
}

double f_od(double x, double y, double z, double t) {
        double r45343 = y;
        double r45344 = -6.5957413497510635e-87;
        bool r45345 = r45343 <= r45344;
        double r45346 = x;
        double r45347 = r45346 - r45343;
        double r45348 = z;
        double r45349 = r45348 - r45343;
        double r45350 = r45347 / r45349;
        double r45351 = t;
        double r45352 = r45350 * r45351;
        double r45353 = 1.149126986208414e-104;
        bool r45354 = r45343 <= r45353;
        double r45355 = r45351 / r45349;
        double r45356 = r45347 * r45355;
        double r45357 = r45354 ? r45356 : r45352;
        double r45358 = r45345 ? r45352 : r45357;
        return r45358;
}

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 r45359, r45360, r45361, r45362, r45363, r45364, r45365, r45366;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45359);
        mpfr_init(r45360);
        mpfr_init(r45361);
        mpfr_init(r45362);
        mpfr_init(r45363);
        mpfr_init(r45364);
        mpfr_init(r45365);
        mpfr_init(r45366);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45359, x, MPFR_RNDN);
        mpfr_set_d(r45360, y, MPFR_RNDN);
        mpfr_sub(r45361, r45359, r45360, MPFR_RNDN);
        mpfr_set_d(r45362, z, MPFR_RNDN);
        mpfr_sub(r45363, r45362, r45360, MPFR_RNDN);
        mpfr_div(r45364, r45361, r45363, MPFR_RNDN);
        mpfr_set_d(r45365, t, MPFR_RNDN);
        mpfr_mul(r45366, r45364, r45365, MPFR_RNDN);
        return mpfr_get_d(r45366, MPFR_RNDN);
}

static mpfr_t r45367, r45368, r45369, r45370, r45371, r45372, r45373, r45374, r45375, r45376, r45377, r45378, r45379, r45380, r45381, r45382;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45367);
        mpfr_init_set_str(r45368, "-6.5957413497510635e-87", 10, MPFR_RNDN);
        mpfr_init(r45369);
        mpfr_init(r45370);
        mpfr_init(r45371);
        mpfr_init(r45372);
        mpfr_init(r45373);
        mpfr_init(r45374);
        mpfr_init(r45375);
        mpfr_init(r45376);
        mpfr_init_set_str(r45377, "1.149126986208414e-104", 10, MPFR_RNDN);
        mpfr_init(r45378);
        mpfr_init(r45379);
        mpfr_init(r45380);
        mpfr_init(r45381);
        mpfr_init(r45382);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45367, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45369, mpfr_cmp(r45367, r45368) <= 0, MPFR_RNDN);
        mpfr_set_d(r45370, x, MPFR_RNDN);
        mpfr_sub(r45371, r45370, r45367, MPFR_RNDN);
        mpfr_set_d(r45372, z, MPFR_RNDN);
        mpfr_sub(r45373, r45372, r45367, MPFR_RNDN);
        mpfr_div(r45374, r45371, r45373, MPFR_RNDN);
        mpfr_set_d(r45375, t, MPFR_RNDN);
        mpfr_mul(r45376, r45374, r45375, MPFR_RNDN);
        ;
        mpfr_set_si(r45378, mpfr_cmp(r45367, r45377) <= 0, MPFR_RNDN);
        mpfr_div(r45379, r45375, r45373, MPFR_RNDN);
        mpfr_mul(r45380, r45371, r45379, MPFR_RNDN);
        if (mpfr_get_si(r45378, MPFR_RNDN)) { mpfr_set(r45381, r45380, MPFR_RNDN); } else { mpfr_set(r45381, r45376, MPFR_RNDN); };
        if (mpfr_get_si(r45369, MPFR_RNDN)) { mpfr_set(r45382, r45376, MPFR_RNDN); } else { mpfr_set(r45382, r45381, MPFR_RNDN); };
        return mpfr_get_d(r45382, MPFR_RNDN);
}

static mpfr_t r45383, r45384, r45385, r45386, r45387, r45388, r45389, r45390, r45391, r45392, r45393, r45394, r45395, r45396, r45397, r45398;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45383);
        mpfr_init_set_str(r45384, "-6.5957413497510635e-87", 10, MPFR_RNDN);
        mpfr_init(r45385);
        mpfr_init(r45386);
        mpfr_init(r45387);
        mpfr_init(r45388);
        mpfr_init(r45389);
        mpfr_init(r45390);
        mpfr_init(r45391);
        mpfr_init(r45392);
        mpfr_init_set_str(r45393, "1.149126986208414e-104", 10, MPFR_RNDN);
        mpfr_init(r45394);
        mpfr_init(r45395);
        mpfr_init(r45396);
        mpfr_init(r45397);
        mpfr_init(r45398);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45383, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45385, mpfr_cmp(r45383, r45384) <= 0, MPFR_RNDN);
        mpfr_set_d(r45386, x, MPFR_RNDN);
        mpfr_sub(r45387, r45386, r45383, MPFR_RNDN);
        mpfr_set_d(r45388, z, MPFR_RNDN);
        mpfr_sub(r45389, r45388, r45383, MPFR_RNDN);
        mpfr_div(r45390, r45387, r45389, MPFR_RNDN);
        mpfr_set_d(r45391, t, MPFR_RNDN);
        mpfr_mul(r45392, r45390, r45391, MPFR_RNDN);
        ;
        mpfr_set_si(r45394, mpfr_cmp(r45383, r45393) <= 0, MPFR_RNDN);
        mpfr_div(r45395, r45391, r45389, MPFR_RNDN);
        mpfr_mul(r45396, r45387, r45395, MPFR_RNDN);
        if (mpfr_get_si(r45394, MPFR_RNDN)) { mpfr_set(r45397, r45396, MPFR_RNDN); } else { mpfr_set(r45397, r45392, MPFR_RNDN); };
        if (mpfr_get_si(r45385, MPFR_RNDN)) { mpfr_set(r45398, r45392, MPFR_RNDN); } else { mpfr_set(r45398, r45397, MPFR_RNDN); };
        return mpfr_get_d(r45398, MPFR_RNDN);
}

