#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 r8571 = a;
        float r8572 = b;
        float r8573 = r8571 - r8572;
        float r8574 = fabs(r8573);
        float r8575 = 2;
        float r8576 = r8574 / r8575;
        return r8576;
}

double f_id(double a, double b) {
        double r8577 = a;
        double r8578 = b;
        double r8579 = r8577 - r8578;
        double r8580 = fabs(r8579);
        double r8581 = 2;
        double r8582 = r8580 / r8581;
        return r8582;
}


double f_of(float a, float b) {
        float r8583 = a;
        float r8584 = b;
        float r8585 = r8583 - r8584;
        float r8586 = fabs(r8585);
        float r8587 = 2;
        float r8588 = r8586 / r8587;
        return r8588;
}

double f_od(double a, double b) {
        double r8589 = a;
        double r8590 = b;
        double r8591 = r8589 - r8590;
        double r8592 = fabs(r8591);
        double r8593 = 2;
        double r8594 = r8592 / r8593;
        return r8594;
}

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 r8595, r8596, r8597, r8598, r8599, r8600;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8595);
        mpfr_init(r8596);
        mpfr_init(r8597);
        mpfr_init(r8598);
        mpfr_init_set_str(r8599, "2", 10, MPFR_RNDN);
        mpfr_init(r8600);
}

double f_im(double a, double b) {
        mpfr_set_d(r8595, a, MPFR_RNDN);
        mpfr_set_d(r8596, b, MPFR_RNDN);
        mpfr_sub(r8597, r8595, r8596, MPFR_RNDN);
        mpfr_abs(r8598, r8597, MPFR_RNDN);
        ;
        mpfr_div(r8600, r8598, r8599, MPFR_RNDN);
        return mpfr_get_d(r8600, MPFR_RNDN);
}

static mpfr_t r8601, r8602, r8603, r8604, r8605, r8606;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8601);
        mpfr_init(r8602);
        mpfr_init(r8603);
        mpfr_init(r8604);
        mpfr_init_set_str(r8605, "2", 10, MPFR_RNDN);
        mpfr_init(r8606);
}

double f_fm(double a, double b) {
        mpfr_set_d(r8601, a, MPFR_RNDN);
        mpfr_set_d(r8602, b, MPFR_RNDN);
        mpfr_sub(r8603, r8601, r8602, MPFR_RNDN);
        mpfr_abs(r8604, r8603, MPFR_RNDN);
        ;
        mpfr_div(r8606, r8604, r8605, MPFR_RNDN);
        return mpfr_get_d(r8606, MPFR_RNDN);
}

static mpfr_t r8607, r8608, r8609, r8610, r8611, r8612;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8607);
        mpfr_init(r8608);
        mpfr_init(r8609);
        mpfr_init(r8610);
        mpfr_init_set_str(r8611, "2", 10, MPFR_RNDN);
        mpfr_init(r8612);
}

double f_dm(double a, double b) {
        mpfr_set_d(r8607, a, MPFR_RNDN);
        mpfr_set_d(r8608, b, MPFR_RNDN);
        mpfr_sub(r8609, r8607, r8608, MPFR_RNDN);
        mpfr_abs(r8610, r8609, MPFR_RNDN);
        ;
        mpfr_div(r8612, r8610, r8611, MPFR_RNDN);
        return mpfr_get_d(r8612, MPFR_RNDN);
}

