#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 r22167 = x;
        float r22168 = 4;
        float r22169 = r22167 + r22168;
        float r22170 = y;
        float r22171 = r22169 / r22170;
        float r22172 = r22167 / r22170;
        float r22173 = z;
        float r22174 = r22172 * r22173;
        float r22175 = r22171 - r22174;
        float r22176 = fabs(r22175);
        return r22176;
}

double f_id(double x, double y, double z) {
        double r22177 = x;
        double r22178 = 4;
        double r22179 = r22177 + r22178;
        double r22180 = y;
        double r22181 = r22179 / r22180;
        double r22182 = r22177 / r22180;
        double r22183 = z;
        double r22184 = r22182 * r22183;
        double r22185 = r22181 - r22184;
        double r22186 = fabs(r22185);
        return r22186;
}


double f_of(float x, float y, float z) {
        float r22187 = x;
        float r22188 = 4;
        float r22189 = r22187 + r22188;
        float r22190 = y;
        float r22191 = r22189 / r22190;
        float r22192 = r22187 / r22190;
        float r22193 = z;
        float r22194 = r22192 * r22193;
        float r22195 = r22191 - r22194;
        float r22196 = fabs(r22195);
        float r22197 = 92.12957024745998;
        bool r22198 = r22196 <= r22197;
        float r22199 = r22193 / r22190;
        float r22200 = r22187 * r22199;
        float r22201 = r22191 - r22200;
        float r22202 = fabs(r22201);
        float r22203 = r22198 ? r22202 : r22196;
        return r22203;
}

double f_od(double x, double y, double z) {
        double r22204 = x;
        double r22205 = 4;
        double r22206 = r22204 + r22205;
        double r22207 = y;
        double r22208 = r22206 / r22207;
        double r22209 = r22204 / r22207;
        double r22210 = z;
        double r22211 = r22209 * r22210;
        double r22212 = r22208 - r22211;
        double r22213 = fabs(r22212);
        double r22214 = 92.12957024745998;
        bool r22215 = r22213 <= r22214;
        double r22216 = r22210 / r22207;
        double r22217 = r22204 * r22216;
        double r22218 = r22208 - r22217;
        double r22219 = fabs(r22218);
        double r22220 = r22215 ? r22219 : r22213;
        return r22220;
}

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 r22221, r22222, r22223, r22224, r22225, r22226, r22227, r22228, r22229, r22230;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r22221);
        mpfr_init_set_str(r22222, "4", 10, MPFR_RNDN);
        mpfr_init(r22223);
        mpfr_init(r22224);
        mpfr_init(r22225);
        mpfr_init(r22226);
        mpfr_init(r22227);
        mpfr_init(r22228);
        mpfr_init(r22229);
        mpfr_init(r22230);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r22221, x, MPFR_RNDN);
        ;
        mpfr_add(r22223, r22221, r22222, MPFR_RNDN);
        mpfr_set_d(r22224, y, MPFR_RNDN);
        mpfr_div(r22225, r22223, r22224, MPFR_RNDN);
        mpfr_div(r22226, r22221, r22224, MPFR_RNDN);
        mpfr_set_d(r22227, z, MPFR_RNDN);
        mpfr_mul(r22228, r22226, r22227, MPFR_RNDN);
        mpfr_sub(r22229, r22225, r22228, MPFR_RNDN);
        mpfr_abs(r22230, r22229, MPFR_RNDN);
        return mpfr_get_d(r22230, MPFR_RNDN);
}

