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

char *name = "FastMath test1";

double f_if(float d) {
        float r20396 = d;
        float r20397 = 10.0f;
        float r20398 = r20396 * r20397;
        float r20399 = 20.0f;
        float r20400 = r20396 * r20399;
        float r20401 = r20398 + r20400;
        return r20401;
}

double f_id(double d) {
        double r20402 = d;
        double r20403 = 10.0;
        double r20404 = r20402 * r20403;
        double r20405 = 20.0;
        double r20406 = r20402 * r20405;
        double r20407 = r20404 + r20406;
        return r20407;
}


double f_of(float d) {
        float r20408 = d;
        float r20409 = 10.0f;
        float r20410 = 20.0f;
        float r20411 = r20409 + r20410;
        float r20412 = r20408 * r20411;
        return r20412;
}

double f_od(double d) {
        double r20413 = d;
        double r20414 = 10.0;
        double r20415 = 20.0;
        double r20416 = r20414 + r20415;
        double r20417 = r20413 * r20416;
        return r20417;
}

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 r20418, r20419, r20420, r20421, r20422, r20423;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r20418);
        mpfr_init_set_str(r20419, "10", 10, MPFR_RNDN);
        mpfr_init(r20420);
        mpfr_init_set_str(r20421, "20", 10, MPFR_RNDN);
        mpfr_init(r20422);
        mpfr_init(r20423);
}

double f_im(double d) {
        mpfr_set_d(r20418, d, MPFR_RNDN);
        ;
        mpfr_mul(r20420, r20418, r20419, MPFR_RNDN);
        ;
        mpfr_mul(r20422, r20418, r20421, MPFR_RNDN);
        mpfr_add(r20423, r20420, r20422, MPFR_RNDN);
        return mpfr_get_d(r20423, MPFR_RNDN);
}

static mpfr_t r20424, r20425, r20426, r20427, r20428;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20424);
        mpfr_init_set_str(r20425, "10", 10, MPFR_RNDN);
        mpfr_init_set_str(r20426, "20", 10, MPFR_RNDN);
        mpfr_init(r20427);
        mpfr_init(r20428);
}

double f_fm(double d) {
        mpfr_set_d(r20424, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r20427, r20425, r20426, MPFR_RNDN);
        mpfr_mul(r20428, r20424, r20427, MPFR_RNDN);
        return mpfr_get_d(r20428, MPFR_RNDN);
}

static mpfr_t r20429, r20430, r20431, r20432, r20433;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r20429);
        mpfr_init_set_str(r20430, "10", 10, MPFR_RNDN);
        mpfr_init_set_str(r20431, "20", 10, MPFR_RNDN);
        mpfr_init(r20432);
        mpfr_init(r20433);
}

double f_dm(double d) {
        mpfr_set_d(r20429, d, MPFR_RNDN);
        ;
        ;
        mpfr_add(r20432, r20430, r20431, MPFR_RNDN);
        mpfr_mul(r20433, r20429, r20432, MPFR_RNDN);
        return mpfr_get_d(r20433, MPFR_RNDN);
}

