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

char *name = "FastMath test2";

double f_if(float d1, float d2) {
        float r12539 = d1;
        float r12540 = 10;
        float r12541 = r12539 * r12540;
        float r12542 = d2;
        float r12543 = r12539 * r12542;
        float r12544 = r12541 + r12543;
        float r12545 = 20;
        float r12546 = r12539 * r12545;
        float r12547 = r12544 + r12546;
        return r12547;
}

double f_id(double d1, double d2) {
        double r12548 = d1;
        double r12549 = 10;
        double r12550 = r12548 * r12549;
        double r12551 = d2;
        double r12552 = r12548 * r12551;
        double r12553 = r12550 + r12552;
        double r12554 = 20;
        double r12555 = r12548 * r12554;
        double r12556 = r12553 + r12555;
        return r12556;
}


double f_of(float d1, float d2) {
        float r12557 = d1;
        float r12558 = 30;
        float r12559 = d2;
        float r12560 = r12558 + r12559;
        float r12561 = r12557 * r12560;
        return r12561;
}

double f_od(double d1, double d2) {
        double r12562 = d1;
        double r12563 = 30;
        double r12564 = d2;
        double r12565 = r12563 + r12564;
        double r12566 = r12562 * r12565;
        return r12566;
}

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 r12567, r12568, r12569, r12570, r12571, r12572, r12573, r12574, r12575;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12567);
        mpfr_init_set_str(r12568, "10", 10, MPFR_RNDN);
        mpfr_init(r12569);
        mpfr_init(r12570);
        mpfr_init(r12571);
        mpfr_init(r12572);
        mpfr_init_set_str(r12573, "20", 10, MPFR_RNDN);
        mpfr_init(r12574);
        mpfr_init(r12575);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r12567, d1, MPFR_RNDN);
        ;
        mpfr_mul(r12569, r12567, r12568, MPFR_RNDN);
        mpfr_set_d(r12570, d2, MPFR_RNDN);
        mpfr_mul(r12571, r12567, r12570, MPFR_RNDN);
        mpfr_add(r12572, r12569, r12571, MPFR_RNDN);
        ;
        mpfr_mul(r12574, r12567, r12573, MPFR_RNDN);
        mpfr_add(r12575, r12572, r12574, MPFR_RNDN);
        return mpfr_get_d(r12575, MPFR_RNDN);
}

static mpfr_t r12576, r12577, r12578, r12579, r12580;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12576);
        mpfr_init_set_str(r12577, "30", 10, MPFR_RNDN);
        mpfr_init(r12578);
        mpfr_init(r12579);
        mpfr_init(r12580);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r12576, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r12578, d2, MPFR_RNDN);
        mpfr_add(r12579, r12577, r12578, MPFR_RNDN);
        mpfr_mul(r12580, r12576, r12579, MPFR_RNDN);
        return mpfr_get_d(r12580, MPFR_RNDN);
}

static mpfr_t r12581, r12582, r12583, r12584, r12585;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12581);
        mpfr_init_set_str(r12582, "30", 10, MPFR_RNDN);
        mpfr_init(r12583);
        mpfr_init(r12584);
        mpfr_init(r12585);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r12581, d1, MPFR_RNDN);
        ;
        mpfr_set_d(r12583, d2, MPFR_RNDN);
        mpfr_add(r12584, r12582, r12583, MPFR_RNDN);
        mpfr_mul(r12585, r12581, r12584, MPFR_RNDN);
        return mpfr_get_d(r12585, MPFR_RNDN);
}

