#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 r29340 = d1;
        float r29341 = 10;
        float r29342 = r29340 * r29341;
        float r29343 = d2;
        float r29344 = r29340 * r29343;
        float r29345 = r29342 + r29344;
        float r29346 = 20;
        float r29347 = r29340 * r29346;
        float r29348 = r29345 + r29347;
        return r29348;
}

double f_id(double d1, double d2) {
        double r29349 = d1;
        double r29350 = 10;
        double r29351 = r29349 * r29350;
        double r29352 = d2;
        double r29353 = r29349 * r29352;
        double r29354 = r29351 + r29353;
        double r29355 = 20;
        double r29356 = r29349 * r29355;
        double r29357 = r29354 + r29356;
        return r29357;
}


double f_of(float d1, float d2) {
        float r29358 = d1;
        float r29359 = d2;
        float r29360 = 10;
        float r29361 = r29359 + r29360;
        float r29362 = 20;
        float r29363 = r29361 + r29362;
        float r29364 = r29358 * r29363;
        return r29364;
}

double f_od(double d1, double d2) {
        double r29365 = d1;
        double r29366 = d2;
        double r29367 = 10;
        double r29368 = r29366 + r29367;
        double r29369 = 20;
        double r29370 = r29368 + r29369;
        double r29371 = r29365 * r29370;
        return r29371;
}

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 r29372, r29373, r29374, r29375, r29376, r29377, r29378, r29379, r29380;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r29372);
        mpfr_init_set_str(r29373, "10", 10, MPFR_RNDN);
        mpfr_init(r29374);
        mpfr_init(r29375);
        mpfr_init(r29376);
        mpfr_init(r29377);
        mpfr_init_set_str(r29378, "20", 10, MPFR_RNDN);
        mpfr_init(r29379);
        mpfr_init(r29380);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r29372, d1, MPFR_RNDN);
        ;
        mpfr_mul(r29374, r29372, r29373, MPFR_RNDN);
        mpfr_set_d(r29375, d2, MPFR_RNDN);
        mpfr_mul(r29376, r29372, r29375, MPFR_RNDN);
        mpfr_add(r29377, r29374, r29376, MPFR_RNDN);
        ;
        mpfr_mul(r29379, r29372, r29378, MPFR_RNDN);
        mpfr_add(r29380, r29377, r29379, MPFR_RNDN);
        return mpfr_get_d(r29380, MPFR_RNDN);
}

static mpfr_t r29381, r29382, r29383, r29384, r29385, r29386, r29387;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r29381);
        mpfr_init(r29382);
        mpfr_init_set_str(r29383, "10", 10, MPFR_RNDN);
        mpfr_init(r29384);
        mpfr_init_set_str(r29385, "20", 10, MPFR_RNDN);
        mpfr_init(r29386);
        mpfr_init(r29387);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r29381, d1, MPFR_RNDN);
        mpfr_set_d(r29382, d2, MPFR_RNDN);
        ;
        mpfr_add(r29384, r29382, r29383, MPFR_RNDN);
        ;
        mpfr_add(r29386, r29384, r29385, MPFR_RNDN);
        mpfr_mul(r29387, r29381, r29386, MPFR_RNDN);
        return mpfr_get_d(r29387, MPFR_RNDN);
}

static mpfr_t r29388, r29389, r29390, r29391, r29392, r29393, r29394;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r29388);
        mpfr_init(r29389);
        mpfr_init_set_str(r29390, "10", 10, MPFR_RNDN);
        mpfr_init(r29391);
        mpfr_init_set_str(r29392, "20", 10, MPFR_RNDN);
        mpfr_init(r29393);
        mpfr_init(r29394);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r29388, d1, MPFR_RNDN);
        mpfr_set_d(r29389, d2, MPFR_RNDN);
        ;
        mpfr_add(r29391, r29389, r29390, MPFR_RNDN);
        ;
        mpfr_add(r29393, r29391, r29392, MPFR_RNDN);
        mpfr_mul(r29394, r29388, r29393, MPFR_RNDN);
        return mpfr_get_d(r29394, MPFR_RNDN);
}

