#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Rosa's Benchmark";

double f_if(float x) {
        float r8533 = 0.954929658551372;
        float r8534 = x;
        float r8535 = r8533 * r8534;
        float r8536 = 0.12900613773279798;
        float r8537 = r8534 * r8534;
        float r8538 = r8537 * r8534;
        float r8539 = r8536 * r8538;
        float r8540 = r8535 - r8539;
        return r8540;
}

double f_id(double x) {
        double r8541 = 0.954929658551372;
        double r8542 = x;
        double r8543 = r8541 * r8542;
        double r8544 = 0.12900613773279798;
        double r8545 = r8542 * r8542;
        double r8546 = r8545 * r8542;
        double r8547 = r8544 * r8546;
        double r8548 = r8543 - r8547;
        return r8548;
}


double f_of(float x) {
        float r8549 = 0.954929658551372;
        float r8550 = x;
        float r8551 = r8549 * r8550;
        float r8552 = 0.12900613773279798;
        float r8553 = r8550 * r8550;
        float r8554 = r8552 * r8553;
        float r8555 = r8554 * r8550;
        float r8556 = r8551 - r8555;
        return r8556;
}

double f_od(double x) {
        double r8557 = 0.954929658551372;
        double r8558 = x;
        double r8559 = r8557 * r8558;
        double r8560 = 0.12900613773279798;
        double r8561 = r8558 * r8558;
        double r8562 = r8560 * r8561;
        double r8563 = r8562 * r8558;
        double r8564 = r8559 - r8563;
        return r8564;
}

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 r8565, r8566, r8567, r8568, r8569, r8570, r8571, r8572;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8565, "0.954929658551372", 10, MPFR_RNDN);
        mpfr_init(r8566);
        mpfr_init(r8567);
        mpfr_init_set_str(r8568, "0.12900613773279798", 10, MPFR_RNDN);
        mpfr_init(r8569);
        mpfr_init(r8570);
        mpfr_init(r8571);
        mpfr_init(r8572);
}

double f_im(double x) {
        ;
        mpfr_set_d(r8566, x, MPFR_RNDN);
        mpfr_mul(r8567, r8565, r8566, MPFR_RNDN);
        ;
        mpfr_mul(r8569, r8566, r8566, MPFR_RNDN);
        mpfr_mul(r8570, r8569, r8566, MPFR_RNDN);
        mpfr_mul(r8571, r8568, r8570, MPFR_RNDN);
        mpfr_sub(r8572, r8567, r8571, MPFR_RNDN);
        return mpfr_get_d(r8572, MPFR_RNDN);
}

static mpfr_t r8573, r8574, r8575, r8576, r8577, r8578, r8579, r8580;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8573, "0.954929658551372", 10, MPFR_RNDN);
        mpfr_init(r8574);
        mpfr_init(r8575);
        mpfr_init_set_str(r8576, "0.12900613773279798", 10, MPFR_RNDN);
        mpfr_init(r8577);
        mpfr_init(r8578);
        mpfr_init(r8579);
        mpfr_init(r8580);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r8574, x, MPFR_RNDN);
        mpfr_mul(r8575, r8573, r8574, MPFR_RNDN);
        ;
        mpfr_mul(r8577, r8574, r8574, MPFR_RNDN);
        mpfr_mul(r8578, r8576, r8577, MPFR_RNDN);
        mpfr_mul(r8579, r8578, r8574, MPFR_RNDN);
        mpfr_sub(r8580, r8575, r8579, MPFR_RNDN);
        return mpfr_get_d(r8580, MPFR_RNDN);
}

static mpfr_t r8581, r8582, r8583, r8584, r8585, r8586, r8587, r8588;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8581, "0.954929658551372", 10, MPFR_RNDN);
        mpfr_init(r8582);
        mpfr_init(r8583);
        mpfr_init_set_str(r8584, "0.12900613773279798", 10, MPFR_RNDN);
        mpfr_init(r8585);
        mpfr_init(r8586);
        mpfr_init(r8587);
        mpfr_init(r8588);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r8582, x, MPFR_RNDN);
        mpfr_mul(r8583, r8581, r8582, MPFR_RNDN);
        ;
        mpfr_mul(r8585, r8582, r8582, MPFR_RNDN);
        mpfr_mul(r8586, r8584, r8585, MPFR_RNDN);
        mpfr_mul(r8587, r8586, r8582, MPFR_RNDN);
        mpfr_sub(r8588, r8583, r8587, MPFR_RNDN);
        return mpfr_get_d(r8588, MPFR_RNDN);
}

