#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 r16279466 = t1;
        float r16279467 = -r16279466;
        float r16279468 = v;
        float r16279469 = r16279467 * r16279468;
        float r16279470 = u;
        float r16279471 = r16279466 + r16279470;
        float r16279472 = r16279471 * r16279471;
        float r16279473 = r16279469 / r16279472;
        return r16279473;
}

double f_id(double u, double v, double t1) {
        double r16279474 = t1;
        double r16279475 = -r16279474;
        double r16279476 = v;
        double r16279477 = r16279475 * r16279476;
        double r16279478 = u;
        double r16279479 = r16279474 + r16279478;
        double r16279480 = r16279479 * r16279479;
        double r16279481 = r16279477 / r16279480;
        return r16279481;
}


double f_of(float u, float v, float t1) {
        float r16279482 = t1;
        float r16279483 = -r16279482;
        float r16279484 = u;
        float r16279485 = r16279482 + r16279484;
        float r16279486 = r16279483 / r16279485;
        float r16279487 = v;
        float r16279488 = r16279486 * r16279487;
        float r16279489 = 1;
        float r16279490 = r16279489 / r16279485;
        float r16279491 = r16279488 * r16279490;
        return r16279491;
}

double f_od(double u, double v, double t1) {
        double r16279492 = t1;
        double r16279493 = -r16279492;
        double r16279494 = u;
        double r16279495 = r16279492 + r16279494;
        double r16279496 = r16279493 / r16279495;
        double r16279497 = v;
        double r16279498 = r16279496 * r16279497;
        double r16279499 = 1;
        double r16279500 = r16279499 / r16279495;
        double r16279501 = r16279498 * r16279500;
        return r16279501;
}

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 r16279502, r16279503, r16279504, r16279505, r16279506, r16279507, r16279508, r16279509;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r16279502);
        mpfr_init(r16279503);
        mpfr_init(r16279504);
        mpfr_init(r16279505);
        mpfr_init(r16279506);
        mpfr_init(r16279507);
        mpfr_init(r16279508);
        mpfr_init(r16279509);
}

double f_im(double u, double v, double t1) {
        mpfr_set_d(r16279502, t1, MPFR_RNDN);
        mpfr_neg(r16279503, r16279502, MPFR_RNDN);
        mpfr_set_d(r16279504, v, MPFR_RNDN);
        mpfr_mul(r16279505, r16279503, r16279504, MPFR_RNDN);
        mpfr_set_d(r16279506, u, MPFR_RNDN);
        mpfr_add(r16279507, r16279502, r16279506, MPFR_RNDN);
        mpfr_mul(r16279508, r16279507, r16279507, MPFR_RNDN);
        mpfr_div(r16279509, r16279505, r16279508, MPFR_RNDN);
        return mpfr_get_d(r16279509, MPFR_RNDN);
}

static mpfr_t r16279510, r16279511, r16279512, r16279513, r16279514, r16279515, r16279516, r16279517, r16279518, r16279519;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r16279510);
        mpfr_init(r16279511);
        mpfr_init(r16279512);
        mpfr_init(r16279513);
        mpfr_init(r16279514);
        mpfr_init(r16279515);
        mpfr_init(r16279516);
        mpfr_init_set_str(r16279517, "1", 10, MPFR_RNDN);
        mpfr_init(r16279518);
        mpfr_init(r16279519);
}

double f_fm(double u, double v, double t1) {
        mpfr_set_d(r16279510, t1, MPFR_RNDN);
        mpfr_neg(r16279511, r16279510, MPFR_RNDN);
        mpfr_set_d(r16279512, u, MPFR_RNDN);
        mpfr_add(r16279513, r16279510, r16279512, MPFR_RNDN);
        mpfr_div(r16279514, r16279511, r16279513, MPFR_RNDN);
        mpfr_set_d(r16279515, v, MPFR_RNDN);
        mpfr_mul(r16279516, r16279514, r16279515, MPFR_RNDN);
        ;
        mpfr_div(r16279518, r16279517, r16279513, MPFR_RNDN);
        mpfr_mul(r16279519, r16279516, r16279518, MPFR_RNDN);
        return mpfr_get_d(r16279519, MPFR_RNDN);
}

static mpfr_t r16279520, r16279521, r16279522, r16279523, r16279524, r16279525, r16279526, r16279527, r16279528, r16279529;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r16279520);
        mpfr_init(r16279521);
        mpfr_init(r16279522);
        mpfr_init(r16279523);
        mpfr_init(r16279524);
        mpfr_init(r16279525);
        mpfr_init(r16279526);
        mpfr_init_set_str(r16279527, "1", 10, MPFR_RNDN);
        mpfr_init(r16279528);
        mpfr_init(r16279529);
}

double f_dm(double u, double v, double t1) {
        mpfr_set_d(r16279520, t1, MPFR_RNDN);
        mpfr_neg(r16279521, r16279520, MPFR_RNDN);
        mpfr_set_d(r16279522, u, MPFR_RNDN);
        mpfr_add(r16279523, r16279520, r16279522, MPFR_RNDN);
        mpfr_div(r16279524, r16279521, r16279523, MPFR_RNDN);
        mpfr_set_d(r16279525, v, MPFR_RNDN);
        mpfr_mul(r16279526, r16279524, r16279525, MPFR_RNDN);
        ;
        mpfr_div(r16279528, r16279527, r16279523, MPFR_RNDN);
        mpfr_mul(r16279529, r16279526, r16279528, MPFR_RNDN);
        return mpfr_get_d(r16279529, MPFR_RNDN);
}

