#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 r25139 = 1.7e+308;
        float r25140 = t;
        float r25141 = r25139 * r25140;
        float r25142 = r25141 - r25139;
        return r25142;
}

double f_id(double t) {
        double r25143 = 1.7e+308;
        double r25144 = t;
        double r25145 = r25143 * r25144;
        double r25146 = r25145 - r25143;
        return r25146;
}


double f_of(float t) {
        float r25147 = 1.7e+308;
        float r25148 = t;
        float r25149 = -r25147;
        float r25150 = fma(r25147, r25148, r25149);
        return r25150;
}

double f_od(double t) {
        double r25151 = 1.7e+308;
        double r25152 = t;
        double r25153 = -r25151;
        double r25154 = fma(r25151, r25152, r25153);
        return r25154;
}

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 r25155, r25156, r25157, r25158;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25155, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r25156);
        mpfr_init(r25157);
        mpfr_init(r25158);
}

double f_im(double t) {
        ;
        mpfr_set_d(r25156, t, MPFR_RNDN);
        mpfr_mul(r25157, r25155, r25156, MPFR_RNDN);
        mpfr_sub(r25158, r25157, r25155, MPFR_RNDN);
        return mpfr_get_d(r25158, MPFR_RNDN);
}

static mpfr_t r25159, r25160, r25161, r25162;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25159, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r25160);
        mpfr_init(r25161);
        mpfr_init(r25162);
}

double f_fm(double t) {
        ;
        mpfr_set_d(r25160, t, MPFR_RNDN);
        mpfr_neg(r25161, r25159, MPFR_RNDN);
        mpfr_fma(r25162, r25159, r25160, r25161, MPFR_RNDN);
        return mpfr_get_d(r25162, MPFR_RNDN);
}

static mpfr_t r25163, r25164, r25165, r25166;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r25163, "1.7e+308", 10, MPFR_RNDN);
        mpfr_init(r25164);
        mpfr_init(r25165);
        mpfr_init(r25166);
}

double f_dm(double t) {
        ;
        mpfr_set_d(r25164, t, MPFR_RNDN);
        mpfr_neg(r25165, r25163, MPFR_RNDN);
        mpfr_fma(r25166, r25163, r25164, r25165, MPFR_RNDN);
        return mpfr_get_d(r25166, MPFR_RNDN);
}

