#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 r8591 = a;
        float r8592 = b;
        float r8593 = r8591 - r8592;
        float r8594 = fabs(r8593);
        float r8595 = 2;
        float r8596 = r8594 / r8595;
        return r8596;
}

double f_id(double a, double b) {
        double r8597 = a;
        double r8598 = b;
        double r8599 = r8597 - r8598;
        double r8600 = fabs(r8599);
        double r8601 = 2;
        double r8602 = r8600 / r8601;
        return r8602;
}


double f_of(float a, float b) {
        float r8603 = a;
        float r8604 = b;
        float r8605 = r8603 - r8604;
        float r8606 = fabs(r8605);
        float r8607 = 2;
        float r8608 = r8606 / r8607;
        return r8608;
}

double f_od(double a, double b) {
        double r8609 = a;
        double r8610 = b;
        double r8611 = r8609 - r8610;
        double r8612 = fabs(r8611);
        double r8613 = 2;
        double r8614 = r8612 / r8613;
        return r8614;
}

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 r8615, r8616, r8617, r8618, r8619, r8620;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8615);
        mpfr_init(r8616);
        mpfr_init(r8617);
        mpfr_init(r8618);
        mpfr_init_set_str(r8619, "2", 10, MPFR_RNDN);
        mpfr_init(r8620);
}

double f_im(double a, double b) {
        mpfr_set_d(r8615, a, MPFR_RNDN);
        mpfr_set_d(r8616, b, MPFR_RNDN);
        mpfr_sub(r8617, r8615, r8616, MPFR_RNDN);
        mpfr_abs(r8618, r8617, MPFR_RNDN);
        ;
        mpfr_div(r8620, r8618, r8619, MPFR_RNDN);
        return mpfr_get_d(r8620, MPFR_RNDN);
}

static mpfr_t r8621, r8622, r8623, r8624, r8625, r8626;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8621);
        mpfr_init(r8622);
        mpfr_init(r8623);
        mpfr_init(r8624);
        mpfr_init_set_str(r8625, "2", 10, MPFR_RNDN);
        mpfr_init(r8626);
}

double f_fm(double a, double b) {
        mpfr_set_d(r8621, a, MPFR_RNDN);
        mpfr_set_d(r8622, b, MPFR_RNDN);
        mpfr_sub(r8623, r8621, r8622, MPFR_RNDN);
        mpfr_abs(r8624, r8623, MPFR_RNDN);
        ;
        mpfr_div(r8626, r8624, r8625, MPFR_RNDN);
        return mpfr_get_d(r8626, MPFR_RNDN);
}

static mpfr_t r8627, r8628, r8629, r8630, r8631, r8632;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8627);
        mpfr_init(r8628);
        mpfr_init(r8629);
        mpfr_init(r8630);
        mpfr_init_set_str(r8631, "2", 10, MPFR_RNDN);
        mpfr_init(r8632);
}

double f_dm(double a, double b) {
        mpfr_set_d(r8627, a, MPFR_RNDN);
        mpfr_set_d(r8628, b, MPFR_RNDN);
        mpfr_sub(r8629, r8627, r8628, MPFR_RNDN);
        mpfr_abs(r8630, r8629, MPFR_RNDN);
        ;
        mpfr_div(r8632, r8630, r8631, MPFR_RNDN);
        return mpfr_get_d(r8632, MPFR_RNDN);
}

