#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 r28489 = d1;
        float r28490 = r28489 * r28489;
        float r28491 = r28489 * r28490;
        float r28492 = r28491 * r28489;
        float r28493 = r28492 * r28489;
        float r28494 = r28493 * r28490;
        float r28495 = r28494 * r28489;
        float r28496 = r28489 * r28495;
        float r28497 = r28496 * r28489;
        return r28497;
}

double f_id(double d1) {
        double r28498 = d1;
        double r28499 = r28498 * r28498;
        double r28500 = r28498 * r28499;
        double r28501 = r28500 * r28498;
        double r28502 = r28501 * r28498;
        double r28503 = r28502 * r28499;
        double r28504 = r28503 * r28498;
        double r28505 = r28498 * r28504;
        double r28506 = r28505 * r28498;
        return r28506;
}


double f_of(float d1) {
        float r28507 = d1;
        float r28508 = 3;
        float r28509 = 7;
        float r28510 = r28508 + r28509;
        float r28511 = pow(r28507, r28510);
        return r28511;
}

double f_od(double d1) {
        double r28512 = d1;
        double r28513 = 3;
        double r28514 = 7;
        double r28515 = r28513 + r28514;
        double r28516 = pow(r28512, r28515);
        return r28516;
}

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 r28517, r28518, r28519, r28520, r28521, r28522, r28523, r28524, r28525;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r28517);
        mpfr_init(r28518);
        mpfr_init(r28519);
        mpfr_init(r28520);
        mpfr_init(r28521);
        mpfr_init(r28522);
        mpfr_init(r28523);
        mpfr_init(r28524);
        mpfr_init(r28525);
}

double f_im(double d1) {
        mpfr_set_d(r28517, d1, MPFR_RNDN);
        mpfr_mul(r28518, r28517, r28517, MPFR_RNDN);
        mpfr_mul(r28519, r28517, r28518, MPFR_RNDN);
        mpfr_mul(r28520, r28519, r28517, MPFR_RNDN);
        mpfr_mul(r28521, r28520, r28517, MPFR_RNDN);
        mpfr_mul(r28522, r28521, r28518, MPFR_RNDN);
        mpfr_mul(r28523, r28522, r28517, MPFR_RNDN);
        mpfr_mul(r28524, r28517, r28523, MPFR_RNDN);
        mpfr_mul(r28525, r28524, r28517, MPFR_RNDN);
        return mpfr_get_d(r28525, MPFR_RNDN);
}

static mpfr_t r28526, r28527, r28528, r28529, r28530;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28526);
        mpfr_init_set_str(r28527, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28528, "7", 10, MPFR_RNDN);
        mpfr_init(r28529);
        mpfr_init(r28530);
}

double f_fm(double d1) {
        mpfr_set_d(r28526, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28529, r28527, r28528, MPFR_RNDN);
        mpfr_pow(r28530, r28526, r28529, MPFR_RNDN);
        return mpfr_get_d(r28530, MPFR_RNDN);
}

static mpfr_t r28531, r28532, r28533, r28534, r28535;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28531);
        mpfr_init_set_str(r28532, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28533, "7", 10, MPFR_RNDN);
        mpfr_init(r28534);
        mpfr_init(r28535);
}

double f_dm(double d1) {
        mpfr_set_d(r28531, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28534, r28532, r28533, MPFR_RNDN);
        mpfr_pow(r28535, r28531, r28534, MPFR_RNDN);
        return mpfr_get_d(r28535, MPFR_RNDN);
}

