#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 r26797 = d1;
        float r26798 = 10;
        float r26799 = r26797 * r26798;
        float r26800 = d2;
        float r26801 = r26797 * r26800;
        float r26802 = r26799 + r26801;
        float r26803 = 20;
        float r26804 = r26797 * r26803;
        float r26805 = r26802 + r26804;
        return r26805;
}

double f_id(double d1, double d2) {
        double r26806 = d1;
        double r26807 = 10;
        double r26808 = r26806 * r26807;
        double r26809 = d2;
        double r26810 = r26806 * r26809;
        double r26811 = r26808 + r26810;
        double r26812 = 20;
        double r26813 = r26806 * r26812;
        double r26814 = r26811 + r26813;
        return r26814;
}


double f_of(float d1, float d2) {
        float r26815 = d1;
        float r26816 = d2;
        float r26817 = 10;
        float r26818 = r26816 + r26817;
        float r26819 = 20;
        float r26820 = r26818 + r26819;
        float r26821 = r26815 * r26820;
        return r26821;
}

double f_od(double d1, double d2) {
        double r26822 = d1;
        double r26823 = d2;
        double r26824 = 10;
        double r26825 = r26823 + r26824;
        double r26826 = 20;
        double r26827 = r26825 + r26826;
        double r26828 = r26822 * r26827;
        return r26828;
}

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 r26829, r26830, r26831, r26832, r26833, r26834, r26835, r26836, r26837;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r26829);
        mpfr_init_set_str(r26830, "10", 10, MPFR_RNDN);
        mpfr_init(r26831);
        mpfr_init(r26832);
        mpfr_init(r26833);
        mpfr_init(r26834);
        mpfr_init_set_str(r26835, "20", 10, MPFR_RNDN);
        mpfr_init(r26836);
        mpfr_init(r26837);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r26829, d1, MPFR_RNDN);
        ;
        mpfr_mul(r26831, r26829, r26830, MPFR_RNDN);
        mpfr_set_d(r26832, d2, MPFR_RNDN);
        mpfr_mul(r26833, r26829, r26832, MPFR_RNDN);
        mpfr_add(r26834, r26831, r26833, MPFR_RNDN);
        ;
        mpfr_mul(r26836, r26829, r26835, MPFR_RNDN);
        mpfr_add(r26837, r26834, r26836, MPFR_RNDN);
        return mpfr_get_d(r26837, MPFR_RNDN);
}

static mpfr_t r26838, r26839, r26840, r26841, r26842, r26843, r26844;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r26838);
        mpfr_init(r26839);
        mpfr_init_set_str(r26840, "10", 10, MPFR_RNDN);
        mpfr_init(r26841);
        mpfr_init_set_str(r26842, "20", 10, MPFR_RNDN);
        mpfr_init(r26843);
        mpfr_init(r26844);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r26838, d1, MPFR_RNDN);
        mpfr_set_d(r26839, d2, MPFR_RNDN);
        ;
        mpfr_add(r26841, r26839, r26840, MPFR_RNDN);
        ;
        mpfr_add(r26843, r26841, r26842, MPFR_RNDN);
        mpfr_mul(r26844, r26838, r26843, MPFR_RNDN);
        return mpfr_get_d(r26844, MPFR_RNDN);
}

static mpfr_t r26845, r26846, r26847, r26848, r26849, r26850, r26851;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r26845);
        mpfr_init(r26846);
        mpfr_init_set_str(r26847, "10", 10, MPFR_RNDN);
        mpfr_init(r26848);
        mpfr_init_set_str(r26849, "20", 10, MPFR_RNDN);
        mpfr_init(r26850);
        mpfr_init(r26851);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r26845, d1, MPFR_RNDN);
        mpfr_set_d(r26846, d2, MPFR_RNDN);
        ;
        mpfr_add(r26848, r26846, r26847, MPFR_RNDN);
        ;
        mpfr_add(r26850, r26848, r26849, MPFR_RNDN);
        mpfr_mul(r26851, r26845, r26850, MPFR_RNDN);
        return mpfr_get_d(r26851, MPFR_RNDN);
}

