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

char *name = "3frac (problem 3.3.3)";

double f_if(float x) {
        float r26893 = 1;
        float r26894 = x;
        float r26895 = r26894 + r26893;
        float r26896 = r26893 / r26895;
        float r26897 = 2;
        float r26898 = r26897 / r26894;
        float r26899 = r26896 - r26898;
        float r26900 = r26894 - r26893;
        float r26901 = r26893 / r26900;
        float r26902 = r26899 + r26901;
        return r26902;
}

double f_id(double x) {
        double r26903 = 1;
        double r26904 = x;
        double r26905 = r26904 + r26903;
        double r26906 = r26903 / r26905;
        double r26907 = 2;
        double r26908 = r26907 / r26904;
        double r26909 = r26906 - r26908;
        double r26910 = r26904 - r26903;
        double r26911 = r26903 / r26910;
        double r26912 = r26909 + r26911;
        return r26912;
}


double f_of(float x) {
        float r26913 = 2;
        float r26914 = x;
        float r26915 = fma(r26914, r26914, r26914);
        float r26916 = r26913 / r26915;
        float r26917 = 1;
        float r26918 = r26914 - r26917;
        float r26919 = r26916 / r26918;
        return r26919;
}

double f_od(double x) {
        double r26920 = 2;
        double r26921 = x;
        double r26922 = fma(r26921, r26921, r26921);
        double r26923 = r26920 / r26922;
        double r26924 = 1;
        double r26925 = r26921 - r26924;
        double r26926 = r26923 / r26925;
        return r26926;
}

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 r26927, r26928, r26929, r26930, r26931, r26932, r26933, r26934, r26935, r26936;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r26927, "1", 10, MPFR_RNDN);
        mpfr_init(r26928);
        mpfr_init(r26929);
        mpfr_init(r26930);
        mpfr_init_set_str(r26931, "2", 10, MPFR_RNDN);
        mpfr_init(r26932);
        mpfr_init(r26933);
        mpfr_init(r26934);
        mpfr_init(r26935);
        mpfr_init(r26936);
}

double f_im(double x) {
        ;
        mpfr_set_d(r26928, x, MPFR_RNDN);
        mpfr_add(r26929, r26928, r26927, MPFR_RNDN);
        mpfr_div(r26930, r26927, r26929, MPFR_RNDN);
        ;
        mpfr_div(r26932, r26931, r26928, MPFR_RNDN);
        mpfr_sub(r26933, r26930, r26932, MPFR_RNDN);
        mpfr_sub(r26934, r26928, r26927, MPFR_RNDN);
        mpfr_div(r26935, r26927, r26934, MPFR_RNDN);
        mpfr_add(r26936, r26933, r26935, MPFR_RNDN);
        return mpfr_get_d(r26936, MPFR_RNDN);
}

static mpfr_t r26937, r26938, r26939, r26940, r26941, r26942, r26943;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r26937, "2", 10, MPFR_RNDN);
        mpfr_init(r26938);
        mpfr_init(r26939);
        mpfr_init(r26940);
        mpfr_init_set_str(r26941, "1", 10, MPFR_RNDN);
        mpfr_init(r26942);
        mpfr_init(r26943);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r26938, x, MPFR_RNDN);
        mpfr_fma(r26939, r26938, r26938, r26938, MPFR_RNDN);
        mpfr_div(r26940, r26937, r26939, MPFR_RNDN);
        ;
        mpfr_sub(r26942, r26938, r26941, MPFR_RNDN);
        mpfr_div(r26943, r26940, r26942, MPFR_RNDN);
        return mpfr_get_d(r26943, MPFR_RNDN);
}

static mpfr_t r26944, r26945, r26946, r26947, r26948, r26949, r26950;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1104);
        mpfr_init_set_str(r26944, "2", 10, MPFR_RNDN);
        mpfr_init(r26945);
        mpfr_init(r26946);
        mpfr_init(r26947);
        mpfr_init_set_str(r26948, "1", 10, MPFR_RNDN);
        mpfr_init(r26949);
        mpfr_init(r26950);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r26945, x, MPFR_RNDN);
        mpfr_fma(r26946, r26945, r26945, r26945, MPFR_RNDN);
        mpfr_div(r26947, r26944, r26946, MPFR_RNDN);
        ;
        mpfr_sub(r26949, r26945, r26948, MPFR_RNDN);
        mpfr_div(r26950, r26947, r26949, MPFR_RNDN);
        return mpfr_get_d(r26950, MPFR_RNDN);
}

