#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 r29040 = d;
        float r29041 = 10;
        float r29042 = r29040 * r29041;
        float r29043 = 20;
        float r29044 = r29040 * r29043;
        float r29045 = r29042 + r29044;
        return r29045;
}

double f_id(double d) {
        double r29046 = d;
        double r29047 = 10;
        double r29048 = r29046 * r29047;
        double r29049 = 20;
        double r29050 = r29046 * r29049;
        double r29051 = r29048 + r29050;
        return r29051;
}


double f_of(float d) {
        float r29052 = 20;
        float r29053 = 10;
        float r29054 = r29052 + r29053;
        float r29055 = d;
        float r29056 = r29054 * r29055;
        return r29056;
}

double f_od(double d) {
        double r29057 = 20;
        double r29058 = 10;
        double r29059 = r29057 + r29058;
        double r29060 = d;
        double r29061 = r29059 * r29060;
        return r29061;
}

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 r29062, r29063, r29064, r29065, r29066, r29067;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r29062);
        mpfr_init_set_str(r29063, "10", 10, MPFR_RNDN);
        mpfr_init(r29064);
        mpfr_init_set_str(r29065, "20", 10, MPFR_RNDN);
        mpfr_init(r29066);
        mpfr_init(r29067);
}

double f_im(double d) {
        mpfr_set_d(r29062, d, MPFR_RNDN);
        ;
        mpfr_mul(r29064, r29062, r29063, MPFR_RNDN);
        ;
        mpfr_mul(r29066, r29062, r29065, MPFR_RNDN);
        mpfr_add(r29067, r29064, r29066, MPFR_RNDN);
        return mpfr_get_d(r29067, MPFR_RNDN);
}

static mpfr_t r29068, r29069, r29070, r29071, r29072;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r29068, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r29069, "10", 10, MPFR_RNDN);
        mpfr_init(r29070);
        mpfr_init(r29071);
        mpfr_init(r29072);
}

double f_fm(double d) {
        ;
        ;
        mpfr_add(r29070, r29068, r29069, MPFR_RNDN);
        mpfr_set_d(r29071, d, MPFR_RNDN);
        mpfr_mul(r29072, r29070, r29071, MPFR_RNDN);
        return mpfr_get_d(r29072, MPFR_RNDN);
}

static mpfr_t r29073, r29074, r29075, r29076, r29077;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r29073, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r29074, "10", 10, MPFR_RNDN);
        mpfr_init(r29075);
        mpfr_init(r29076);
        mpfr_init(r29077);
}

double f_dm(double d) {
        ;
        ;
        mpfr_add(r29075, r29073, r29074, MPFR_RNDN);
        mpfr_set_d(r29076, d, MPFR_RNDN);
        mpfr_mul(r29077, r29075, r29076, MPFR_RNDN);
        return mpfr_get_d(r29077, MPFR_RNDN);
}

