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

char *name = "Expression 3, p15";

double f_if(float x) {
        float r25867 = x;
        float r25868 = r25867 * r25867;
        float r25869 = r25867 * r25868;
        float r25870 = r25869 + r25868;
        return r25870;
}

double f_id(double x) {
        double r25871 = x;
        double r25872 = r25871 * r25871;
        double r25873 = r25871 * r25872;
        double r25874 = r25873 + r25872;
        return r25874;
}


double f_of(float x) {
        float r25875 = x;
        float r25876 = r25875 * r25875;
        float r25877 = r25875 * r25876;
        float r25878 = r25877 + r25876;
        return r25878;
}

double f_od(double x) {
        double r25879 = x;
        double r25880 = r25879 * r25879;
        double r25881 = r25879 * r25880;
        double r25882 = r25881 + r25880;
        return r25882;
}

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 r25883, r25884, r25885, r25886;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r25883);
        mpfr_init(r25884);
        mpfr_init(r25885);
        mpfr_init(r25886);
}

double f_im(double x) {
        mpfr_set_d(r25883, x, MPFR_RNDN);
        mpfr_mul(r25884, r25883, r25883, MPFR_RNDN);
        mpfr_mul(r25885, r25883, r25884, MPFR_RNDN);
        mpfr_add(r25886, r25885, r25884, MPFR_RNDN);
        return mpfr_get_d(r25886, MPFR_RNDN);
}

static mpfr_t r25887, r25888, r25889, r25890;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25887);
        mpfr_init(r25888);
        mpfr_init(r25889);
        mpfr_init(r25890);
}

double f_fm(double x) {
        mpfr_set_d(r25887, x, MPFR_RNDN);
        mpfr_mul(r25888, r25887, r25887, MPFR_RNDN);
        mpfr_mul(r25889, r25887, r25888, MPFR_RNDN);
        mpfr_add(r25890, r25889, r25888, MPFR_RNDN);
        return mpfr_get_d(r25890, MPFR_RNDN);
}

static mpfr_t r25891, r25892, r25893, r25894;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r25891);
        mpfr_init(r25892);
        mpfr_init(r25893);
        mpfr_init(r25894);
}

double f_dm(double x) {
        mpfr_set_d(r25891, x, MPFR_RNDN);
        mpfr_mul(r25892, r25891, r25891, MPFR_RNDN);
        mpfr_mul(r25893, r25891, r25892, MPFR_RNDN);
        mpfr_add(r25894, r25893, r25892, MPFR_RNDN);
        return mpfr_get_d(r25894, MPFR_RNDN);
}

