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

char *name = "FastMath test1";

double f_if(float d) {
        float r51146 = d;
        float r51147 = 10;
        float r51148 = r51146 * r51147;
        float r51149 = 20;
        float r51150 = r51146 * r51149;
        float r51151 = r51148 + r51150;
        return r51151;
}

double f_id(double d) {
        double r51152 = d;
        double r51153 = 10;
        double r51154 = r51152 * r51153;
        double r51155 = 20;
        double r51156 = r51152 * r51155;
        double r51157 = r51154 + r51156;
        return r51157;
}


double f_of(float d) {
        float r51158 = d;
        float r51159 = 20;
        float r51160 = 10;
        float r51161 = r51159 + r51160;
        float r51162 = r51158 * r51161;
        return r51162;
}

double f_od(double d) {
        double r51163 = d;
        double r51164 = 20;
        double r51165 = 10;
        double r51166 = r51164 + r51165;
        double r51167 = r51163 * r51166;
        return r51167;
}

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 r51168, r51169, r51170, r51171, r51172, r51173;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51168);
        mpfr_init_set_str(r51169, "10", 10, MPFR_RNDN);
        mpfr_init(r51170);
        mpfr_init_set_str(r51171, "20", 10, MPFR_RNDN);
        mpfr_init(r51172);
        mpfr_init(r51173);
}

double f_im(double d) {
        mpfr_set_d(r51168, d, MPFR_RNDN);
        ;
        mpfr_mul(r51170, r51168, r51169, MPFR_RNDN);
        ;
        mpfr_mul(r51172, r51168, r51171, MPFR_RNDN);
        mpfr_add(r51173, r51170, r51172, MPFR_RNDN);
        return mpfr_get_d(r51173, MPFR_RNDN);
}

static mpfr_t r51174, r51175, r51176, r51177, r51178;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51174);
        mpfr_init_set_str(r51175, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r51176, "10", 10, MPFR_RNDN);
        mpfr_init(r51177);
        mpfr_init(r51178);
}

double f_fm(double d) {
        mpfr_set_d(r51174, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r51177, r51175, r51176, MPFR_RNDN);
        mpfr_mul(r51178, r51174, r51177, MPFR_RNDN);
        return mpfr_get_d(r51178, MPFR_RNDN);
}

static mpfr_t r51179, r51180, r51181, r51182, r51183;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51179);
        mpfr_init_set_str(r51180, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r51181, "10", 10, MPFR_RNDN);
        mpfr_init(r51182);
        mpfr_init(r51183);
}

double f_dm(double d) {
        mpfr_set_d(r51179, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r51182, r51180, r51181, MPFR_RNDN);
        mpfr_mul(r51183, r51179, r51182, MPFR_RNDN);
        return mpfr_get_d(r51183, MPFR_RNDN);
}

