#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 r29086 = d1;
        float r29087 = r29086 * r29086;
        float r29088 = r29087 * r29086;
        float r29089 = r29088 * r29086;
        return r29089;
}

double f_id(double d1) {
        double r29090 = d1;
        double r29091 = r29090 * r29090;
        double r29092 = r29091 * r29090;
        double r29093 = r29092 * r29090;
        return r29093;
}


double f_of(float d1) {
        float r29094 = d1;
        float r29095 = 3;
        float r29096 = 1;
        float r29097 = r29095 + r29096;
        float r29098 = pow(r29094, r29097);
        return r29098;
}

double f_od(double d1) {
        double r29099 = d1;
        double r29100 = 3;
        double r29101 = 1;
        double r29102 = r29100 + r29101;
        double r29103 = pow(r29099, r29102);
        return r29103;
}

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 r29104, r29105, r29106, r29107;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r29104);
        mpfr_init(r29105);
        mpfr_init(r29106);
        mpfr_init(r29107);
}

double f_im(double d1) {
        mpfr_set_d(r29104, d1, MPFR_RNDN);
        mpfr_mul(r29105, r29104, r29104, MPFR_RNDN);
        mpfr_mul(r29106, r29105, r29104, MPFR_RNDN);
        mpfr_mul(r29107, r29106, r29104, MPFR_RNDN);
        return mpfr_get_d(r29107, MPFR_RNDN);
}

static mpfr_t r29108, r29109, r29110, r29111, r29112;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r29108);
        mpfr_init_set_str(r29109, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r29110, "1", 10, MPFR_RNDN);
        mpfr_init(r29111);
        mpfr_init(r29112);
}

double f_fm(double d1) {
        mpfr_set_d(r29108, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r29111, r29109, r29110, MPFR_RNDN);
        mpfr_pow(r29112, r29108, r29111, MPFR_RNDN);
        return mpfr_get_d(r29112, MPFR_RNDN);
}

static mpfr_t r29113, r29114, r29115, r29116, r29117;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r29113);
        mpfr_init_set_str(r29114, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r29115, "1", 10, MPFR_RNDN);
        mpfr_init(r29116);
        mpfr_init(r29117);
}

double f_dm(double d1) {
        mpfr_set_d(r29113, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r29116, r29114, r29115, MPFR_RNDN);
        mpfr_pow(r29117, r29113, r29116, MPFR_RNDN);
        return mpfr_get_d(r29117, MPFR_RNDN);
}

