#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "fabs fraction 1";

double f_if(float x, float y, float z) {
        float r8585 = x;
        float r8586 = 4;
        float r8587 = r8585 + r8586;
        float r8588 = y;
        float r8589 = r8587 / r8588;
        float r8590 = r8585 / r8588;
        float r8591 = z;
        float r8592 = r8590 * r8591;
        float r8593 = r8589 - r8592;
        float r8594 = fabs(r8593);
        return r8594;
}

double f_id(double x, double y, double z) {
        double r8595 = x;
        double r8596 = 4;
        double r8597 = r8595 + r8596;
        double r8598 = y;
        double r8599 = r8597 / r8598;
        double r8600 = r8595 / r8598;
        double r8601 = z;
        double r8602 = r8600 * r8601;
        double r8603 = r8599 - r8602;
        double r8604 = fabs(r8603);
        return r8604;
}


double f_of(float x, float y, float z) {
        float r8605 = x;
        float r8606 = 4;
        float r8607 = r8605 + r8606;
        float r8608 = y;
        float r8609 = r8607 / r8608;
        float r8610 = z;
        float r8611 = r8610 / r8608;
        float r8612 = r8605 * r8611;
        float r8613 = r8609 - r8612;
        float r8614 = -1.1750199255444325e+307;
        bool r8615 = r8613 <= r8614;
        float r8616 = 1;
        float r8617 = r8608 / r8607;
        float r8618 = r8616 / r8617;
        float r8619 = r8605 / r8608;
        float r8620 = r8619 * r8610;
        float r8621 = r8618 - r8620;
        float r8622 = fabs(r8621);
        float r8623 = 1.2585242294646298e+60;
        bool r8624 = r8613 <= r8623;
        float r8625 = fabs(r8613);
        float r8626 = r8624 ? r8625 : r8622;
        float r8627 = r8615 ? r8622 : r8626;
        return r8627;
}

double f_od(double x, double y, double z) {
        double r8628 = x;
        double r8629 = 4;
        double r8630 = r8628 + r8629;
        double r8631 = y;
        double r8632 = r8630 / r8631;
        double r8633 = z;
        double r8634 = r8633 / r8631;
        double r8635 = r8628 * r8634;
        double r8636 = r8632 - r8635;
        double r8637 = -1.1750199255444325e+307;
        bool r8638 = r8636 <= r8637;
        double r8639 = 1;
        double r8640 = r8631 / r8630;
        double r8641 = r8639 / r8640;
        double r8642 = r8628 / r8631;
        double r8643 = r8642 * r8633;
        double r8644 = r8641 - r8643;
        double r8645 = fabs(r8644);
        double r8646 = 1.2585242294646298e+60;
        bool r8647 = r8636 <= r8646;
        double r8648 = fabs(r8636);
        double r8649 = r8647 ? r8648 : r8645;
        double r8650 = r8638 ? r8645 : r8649;
        return r8650;
}

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 r8651, r8652, r8653, r8654, r8655, r8656, r8657, r8658, r8659, r8660;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8651);
        mpfr_init_set_str(r8652, "4", 10, MPFR_RNDN);
        mpfr_init(r8653);
        mpfr_init(r8654);
        mpfr_init(r8655);
        mpfr_init(r8656);
        mpfr_init(r8657);
        mpfr_init(r8658);
        mpfr_init(r8659);
        mpfr_init(r8660);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r8651, x, MPFR_RNDN);
        ;
        mpfr_add(r8653, r8651, r8652, MPFR_RNDN);
        mpfr_set_d(r8654, y, MPFR_RNDN);
        mpfr_div(r8655, r8653, r8654, MPFR_RNDN);
        mpfr_div(r8656, r8651, r8654, MPFR_RNDN);
        mpfr_set_d(r8657, z, MPFR_RNDN);
        mpfr_mul(r8658, r8656, r8657, MPFR_RNDN);
        mpfr_sub(r8659, r8655, r8658, MPFR_RNDN);
        mpfr_abs(r8660, r8659, MPFR_RNDN);
        return mpfr_get_d(r8660, MPFR_RNDN);
}

