#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 r28424 = d;
        float r28425 = 10;
        float r28426 = r28424 * r28425;
        float r28427 = 20;
        float r28428 = r28424 * r28427;
        float r28429 = r28426 + r28428;
        return r28429;
}

double f_id(double d) {
        double r28430 = d;
        double r28431 = 10;
        double r28432 = r28430 * r28431;
        double r28433 = 20;
        double r28434 = r28430 * r28433;
        double r28435 = r28432 + r28434;
        return r28435;
}


double f_of(float d) {
        float r28436 = d;
        float r28437 = 20;
        float r28438 = 10;
        float r28439 = r28437 + r28438;
        float r28440 = r28436 * r28439;
        return r28440;
}

double f_od(double d) {
        double r28441 = d;
        double r28442 = 20;
        double r28443 = 10;
        double r28444 = r28442 + r28443;
        double r28445 = r28441 * r28444;
        return r28445;
}

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 r28446, r28447, r28448, r28449, r28450, r28451;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r28446);
        mpfr_init_set_str(r28447, "10", 10, MPFR_RNDN);
        mpfr_init(r28448);
        mpfr_init_set_str(r28449, "20", 10, MPFR_RNDN);
        mpfr_init(r28450);
        mpfr_init(r28451);
}

double f_im(double d) {
        mpfr_set_d(r28446, d, MPFR_RNDN);
        ;
        mpfr_mul(r28448, r28446, r28447, MPFR_RNDN);
        ;
        mpfr_mul(r28450, r28446, r28449, MPFR_RNDN);
        mpfr_add(r28451, r28448, r28450, MPFR_RNDN);
        return mpfr_get_d(r28451, MPFR_RNDN);
}

static mpfr_t r28452, r28453, r28454, r28455, r28456;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28452);
        mpfr_init_set_str(r28453, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r28454, "10", 10, MPFR_RNDN);
        mpfr_init(r28455);
        mpfr_init(r28456);
}

double f_fm(double d) {
        mpfr_set_d(r28452, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28455, r28453, r28454, MPFR_RNDN);
        mpfr_mul(r28456, r28452, r28455, MPFR_RNDN);
        return mpfr_get_d(r28456, MPFR_RNDN);
}

static mpfr_t r28457, r28458, r28459, r28460, r28461;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r28457);
        mpfr_init_set_str(r28458, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r28459, "10", 10, MPFR_RNDN);
        mpfr_init(r28460);
        mpfr_init(r28461);
}

double f_dm(double d) {
        mpfr_set_d(r28457, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r28460, r28458, r28459, MPFR_RNDN);
        mpfr_mul(r28461, r28457, r28460, MPFR_RNDN);
        return mpfr_get_d(r28461, MPFR_RNDN);
}

