#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 r8807 = a;
        float r8808 = b;
        float r8809 = r8807 - r8808;
        float r8810 = fabs(r8809);
        float r8811 = 2;
        float r8812 = r8810 / r8811;
        return r8812;
}

double f_id(double a, double b) {
        double r8813 = a;
        double r8814 = b;
        double r8815 = r8813 - r8814;
        double r8816 = fabs(r8815);
        double r8817 = 2;
        double r8818 = r8816 / r8817;
        return r8818;
}


double f_of(float a, float b) {
        float r8819 = a;
        float r8820 = b;
        float r8821 = r8819 - r8820;
        float r8822 = fabs(r8821);
        float r8823 = 2;
        float r8824 = r8822 / r8823;
        return r8824;
}

double f_od(double a, double b) {
        double r8825 = a;
        double r8826 = b;
        double r8827 = r8825 - r8826;
        double r8828 = fabs(r8827);
        double r8829 = 2;
        double r8830 = r8828 / r8829;
        return r8830;
}

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 r8831, r8832, r8833, r8834, r8835, r8836;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8831);
        mpfr_init(r8832);
        mpfr_init(r8833);
        mpfr_init(r8834);
        mpfr_init_set_str(r8835, "2", 10, MPFR_RNDN);
        mpfr_init(r8836);
}

double f_im(double a, double b) {
        mpfr_set_d(r8831, a, MPFR_RNDN);
        mpfr_set_d(r8832, b, MPFR_RNDN);
        mpfr_sub(r8833, r8831, r8832, MPFR_RNDN);
        mpfr_abs(r8834, r8833, MPFR_RNDN);
        ;
        mpfr_div(r8836, r8834, r8835, MPFR_RNDN);
        return mpfr_get_d(r8836, MPFR_RNDN);
}

static mpfr_t r8837, r8838, r8839, r8840, r8841, r8842;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8837);
        mpfr_init(r8838);
        mpfr_init(r8839);
        mpfr_init(r8840);
        mpfr_init_set_str(r8841, "2", 10, MPFR_RNDN);
        mpfr_init(r8842);
}

double f_fm(double a, double b) {
        mpfr_set_d(r8837, a, MPFR_RNDN);
        mpfr_set_d(r8838, b, MPFR_RNDN);
        mpfr_sub(r8839, r8837, r8838, MPFR_RNDN);
        mpfr_abs(r8840, r8839, MPFR_RNDN);
        ;
        mpfr_div(r8842, r8840, r8841, MPFR_RNDN);
        return mpfr_get_d(r8842, MPFR_RNDN);
}

static mpfr_t r8843, r8844, r8845, r8846, r8847, r8848;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8843);
        mpfr_init(r8844);
        mpfr_init(r8845);
        mpfr_init(r8846);
        mpfr_init_set_str(r8847, "2", 10, MPFR_RNDN);
        mpfr_init(r8848);
}

double f_dm(double a, double b) {
        mpfr_set_d(r8843, a, MPFR_RNDN);
        mpfr_set_d(r8844, b, MPFR_RNDN);
        mpfr_sub(r8845, r8843, r8844, MPFR_RNDN);
        mpfr_abs(r8846, r8845, MPFR_RNDN);
        ;
        mpfr_div(r8848, r8846, r8847, MPFR_RNDN);
        return mpfr_get_d(r8848, MPFR_RNDN);
}

