#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 r20064 = d;
        float r20065 = 10.0f;
        float r20066 = r20064 * r20065;
        float r20067 = 20.0f;
        float r20068 = r20064 * r20067;
        float r20069 = r20066 + r20068;
        return r20069;
}

double f_id(double d) {
        double r20070 = d;
        double r20071 = 10.0;
        double r20072 = r20070 * r20071;
        double r20073 = 20.0;
        double r20074 = r20070 * r20073;
        double r20075 = r20072 + r20074;
        return r20075;
}


double f_of(float d) {
        float r20076 = d;
        float r20077 = 10.0f;
        float r20078 = 20.0f;
        float r20079 = r20077 + r20078;
        float r20080 = r20076 * r20079;
        return r20080;
}

double f_od(double d) {
        double r20081 = d;
        double r20082 = 10.0;
        double r20083 = 20.0;
        double r20084 = r20082 + r20083;
        double r20085 = r20081 * r20084;
        return r20085;
}

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 r20086, r20087, r20088, r20089, r20090, r20091;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r20086);
        mpfr_init_set_str(r20087, "10", 10, MPFR_RNDN);
        mpfr_init(r20088);
        mpfr_init_set_str(r20089, "20", 10, MPFR_RNDN);
        mpfr_init(r20090);
        mpfr_init(r20091);
}

double f_im(double d) {
        mpfr_set_d(r20086, d, MPFR_RNDN);
        ;
        mpfr_mul(r20088, r20086, r20087, MPFR_RNDN);
        ;
        mpfr_mul(r20090, r20086, r20089, MPFR_RNDN);
        mpfr_add(r20091, r20088, r20090, MPFR_RNDN);
        return mpfr_get_d(r20091, MPFR_RNDN);
}

static mpfr_t r20092, r20093, r20094, r20095, r20096;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20092);
        mpfr_init_set_str(r20093, "10", 10, MPFR_RNDN);
        mpfr_init_set_str(r20094, "20", 10, MPFR_RNDN);
        mpfr_init(r20095);
        mpfr_init(r20096);
}

double f_fm(double d) {
        mpfr_set_d(r20092, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r20095, r20093, r20094, MPFR_RNDN);
        mpfr_mul(r20096, r20092, r20095, MPFR_RNDN);
        return mpfr_get_d(r20096, MPFR_RNDN);
}

static mpfr_t r20097, r20098, r20099, r20100, r20101;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20097);
        mpfr_init_set_str(r20098, "10", 10, MPFR_RNDN);
        mpfr_init_set_str(r20099, "20", 10, MPFR_RNDN);
        mpfr_init(r20100);
        mpfr_init(r20101);
}

double f_dm(double d) {
        mpfr_set_d(r20097, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r20100, r20098, r20099, MPFR_RNDN);
        mpfr_mul(r20101, r20097, r20100, MPFR_RNDN);
        return mpfr_get_d(r20101, MPFR_RNDN);
}

