#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 r28314 = d1;
        float r28315 = r28314 * r28314;
        float r28316 = r28314 * r28315;
        float r28317 = r28316 * r28314;
        float r28318 = r28317 * r28314;
        float r28319 = r28318 * r28315;
        float r28320 = r28319 * r28314;
        float r28321 = r28314 * r28320;
        float r28322 = r28321 * r28314;
        return r28322;
}

double f_id(double d1) {
        double r28323 = d1;
        double r28324 = r28323 * r28323;
        double r28325 = r28323 * r28324;
        double r28326 = r28325 * r28323;
        double r28327 = r28326 * r28323;
        double r28328 = r28327 * r28324;
        double r28329 = r28328 * r28323;
        double r28330 = r28323 * r28329;
        double r28331 = r28330 * r28323;
        return r28331;
}


double f_of(float d1) {
        float r28332 = d1;
        float r28333 = 3;
        float r28334 = 7;
        float r28335 = r28333 + r28334;
        float r28336 = pow(r28332, r28335);
        return r28336;
}

double f_od(double d1) {
        double r28337 = d1;
        double r28338 = 3;
        double r28339 = 7;
        double r28340 = r28338 + r28339;
        double r28341 = pow(r28337, r28340);
        return r28341;
}

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 r28342, r28343, r28344, r28345, r28346, r28347, r28348, r28349, r28350;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r28342);
        mpfr_init(r28343);
        mpfr_init(r28344);
        mpfr_init(r28345);
        mpfr_init(r28346);
        mpfr_init(r28347);
        mpfr_init(r28348);
        mpfr_init(r28349);
        mpfr_init(r28350);
}

double f_im(double d1) {
        mpfr_set_d(r28342, d1, MPFR_RNDN);
        mpfr_mul(r28343, r28342, r28342, MPFR_RNDN);
        mpfr_mul(r28344, r28342, r28343, MPFR_RNDN);
        mpfr_mul(r28345, r28344, r28342, MPFR_RNDN);
        mpfr_mul(r28346, r28345, r28342, MPFR_RNDN);
        mpfr_mul(r28347, r28346, r28343, MPFR_RNDN);
        mpfr_mul(r28348, r28347, r28342, MPFR_RNDN);
        mpfr_mul(r28349, r28342, r28348, MPFR_RNDN);
        mpfr_mul(r28350, r28349, r28342, MPFR_RNDN);
        return mpfr_get_d(r28350, MPFR_RNDN);
}

static mpfr_t r28351, r28352, r28353, r28354, r28355;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28351);
        mpfr_init_set_str(r28352, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28353, "7", 10, MPFR_RNDN);
        mpfr_init(r28354);
        mpfr_init(r28355);
}

double f_fm(double d1) {
        mpfr_set_d(r28351, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28354, r28352, r28353, MPFR_RNDN);
        mpfr_pow(r28355, r28351, r28354, MPFR_RNDN);
        return mpfr_get_d(r28355, MPFR_RNDN);
}

static mpfr_t r28356, r28357, r28358, r28359, r28360;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28356);
        mpfr_init_set_str(r28357, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28358, "7", 10, MPFR_RNDN);
        mpfr_init(r28359);
        mpfr_init(r28360);
}

double f_dm(double d1) {
        mpfr_set_d(r28356, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28359, r28357, r28358, MPFR_RNDN);
        mpfr_pow(r28360, r28356, r28359, MPFR_RNDN);
        return mpfr_get_d(r28360, MPFR_RNDN);
}

