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

char *name = "FastMath test3";

double f_if(float d1, float d2, float d3) {
        float r51316 = d1;
        float r51317 = 3;
        float r51318 = r51316 * r51317;
        float r51319 = d2;
        float r51320 = r51316 * r51319;
        float r51321 = r51318 + r51320;
        float r51322 = d3;
        float r51323 = r51316 * r51322;
        float r51324 = r51321 + r51323;
        return r51324;
}

double f_id(double d1, double d2, double d3) {
        double r51325 = d1;
        double r51326 = 3;
        double r51327 = r51325 * r51326;
        double r51328 = d2;
        double r51329 = r51325 * r51328;
        double r51330 = r51327 + r51329;
        double r51331 = d3;
        double r51332 = r51325 * r51331;
        double r51333 = r51330 + r51332;
        return r51333;
}


double f_of(float d1, float d2, float d3) {
        float r51334 = d1;
        float r51335 = 3;
        float r51336 = r51334 * r51335;
        float r51337 = d2;
        float r51338 = r51334 * r51337;
        float r51339 = r51336 + r51338;
        float r51340 = d3;
        float r51341 = r51334 * r51340;
        float r51342 = r51339 + r51341;
        return r51342;
}

double f_od(double d1, double d2, double d3) {
        double r51343 = d1;
        double r51344 = 3;
        double r51345 = r51343 * r51344;
        double r51346 = d2;
        double r51347 = r51343 * r51346;
        double r51348 = r51345 + r51347;
        double r51349 = d3;
        double r51350 = r51343 * r51349;
        double r51351 = r51348 + r51350;
        return r51351;
}

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 r51352, r51353, r51354, r51355, r51356, r51357, r51358, r51359, r51360;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51352);
        mpfr_init_set_str(r51353, "3", 10, MPFR_RNDN);
        mpfr_init(r51354);
        mpfr_init(r51355);
        mpfr_init(r51356);
        mpfr_init(r51357);
        mpfr_init(r51358);
        mpfr_init(r51359);
        mpfr_init(r51360);
}

double f_im(double d1, double d2, double d3) {
        mpfr_set_d(r51352, d1, MPFR_RNDN);
        ;
        mpfr_mul(r51354, r51352, r51353, MPFR_RNDN);
        mpfr_set_d(r51355, d2, MPFR_RNDN);
        mpfr_mul(r51356, r51352, r51355, MPFR_RNDN);
        mpfr_add(r51357, r51354, r51356, MPFR_RNDN);
        mpfr_set_d(r51358, d3, MPFR_RNDN);
        mpfr_mul(r51359, r51352, r51358, MPFR_RNDN);
        mpfr_add(r51360, r51357, r51359, MPFR_RNDN);
        return mpfr_get_d(r51360, MPFR_RNDN);
}

static mpfr_t r51361, r51362, r51363, r51364, r51365, r51366, r51367, r51368, r51369;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51361);
        mpfr_init_set_str(r51362, "3", 10, MPFR_RNDN);
        mpfr_init(r51363);
        mpfr_init(r51364);
        mpfr_init(r51365);
        mpfr_init(r51366);
        mpfr_init(r51367);
        mpfr_init(r51368);
        mpfr_init(r51369);
}

double f_fm(double d1, double d2, double d3) {
        mpfr_set_d(r51361, d1, MPFR_RNDN);
        ;
        mpfr_mul(r51363, r51361, r51362, MPFR_RNDN);
        mpfr_set_d(r51364, d2, MPFR_RNDN);
        mpfr_mul(r51365, r51361, r51364, MPFR_RNDN);
        mpfr_add(r51366, r51363, r51365, MPFR_RNDN);
        mpfr_set_d(r51367, d3, MPFR_RNDN);
        mpfr_mul(r51368, r51361, r51367, MPFR_RNDN);
        mpfr_add(r51369, r51366, r51368, MPFR_RNDN);
        return mpfr_get_d(r51369, MPFR_RNDN);
}

static mpfr_t r51370, r51371, r51372, r51373, r51374, r51375, r51376, r51377, r51378;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51370);
        mpfr_init_set_str(r51371, "3", 10, MPFR_RNDN);
        mpfr_init(r51372);
        mpfr_init(r51373);
        mpfr_init(r51374);
        mpfr_init(r51375);
        mpfr_init(r51376);
        mpfr_init(r51377);
        mpfr_init(r51378);
}

double f_dm(double d1, double d2, double d3) {
        mpfr_set_d(r51370, d1, MPFR_RNDN);
        ;
        mpfr_mul(r51372, r51370, r51371, MPFR_RNDN);
        mpfr_set_d(r51373, d2, MPFR_RNDN);
        mpfr_mul(r51374, r51370, r51373, MPFR_RNDN);
        mpfr_add(r51375, r51372, r51374, MPFR_RNDN);
        mpfr_set_d(r51376, d3, MPFR_RNDN);
        mpfr_mul(r51377, r51370, r51376, MPFR_RNDN);
        mpfr_add(r51378, r51375, r51377, MPFR_RNDN);
        return mpfr_get_d(r51378, MPFR_RNDN);
}

