#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 r45813 = x;
        float r45814 = y;
        float r45815 = r45813 - r45814;
        float r45816 = z;
        float r45817 = r45816 - r45814;
        float r45818 = r45815 / r45817;
        float r45819 = t;
        float r45820 = r45818 * r45819;
        return r45820;
}

double f_id(double x, double y, double z, double t) {
        double r45821 = x;
        double r45822 = y;
        double r45823 = r45821 - r45822;
        double r45824 = z;
        double r45825 = r45824 - r45822;
        double r45826 = r45823 / r45825;
        double r45827 = t;
        double r45828 = r45826 * r45827;
        return r45828;
}


double f_of(float x, float y, float z, float t) {
        float r45829 = y;
        float r45830 = -6.5957413497510635e-87;
        bool r45831 = r45829 <= r45830;
        float r45832 = x;
        float r45833 = r45832 - r45829;
        float r45834 = z;
        float r45835 = r45834 - r45829;
        float r45836 = r45833 / r45835;
        float r45837 = t;
        float r45838 = r45836 * r45837;
        float r45839 = 1.149126986208414e-104;
        bool r45840 = r45829 <= r45839;
        float r45841 = r45837 / r45835;
        float r45842 = r45833 * r45841;
        float r45843 = r45840 ? r45842 : r45838;
        float r45844 = r45831 ? r45838 : r45843;
        return r45844;
}

double f_od(double x, double y, double z, double t) {
        double r45845 = y;
        double r45846 = -6.5957413497510635e-87;
        bool r45847 = r45845 <= r45846;
        double r45848 = x;
        double r45849 = r45848 - r45845;
        double r45850 = z;
        double r45851 = r45850 - r45845;
        double r45852 = r45849 / r45851;
        double r45853 = t;
        double r45854 = r45852 * r45853;
        double r45855 = 1.149126986208414e-104;
        bool r45856 = r45845 <= r45855;
        double r45857 = r45853 / r45851;
        double r45858 = r45849 * r45857;
        double r45859 = r45856 ? r45858 : r45854;
        double r45860 = r45847 ? r45854 : r45859;
        return r45860;
}

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 r45861, r45862, r45863, r45864, r45865, r45866, r45867, r45868;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45861);
        mpfr_init(r45862);
        mpfr_init(r45863);
        mpfr_init(r45864);
        mpfr_init(r45865);
        mpfr_init(r45866);
        mpfr_init(r45867);
        mpfr_init(r45868);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45861, x, MPFR_RNDN);
        mpfr_set_d(r45862, y, MPFR_RNDN);
        mpfr_sub(r45863, r45861, r45862, MPFR_RNDN);
        mpfr_set_d(r45864, z, MPFR_RNDN);
        mpfr_sub(r45865, r45864, r45862, MPFR_RNDN);
        mpfr_div(r45866, r45863, r45865, MPFR_RNDN);
        mpfr_set_d(r45867, t, MPFR_RNDN);
        mpfr_mul(r45868, r45866, r45867, MPFR_RNDN);
        return mpfr_get_d(r45868, MPFR_RNDN);
}

static mpfr_t r45869, r45870, r45871, r45872, r45873, r45874, r45875, r45876, r45877, r45878, r45879, r45880, r45881, r45882, r45883, r45884;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45869);
        mpfr_init_set_str(r45870, "-6.5957413497510635e-87", 10, MPFR_RNDN);
        mpfr_init(r45871);
        mpfr_init(r45872);
        mpfr_init(r45873);
        mpfr_init(r45874);
        mpfr_init(r45875);
        mpfr_init(r45876);
        mpfr_init(r45877);
        mpfr_init(r45878);
        mpfr_init_set_str(r45879, "1.149126986208414e-104", 10, MPFR_RNDN);
        mpfr_init(r45880);
        mpfr_init(r45881);
        mpfr_init(r45882);
        mpfr_init(r45883);
        mpfr_init(r45884);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r45869, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45871, mpfr_cmp(r45869, r45870) <= 0, MPFR_RNDN);
        mpfr_set_d(r45872, x, MPFR_RNDN);
        mpfr_sub(r45873, r45872, r45869, MPFR_RNDN);
        mpfr_set_d(r45874, z, MPFR_RNDN);
        mpfr_sub(r45875, r45874, r45869, MPFR_RNDN);
        mpfr_div(r45876, r45873, r45875, MPFR_RNDN);
        mpfr_set_d(r45877, t, MPFR_RNDN);
        mpfr_mul(r45878, r45876, r45877, MPFR_RNDN);
        ;
        mpfr_set_si(r45880, mpfr_cmp(r45869, r45879) <= 0, MPFR_RNDN);
        mpfr_div(r45881, r45877, r45875, MPFR_RNDN);
        mpfr_mul(r45882, r45873, r45881, MPFR_RNDN);
        if (mpfr_get_si(r45880, MPFR_RNDN)) { mpfr_set(r45883, r45882, MPFR_RNDN); } else { mpfr_set(r45883, r45878, MPFR_RNDN); };
        if (mpfr_get_si(r45871, MPFR_RNDN)) { mpfr_set(r45884, r45878, MPFR_RNDN); } else { mpfr_set(r45884, r45883, MPFR_RNDN); };
        return mpfr_get_d(r45884, MPFR_RNDN);
}

static mpfr_t r45885, r45886, r45887, r45888, r45889, r45890, r45891, r45892, r45893, r45894, r45895, r45896, r45897, r45898, r45899, r45900;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45885);
        mpfr_init_set_str(r45886, "-6.5957413497510635e-87", 10, MPFR_RNDN);
        mpfr_init(r45887);
        mpfr_init(r45888);
        mpfr_init(r45889);
        mpfr_init(r45890);
        mpfr_init(r45891);
        mpfr_init(r45892);
        mpfr_init(r45893);
        mpfr_init(r45894);
        mpfr_init_set_str(r45895, "1.149126986208414e-104", 10, MPFR_RNDN);
        mpfr_init(r45896);
        mpfr_init(r45897);
        mpfr_init(r45898);
        mpfr_init(r45899);
        mpfr_init(r45900);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45885, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45887, mpfr_cmp(r45885, r45886) <= 0, MPFR_RNDN);
        mpfr_set_d(r45888, x, MPFR_RNDN);
        mpfr_sub(r45889, r45888, r45885, MPFR_RNDN);
        mpfr_set_d(r45890, z, MPFR_RNDN);
        mpfr_sub(r45891, r45890, r45885, MPFR_RNDN);
        mpfr_div(r45892, r45889, r45891, MPFR_RNDN);
        mpfr_set_d(r45893, t, MPFR_RNDN);
        mpfr_mul(r45894, r45892, r45893, MPFR_RNDN);
        ;
        mpfr_set_si(r45896, mpfr_cmp(r45885, r45895) <= 0, MPFR_RNDN);
        mpfr_div(r45897, r45893, r45891, MPFR_RNDN);
        mpfr_mul(r45898, r45889, r45897, MPFR_RNDN);
        if (mpfr_get_si(r45896, MPFR_RNDN)) { mpfr_set(r45899, r45898, MPFR_RNDN); } else { mpfr_set(r45899, r45894, MPFR_RNDN); };
        if (mpfr_get_si(r45887, MPFR_RNDN)) { mpfr_set(r45900, r45894, MPFR_RNDN); } else { mpfr_set(r45900, r45899, MPFR_RNDN); };
        return mpfr_get_d(r45900, MPFR_RNDN);
}

