#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 r45828 = x;
        float r45829 = y;
        float r45830 = r45828 - r45829;
        float r45831 = z;
        float r45832 = r45831 - r45829;
        float r45833 = r45830 / r45832;
        float r45834 = t;
        float r45835 = r45833 * r45834;
        return r45835;
}

double f_id(double x, double y, double z, double t) {
        double r45836 = x;
        double r45837 = y;
        double r45838 = r45836 - r45837;
        double r45839 = z;
        double r45840 = r45839 - r45837;
        double r45841 = r45838 / r45840;
        double r45842 = t;
        double r45843 = r45841 * r45842;
        return r45843;
}


double f_of(float x, float y, float z, float t) {
        float r45844 = y;
        float r45845 = -4.201205223397465e-96;
        bool r45846 = r45844 <= r45845;
        float r45847 = x;
        float r45848 = r45847 - r45844;
        float r45849 = z;
        float r45850 = r45849 - r45844;
        float r45851 = r45848 / r45850;
        float r45852 = t;
        float r45853 = r45851 * r45852;
        float r45854 = 3.703336725015114e-139;
        bool r45855 = r45844 <= r45854;
        float r45856 = 1;
        float r45857 = r45856 / r45852;
        float r45858 = r45848 / r45857;
        float r45859 = r45858 / r45850;
        float r45860 = r45855 ? r45859 : r45853;
        float r45861 = r45846 ? r45853 : r45860;
        return r45861;
}

double f_od(double x, double y, double z, double t) {
        double r45862 = y;
        double r45863 = -4.201205223397465e-96;
        bool r45864 = r45862 <= r45863;
        double r45865 = x;
        double r45866 = r45865 - r45862;
        double r45867 = z;
        double r45868 = r45867 - r45862;
        double r45869 = r45866 / r45868;
        double r45870 = t;
        double r45871 = r45869 * r45870;
        double r45872 = 3.703336725015114e-139;
        bool r45873 = r45862 <= r45872;
        double r45874 = 1;
        double r45875 = r45874 / r45870;
        double r45876 = r45866 / r45875;
        double r45877 = r45876 / r45868;
        double r45878 = r45873 ? r45877 : r45871;
        double r45879 = r45864 ? r45871 : r45878;
        return r45879;
}

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 r45880, r45881, r45882, r45883, r45884, r45885, r45886, r45887;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r45880);
        mpfr_init(r45881);
        mpfr_init(r45882);
        mpfr_init(r45883);
        mpfr_init(r45884);
        mpfr_init(r45885);
        mpfr_init(r45886);
        mpfr_init(r45887);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r45880, x, MPFR_RNDN);
        mpfr_set_d(r45881, y, MPFR_RNDN);
        mpfr_sub(r45882, r45880, r45881, MPFR_RNDN);
        mpfr_set_d(r45883, z, MPFR_RNDN);
        mpfr_sub(r45884, r45883, r45881, MPFR_RNDN);
        mpfr_div(r45885, r45882, r45884, MPFR_RNDN);
        mpfr_set_d(r45886, t, MPFR_RNDN);
        mpfr_mul(r45887, r45885, r45886, MPFR_RNDN);
        return mpfr_get_d(r45887, MPFR_RNDN);
}

static mpfr_t r45888, r45889, r45890, r45891, r45892, r45893, r45894, r45895, r45896, r45897, r45898, r45899, r45900, r45901, r45902, r45903, r45904, r45905;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45888);
        mpfr_init_set_str(r45889, "-4.201205223397465e-96", 10, MPFR_RNDN);
        mpfr_init(r45890);
        mpfr_init(r45891);
        mpfr_init(r45892);
        mpfr_init(r45893);
        mpfr_init(r45894);
        mpfr_init(r45895);
        mpfr_init(r45896);
        mpfr_init(r45897);
        mpfr_init_set_str(r45898, "3.703336725015114e-139", 10, MPFR_RNDN);
        mpfr_init(r45899);
        mpfr_init_set_str(r45900, "1", 10, MPFR_RNDN);
        mpfr_init(r45901);
        mpfr_init(r45902);
        mpfr_init(r45903);
        mpfr_init(r45904);
        mpfr_init(r45905);
}

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

static mpfr_t r45906, r45907, r45908, r45909, r45910, r45911, r45912, r45913, r45914, r45915, r45916, r45917, r45918, r45919, r45920, r45921, r45922, r45923;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r45906);
        mpfr_init_set_str(r45907, "-4.201205223397465e-96", 10, MPFR_RNDN);
        mpfr_init(r45908);
        mpfr_init(r45909);
        mpfr_init(r45910);
        mpfr_init(r45911);
        mpfr_init(r45912);
        mpfr_init(r45913);
        mpfr_init(r45914);
        mpfr_init(r45915);
        mpfr_init_set_str(r45916, "3.703336725015114e-139", 10, MPFR_RNDN);
        mpfr_init(r45917);
        mpfr_init_set_str(r45918, "1", 10, MPFR_RNDN);
        mpfr_init(r45919);
        mpfr_init(r45920);
        mpfr_init(r45921);
        mpfr_init(r45922);
        mpfr_init(r45923);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r45906, y, MPFR_RNDN);
        ;
        mpfr_set_si(r45908, mpfr_cmp(r45906, r45907) <= 0, MPFR_RNDN);
        mpfr_set_d(r45909, x, MPFR_RNDN);
        mpfr_sub(r45910, r45909, r45906, MPFR_RNDN);
        mpfr_set_d(r45911, z, MPFR_RNDN);
        mpfr_sub(r45912, r45911, r45906, MPFR_RNDN);
        mpfr_div(r45913, r45910, r45912, MPFR_RNDN);
        mpfr_set_d(r45914, t, MPFR_RNDN);
        mpfr_mul(r45915, r45913, r45914, MPFR_RNDN);
        ;
        mpfr_set_si(r45917, mpfr_cmp(r45906, r45916) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r45919, r45918, r45914, MPFR_RNDN);
        mpfr_div(r45920, r45910, r45919, MPFR_RNDN);
        mpfr_div(r45921, r45920, r45912, MPFR_RNDN);
        if (mpfr_get_si(r45917, MPFR_RNDN)) { mpfr_set(r45922, r45921, MPFR_RNDN); } else { mpfr_set(r45922, r45915, MPFR_RNDN); };
        if (mpfr_get_si(r45908, MPFR_RNDN)) { mpfr_set(r45923, r45915, MPFR_RNDN); } else { mpfr_set(r45923, r45922, MPFR_RNDN); };
        return mpfr_get_d(r45923, MPFR_RNDN);
}

