#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 r8212 = a;
        float r8213 = b;
        float r8214 = r8212 - r8213;
        float r8215 = fabs(r8214);
        float r8216 = 2.0f;
        float r8217 = r8215 / r8216;
        return r8217;
}

double f_id(double a, double b) {
        double r8218 = a;
        double r8219 = b;
        double r8220 = r8218 - r8219;
        double r8221 = fabs(r8220);
        double r8222 = 2.0;
        double r8223 = r8221 / r8222;
        return r8223;
}


double f_of(float a, float b) {
        float r8224 = a;
        float r8225 = b;
        float r8226 = r8224 - r8225;
        float r8227 = fabs(r8226);
        float r8228 = 2.0f;
        float r8229 = r8227 / r8228;
        return r8229;
}

double f_od(double a, double b) {
        double r8230 = a;
        double r8231 = b;
        double r8232 = r8230 - r8231;
        double r8233 = fabs(r8232);
        double r8234 = 2.0;
        double r8235 = r8233 / r8234;
        return r8235;
}

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 r8236, r8237, r8238, r8239, r8240, r8241;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8236);
        mpfr_init(r8237);
        mpfr_init(r8238);
        mpfr_init(r8239);
        mpfr_init_set_str(r8240, "2", 10, MPFR_RNDN);
        mpfr_init(r8241);
}

double f_im(double a, double b) {
        mpfr_set_d(r8236, a, MPFR_RNDN);
        mpfr_set_d(r8237, b, MPFR_RNDN);
        mpfr_sub(r8238, r8236, r8237, MPFR_RNDN);
        mpfr_abs(r8239, r8238, MPFR_RNDN);
        ;
        mpfr_div(r8241, r8239, r8240, MPFR_RNDN);
        return mpfr_get_d(r8241, MPFR_RNDN);
}

static mpfr_t r8242, r8243, r8244, r8245, r8246, r8247;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8242);
        mpfr_init(r8243);
        mpfr_init(r8244);
        mpfr_init(r8245);
        mpfr_init_set_str(r8246, "2", 10, MPFR_RNDN);
        mpfr_init(r8247);
}

double f_fm(double a, double b) {
        mpfr_set_d(r8242, a, MPFR_RNDN);
        mpfr_set_d(r8243, b, MPFR_RNDN);
        mpfr_sub(r8244, r8242, r8243, MPFR_RNDN);
        mpfr_abs(r8245, r8244, MPFR_RNDN);
        ;
        mpfr_div(r8247, r8245, r8246, MPFR_RNDN);
        return mpfr_get_d(r8247, MPFR_RNDN);
}

static mpfr_t r8248, r8249, r8250, r8251, r8252, r8253;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8248);
        mpfr_init(r8249);
        mpfr_init(r8250);
        mpfr_init(r8251);
        mpfr_init_set_str(r8252, "2", 10, MPFR_RNDN);
        mpfr_init(r8253);
}

double f_dm(double a, double b) {
        mpfr_set_d(r8248, a, MPFR_RNDN);
        mpfr_set_d(r8249, b, MPFR_RNDN);
        mpfr_sub(r8250, r8248, r8249, MPFR_RNDN);
        mpfr_abs(r8251, r8250, MPFR_RNDN);
        ;
        mpfr_div(r8253, r8251, r8252, MPFR_RNDN);
        return mpfr_get_d(r8253, MPFR_RNDN);
}