static mpfr_t r22231, r22232, r22233, r22234, r22235, r22236, r22237, r22238, r22239, r22240, r22241, r22242, r22243, r22244, r22245, r22246, r22247;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22231);
        mpfr_init_set_str(r22232, "4", 10, MPFR_RNDN);
        mpfr_init(r22233);
        mpfr_init(r22234);
        mpfr_init(r22235);
        mpfr_init(r22236);
        mpfr_init(r22237);
        mpfr_init(r22238);
        mpfr_init(r22239);
        mpfr_init(r22240);
        mpfr_init_set_str(r22241, "92.12957024745998", 10, MPFR_RNDN);
        mpfr_init(r22242);
        mpfr_init(r22243);
        mpfr_init(r22244);
        mpfr_init(r22245);
        mpfr_init(r22246);
        mpfr_init(r22247);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r22231, x, MPFR_RNDN);
        ;
        mpfr_add(r22233, r22231, r22232, MPFR_RNDN);
        mpfr_set_d(r22234, y, MPFR_RNDN);
        mpfr_div(r22235, r22233, r22234, MPFR_RNDN);
        mpfr_div(r22236, r22231, r22234, MPFR_RNDN);
        mpfr_set_d(r22237, z, MPFR_RNDN);
        mpfr_mul(r22238, r22236, r22237, MPFR_RNDN);
        mpfr_sub(r22239, r22235, r22238, MPFR_RNDN);
        mpfr_abs(r22240, r22239, MPFR_RNDN);
        ;
        mpfr_set_si(r22242, mpfr_cmp(r22240, r22241) <= 0, MPFR_RNDN);
        mpfr_div(r22243, r22237, r22234, MPFR_RNDN);
        mpfr_mul(r22244, r22231, r22243, MPFR_RNDN);
        mpfr_sub(r22245, r22235, r22244, MPFR_RNDN);
        mpfr_abs(r22246, r22245, MPFR_RNDN);
        if (mpfr_get_si(r22242, MPFR_RNDN)) { mpfr_set(r22247, r22246, MPFR_RNDN); } else { mpfr_set(r22247, r22240, MPFR_RNDN); };
        return mpfr_get_d(r22247, MPFR_RNDN);
}

static mpfr_t r22248, r22249, r22250, r22251, r22252, r22253, r22254, r22255, r22256, r22257, r22258, r22259, r22260, r22261, r22262, r22263, r22264;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22248);
        mpfr_init_set_str(r22249, "4", 10, MPFR_RNDN);
        mpfr_init(r22250);
        mpfr_init(r22251);
        mpfr_init(r22252);
        mpfr_init(r22253);
        mpfr_init(r22254);
        mpfr_init(r22255);
        mpfr_init(r22256);
        mpfr_init(r22257);
        mpfr_init_set_str(r22258, "92.12957024745998", 10, MPFR_RNDN);
        mpfr_init(r22259);
        mpfr_init(r22260);
        mpfr_init(r22261);
        mpfr_init(r22262);
        mpfr_init(r22263);
        mpfr_init(r22264);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r22248, x, MPFR_RNDN);
        ;
        mpfr_add(r22250, r22248, r22249, MPFR_RNDN);
        mpfr_set_d(r22251, y, MPFR_RNDN);
        mpfr_div(r22252, r22250, r22251, MPFR_RNDN);
        mpfr_div(r22253, r22248, r22251, MPFR_RNDN);
        mpfr_set_d(r22254, z, MPFR_RNDN);
        mpfr_mul(r22255, r22253, r22254, MPFR_RNDN);
        mpfr_sub(r22256, r22252, r22255, MPFR_RNDN);
        mpfr_abs(r22257, r22256, MPFR_RNDN);
        ;
        mpfr_set_si(r22259, mpfr_cmp(r22257, r22258) <= 0, MPFR_RNDN);
        mpfr_div(r22260, r22254, r22251, MPFR_RNDN);
        mpfr_mul(r22261, r22248, r22260, MPFR_RNDN);
        mpfr_sub(r22262, r22252, r22261, MPFR_RNDN);
        mpfr_abs(r22263, r22262, MPFR_RNDN);
        if (mpfr_get_si(r22259, MPFR_RNDN)) { mpfr_set(r22264, r22263, MPFR_RNDN); } else { mpfr_set(r22264, r22257, MPFR_RNDN); };
        return mpfr_get_d(r22264, MPFR_RNDN);
}

