#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "FastMath test5";

double f_if(float d1) {
        float r28116 = d1;
        float r28117 = r28116 * r28116;
        float r28118 = r28116 * r28117;
        float r28119 = r28118 * r28116;
        float r28120 = r28119 * r28116;
        float r28121 = r28120 * r28117;
        float r28122 = r28121 * r28116;
        float r28123 = r28116 * r28122;
        float r28124 = r28123 * r28116;
        return r28124;
}

double f_id(double d1) {
        double r28125 = d1;
        double r28126 = r28125 * r28125;
        double r28127 = r28125 * r28126;
        double r28128 = r28127 * r28125;
        double r28129 = r28128 * r28125;
        double r28130 = r28129 * r28126;
        double r28131 = r28130 * r28125;
        double r28132 = r28125 * r28131;
        double r28133 = r28132 * r28125;
        return r28133;
}


double f_of(float d1) {
        float r28134 = d1;
        float r28135 = 3;
        float r28136 = 2;
        float r28137 = r28135 + r28136;
        float r28138 = r28137 + r28137;
        float r28139 = pow(r28134, r28138);
        return r28139;
}

double f_od(double d1) {
        double r28140 = d1;
        double r28141 = 3;
        double r28142 = 2;
        double r28143 = r28141 + r28142;
        double r28144 = r28143 + r28143;
        double r28145 = pow(r28140, r28144);
        return r28145;
}

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 r28146, r28147, r28148, r28149, r28150, r28151, r28152, r28153, r28154;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r28146);
        mpfr_init(r28147);
        mpfr_init(r28148);
        mpfr_init(r28149);
        mpfr_init(r28150);
        mpfr_init(r28151);
        mpfr_init(r28152);
        mpfr_init(r28153);
        mpfr_init(r28154);
}

double f_im(double d1) {
        mpfr_set_d(r28146, d1, MPFR_RNDN);
        mpfr_mul(r28147, r28146, r28146, MPFR_RNDN);
        mpfr_mul(r28148, r28146, r28147, MPFR_RNDN);
        mpfr_mul(r28149, r28148, r28146, MPFR_RNDN);
        mpfr_mul(r28150, r28149, r28146, MPFR_RNDN);
        mpfr_mul(r28151, r28150, r28147, MPFR_RNDN);
        mpfr_mul(r28152, r28151, r28146, MPFR_RNDN);
        mpfr_mul(r28153, r28146, r28152, MPFR_RNDN);
        mpfr_mul(r28154, r28153, r28146, MPFR_RNDN);
        return mpfr_get_d(r28154, MPFR_RNDN);
}

static mpfr_t r28155, r28156, r28157, r28158, r28159, r28160;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r28155);
        mpfr_init_set_str(r28156, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28157, "2", 10, MPFR_RNDN);
        mpfr_init(r28158);
        mpfr_init(r28159);
        mpfr_init(r28160);
}

double f_fm(double d1) {
        mpfr_set_d(r28155, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28158, r28156, r28157, MPFR_RNDN);
        mpfr_add(r28159, r28158, r28158, MPFR_RNDN);
        mpfr_pow(r28160, r28155, r28159, MPFR_RNDN);
        return mpfr_get_d(r28160, MPFR_RNDN);
}

static mpfr_t r28161, r28162, r28163, r28164, r28165, r28166;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r28161);
        mpfr_init_set_str(r28162, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28163, "2", 10, MPFR_RNDN);
        mpfr_init(r28164);
        mpfr_init(r28165);
        mpfr_init(r28166);
}

double f_dm(double d1) {
        mpfr_set_d(r28161, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28164, r28162, r28163, MPFR_RNDN);
        mpfr_add(r28165, r28164, r28164, MPFR_RNDN);
        mpfr_pow(r28166, r28161, r28165, MPFR_RNDN);
        return mpfr_get_d(r28166, MPFR_RNDN);
}

