#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 r11916 = d1;
        float r11917 = r11916 * r11916;
        float r11918 = r11917 * r11916;
        float r11919 = r11918 * r11916;
        return r11919;
}

double f_id(double d1) {
        double r11920 = d1;
        double r11921 = r11920 * r11920;
        double r11922 = r11921 * r11920;
        double r11923 = r11922 * r11920;
        return r11923;
}


double f_of(float d1) {
        float r11924 = d1;
        float r11925 = 3;
        float r11926 = 1;
        float r11927 = r11925 + r11926;
        float r11928 = pow(r11924, r11927);
        return r11928;
}

double f_od(double d1) {
        double r11929 = d1;
        double r11930 = 3;
        double r11931 = 1;
        double r11932 = r11930 + r11931;
        double r11933 = pow(r11929, r11932);
        return r11933;
}

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 r11934, r11935, r11936, r11937;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r11934);
        mpfr_init(r11935);
        mpfr_init(r11936);
        mpfr_init(r11937);
}

double f_im(double d1) {
        mpfr_set_d(r11934, d1, MPFR_RNDN);
        mpfr_mul(r11935, r11934, r11934, MPFR_RNDN);
        mpfr_mul(r11936, r11935, r11934, MPFR_RNDN);
        mpfr_mul(r11937, r11936, r11934, MPFR_RNDN);
        return mpfr_get_d(r11937, MPFR_RNDN);
}

static mpfr_t r11938, r11939, r11940, r11941, r11942;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11938);
        mpfr_init_set_str(r11939, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r11940, "1", 10, MPFR_RNDN);
        mpfr_init(r11941);
        mpfr_init(r11942);
}

double f_fm(double d1) {
        mpfr_set_d(r11938, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r11941, r11939, r11940, MPFR_RNDN);
        mpfr_pow(r11942, r11938, r11941, MPFR_RNDN);
        return mpfr_get_d(r11942, MPFR_RNDN);
}

static mpfr_t r11943, r11944, r11945, r11946, r11947;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r11943);
        mpfr_init_set_str(r11944, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r11945, "1", 10, MPFR_RNDN);
        mpfr_init(r11946);
        mpfr_init(r11947);
}

double f_dm(double d1) {
        mpfr_set_d(r11943, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r11946, r11944, r11945, MPFR_RNDN);
        mpfr_pow(r11947, r11943, r11946, MPFR_RNDN);
        return mpfr_get_d(r11947, MPFR_RNDN);
}

