#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 r28591 = d1;
        float r28592 = 10;
        float r28593 = r28591 * r28592;
        float r28594 = d2;
        float r28595 = r28591 * r28594;
        float r28596 = r28593 + r28595;
        float r28597 = 20;
        float r28598 = r28591 * r28597;
        float r28599 = r28596 + r28598;
        return r28599;
}

double f_id(double d1, double d2) {
        double r28600 = d1;
        double r28601 = 10;
        double r28602 = r28600 * r28601;
        double r28603 = d2;
        double r28604 = r28600 * r28603;
        double r28605 = r28602 + r28604;
        double r28606 = 20;
        double r28607 = r28600 * r28606;
        double r28608 = r28605 + r28607;
        return r28608;
}


double f_of(float d1, float d2) {
        float r28609 = 30;
        float r28610 = d2;
        float r28611 = r28609 + r28610;
        float r28612 = d1;
        float r28613 = r28611 * r28612;
        return r28613;
}

double f_od(double d1, double d2) {
        double r28614 = 30;
        double r28615 = d2;
        double r28616 = r28614 + r28615;
        double r28617 = d1;
        double r28618 = r28616 * r28617;
        return r28618;
}

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 r28619, r28620, r28621, r28622, r28623, r28624, r28625, r28626, r28627;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r28619);
        mpfr_init_set_str(r28620, "10", 10, MPFR_RNDN);
        mpfr_init(r28621);
        mpfr_init(r28622);
        mpfr_init(r28623);
        mpfr_init(r28624);
        mpfr_init_set_str(r28625, "20", 10, MPFR_RNDN);
        mpfr_init(r28626);
        mpfr_init(r28627);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r28619, d1, MPFR_RNDN);
        ;
        mpfr_mul(r28621, r28619, r28620, MPFR_RNDN);
        mpfr_set_d(r28622, d2, MPFR_RNDN);
        mpfr_mul(r28623, r28619, r28622, MPFR_RNDN);
        mpfr_add(r28624, r28621, r28623, MPFR_RNDN);
        ;
        mpfr_mul(r28626, r28619, r28625, MPFR_RNDN);
        mpfr_add(r28627, r28624, r28626, MPFR_RNDN);
        return mpfr_get_d(r28627, MPFR_RNDN);
}

static mpfr_t r28628, r28629, r28630, r28631, r28632;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28628, "30", 10, MPFR_RNDN);
        mpfr_init(r28629);
        mpfr_init(r28630);
        mpfr_init(r28631);
        mpfr_init(r28632);
}

double f_fm(double d1, double d2) {
        ;
        mpfr_set_d(r28629, d2, MPFR_RNDN);
        mpfr_add(r28630, r28628, r28629, MPFR_RNDN);
        mpfr_set_d(r28631, d1, MPFR_RNDN);
        mpfr_mul(r28632, r28630, r28631, MPFR_RNDN);
        return mpfr_get_d(r28632, MPFR_RNDN);
}

static mpfr_t r28633, r28634, r28635, r28636, r28637;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r28633, "30", 10, MPFR_RNDN);
        mpfr_init(r28634);
        mpfr_init(r28635);
        mpfr_init(r28636);
        mpfr_init(r28637);
}

double f_dm(double d1, double d2) {
        ;
        mpfr_set_d(r28634, d2, MPFR_RNDN);
        mpfr_add(r28635, r28633, r28634, MPFR_RNDN);
        mpfr_set_d(r28636, d1, MPFR_RNDN);
        mpfr_mul(r28637, r28635, r28636, MPFR_RNDN);
        return mpfr_get_d(r28637, MPFR_RNDN);
}

