#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 r28462 = d1;
        float r28463 = r28462 * r28462;
        float r28464 = r28463 * r28462;
        float r28465 = r28464 * r28462;
        return r28465;
}

double f_id(double d1) {
        double r28466 = d1;
        double r28467 = r28466 * r28466;
        double r28468 = r28467 * r28466;
        double r28469 = r28468 * r28466;
        return r28469;
}


double f_of(float d1) {
        float r28470 = d1;
        float r28471 = 3;
        float r28472 = 1;
        float r28473 = r28471 + r28472;
        float r28474 = pow(r28470, r28473);
        return r28474;
}

double f_od(double d1) {
        double r28475 = d1;
        double r28476 = 3;
        double r28477 = 1;
        double r28478 = r28476 + r28477;
        double r28479 = pow(r28475, r28478);
        return r28479;
}

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 r28480, r28481, r28482, r28483;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r28480);
        mpfr_init(r28481);
        mpfr_init(r28482);
        mpfr_init(r28483);
}

double f_im(double d1) {
        mpfr_set_d(r28480, d1, MPFR_RNDN);
        mpfr_mul(r28481, r28480, r28480, MPFR_RNDN);
        mpfr_mul(r28482, r28481, r28480, MPFR_RNDN);
        mpfr_mul(r28483, r28482, r28480, MPFR_RNDN);
        return mpfr_get_d(r28483, MPFR_RNDN);
}

static mpfr_t r28484, r28485, r28486, r28487, r28488;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28484);
        mpfr_init_set_str(r28485, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28486, "1", 10, MPFR_RNDN);
        mpfr_init(r28487);
        mpfr_init(r28488);
}

double f_fm(double d1) {
        mpfr_set_d(r28484, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28487, r28485, r28486, MPFR_RNDN);
        mpfr_pow(r28488, r28484, r28487, MPFR_RNDN);
        return mpfr_get_d(r28488, MPFR_RNDN);
}

static mpfr_t r28489, r28490, r28491, r28492, r28493;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28489);
        mpfr_init_set_str(r28490, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28491, "1", 10, MPFR_RNDN);
        mpfr_init(r28492);
        mpfr_init(r28493);
}

double f_dm(double d1) {
        mpfr_set_d(r28489, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28492, r28490, r28491, MPFR_RNDN);
        mpfr_pow(r28493, r28489, r28492, MPFR_RNDN);
        return mpfr_get_d(r28493, MPFR_RNDN);
}

