#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 r28523 = d1;
        float r28524 = r28523 * r28523;
        float r28525 = r28523 * r28524;
        float r28526 = r28525 * r28523;
        float r28527 = r28526 * r28523;
        float r28528 = r28527 * r28524;
        float r28529 = r28528 * r28523;
        float r28530 = r28523 * r28529;
        float r28531 = r28530 * r28523;
        return r28531;
}

double f_id(double d1) {
        double r28532 = d1;
        double r28533 = r28532 * r28532;
        double r28534 = r28532 * r28533;
        double r28535 = r28534 * r28532;
        double r28536 = r28535 * r28532;
        double r28537 = r28536 * r28533;
        double r28538 = r28537 * r28532;
        double r28539 = r28532 * r28538;
        double r28540 = r28539 * r28532;
        return r28540;
}


double f_of(float d1) {
        float r28541 = d1;
        float r28542 = 3;
        float r28543 = 2;
        float r28544 = r28542 + r28543;
        float r28545 = r28544 + r28544;
        float r28546 = pow(r28541, r28545);
        return r28546;
}

double f_od(double d1) {
        double r28547 = d1;
        double r28548 = 3;
        double r28549 = 2;
        double r28550 = r28548 + r28549;
        double r28551 = r28550 + r28550;
        double r28552 = pow(r28547, r28551);
        return r28552;
}

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 r28553, r28554, r28555, r28556, r28557, r28558, r28559, r28560, r28561;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r28553);
        mpfr_init(r28554);
        mpfr_init(r28555);
        mpfr_init(r28556);
        mpfr_init(r28557);
        mpfr_init(r28558);
        mpfr_init(r28559);
        mpfr_init(r28560);
        mpfr_init(r28561);
}

double f_im(double d1) {
        mpfr_set_d(r28553, d1, MPFR_RNDN);
        mpfr_mul(r28554, r28553, r28553, MPFR_RNDN);
        mpfr_mul(r28555, r28553, r28554, MPFR_RNDN);
        mpfr_mul(r28556, r28555, r28553, MPFR_RNDN);
        mpfr_mul(r28557, r28556, r28553, MPFR_RNDN);
        mpfr_mul(r28558, r28557, r28554, MPFR_RNDN);
        mpfr_mul(r28559, r28558, r28553, MPFR_RNDN);
        mpfr_mul(r28560, r28553, r28559, MPFR_RNDN);
        mpfr_mul(r28561, r28560, r28553, MPFR_RNDN);
        return mpfr_get_d(r28561, MPFR_RNDN);
}

static mpfr_t r28562, r28563, r28564, r28565, r28566, r28567;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28562);
        mpfr_init_set_str(r28563, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28564, "2", 10, MPFR_RNDN);
        mpfr_init(r28565);
        mpfr_init(r28566);
        mpfr_init(r28567);
}

double f_fm(double d1) {
        mpfr_set_d(r28562, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28565, r28563, r28564, MPFR_RNDN);
        mpfr_add(r28566, r28565, r28565, MPFR_RNDN);
        mpfr_pow(r28567, r28562, r28566, MPFR_RNDN);
        return mpfr_get_d(r28567, MPFR_RNDN);
}

static mpfr_t r28568, r28569, r28570, r28571, r28572, r28573;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28568);
        mpfr_init_set_str(r28569, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r28570, "2", 10, MPFR_RNDN);
        mpfr_init(r28571);
        mpfr_init(r28572);
        mpfr_init(r28573);
}

double f_dm(double d1) {
        mpfr_set_d(r28568, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28571, r28569, r28570, MPFR_RNDN);
        mpfr_add(r28572, r28571, r28571, MPFR_RNDN);
        mpfr_pow(r28573, r28568, r28572, MPFR_RNDN);
        return mpfr_get_d(r28573, MPFR_RNDN);
}

