#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 r12569 = d1;
        float r12570 = 10.0f;
        float r12571 = r12569 * r12570;
        float r12572 = d2;
        float r12573 = r12569 * r12572;
        float r12574 = r12571 + r12573;
        float r12575 = 20.0f;
        float r12576 = r12569 * r12575;
        float r12577 = r12574 + r12576;
        return r12577;
}

double f_id(double d1, double d2) {
        double r12578 = d1;
        double r12579 = 10.0;
        double r12580 = r12578 * r12579;
        double r12581 = d2;
        double r12582 = r12578 * r12581;
        double r12583 = r12580 + r12582;
        double r12584 = 20.0;
        double r12585 = r12578 * r12584;
        double r12586 = r12583 + r12585;
        return r12586;
}


double f_of(float d1, float d2) {
        float r12587 = d2;
        float r12588 = 20.0f;
        float r12589 = 10.0f;
        float r12590 = r12588 + r12589;
        float r12591 = r12587 + r12590;
        float r12592 = d1;
        float r12593 = r12591 * r12592;
        return r12593;
}

double f_od(double d1, double d2) {
        double r12594 = d2;
        double r12595 = 20.0;
        double r12596 = 10.0;
        double r12597 = r12595 + r12596;
        double r12598 = r12594 + r12597;
        double r12599 = d1;
        double r12600 = r12598 * r12599;
        return r12600;
}

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 r12601, r12602, r12603, r12604, r12605, r12606, r12607, r12608, r12609;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12601);
        mpfr_init_set_str(r12602, "10", 10, MPFR_RNDN);
        mpfr_init(r12603);
        mpfr_init(r12604);
        mpfr_init(r12605);
        mpfr_init(r12606);
        mpfr_init_set_str(r12607, "20", 10, MPFR_RNDN);
        mpfr_init(r12608);
        mpfr_init(r12609);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r12601, d1, MPFR_RNDN);
        ;
        mpfr_mul(r12603, r12601, r12602, MPFR_RNDN);
        mpfr_set_d(r12604, d2, MPFR_RNDN);
        mpfr_mul(r12605, r12601, r12604, MPFR_RNDN);
        mpfr_add(r12606, r12603, r12605, MPFR_RNDN);
        ;
        mpfr_mul(r12608, r12601, r12607, MPFR_RNDN);
        mpfr_add(r12609, r12606, r12608, MPFR_RNDN);
        return mpfr_get_d(r12609, MPFR_RNDN);
}

static mpfr_t r12610, r12611, r12612, r12613, r12614, r12615, r12616;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12610);
        mpfr_init_set_str(r12611, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r12612, "10", 10, MPFR_RNDN);
        mpfr_init(r12613);
        mpfr_init(r12614);
        mpfr_init(r12615);
        mpfr_init(r12616);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r12610, d2, MPFR_RNDN);
        ;
        ;
        mpfr_add(r12613, r12611, r12612, MPFR_RNDN);
        mpfr_add(r12614, r12610, r12613, MPFR_RNDN);
        mpfr_set_d(r12615, d1, MPFR_RNDN);
        mpfr_mul(r12616, r12614, r12615, MPFR_RNDN);
        return mpfr_get_d(r12616, MPFR_RNDN);
}

static mpfr_t r12617, r12618, r12619, r12620, r12621, r12622, r12623;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r12617);
        mpfr_init_set_str(r12618, "20", 10, MPFR_RNDN);
        mpfr_init_set_str(r12619, "10", 10, MPFR_RNDN);
        mpfr_init(r12620);
        mpfr_init(r12621);
        mpfr_init(r12622);
        mpfr_init(r12623);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r12617, d2, MPFR_RNDN);
        ;
        ;
        mpfr_add(r12620, r12618, r12619, MPFR_RNDN);
        mpfr_add(r12621, r12617, r12620, MPFR_RNDN);
        mpfr_set_d(r12622, d1, MPFR_RNDN);
        mpfr_mul(r12623, r12621, r12622, MPFR_RNDN);
        return mpfr_get_d(r12623, MPFR_RNDN);
}

