#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 r29006 = d1;
        float r29007 = 10;
        float r29008 = r29006 * r29007;
        float r29009 = d2;
        float r29010 = r29006 * r29009;
        float r29011 = r29008 + r29010;
        float r29012 = 20;
        float r29013 = r29006 * r29012;
        float r29014 = r29011 + r29013;
        return r29014;
}

double f_id(double d1, double d2) {
        double r29015 = d1;
        double r29016 = 10;
        double r29017 = r29015 * r29016;
        double r29018 = d2;
        double r29019 = r29015 * r29018;
        double r29020 = r29017 + r29019;
        double r29021 = 20;
        double r29022 = r29015 * r29021;
        double r29023 = r29020 + r29022;
        return r29023;
}


double f_of(float d1, float d2) {
        float r29024 = d1;
        float r29025 = d2;
        float r29026 = 10;
        float r29027 = r29025 + r29026;
        float r29028 = 20;
        float r29029 = r29027 + r29028;
        float r29030 = r29024 * r29029;
        return r29030;
}

double f_od(double d1, double d2) {
        double r29031 = d1;
        double r29032 = d2;
        double r29033 = 10;
        double r29034 = r29032 + r29033;
        double r29035 = 20;
        double r29036 = r29034 + r29035;
        double r29037 = r29031 * r29036;
        return r29037;
}

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 r29038, r29039, r29040, r29041, r29042, r29043, r29044, r29045, r29046;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r29038);
        mpfr_init_set_str(r29039, "10", 10, MPFR_RNDN);
        mpfr_init(r29040);
        mpfr_init(r29041);
        mpfr_init(r29042);
        mpfr_init(r29043);
        mpfr_init_set_str(r29044, "20", 10, MPFR_RNDN);
        mpfr_init(r29045);
        mpfr_init(r29046);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r29038, d1, MPFR_RNDN);
        ;
        mpfr_mul(r29040, r29038, r29039, MPFR_RNDN);
        mpfr_set_d(r29041, d2, MPFR_RNDN);
        mpfr_mul(r29042, r29038, r29041, MPFR_RNDN);
        mpfr_add(r29043, r29040, r29042, MPFR_RNDN);
        ;
        mpfr_mul(r29045, r29038, r29044, MPFR_RNDN);
        mpfr_add(r29046, r29043, r29045, MPFR_RNDN);
        return mpfr_get_d(r29046, MPFR_RNDN);
}

static mpfr_t r29047, r29048, r29049, r29050, r29051, r29052, r29053;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r29047);
        mpfr_init(r29048);
        mpfr_init_set_str(r29049, "10", 10, MPFR_RNDN);
        mpfr_init(r29050);
        mpfr_init_set_str(r29051, "20", 10, MPFR_RNDN);
        mpfr_init(r29052);
        mpfr_init(r29053);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r29047, d1, MPFR_RNDN);
        mpfr_set_d(r29048, d2, MPFR_RNDN);
        ;
        mpfr_add(r29050, r29048, r29049, MPFR_RNDN);
        ;
        mpfr_add(r29052, r29050, r29051, MPFR_RNDN);
        mpfr_mul(r29053, r29047, r29052, MPFR_RNDN);
        return mpfr_get_d(r29053, MPFR_RNDN);
}

static mpfr_t r29054, r29055, r29056, r29057, r29058, r29059, r29060;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r29054);
        mpfr_init(r29055);
        mpfr_init_set_str(r29056, "10", 10, MPFR_RNDN);
        mpfr_init(r29057);
        mpfr_init_set_str(r29058, "20", 10, MPFR_RNDN);
        mpfr_init(r29059);
        mpfr_init(r29060);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r29054, d1, MPFR_RNDN);
        mpfr_set_d(r29055, d2, MPFR_RNDN);
        ;
        mpfr_add(r29057, r29055, r29056, MPFR_RNDN);
        ;
        mpfr_add(r29059, r29057, r29058, MPFR_RNDN);
        mpfr_mul(r29060, r29054, r29059, MPFR_RNDN);
        return mpfr_get_d(r29060, MPFR_RNDN);
}

