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

char *name = "Numeric.LinearAlgebra.Util:formatSparse from hmatrix-0.16.1.5";

double f_if(float x, float y) {
        float r42867 = x;
        float r42868 = y;
        float r42869 = r42867 - r42868;
        float r42870 = fabs(r42869);
        float r42871 = fabs(r42868);
        float r42872 = r42870 / r42871;
        return r42872;
}

double f_id(double x, double y) {
        double r42873 = x;
        double r42874 = y;
        double r42875 = r42873 - r42874;
        double r42876 = fabs(r42875);
        double r42877 = fabs(r42874);
        double r42878 = r42876 / r42877;
        return r42878;
}


double f_of(float x, float y) {
        float r42879 = x;
        float r42880 = y;
        float r42881 = r42879 - r42880;
        float r42882 = fabs(r42881);
        float r42883 = fabs(r42880);
        float r42884 = r42882 / r42883;
        return r42884;
}

double f_od(double x, double y) {
        double r42885 = x;
        double r42886 = y;
        double r42887 = r42885 - r42886;
        double r42888 = fabs(r42887);
        double r42889 = fabs(r42886);
        double r42890 = r42888 / r42889;
        return r42890;
}

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 r42891, r42892, r42893, r42894, r42895, r42896;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r42891);
        mpfr_init(r42892);
        mpfr_init(r42893);
        mpfr_init(r42894);
        mpfr_init(r42895);
        mpfr_init(r42896);
}

double f_im(double x, double y) {
        mpfr_set_d(r42891, x, MPFR_RNDN);
        mpfr_set_d(r42892, y, MPFR_RNDN);
        mpfr_sub(r42893, r42891, r42892, MPFR_RNDN);
        mpfr_abs(r42894, r42893, MPFR_RNDN);
        mpfr_abs(r42895, r42892, MPFR_RNDN);
        mpfr_div(r42896, r42894, r42895, MPFR_RNDN);
        return mpfr_get_d(r42896, MPFR_RNDN);
}

static mpfr_t r42897, r42898, r42899, r42900, r42901, r42902;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42897);
        mpfr_init(r42898);
        mpfr_init(r42899);
        mpfr_init(r42900);
        mpfr_init(r42901);
        mpfr_init(r42902);
}

double f_fm(double x, double y) {
        mpfr_set_d(r42897, x, MPFR_RNDN);
        mpfr_set_d(r42898, y, MPFR_RNDN);
        mpfr_sub(r42899, r42897, r42898, MPFR_RNDN);
        mpfr_abs(r42900, r42899, MPFR_RNDN);
        mpfr_abs(r42901, r42898, MPFR_RNDN);
        mpfr_div(r42902, r42900, r42901, MPFR_RNDN);
        return mpfr_get_d(r42902, MPFR_RNDN);
}

static mpfr_t r42903, r42904, r42905, r42906, r42907, r42908;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r42903);
        mpfr_init(r42904);
        mpfr_init(r42905);
        mpfr_init(r42906);
        mpfr_init(r42907);
        mpfr_init(r42908);
}

double f_dm(double x, double y) {
        mpfr_set_d(r42903, x, MPFR_RNDN);
        mpfr_set_d(r42904, y, MPFR_RNDN);
        mpfr_sub(r42905, r42903, r42904, MPFR_RNDN);
        mpfr_abs(r42906, r42905, MPFR_RNDN);
        mpfr_abs(r42907, r42904, MPFR_RNDN);
        mpfr_div(r42908, r42906, r42907, MPFR_RNDN);
        return mpfr_get_d(r42908, MPFR_RNDN);
}

