#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 r18455 = d1;
        float r18456 = r18455 * r18455;
        float r18457 = r18455 * r18456;
        float r18458 = r18457 * r18455;
        float r18459 = r18458 * r18455;
        float r18460 = r18459 * r18456;
        float r18461 = r18460 * r18455;
        float r18462 = r18455 * r18461;
        float r18463 = r18462 * r18455;
        return r18463;
}

double f_id(double d1) {
        double r18464 = d1;
        double r18465 = r18464 * r18464;
        double r18466 = r18464 * r18465;
        double r18467 = r18466 * r18464;
        double r18468 = r18467 * r18464;
        double r18469 = r18468 * r18465;
        double r18470 = r18469 * r18464;
        double r18471 = r18464 * r18470;
        double r18472 = r18471 * r18464;
        return r18472;
}


double f_of(float d1) {
        float r18473 = d1;
        float r18474 = 2.0f;
        float r18475 = 3.0f;
        float r18476 = r18474 + r18475;
        float r18477 = r18476 + r18476;
        float r18478 = pow(r18473, r18477);
        return r18478;
}

double f_od(double d1) {
        double r18479 = d1;
        double r18480 = 2.0;
        double r18481 = 3.0;
        double r18482 = r18480 + r18481;
        double r18483 = r18482 + r18482;
        double r18484 = pow(r18479, r18483);
        return r18484;
}

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 r18485, r18486, r18487, r18488, r18489, r18490, r18491, r18492, r18493;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r18485);
        mpfr_init(r18486);
        mpfr_init(r18487);
        mpfr_init(r18488);
        mpfr_init(r18489);
        mpfr_init(r18490);
        mpfr_init(r18491);
        mpfr_init(r18492);
        mpfr_init(r18493);
}

double f_im(double d1) {
        mpfr_set_d(r18485, d1, MPFR_RNDN);
        mpfr_mul(r18486, r18485, r18485, MPFR_RNDN);
        mpfr_mul(r18487, r18485, r18486, MPFR_RNDN);
        mpfr_mul(r18488, r18487, r18485, MPFR_RNDN);
        mpfr_mul(r18489, r18488, r18485, MPFR_RNDN);
        mpfr_mul(r18490, r18489, r18486, MPFR_RNDN);
        mpfr_mul(r18491, r18490, r18485, MPFR_RNDN);
        mpfr_mul(r18492, r18485, r18491, MPFR_RNDN);
        mpfr_mul(r18493, r18492, r18485, MPFR_RNDN);
        return mpfr_get_d(r18493, MPFR_RNDN);
}

static mpfr_t r18494, r18495, r18496, r18497, r18498, r18499;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18494);
        mpfr_init_set_str(r18495, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r18496, "3", 10, MPFR_RNDN);
        mpfr_init(r18497);
        mpfr_init(r18498);
        mpfr_init(r18499);
}

double f_fm(double d1) {
        mpfr_set_d(r18494, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r18497, r18495, r18496, MPFR_RNDN);
        mpfr_add(r18498, r18497, r18497, MPFR_RNDN);
        mpfr_pow(r18499, r18494, r18498, MPFR_RNDN);
        return mpfr_get_d(r18499, MPFR_RNDN);
}

static mpfr_t r18500, r18501, r18502, r18503, r18504, r18505;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r18500);
        mpfr_init_set_str(r18501, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r18502, "3", 10, MPFR_RNDN);
        mpfr_init(r18503);
        mpfr_init(r18504);
        mpfr_init(r18505);
}

double f_dm(double d1) {
        mpfr_set_d(r18500, d1, MPFR_RNDN);
        ;
        ;
        mpfr_add(r18503, r18501, r18502, MPFR_RNDN);
        mpfr_add(r18504, r18503, r18503, MPFR_RNDN);
        mpfr_pow(r18505, r18500, r18504, MPFR_RNDN);
        return mpfr_get_d(r18505, MPFR_RNDN);
}

