#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 r46253 = x;
        float r46254 = y;
        float r46255 = r46253 - r46254;
        float r46256 = fabs(r46255);
        float r46257 = fabs(r46254);
        float r46258 = r46256 / r46257;
        return r46258;
}

double f_id(double x, double y) {
        double r46259 = x;
        double r46260 = y;
        double r46261 = r46259 - r46260;
        double r46262 = fabs(r46261);
        double r46263 = fabs(r46260);
        double r46264 = r46262 / r46263;
        return r46264;
}


double f_of(float x, float y) {
        float r46265 = x;
        float r46266 = y;
        float r46267 = r46265 - r46266;
        float r46268 = fabs(r46267);
        float r46269 = fabs(r46266);
        float r46270 = r46268 / r46269;
        return r46270;
}

double f_od(double x, double y) {
        double r46271 = x;
        double r46272 = y;
        double r46273 = r46271 - r46272;
        double r46274 = fabs(r46273);
        double r46275 = fabs(r46272);
        double r46276 = r46274 / r46275;
        return r46276;
}

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 r46277, r46278, r46279, r46280, r46281, r46282;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46277);
        mpfr_init(r46278);
        mpfr_init(r46279);
        mpfr_init(r46280);
        mpfr_init(r46281);
        mpfr_init(r46282);
}

double f_im(double x, double y) {
        mpfr_set_d(r46277, x, MPFR_RNDN);
        mpfr_set_d(r46278, y, MPFR_RNDN);
        mpfr_sub(r46279, r46277, r46278, MPFR_RNDN);
        mpfr_abs(r46280, r46279, MPFR_RNDN);
        mpfr_abs(r46281, r46278, MPFR_RNDN);
        mpfr_div(r46282, r46280, r46281, MPFR_RNDN);
        return mpfr_get_d(r46282, MPFR_RNDN);
}

static mpfr_t r46283, r46284, r46285, r46286, r46287, r46288;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46283);
        mpfr_init(r46284);
        mpfr_init(r46285);
        mpfr_init(r46286);
        mpfr_init(r46287);
        mpfr_init(r46288);
}

double f_fm(double x, double y) {
        mpfr_set_d(r46283, x, MPFR_RNDN);
        mpfr_set_d(r46284, y, MPFR_RNDN);
        mpfr_sub(r46285, r46283, r46284, MPFR_RNDN);
        mpfr_abs(r46286, r46285, MPFR_RNDN);
        mpfr_abs(r46287, r46284, MPFR_RNDN);
        mpfr_div(r46288, r46286, r46287, MPFR_RNDN);
        return mpfr_get_d(r46288, MPFR_RNDN);
}

static mpfr_t r46289, r46290, r46291, r46292, r46293, r46294;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46289);
        mpfr_init(r46290);
        mpfr_init(r46291);
        mpfr_init(r46292);
        mpfr_init(r46293);
        mpfr_init(r46294);
}

double f_dm(double x, double y) {
        mpfr_set_d(r46289, x, MPFR_RNDN);
        mpfr_set_d(r46290, y, MPFR_RNDN);
        mpfr_sub(r46291, r46289, r46290, MPFR_RNDN);
        mpfr_abs(r46292, r46291, MPFR_RNDN);
        mpfr_abs(r46293, r46290, MPFR_RNDN);
        mpfr_div(r46294, r46292, r46293, MPFR_RNDN);
        return mpfr_get_d(r46294, MPFR_RNDN);
}