static mpfr_t r8661, r8662, r8663, r8664, r8665, r8666, r8667, r8668, r8669, r8670, r8671, r8672, r8673, r8674, r8675, r8676, r8677, r8678, r8679, r8680, r8681, r8682, r8683;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8661);
        mpfr_init_set_str(r8662, "4", 10, MPFR_RNDN);
        mpfr_init(r8663);
        mpfr_init(r8664);
        mpfr_init(r8665);
        mpfr_init(r8666);
        mpfr_init(r8667);
        mpfr_init(r8668);
        mpfr_init(r8669);
        mpfr_init_set_str(r8670, "-1.1750199255444325e+307", 10, MPFR_RNDN);
        mpfr_init(r8671);
        mpfr_init_set_str(r8672, "1", 10, MPFR_RNDN);
        mpfr_init(r8673);
        mpfr_init(r8674);
        mpfr_init(r8675);
        mpfr_init(r8676);
        mpfr_init(r8677);
        mpfr_init(r8678);
        mpfr_init_set_str(r8679, "1.2585242294646298e+60", 10, MPFR_RNDN);
        mpfr_init(r8680);
        mpfr_init(r8681);
        mpfr_init(r8682);
        mpfr_init(r8683);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r8661, x, MPFR_RNDN);
        ;
        mpfr_add(r8663, r8661, r8662, MPFR_RNDN);
        mpfr_set_d(r8664, y, MPFR_RNDN);
        mpfr_div(r8665, r8663, r8664, MPFR_RNDN);
        mpfr_set_d(r8666, z, MPFR_RNDN);
        mpfr_div(r8667, r8666, r8664, MPFR_RNDN);
        mpfr_mul(r8668, r8661, r8667, MPFR_RNDN);
        mpfr_sub(r8669, r8665, r8668, MPFR_RNDN);
        ;
        mpfr_set_si(r8671, mpfr_cmp(r8669, r8670) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8673, r8664, r8663, MPFR_RNDN);
        mpfr_div(r8674, r8672, r8673, MPFR_RNDN);
        mpfr_div(r8675, r8661, r8664, MPFR_RNDN);
        mpfr_mul(r8676, r8675, r8666, MPFR_RNDN);
        mpfr_sub(r8677, r8674, r8676, MPFR_RNDN);
        mpfr_abs(r8678, r8677, MPFR_RNDN);
        ;
        mpfr_set_si(r8680, mpfr_cmp(r8669, r8679) <= 0, MPFR_RNDN);
        mpfr_abs(r8681, r8669, MPFR_RNDN);
        if (mpfr_get_si(r8680, MPFR_RNDN)) { mpfr_set(r8682, r8681, MPFR_RNDN); } else { mpfr_set(r8682, r8678, MPFR_RNDN); };
        if (mpfr_get_si(r8671, MPFR_RNDN)) { mpfr_set(r8683, r8678, MPFR_RNDN); } else { mpfr_set(r8683, r8682, MPFR_RNDN); };
        return mpfr_get_d(r8683, MPFR_RNDN);
}

static mpfr_t r8684, r8685, r8686, r8687, r8688, r8689, r8690, r8691, r8692, r8693, r8694, r8695, r8696, r8697, r8698, r8699, r8700, r8701, r8702, r8703, r8704, r8705, r8706;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8684);
        mpfr_init_set_str(r8685, "4", 10, MPFR_RNDN);
        mpfr_init(r8686);
        mpfr_init(r8687);
        mpfr_init(r8688);
        mpfr_init(r8689);
        mpfr_init(r8690);
        mpfr_init(r8691);
        mpfr_init(r8692);
        mpfr_init_set_str(r8693, "-1.1750199255444325e+307", 10, MPFR_RNDN);
        mpfr_init(r8694);
        mpfr_init_set_str(r8695, "1", 10, MPFR_RNDN);
        mpfr_init(r8696);
        mpfr_init(r8697);
        mpfr_init(r8698);
        mpfr_init(r8699);
        mpfr_init(r8700);
        mpfr_init(r8701);
        mpfr_init_set_str(r8702, "1.2585242294646298e+60", 10, MPFR_RNDN);
        mpfr_init(r8703);
        mpfr_init(r8704);
        mpfr_init(r8705);
        mpfr_init(r8706);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r8684, x, MPFR_RNDN);
        ;
        mpfr_add(r8686, r8684, r8685, MPFR_RNDN);
        mpfr_set_d(r8687, y, MPFR_RNDN);
        mpfr_div(r8688, r8686, r8687, MPFR_RNDN);
        mpfr_set_d(r8689, z, MPFR_RNDN);
        mpfr_div(r8690, r8689, r8687, MPFR_RNDN);
        mpfr_mul(r8691, r8684, r8690, MPFR_RNDN);
        mpfr_sub(r8692, r8688, r8691, MPFR_RNDN);
        ;
        mpfr_set_si(r8694, mpfr_cmp(r8692, r8693) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8696, r8687, r8686, MPFR_RNDN);
        mpfr_div(r8697, r8695, r8696, MPFR_RNDN);
        mpfr_div(r8698, r8684, r8687, MPFR_RNDN);
        mpfr_mul(r8699, r8698, r8689, MPFR_RNDN);
        mpfr_sub(r8700, r8697, r8699, MPFR_RNDN);
        mpfr_abs(r8701, r8700, MPFR_RNDN);
        ;
        mpfr_set_si(r8703, mpfr_cmp(r8692, r8702) <= 0, MPFR_RNDN);
        mpfr_abs(r8704, r8692, MPFR_RNDN);
        if (mpfr_get_si(r8703, MPFR_RNDN)) { mpfr_set(r8705, r8704, MPFR_RNDN); } else { mpfr_set(r8705, r8701, MPFR_RNDN); };
        if (mpfr_get_si(r8694, MPFR_RNDN)) { mpfr_set(r8706, r8701, MPFR_RNDN); } else { mpfr_set(r8706, r8705, MPFR_RNDN); };
        return mpfr_get_d(r8706, MPFR_RNDN);
}

