#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 r12551 = d1;
        float r12552 = r12551 * r12551;
        float r12553 = r12552 * r12551;
        float r12554 = r12553 * r12551;
        return r12554;
}

double f_id(double d1) {
        double r12555 = d1;
        double r12556 = r12555 * r12555;
        double r12557 = r12556 * r12555;
        double r12558 = r12557 * r12555;
        return r12558;
}


double f_of(float d1) {
        float r12559 = d1;
        float r12560 = 3;
        float r12561 = 1;
        float r12562 = r12560 + r12561;
        float r12563 = pow(r12559, r12562);
        return r12563;
}

double f_od(double d1) {
        double r12564 = d1;
        double r12565 = 3;
        double r12566 = 1;
        double r12567 = r12565 + r12566;
        double r12568 = pow(r12564, r12567);
        return r12568;
}

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 r12569, r12570, r12571, r12572;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r12569);
        mpfr_init(r12570);
        mpfr_init(r12571);
        mpfr_init(r12572);
}

double f_im(double d1) {
        mpfr_set_d(r12569, d1, MPFR_RNDN);
        mpfr_mul(r12570, r12569, r12569, MPFR_RNDN);
        mpfr_mul(r12571, r12570, r12569, MPFR_RNDN);
        mpfr_mul(r12572, r12571, r12569, MPFR_RNDN);
        return mpfr_get_d(r12572, MPFR_RNDN);
}

static mpfr_t r12573, r12574, r12575, r12576, r12577;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r12573);
        mpfr_init_set_str(r12574, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r12575, "1", 10, MPFR_RNDN);
        mpfr_init(r12576);
        mpfr_init(r12577);
}

double f_fm(double d1) {
        mpfr_set_d(r12573, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r12576, r12574, r12575, MPFR_RNDN);
        mpfr_pow(r12577, r12573, r12576, MPFR_RNDN);
        return mpfr_get_d(r12577, MPFR_RNDN);
}

static mpfr_t r12578, r12579, r12580, r12581, r12582;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r12578);
        mpfr_init_set_str(r12579, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r12580, "1", 10, MPFR_RNDN);
        mpfr_init(r12581);
        mpfr_init(r12582);
}

double f_dm(double d1) {
        mpfr_set_d(r12578, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r12581, r12579, r12580, MPFR_RNDN);
        mpfr_pow(r12582, r12578, r12581, MPFR_RNDN);
        return mpfr_get_d(r12582, MPFR_RNDN);
}

