#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 r8781 = a;
        float r8782 = b;
        float r8783 = r8781 - r8782;
        float r8784 = fabs(r8783);
        float r8785 = 2;
        float r8786 = r8784 / r8785;
        return r8786;
}

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


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

double f_od(double a, double b) {
        double r8799 = a;
        double r8800 = b;
        double r8801 = r8799 - r8800;
        double r8802 = fabs(r8801);
        double r8803 = 2;
        double r8804 = r8802 / r8803;
        return r8804;
}

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 r8805, r8806, r8807, r8808, r8809, r8810;

void setup_mpfr_f_im() {
        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_im(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_fm() {
        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_fm(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);
}

static mpfr_t r8817, r8818, r8819, r8820, r8821, r8822;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8817);
        mpfr_init(r8818);
        mpfr_init(r8819);
        mpfr_init(r8820);
        mpfr_init_set_str(r8821, "2", 10, MPFR_RNDN);
        mpfr_init(r8822);
}

double f_dm(double a, double b) {
        mpfr_set_d(r8817, a, MPFR_RNDN);
        mpfr_set_d(r8818, b, MPFR_RNDN);
        mpfr_sub(r8819, r8817, r8818, MPFR_RNDN);
        mpfr_abs(r8820, r8819, MPFR_RNDN);
        ;
        mpfr_div(r8822, r8820, r8821, MPFR_RNDN);
        return mpfr_get_d(r8822, MPFR_RNDN);
}

