#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 r16280625 = 1.7e+308;
        float r16280626 = t;
        float r16280627 = r16280625 * r16280626;
        float r16280628 = r16280627 - r16280625;
        return r16280628;
}

double f_id(double t) {
        double r16280629 = 1.7e+308;
        double r16280630 = t;
        double r16280631 = r16280629 * r16280630;
        double r16280632 = r16280631 - r16280629;
        return r16280632;
}


double f_of(float t) {
        float r16280633 = 1.7e+308;
        float r16280634 = t;
        float r16280635 = r16280633 * r16280634;
        float r16280636 = r16280635 - r16280633;
        return r16280636;
}

double f_od(double t) {
        double r16280637 = 1.7e+308;
        double r16280638 = t;
        double r16280639 = r16280637 * r16280638;
        double r16280640 = r16280639 - r16280637;
        return r16280640;
}

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 r16280641, r16280642, r16280643, r16280644;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r16280641, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r16280642);
        mpfr_init(r16280643);
        mpfr_init(r16280644);
}

double f_im(double t) {
        ;
        mpfr_set_d(r16280642, t, MPFR_RNDN);
        mpfr_mul(r16280643, r16280641, r16280642, MPFR_RNDN);
        mpfr_sub(r16280644, r16280643, r16280641, MPFR_RNDN);
        return mpfr_get_d(r16280644, MPFR_RNDN);
}

static mpfr_t r16280645, r16280646, r16280647, r16280648;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r16280645, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r16280646);
        mpfr_init(r16280647);
        mpfr_init(r16280648);
}

double f_fm(double t) {
        ;
        mpfr_set_d(r16280646, t, MPFR_RNDN);
        mpfr_mul(r16280647, r16280645, r16280646, MPFR_RNDN);
        mpfr_sub(r16280648, r16280647, r16280645, MPFR_RNDN);
        return mpfr_get_d(r16280648, MPFR_RNDN);
}

static mpfr_t r16280649, r16280650, r16280651, r16280652;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r16280649, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r16280650);
        mpfr_init(r16280651);
        mpfr_init(r16280652);
}

double f_dm(double t) {
        ;
        mpfr_set_d(r16280650, t, MPFR_RNDN);
        mpfr_mul(r16280651, r16280649, r16280650, MPFR_RNDN);
        mpfr_sub(r16280652, r16280651, r16280649, MPFR_RNDN);
        return mpfr_get_d(r16280652, MPFR_RNDN);
}

