#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 r50444 = d1;
        float r50445 = 10;
        float r50446 = r50444 * r50445;
        float r50447 = d2;
        float r50448 = r50444 * r50447;
        float r50449 = r50446 + r50448;
        float r50450 = 20;
        float r50451 = r50444 * r50450;
        float r50452 = r50449 + r50451;
        return r50452;
}

double f_id(double d1, double d2) {
        double r50453 = d1;
        double r50454 = 10;
        double r50455 = r50453 * r50454;
        double r50456 = d2;
        double r50457 = r50453 * r50456;
        double r50458 = r50455 + r50457;
        double r50459 = 20;
        double r50460 = r50453 * r50459;
        double r50461 = r50458 + r50460;
        return r50461;
}


double f_of(float d1, float d2) {
        float r50462 = d2;
        float r50463 = 10;
        float r50464 = r50462 + r50463;
        float r50465 = 20;
        float r50466 = r50464 + r50465;
        float r50467 = d1;
        float r50468 = r50466 * r50467;
        return r50468;
}

double f_od(double d1, double d2) {
        double r50469 = d2;
        double r50470 = 10;
        double r50471 = r50469 + r50470;
        double r50472 = 20;
        double r50473 = r50471 + r50472;
        double r50474 = d1;
        double r50475 = r50473 * r50474;
        return r50475;
}

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 r50476, r50477, r50478, r50479, r50480, r50481, r50482, r50483, r50484;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r50476);
        mpfr_init_set_str(r50477, "10", 10, MPFR_RNDN);
        mpfr_init(r50478);
        mpfr_init(r50479);
        mpfr_init(r50480);
        mpfr_init(r50481);
        mpfr_init_set_str(r50482, "20", 10, MPFR_RNDN);
        mpfr_init(r50483);
        mpfr_init(r50484);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r50476, d1, MPFR_RNDN);
        ;
        mpfr_mul(r50478, r50476, r50477, MPFR_RNDN);
        mpfr_set_d(r50479, d2, MPFR_RNDN);
        mpfr_mul(r50480, r50476, r50479, MPFR_RNDN);
        mpfr_add(r50481, r50478, r50480, MPFR_RNDN);
        ;
        mpfr_mul(r50483, r50476, r50482, MPFR_RNDN);
        mpfr_add(r50484, r50481, r50483, MPFR_RNDN);
        return mpfr_get_d(r50484, MPFR_RNDN);
}

static mpfr_t r50485, r50486, r50487, r50488, r50489, r50490, r50491;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r50485);
        mpfr_init_set_str(r50486, "10", 10, MPFR_RNDN);
        mpfr_init(r50487);
        mpfr_init_set_str(r50488, "20", 10, MPFR_RNDN);
        mpfr_init(r50489);
        mpfr_init(r50490);
        mpfr_init(r50491);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r50485, d2, MPFR_RNDN);
        ;
        mpfr_add(r50487, r50485, r50486, MPFR_RNDN);
        ;
        mpfr_add(r50489, r50487, r50488, MPFR_RNDN);
        mpfr_set_d(r50490, d1, MPFR_RNDN);
        mpfr_mul(r50491, r50489, r50490, MPFR_RNDN);
        return mpfr_get_d(r50491, MPFR_RNDN);
}

static mpfr_t r50492, r50493, r50494, r50495, r50496, r50497, r50498;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r50492);
        mpfr_init_set_str(r50493, "10", 10, MPFR_RNDN);
        mpfr_init(r50494);
        mpfr_init_set_str(r50495, "20", 10, MPFR_RNDN);
        mpfr_init(r50496);
        mpfr_init(r50497);
        mpfr_init(r50498);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r50492, d2, MPFR_RNDN);
        ;
        mpfr_add(r50494, r50492, r50493, MPFR_RNDN);
        ;
        mpfr_add(r50496, r50494, r50495, MPFR_RNDN);
        mpfr_set_d(r50497, d1, MPFR_RNDN);
        mpfr_mul(r50498, r50496, r50497, MPFR_RNDN);
        return mpfr_get_d(r50498, MPFR_RNDN);
}

