#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 r28514 = d1;
        float r28515 = r28514 * r28514;
        float r28516 = r28515 * r28514;
        float r28517 = r28516 * r28514;
        return r28517;
}

double f_id(double d1) {
        double r28518 = d1;
        double r28519 = r28518 * r28518;
        double r28520 = r28519 * r28518;
        double r28521 = r28520 * r28518;
        return r28521;
}


double f_of(float d1) {
        float r28522 = d1;
        float r28523 = 3;
        float r28524 = 1;
        float r28525 = r28523 + r28524;
        float r28526 = pow(r28522, r28525);
        return r28526;
}

double f_od(double d1) {
        double r28527 = d1;
        double r28528 = 3;
        double r28529 = 1;
        double r28530 = r28528 + r28529;
        double r28531 = pow(r28527, r28530);
        return r28531;
}

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 r28532, r28533, r28534, r28535;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r28532);
        mpfr_init(r28533);
        mpfr_init(r28534);
        mpfr_init(r28535);
}

double f_im(double d1) {
        mpfr_set_d(r28532, d1, MPFR_RNDN);
        mpfr_mul(r28533, r28532, r28532, MPFR_RNDN);
        mpfr_mul(r28534, r28533, r28532, MPFR_RNDN);
        mpfr_mul(r28535, r28534, r28532, MPFR_RNDN);
        return mpfr_get_d(r28535, MPFR_RNDN);
}

static mpfr_t r28536, r28537, r28538, r28539, r28540;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r28536);
        mpfr_init_set_str(r28537, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28538, "1", 10, MPFR_RNDN);
        mpfr_init(r28539);
        mpfr_init(r28540);
}

double f_fm(double d1) {
        mpfr_set_d(r28536, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28539, r28537, r28538, MPFR_RNDN);
        mpfr_pow(r28540, r28536, r28539, MPFR_RNDN);
        return mpfr_get_d(r28540, MPFR_RNDN);
}

static mpfr_t r28541, r28542, r28543, r28544, r28545;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r28541);
        mpfr_init_set_str(r28542, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28543, "1", 10, MPFR_RNDN);
        mpfr_init(r28544);
        mpfr_init(r28545);
}

double f_dm(double d1) {
        mpfr_set_d(r28541, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28544, r28542, r28543, MPFR_RNDN);
        mpfr_pow(r28545, r28541, r28544, MPFR_RNDN);
        return mpfr_get_d(r28545, MPFR_RNDN);
}

