#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 r51091 = d1;
        float r51092 = 10;
        float r51093 = r51091 * r51092;
        float r51094 = d2;
        float r51095 = r51091 * r51094;
        float r51096 = r51093 + r51095;
        float r51097 = 20;
        float r51098 = r51091 * r51097;
        float r51099 = r51096 + r51098;
        return r51099;
}

double f_id(double d1, double d2) {
        double r51100 = d1;
        double r51101 = 10;
        double r51102 = r51100 * r51101;
        double r51103 = d2;
        double r51104 = r51100 * r51103;
        double r51105 = r51102 + r51104;
        double r51106 = 20;
        double r51107 = r51100 * r51106;
        double r51108 = r51105 + r51107;
        return r51108;
}


double f_of(float d1, float d2) {
        float r51109 = d2;
        float r51110 = 10;
        float r51111 = r51109 + r51110;
        float r51112 = 20;
        float r51113 = r51111 + r51112;
        float r51114 = d1;
        float r51115 = r51113 * r51114;
        return r51115;
}

double f_od(double d1, double d2) {
        double r51116 = d2;
        double r51117 = 10;
        double r51118 = r51116 + r51117;
        double r51119 = 20;
        double r51120 = r51118 + r51119;
        double r51121 = d1;
        double r51122 = r51120 * r51121;
        return r51122;
}

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 r51123, r51124, r51125, r51126, r51127, r51128, r51129, r51130, r51131;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51123);
        mpfr_init_set_str(r51124, "10", 10, MPFR_RNDN);
        mpfr_init(r51125);
        mpfr_init(r51126);
        mpfr_init(r51127);
        mpfr_init(r51128);
        mpfr_init_set_str(r51129, "20", 10, MPFR_RNDN);
        mpfr_init(r51130);
        mpfr_init(r51131);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r51123, d1, MPFR_RNDN);
        ;
        mpfr_mul(r51125, r51123, r51124, MPFR_RNDN);
        mpfr_set_d(r51126, d2, MPFR_RNDN);
        mpfr_mul(r51127, r51123, r51126, MPFR_RNDN);
        mpfr_add(r51128, r51125, r51127, MPFR_RNDN);
        ;
        mpfr_mul(r51130, r51123, r51129, MPFR_RNDN);
        mpfr_add(r51131, r51128, r51130, MPFR_RNDN);
        return mpfr_get_d(r51131, MPFR_RNDN);
}

static mpfr_t r51132, r51133, r51134, r51135, r51136, r51137, r51138;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51132);
        mpfr_init_set_str(r51133, "10", 10, MPFR_RNDN);
        mpfr_init(r51134);
        mpfr_init_set_str(r51135, "20", 10, MPFR_RNDN);
        mpfr_init(r51136);
        mpfr_init(r51137);
        mpfr_init(r51138);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r51132, d2, MPFR_RNDN);
        ;
        mpfr_add(r51134, r51132, r51133, MPFR_RNDN);
        ;
        mpfr_add(r51136, r51134, r51135, MPFR_RNDN);
        mpfr_set_d(r51137, d1, MPFR_RNDN);
        mpfr_mul(r51138, r51136, r51137, MPFR_RNDN);
        return mpfr_get_d(r51138, MPFR_RNDN);
}

static mpfr_t r51139, r51140, r51141, r51142, r51143, r51144, r51145;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51139);
        mpfr_init_set_str(r51140, "10", 10, MPFR_RNDN);
        mpfr_init(r51141);
        mpfr_init_set_str(r51142, "20", 10, MPFR_RNDN);
        mpfr_init(r51143);
        mpfr_init(r51144);
        mpfr_init(r51145);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r51139, d2, MPFR_RNDN);
        ;
        mpfr_add(r51141, r51139, r51140, MPFR_RNDN);
        ;
        mpfr_add(r51143, r51141, r51142, MPFR_RNDN);
        mpfr_set_d(r51144, d1, MPFR_RNDN);
        mpfr_mul(r51145, r51143, r51144, MPFR_RNDN);
        return mpfr_get_d(r51145, MPFR_RNDN);
}

