#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 r8276 = t1;
        float r8277 = -r8276;
        float r8278 = v;
        float r8279 = r8277 * r8278;
        float r8280 = u;
        float r8281 = r8276 + r8280;
        float r8282 = r8281 * r8281;
        float r8283 = r8279 / r8282;
        return r8283;
}

double f_id(double u, double v, double t1) {
        double r8284 = t1;
        double r8285 = -r8284;
        double r8286 = v;
        double r8287 = r8285 * r8286;
        double r8288 = u;
        double r8289 = r8284 + r8288;
        double r8290 = r8289 * r8289;
        double r8291 = r8287 / r8290;
        return r8291;
}


double f_of(float u, float v, float t1) {
        float r8292 = t1;
        float r8293 = -r8292;
        float r8294 = cbrt(r8293);
        float r8295 = r8294 * r8294;
        float r8296 = u;
        float r8297 = r8292 + r8296;
        float r8298 = cbrt(r8297);
        float r8299 = r8298 * r8298;
        float r8300 = r8295 / r8299;
        float r8301 = r8294 / r8298;
        float r8302 = v;
        float r8303 = r8302 / r8297;
        float r8304 = r8301 * r8303;
        float r8305 = r8300 * r8304;
        return r8305;
}

double f_od(double u, double v, double t1) {
        double r8306 = t1;
        double r8307 = -r8306;
        double r8308 = cbrt(r8307);
        double r8309 = r8308 * r8308;
        double r8310 = u;
        double r8311 = r8306 + r8310;
        double r8312 = cbrt(r8311);
        double r8313 = r8312 * r8312;
        double r8314 = r8309 / r8313;
        double r8315 = r8308 / r8312;
        double r8316 = v;
        double r8317 = r8316 / r8311;
        double r8318 = r8315 * r8317;
        double r8319 = r8314 * r8318;
        return r8319;
}

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 r8320, r8321, r8322, r8323, r8324, r8325, r8326, r8327;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8320);
        mpfr_init(r8321);
        mpfr_init(r8322);
        mpfr_init(r8323);
        mpfr_init(r8324);
        mpfr_init(r8325);
        mpfr_init(r8326);
        mpfr_init(r8327);
}

double f_im(double u, double v, double t1) {
        mpfr_set_d(r8320, t1, MPFR_RNDN);
        mpfr_neg(r8321, r8320, MPFR_RNDN);
        mpfr_set_d(r8322, v, MPFR_RNDN);
        mpfr_mul(r8323, r8321, r8322, MPFR_RNDN);
        mpfr_set_d(r8324, u, MPFR_RNDN);
        mpfr_add(r8325, r8320, r8324, MPFR_RNDN);
        mpfr_mul(r8326, r8325, r8325, MPFR_RNDN);
        mpfr_div(r8327, r8323, r8326, MPFR_RNDN);
        return mpfr_get_d(r8327, MPFR_RNDN);
}

static mpfr_t r8328, r8329, r8330, r8331, r8332, r8333, r8334, r8335, r8336, r8337, r8338, r8339, r8340, r8341;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8328);
        mpfr_init(r8329);
        mpfr_init(r8330);
        mpfr_init(r8331);
        mpfr_init(r8332);
        mpfr_init(r8333);
        mpfr_init(r8334);
        mpfr_init(r8335);
        mpfr_init(r8336);
        mpfr_init(r8337);
        mpfr_init(r8338);
        mpfr_init(r8339);
        mpfr_init(r8340);
        mpfr_init(r8341);
}

double f_fm(double u, double v, double t1) {
        mpfr_set_d(r8328, t1, MPFR_RNDN);
        mpfr_neg(r8329, r8328, MPFR_RNDN);
        mpfr_cbrt(r8330, r8329, MPFR_RNDN);
        mpfr_mul(r8331, r8330, r8330, MPFR_RNDN);
        mpfr_set_d(r8332, u, MPFR_RNDN);
        mpfr_add(r8333, r8328, r8332, MPFR_RNDN);
        mpfr_cbrt(r8334, r8333, MPFR_RNDN);
        mpfr_mul(r8335, r8334, r8334, MPFR_RNDN);
        mpfr_div(r8336, r8331, r8335, MPFR_RNDN);
        mpfr_div(r8337, r8330, r8334, MPFR_RNDN);
        mpfr_set_d(r8338, v, MPFR_RNDN);
        mpfr_div(r8339, r8338, r8333, MPFR_RNDN);
        mpfr_mul(r8340, r8337, r8339, MPFR_RNDN);
        mpfr_mul(r8341, r8336, r8340, MPFR_RNDN);
        return mpfr_get_d(r8341, MPFR_RNDN);
}

static mpfr_t r8342, r8343, r8344, r8345, r8346, r8347, r8348, r8349, r8350, r8351, r8352, r8353, r8354, r8355;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8342);
        mpfr_init(r8343);
        mpfr_init(r8344);
        mpfr_init(r8345);
        mpfr_init(r8346);
        mpfr_init(r8347);
        mpfr_init(r8348);
        mpfr_init(r8349);
        mpfr_init(r8350);
        mpfr_init(r8351);
        mpfr_init(r8352);
        mpfr_init(r8353);
        mpfr_init(r8354);
        mpfr_init(r8355);
}

double f_dm(double u, double v, double t1) {
        mpfr_set_d(r8342, t1, MPFR_RNDN);
        mpfr_neg(r8343, r8342, MPFR_RNDN);
        mpfr_cbrt(r8344, r8343, MPFR_RNDN);
        mpfr_mul(r8345, r8344, r8344, MPFR_RNDN);
        mpfr_set_d(r8346, u, MPFR_RNDN);
        mpfr_add(r8347, r8342, r8346, MPFR_RNDN);
        mpfr_cbrt(r8348, r8347, MPFR_RNDN);
        mpfr_mul(r8349, r8348, r8348, MPFR_RNDN);
        mpfr_div(r8350, r8345, r8349, MPFR_RNDN);
        mpfr_div(r8351, r8344, r8348, MPFR_RNDN);
        mpfr_set_d(r8352, v, MPFR_RNDN);
        mpfr_div(r8353, r8352, r8347, MPFR_RNDN);
        mpfr_mul(r8354, r8351, r8353, MPFR_RNDN);
        mpfr_mul(r8355, r8350, r8354, MPFR_RNDN);
        return mpfr_get_d(r8355, MPFR_RNDN);
}

