#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 r50989 = d1;
        float r50990 = r50989 * r50989;
        float r50991 = r50989 * r50990;
        float r50992 = r50991 * r50989;
        float r50993 = r50992 * r50989;
        float r50994 = r50993 * r50990;
        float r50995 = r50994 * r50989;
        float r50996 = r50989 * r50995;
        float r50997 = r50996 * r50989;
        return r50997;
}

double f_id(double d1) {
        double r50998 = d1;
        double r50999 = r50998 * r50998;
        double r51000 = r50998 * r50999;
        double r51001 = r51000 * r50998;
        double r51002 = r51001 * r50998;
        double r51003 = r51002 * r50999;
        double r51004 = r51003 * r50998;
        double r51005 = r50998 * r51004;
        double r51006 = r51005 * r50998;
        return r51006;
}


double f_of(float d1) {
        float r51007 = d1;
        float r51008 = 10;
        float r51009 = pow(r51007, r51008);
        return r51009;
}

double f_od(double d1) {
        double r51010 = d1;
        double r51011 = 10;
        double r51012 = pow(r51010, r51011);
        return r51012;
}

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 r51013, r51014, r51015, r51016, r51017, r51018, r51019, r51020, r51021;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51013);
        mpfr_init(r51014);
        mpfr_init(r51015);
        mpfr_init(r51016);
        mpfr_init(r51017);
        mpfr_init(r51018);
        mpfr_init(r51019);
        mpfr_init(r51020);
        mpfr_init(r51021);
}

double f_im(double d1) {
        mpfr_set_d(r51013, d1, MPFR_RNDN);
        mpfr_mul(r51014, r51013, r51013, MPFR_RNDN);
        mpfr_mul(r51015, r51013, r51014, MPFR_RNDN);
        mpfr_mul(r51016, r51015, r51013, MPFR_RNDN);
        mpfr_mul(r51017, r51016, r51013, MPFR_RNDN);
        mpfr_mul(r51018, r51017, r51014, MPFR_RNDN);
        mpfr_mul(r51019, r51018, r51013, MPFR_RNDN);
        mpfr_mul(r51020, r51013, r51019, MPFR_RNDN);
        mpfr_mul(r51021, r51020, r51013, MPFR_RNDN);
        return mpfr_get_d(r51021, MPFR_RNDN);
}

static mpfr_t r51022, r51023, r51024;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51022);
        mpfr_init_set_str(r51023, "10", 10, MPFR_RNDN);
        mpfr_init(r51024);
}

double f_fm(double d1) {
        mpfr_set_d(r51022, d1, MPFR_RNDN);
        ;
        mpfr_pow(r51024, r51022, r51023, MPFR_RNDN);
        return mpfr_get_d(r51024, MPFR_RNDN);
}

static mpfr_t r51025, r51026, r51027;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51025);
        mpfr_init_set_str(r51026, "10", 10, MPFR_RNDN);
        mpfr_init(r51027);
}

double f_dm(double d1) {
        mpfr_set_d(r51025, d1, MPFR_RNDN);
        ;
        mpfr_pow(r51027, r51025, r51026, MPFR_RNDN);
        return mpfr_get_d(r51027, MPFR_RNDN);
}

