#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 r12989 = d1;
        float r12990 = 10;
        float r12991 = r12989 * r12990;
        float r12992 = d2;
        float r12993 = r12989 * r12992;
        float r12994 = r12991 + r12993;
        float r12995 = 20;
        float r12996 = r12989 * r12995;
        float r12997 = r12994 + r12996;
        return r12997;
}

double f_id(double d1, double d2) {
        double r12998 = d1;
        double r12999 = 10;
        double r13000 = r12998 * r12999;
        double r13001 = d2;
        double r13002 = r12998 * r13001;
        double r13003 = r13000 + r13002;
        double r13004 = 20;
        double r13005 = r12998 * r13004;
        double r13006 = r13003 + r13005;
        return r13006;
}


double f_of(float d1, float d2) {
        float r13007 = d1;
        float r13008 = d2;
        float r13009 = 10;
        float r13010 = 20;
        float r13011 = r13009 + r13010;
        float r13012 = r13008 + r13011;
        float r13013 = r13007 * r13012;
        return r13013;
}

double f_od(double d1, double d2) {
        double r13014 = d1;
        double r13015 = d2;
        double r13016 = 10;
        double r13017 = 20;
        double r13018 = r13016 + r13017;
        double r13019 = r13015 + r13018;
        double r13020 = r13014 * r13019;
        return r13020;
}

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 r13021, r13022, r13023, r13024, r13025, r13026, r13027, r13028, r13029;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r13021);
        mpfr_init_set_str(r13022, "10", 10, MPFR_RNDN);
        mpfr_init(r13023);
        mpfr_init(r13024);
        mpfr_init(r13025);
        mpfr_init(r13026);
        mpfr_init_set_str(r13027, "20", 10, MPFR_RNDN);
        mpfr_init(r13028);
        mpfr_init(r13029);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r13021, d1, MPFR_RNDN);
        ;
        mpfr_mul(r13023, r13021, r13022, MPFR_RNDN);
        mpfr_set_d(r13024, d2, MPFR_RNDN);
        mpfr_mul(r13025, r13021, r13024, MPFR_RNDN);
        mpfr_add(r13026, r13023, r13025, MPFR_RNDN);
        ;
        mpfr_mul(r13028, r13021, r13027, MPFR_RNDN);
        mpfr_add(r13029, r13026, r13028, MPFR_RNDN);
        return mpfr_get_d(r13029, MPFR_RNDN);
}

static mpfr_t r13030, r13031, r13032, r13033, r13034, r13035, r13036;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r13030);
        mpfr_init(r13031);
        mpfr_init_set_str(r13032, "10", 10, MPFR_RNDN);
        mpfr_init_set_str(r13033, "20", 10, MPFR_RNDN);
        mpfr_init(r13034);
        mpfr_init(r13035);
        mpfr_init(r13036);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r13030, d1, MPFR_RNDN);
        mpfr_set_d(r13031, d2, MPFR_RNDN);
        ;
        ;
        mpfr_add(r13034, r13032, r13033, MPFR_RNDN);
        mpfr_add(r13035, r13031, r13034, MPFR_RNDN);
        mpfr_mul(r13036, r13030, r13035, MPFR_RNDN);
        return mpfr_get_d(r13036, MPFR_RNDN);
}

static mpfr_t r13037, r13038, r13039, r13040, r13041, r13042, r13043;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r13037);
        mpfr_init(r13038);
        mpfr_init_set_str(r13039, "10", 10, MPFR_RNDN);
        mpfr_init_set_str(r13040, "20", 10, MPFR_RNDN);
        mpfr_init(r13041);
        mpfr_init(r13042);
        mpfr_init(r13043);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r13037, d1, MPFR_RNDN);
        mpfr_set_d(r13038, d2, MPFR_RNDN);
        ;
        ;
        mpfr_add(r13041, r13039, r13040, MPFR_RNDN);
        mpfr_add(r13042, r13038, r13041, MPFR_RNDN);
        mpfr_mul(r13043, r13037, r13042, MPFR_RNDN);
        return mpfr_get_d(r13043, MPFR_RNDN);
}

