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

char *name = "fabs fraction 2";

double f_if(float a, float b) {
        float r8183 = a;
        float r8184 = b;
        float r8185 = r8183 - r8184;
        float r8186 = fabs(r8185);
        float r8187 = 2.0f;
        float r8188 = r8186 / r8187;
        return r8188;
}

double f_id(double a, double b) {
        double r8189 = a;
        double r8190 = b;
        double r8191 = r8189 - r8190;
        double r8192 = fabs(r8191);
        double r8193 = 2.0;
        double r8194 = r8192 / r8193;
        return r8194;
}


double f_of(float a, float b) {
        float r8195 = a;
        float r8196 = b;
        float r8197 = r8195 - r8196;
        float r8198 = fabs(r8197);
        float r8199 = 2.0f;
        float r8200 = r8198 / r8199;
        return r8200;
}

double f_od(double a, double b) {
        double r8201 = a;
        double r8202 = b;
        double r8203 = r8201 - r8202;
        double r8204 = fabs(r8203);
        double r8205 = 2.0;
        double r8206 = r8204 / r8205;
        return r8206;
}

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 r8207, r8208, r8209, r8210, r8211, r8212;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8207);
        mpfr_init(r8208);
        mpfr_init(r8209);
        mpfr_init(r8210);
        mpfr_init_set_str(r8211, "2", 10, MPFR_RNDN);
        mpfr_init(r8212);
}

double f_im(double a, double b) {
        mpfr_set_d(r8207, a, MPFR_RNDN);
        mpfr_set_d(r8208, b, MPFR_RNDN);
        mpfr_sub(r8209, r8207, r8208, MPFR_RNDN);
        mpfr_abs(r8210, r8209, MPFR_RNDN);
        ;
        mpfr_div(r8212, r8210, r8211, MPFR_RNDN);
        return mpfr_get_d(r8212, MPFR_RNDN);
}

static mpfr_t r8213, r8214, r8215, r8216, r8217, r8218;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8213);
        mpfr_init(r8214);
        mpfr_init(r8215);
        mpfr_init(r8216);
        mpfr_init_set_str(r8217, "2", 10, MPFR_RNDN);
        mpfr_init(r8218);
}

double f_fm(double a, double b) {
        mpfr_set_d(r8213, a, MPFR_RNDN);
        mpfr_set_d(r8214, b, MPFR_RNDN);
        mpfr_sub(r8215, r8213, r8214, MPFR_RNDN);
        mpfr_abs(r8216, r8215, MPFR_RNDN);
        ;
        mpfr_div(r8218, r8216, r8217, MPFR_RNDN);
        return mpfr_get_d(r8218, MPFR_RNDN);
}

static mpfr_t r8219, r8220, r8221, r8222, r8223, r8224;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8219);
        mpfr_init(r8220);
        mpfr_init(r8221);
        mpfr_init(r8222);
        mpfr_init_set_str(r8223, "2", 10, MPFR_RNDN);
        mpfr_init(r8224);
}

double f_dm(double a, double b) {
        mpfr_set_d(r8219, a, MPFR_RNDN);
        mpfr_set_d(r8220, b, MPFR_RNDN);
        mpfr_sub(r8221, r8219, r8220, MPFR_RNDN);
        mpfr_abs(r8222, r8221, MPFR_RNDN);
        ;
        mpfr_div(r8224, r8222, r8223, MPFR_RNDN);
        return mpfr_get_d(r8224, MPFR_RNDN);
}

