#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 r29048 = d;
        float r29049 = 10;
        float r29050 = r29048 * r29049;
        float r29051 = 20;
        float r29052 = r29048 * r29051;
        float r29053 = r29050 + r29052;
        return r29053;
}

double f_id(double d) {
        double r29054 = d;
        double r29055 = 10;
        double r29056 = r29054 * r29055;
        double r29057 = 20;
        double r29058 = r29054 * r29057;
        double r29059 = r29056 + r29058;
        return r29059;
}


double f_of(float d) {
        float r29060 = d;
        float r29061 = 20;
        float r29062 = 10;
        float r29063 = r29061 + r29062;
        float r29064 = r29060 * r29063;
        return r29064;
}

double f_od(double d) {
        double r29065 = d;
        double r29066 = 20;
        double r29067 = 10;
        double r29068 = r29066 + r29067;
        double r29069 = r29065 * r29068;
        return r29069;
}

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 r29070, r29071, r29072, r29073, r29074, r29075;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r29070);
        mpfr_init_set_str(r29071, "10", 10, MPFR_RNDN);
        mpfr_init(r29072);
        mpfr_init_set_str(r29073, "20", 10, MPFR_RNDN);
        mpfr_init(r29074);
        mpfr_init(r29075);
}

double f_im(double d) {
        mpfr_set_d(r29070, d, MPFR_RNDN);
        ;
        mpfr_mul(r29072, r29070, r29071, MPFR_RNDN);
        ;
        mpfr_mul(r29074, r29070, r29073, MPFR_RNDN);
        mpfr_add(r29075, r29072, r29074, MPFR_RNDN);
        return mpfr_get_d(r29075, MPFR_RNDN);
}

static mpfr_t r29076, r29077, r29078, r29079, r29080;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r29076);
        mpfr_init_set_str(r29077, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r29078, "10", 10, MPFR_RNDN);
        mpfr_init(r29079);
        mpfr_init(r29080);
}

double f_fm(double d) {
        mpfr_set_d(r29076, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r29079, r29077, r29078, MPFR_RNDN);
        mpfr_mul(r29080, r29076, r29079, MPFR_RNDN);
        return mpfr_get_d(r29080, MPFR_RNDN);
}

static mpfr_t r29081, r29082, r29083, r29084, r29085;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r29081);
        mpfr_init_set_str(r29082, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r29083, "10", 10, MPFR_RNDN);
        mpfr_init(r29084);
        mpfr_init(r29085);
}

double f_dm(double d) {
        mpfr_set_d(r29081, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r29084, r29082, r29083, MPFR_RNDN);
        mpfr_mul(r29085, r29081, r29084, MPFR_RNDN);
        return mpfr_get_d(r29085, MPFR_RNDN);
}

