#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "fma_test2";

double f_if(float t) {
        float r9276 = 1.7e+308;
        float r9277 = t;
        float r9278 = r9276 * r9277;
        float r9279 = r9278 - r9276;
        return r9279;
}

double f_id(double t) {
        double r9280 = 1.7e+308;
        double r9281 = t;
        double r9282 = r9280 * r9281;
        double r9283 = r9282 - r9280;
        return r9283;
}


double f_of(float t) {
        float r9284 = 1.7e+308;
        float r9285 = t;
        float r9286 = -r9284;
        float r9287 = fma(r9284, r9285, r9286);
        return r9287;
}

double f_od(double t) {
        double r9288 = 1.7e+308;
        double r9289 = t;
        double r9290 = -r9288;
        double r9291 = fma(r9288, r9289, r9290);
        return r9291;
}

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 r9292, r9293, r9294, r9295;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9292, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
}

double f_im(double t) {
        ;
        mpfr_set_d(r9293, t, MPFR_RNDN);
        mpfr_mul(r9294, r9292, r9293, MPFR_RNDN);
        mpfr_sub(r9295, r9294, r9292, MPFR_RNDN);
        return mpfr_get_d(r9295, MPFR_RNDN);
}

static mpfr_t r9296, r9297, r9298, r9299;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9296, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
}

double f_fm(double t) {
        ;
        mpfr_set_d(r9297, t, MPFR_RNDN);
        mpfr_neg(r9298, r9296, MPFR_RNDN);
        mpfr_fma(r9299, r9296, r9297, r9298, MPFR_RNDN);
        return mpfr_get_d(r9299, MPFR_RNDN);
}

static mpfr_t r9300, r9301, r9302, r9303;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9300, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r9301);
        mpfr_init(r9302);
        mpfr_init(r9303);
}

double f_dm(double t) {
        ;
        mpfr_set_d(r9301, t, MPFR_RNDN);
        mpfr_neg(r9302, r9300, MPFR_RNDN);
        mpfr_fma(r9303, r9300, r9301, r9302, MPFR_RNDN);
        return mpfr_get_d(r9303, MPFR_RNDN);
}

