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

char *name = "FastMath test2";

double f_if(float d1, float d2) {
        float r51379 = d1;
        float r51380 = 10;
        float r51381 = r51379 * r51380;
        float r51382 = d2;
        float r51383 = r51379 * r51382;
        float r51384 = r51381 + r51383;
        float r51385 = 20;
        float r51386 = r51379 * r51385;
        float r51387 = r51384 + r51386;
        return r51387;
}

double f_id(double d1, double d2) {
        double r51388 = d1;
        double r51389 = 10;
        double r51390 = r51388 * r51389;
        double r51391 = d2;
        double r51392 = r51388 * r51391;
        double r51393 = r51390 + r51392;
        double r51394 = 20;
        double r51395 = r51388 * r51394;
        double r51396 = r51393 + r51395;
        return r51396;
}


double f_of(float d1, float d2) {
        float r51397 = d2;
        float r51398 = 10;
        float r51399 = r51397 + r51398;
        float r51400 = 20;
        float r51401 = r51399 + r51400;
        float r51402 = d1;
        float r51403 = r51401 * r51402;
        return r51403;
}

double f_od(double d1, double d2) {
        double r51404 = d2;
        double r51405 = 10;
        double r51406 = r51404 + r51405;
        double r51407 = 20;
        double r51408 = r51406 + r51407;
        double r51409 = d1;
        double r51410 = r51408 * r51409;
        return r51410;
}

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 r51411, r51412, r51413, r51414, r51415, r51416, r51417, r51418, r51419;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51411);
        mpfr_init_set_str(r51412, "10", 10, MPFR_RNDN);
        mpfr_init(r51413);
        mpfr_init(r51414);
        mpfr_init(r51415);
        mpfr_init(r51416);
        mpfr_init_set_str(r51417, "20", 10, MPFR_RNDN);
        mpfr_init(r51418);
        mpfr_init(r51419);
}

double f_im(double d1, double d2) {
        mpfr_set_d(r51411, d1, MPFR_RNDN);
        ;
        mpfr_mul(r51413, r51411, r51412, MPFR_RNDN);
        mpfr_set_d(r51414, d2, MPFR_RNDN);
        mpfr_mul(r51415, r51411, r51414, MPFR_RNDN);
        mpfr_add(r51416, r51413, r51415, MPFR_RNDN);
        ;
        mpfr_mul(r51418, r51411, r51417, MPFR_RNDN);
        mpfr_add(r51419, r51416, r51418, MPFR_RNDN);
        return mpfr_get_d(r51419, MPFR_RNDN);
}

static mpfr_t r51420, r51421, r51422, r51423, r51424, r51425, r51426;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51420);
        mpfr_init_set_str(r51421, "10", 10, MPFR_RNDN);
        mpfr_init(r51422);
        mpfr_init_set_str(r51423, "20", 10, MPFR_RNDN);
        mpfr_init(r51424);
        mpfr_init(r51425);
        mpfr_init(r51426);
}

double f_fm(double d1, double d2) {
        mpfr_set_d(r51420, d2, MPFR_RNDN);
        ;
        mpfr_add(r51422, r51420, r51421, MPFR_RNDN);
        ;
        mpfr_add(r51424, r51422, r51423, MPFR_RNDN);
        mpfr_set_d(r51425, d1, MPFR_RNDN);
        mpfr_mul(r51426, r51424, r51425, MPFR_RNDN);
        return mpfr_get_d(r51426, MPFR_RNDN);
}

static mpfr_t r51427, r51428, r51429, r51430, r51431, r51432, r51433;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51427);
        mpfr_init_set_str(r51428, "10", 10, MPFR_RNDN);
        mpfr_init(r51429);
        mpfr_init_set_str(r51430, "20", 10, MPFR_RNDN);
        mpfr_init(r51431);
        mpfr_init(r51432);
        mpfr_init(r51433);
}

double f_dm(double d1, double d2) {
        mpfr_set_d(r51427, d2, MPFR_RNDN);
        ;
        mpfr_add(r51429, r51427, r51428, MPFR_RNDN);
        ;
        mpfr_add(r51431, r51429, r51430, MPFR_RNDN);
        mpfr_set_d(r51432, d1, MPFR_RNDN);
        mpfr_mul(r51433, r51431, r51432, MPFR_RNDN);
        return mpfr_get_d(r51433, MPFR_RNDN);
}

