#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 r51278 = d1;
        float r51279 = r51278 * r51278;
        float r51280 = r51279 * r51278;
        float r51281 = r51280 * r51278;
        return r51281;
}

double f_id(double d1) {
        double r51282 = d1;
        double r51283 = r51282 * r51282;
        double r51284 = r51283 * r51282;
        double r51285 = r51284 * r51282;
        return r51285;
}


double f_of(float d1) {
        float r51286 = d1;
        float r51287 = 4;
        float r51288 = pow(r51286, r51287);
        return r51288;
}

double f_od(double d1) {
        double r51289 = d1;
        double r51290 = 4;
        double r51291 = pow(r51289, r51290);
        return r51291;
}

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 r51292, r51293, r51294, r51295;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51292);
        mpfr_init(r51293);
        mpfr_init(r51294);
        mpfr_init(r51295);
}

double f_im(double d1) {
        mpfr_set_d(r51292, d1, MPFR_RNDN);
        mpfr_mul(r51293, r51292, r51292, MPFR_RNDN);
        mpfr_mul(r51294, r51293, r51292, MPFR_RNDN);
        mpfr_mul(r51295, r51294, r51292, MPFR_RNDN);
        return mpfr_get_d(r51295, MPFR_RNDN);
}

static mpfr_t r51296, r51297, r51298;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51296);
        mpfr_init_set_str(r51297, "4", 10, MPFR_RNDN);
        mpfr_init(r51298);
}

double f_fm(double d1) {
        mpfr_set_d(r51296, d1, MPFR_RNDN);
        ;
        mpfr_pow(r51298, r51296, r51297, MPFR_RNDN);
        return mpfr_get_d(r51298, MPFR_RNDN);
}

static mpfr_t r51299, r51300, r51301;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51299);
        mpfr_init_set_str(r51300, "4", 10, MPFR_RNDN);
        mpfr_init(r51301);
}

double f_dm(double d1) {
        mpfr_set_d(r51299, d1, MPFR_RNDN);
        ;
        mpfr_pow(r51301, r51299, r51300, MPFR_RNDN);
        return mpfr_get_d(r51301, MPFR_RNDN);
}

