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

char *name = "FastMath repmul";

double f_if(float d1) {
        float r28307 = d1;
        float r28308 = r28307 * r28307;
        float r28309 = r28308 * r28307;
        float r28310 = r28309 * r28307;
        return r28310;
}

double f_id(double d1) {
        double r28311 = d1;
        double r28312 = r28311 * r28311;
        double r28313 = r28312 * r28311;
        double r28314 = r28313 * r28311;
        return r28314;
}


double f_of(float d1) {
        float r28315 = d1;
        float r28316 = 3;
        float r28317 = 1;
        float r28318 = r28316 + r28317;
        float r28319 = pow(r28315, r28318);
        return r28319;
}

double f_od(double d1) {
        double r28320 = d1;
        double r28321 = 3;
        double r28322 = 1;
        double r28323 = r28321 + r28322;
        double r28324 = pow(r28320, r28323);
        return r28324;
}

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 r28325, r28326, r28327, r28328;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r28325);
        mpfr_init(r28326);
        mpfr_init(r28327);
        mpfr_init(r28328);
}

double f_im(double d1) {
        mpfr_set_d(r28325, d1, MPFR_RNDN);
        mpfr_mul(r28326, r28325, r28325, MPFR_RNDN);
        mpfr_mul(r28327, r28326, r28325, MPFR_RNDN);
        mpfr_mul(r28328, r28327, r28325, MPFR_RNDN);
        return mpfr_get_d(r28328, MPFR_RNDN);
}

static mpfr_t r28329, r28330, r28331, r28332, r28333;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r28329);
        mpfr_init_set_str(r28330, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28331, "1", 10, MPFR_RNDN);
        mpfr_init(r28332);
        mpfr_init(r28333);
}

double f_fm(double d1) {
        mpfr_set_d(r28329, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28332, r28330, r28331, MPFR_RNDN);
        mpfr_pow(r28333, r28329, r28332, MPFR_RNDN);
        return mpfr_get_d(r28333, MPFR_RNDN);
}

static mpfr_t r28334, r28335, r28336, r28337, r28338;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r28334);
        mpfr_init_set_str(r28335, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28336, "1", 10, MPFR_RNDN);
        mpfr_init(r28337);
        mpfr_init(r28338);
}

double f_dm(double d1) {
        mpfr_set_d(r28334, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28337, r28335, r28336, MPFR_RNDN);
        mpfr_pow(r28338, r28334, r28337, MPFR_RNDN);
        return mpfr_get_d(r28338, MPFR_RNDN);
}

