#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 r8775 = a;
        float r8776 = b;
        float r8777 = r8775 - r8776;
        float r8778 = fabs(r8777);
        float r8779 = 2;
        float r8780 = r8778 / r8779;
        return r8780;
}

double f_id(double a, double b) {
        double r8781 = a;
        double r8782 = b;
        double r8783 = r8781 - r8782;
        double r8784 = fabs(r8783);
        double r8785 = 2;
        double r8786 = r8784 / r8785;
        return r8786;
}


double f_of(float a, float b) {
        float r8787 = a;
        float r8788 = b;
        float r8789 = r8787 - r8788;
        float r8790 = fabs(r8789);
        float r8791 = 2;
        float r8792 = r8790 / r8791;
        return r8792;
}

double f_od(double a, double b) {
        double r8793 = a;
        double r8794 = b;
        double r8795 = r8793 - r8794;
        double r8796 = fabs(r8795);
        double r8797 = 2;
        double r8798 = r8796 / r8797;
        return r8798;
}

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 r8799, r8800, r8801, r8802, r8803, r8804;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8799);
        mpfr_init(r8800);
        mpfr_init(r8801);
        mpfr_init(r8802);
        mpfr_init_set_str(r8803, "2", 10, MPFR_RNDN);
        mpfr_init(r8804);
}

double f_im(double a, double b) {
        mpfr_set_d(r8799, a, MPFR_RNDN);
        mpfr_set_d(r8800, b, MPFR_RNDN);
        mpfr_sub(r8801, r8799, r8800, MPFR_RNDN);
        mpfr_abs(r8802, r8801, MPFR_RNDN);
        ;
        mpfr_div(r8804, r8802, r8803, MPFR_RNDN);
        return mpfr_get_d(r8804, MPFR_RNDN);
}

static mpfr_t r8805, r8806, r8807, r8808, r8809, r8810;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8805);
        mpfr_init(r8806);
        mpfr_init(r8807);
        mpfr_init(r8808);
        mpfr_init_set_str(r8809, "2", 10, MPFR_RNDN);
        mpfr_init(r8810);
}

double f_fm(double a, double b) {
        mpfr_set_d(r8805, a, MPFR_RNDN);
        mpfr_set_d(r8806, b, MPFR_RNDN);
        mpfr_sub(r8807, r8805, r8806, MPFR_RNDN);
        mpfr_abs(r8808, r8807, MPFR_RNDN);
        ;
        mpfr_div(r8810, r8808, r8809, MPFR_RNDN);
        return mpfr_get_d(r8810, MPFR_RNDN);
}

static mpfr_t r8811, r8812, r8813, r8814, r8815, r8816;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
        mpfr_init_set_str(r8815, "2", 10, MPFR_RNDN);
        mpfr_init(r8816);
}

double f_dm(double a, double b) {
        mpfr_set_d(r8811, a, MPFR_RNDN);
        mpfr_set_d(r8812, b, MPFR_RNDN);
        mpfr_sub(r8813, r8811, r8812, MPFR_RNDN);
        mpfr_abs(r8814, r8813, MPFR_RNDN);
        ;
        mpfr_div(r8816, r8814, r8815, MPFR_RNDN);
        return mpfr_get_d(r8816, MPFR_RNDN);
}

