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

char *name = "Rosa's DopplerBench";

double f_if(float u, float v, float t1) {
        float r8320 = t1;
        float r8321 = -r8320;
        float r8322 = v;
        float r8323 = r8321 * r8322;
        float r8324 = u;
        float r8325 = r8320 + r8324;
        float r8326 = r8325 * r8325;
        float r8327 = r8323 / r8326;
        return r8327;
}

double f_id(double u, double v, double t1) {
        double r8328 = t1;
        double r8329 = -r8328;
        double r8330 = v;
        double r8331 = r8329 * r8330;
        double r8332 = u;
        double r8333 = r8328 + r8332;
        double r8334 = r8333 * r8333;
        double r8335 = r8331 / r8334;
        return r8335;
}


double f_of(float u, float v, float t1) {
        float r8336 = t1;
        float r8337 = -r8336;
        float r8338 = u;
        float r8339 = r8336 + r8338;
        float r8340 = r8337 / r8339;
        float r8341 = v;
        float r8342 = r8341 / r8339;
        float r8343 = r8340 * r8342;
        return r8343;
}

double f_od(double u, double v, double t1) {
        double r8344 = t1;
        double r8345 = -r8344;
        double r8346 = u;
        double r8347 = r8344 + r8346;
        double r8348 = r8345 / r8347;
        double r8349 = v;
        double r8350 = r8349 / r8347;
        double r8351 = r8348 * r8350;
        return r8351;
}

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 r8352, r8353, r8354, r8355, r8356, r8357, r8358, r8359;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8352);
        mpfr_init(r8353);
        mpfr_init(r8354);
        mpfr_init(r8355);
        mpfr_init(r8356);
        mpfr_init(r8357);
        mpfr_init(r8358);
        mpfr_init(r8359);
}

double f_im(double u, double v, double t1) {
        mpfr_set_d(r8352, t1, MPFR_RNDN);
        mpfr_neg(r8353, r8352, MPFR_RNDN);
        mpfr_set_d(r8354, v, MPFR_RNDN);
        mpfr_mul(r8355, r8353, r8354, MPFR_RNDN);
        mpfr_set_d(r8356, u, MPFR_RNDN);
        mpfr_add(r8357, r8352, r8356, MPFR_RNDN);
        mpfr_mul(r8358, r8357, r8357, MPFR_RNDN);
        mpfr_div(r8359, r8355, r8358, MPFR_RNDN);
        return mpfr_get_d(r8359, MPFR_RNDN);
}

static mpfr_t r8360, r8361, r8362, r8363, r8364, r8365, r8366, r8367;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8360);
        mpfr_init(r8361);
        mpfr_init(r8362);
        mpfr_init(r8363);
        mpfr_init(r8364);
        mpfr_init(r8365);
        mpfr_init(r8366);
        mpfr_init(r8367);
}

double f_fm(double u, double v, double t1) {
        mpfr_set_d(r8360, t1, MPFR_RNDN);
        mpfr_neg(r8361, r8360, MPFR_RNDN);
        mpfr_set_d(r8362, u, MPFR_RNDN);
        mpfr_add(r8363, r8360, r8362, MPFR_RNDN);
        mpfr_div(r8364, r8361, r8363, MPFR_RNDN);
        mpfr_set_d(r8365, v, MPFR_RNDN);
        mpfr_div(r8366, r8365, r8363, MPFR_RNDN);
        mpfr_mul(r8367, r8364, r8366, MPFR_RNDN);
        return mpfr_get_d(r8367, MPFR_RNDN);
}

static mpfr_t r8368, r8369, r8370, r8371, r8372, r8373, r8374, r8375;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8368);
        mpfr_init(r8369);
        mpfr_init(r8370);
        mpfr_init(r8371);
        mpfr_init(r8372);
        mpfr_init(r8373);
        mpfr_init(r8374);
        mpfr_init(r8375);
}

double f_dm(double u, double v, double t1) {
        mpfr_set_d(r8368, t1, MPFR_RNDN);
        mpfr_neg(r8369, r8368, MPFR_RNDN);
        mpfr_set_d(r8370, u, MPFR_RNDN);
        mpfr_add(r8371, r8368, r8370, MPFR_RNDN);
        mpfr_div(r8372, r8369, r8371, MPFR_RNDN);
        mpfr_set_d(r8373, v, MPFR_RNDN);
        mpfr_div(r8374, r8373, r8371, MPFR_RNDN);
        mpfr_mul(r8375, r8372, r8374, MPFR_RNDN);
        return mpfr_get_d(r8375, MPFR_RNDN);
}

