#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 r50342 = d1;
        float r50343 = r50342 * r50342;
        float r50344 = r50342 * r50343;
        float r50345 = r50344 * r50342;
        float r50346 = r50345 * r50342;
        float r50347 = r50346 * r50343;
        float r50348 = r50347 * r50342;
        float r50349 = r50342 * r50348;
        float r50350 = r50349 * r50342;
        return r50350;
}

double f_id(double d1) {
        double r50351 = d1;
        double r50352 = r50351 * r50351;
        double r50353 = r50351 * r50352;
        double r50354 = r50353 * r50351;
        double r50355 = r50354 * r50351;
        double r50356 = r50355 * r50352;
        double r50357 = r50356 * r50351;
        double r50358 = r50351 * r50357;
        double r50359 = r50358 * r50351;
        return r50359;
}


double f_of(float d1) {
        float r50360 = d1;
        float r50361 = 10;
        float r50362 = pow(r50360, r50361);
        return r50362;
}

double f_od(double d1) {
        double r50363 = d1;
        double r50364 = 10;
        double r50365 = pow(r50363, r50364);
        return r50365;
}

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 r50366, r50367, r50368, r50369, r50370, r50371, r50372, r50373, r50374;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50366);
        mpfr_init(r50367);
        mpfr_init(r50368);
        mpfr_init(r50369);
        mpfr_init(r50370);
        mpfr_init(r50371);
        mpfr_init(r50372);
        mpfr_init(r50373);
        mpfr_init(r50374);
}

double f_im(double d1) {
        mpfr_set_d(r50366, d1, MPFR_RNDN);
        mpfr_mul(r50367, r50366, r50366, MPFR_RNDN);
        mpfr_mul(r50368, r50366, r50367, MPFR_RNDN);
        mpfr_mul(r50369, r50368, r50366, MPFR_RNDN);
        mpfr_mul(r50370, r50369, r50366, MPFR_RNDN);
        mpfr_mul(r50371, r50370, r50367, MPFR_RNDN);
        mpfr_mul(r50372, r50371, r50366, MPFR_RNDN);
        mpfr_mul(r50373, r50366, r50372, MPFR_RNDN);
        mpfr_mul(r50374, r50373, r50366, MPFR_RNDN);
        return mpfr_get_d(r50374, MPFR_RNDN);
}

static mpfr_t r50375, r50376, r50377;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50375);
        mpfr_init_set_str(r50376, "10", 10, MPFR_RNDN);
        mpfr_init(r50377);
}

double f_fm(double d1) {
        mpfr_set_d(r50375, d1, MPFR_RNDN);
        ;
        mpfr_pow(r50377, r50375, r50376, MPFR_RNDN);
        return mpfr_get_d(r50377, MPFR_RNDN);
}

static mpfr_t r50378, r50379, r50380;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50378);
        mpfr_init_set_str(r50379, "10", 10, MPFR_RNDN);
        mpfr_init(r50380);
}

double f_dm(double d1) {
        mpfr_set_d(r50378, d1, MPFR_RNDN);
        ;
        mpfr_pow(r50380, r50378, r50379, MPFR_RNDN);
        return mpfr_get_d(r50380, MPFR_RNDN);
}

