#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 r8508 = t1;
        float r8509 = -r8508;
        float r8510 = v;
        float r8511 = r8509 * r8510;
        float r8512 = u;
        float r8513 = r8508 + r8512;
        float r8514 = r8513 * r8513;
        float r8515 = r8511 / r8514;
        return r8515;
}

double f_id(double u, double v, double t1) {
        double r8516 = t1;
        double r8517 = -r8516;
        double r8518 = v;
        double r8519 = r8517 * r8518;
        double r8520 = u;
        double r8521 = r8516 + r8520;
        double r8522 = r8521 * r8521;
        double r8523 = r8519 / r8522;
        return r8523;
}


double f_of(float u, float v, float t1) {
        float r8524 = t1;
        float r8525 = -r8524;
        float r8526 = u;
        float r8527 = r8524 + r8526;
        float r8528 = r8525 / r8527;
        float r8529 = sqrt(r8528);
        float r8530 = v;
        float r8531 = r8530 / r8527;
        float r8532 = r8529 * r8531;
        float r8533 = r8529 * r8532;
        float r8534 = -2.811492338246317e-284;
        bool r8535 = r8533 <= r8534;
        float r8536 = r8528 * r8531;
        float r8537 = 2.196598921192166e-309;
        bool r8538 = r8533 <= r8537;
        float r8539 = r8525 * r8530;
        float r8540 = r8539 / r8527;
        float r8541 = r8540 / r8527;
        float r8542 = r8538 ? r8541 : r8536;
        float r8543 = r8535 ? r8536 : r8542;
        return r8543;
}

double f_od(double u, double v, double t1) {
        double r8544 = t1;
        double r8545 = -r8544;
        double r8546 = u;
        double r8547 = r8544 + r8546;
        double r8548 = r8545 / r8547;
        double r8549 = sqrt(r8548);
        double r8550 = v;
        double r8551 = r8550 / r8547;
        double r8552 = r8549 * r8551;
        double r8553 = r8549 * r8552;
        double r8554 = -2.811492338246317e-284;
        bool r8555 = r8553 <= r8554;
        double r8556 = r8548 * r8551;
        double r8557 = 2.196598921192166e-309;
        bool r8558 = r8553 <= r8557;
        double r8559 = r8545 * r8550;
        double r8560 = r8559 / r8547;
        double r8561 = r8560 / r8547;
        double r8562 = r8558 ? r8561 : r8556;
        double r8563 = r8555 ? r8556 : r8562;
        return r8563;
}

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 r8564, r8565, r8566, r8567, r8568, r8569, r8570, r8571;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8564);
        mpfr_init(r8565);
        mpfr_init(r8566);
        mpfr_init(r8567);
        mpfr_init(r8568);
        mpfr_init(r8569);
        mpfr_init(r8570);
        mpfr_init(r8571);
}

double f_im(double u, double v, double t1) {
        mpfr_set_d(r8564, t1, MPFR_RNDN);
        mpfr_neg(r8565, r8564, MPFR_RNDN);
        mpfr_set_d(r8566, v, MPFR_RNDN);
        mpfr_mul(r8567, r8565, r8566, MPFR_RNDN);
        mpfr_set_d(r8568, u, MPFR_RNDN);
        mpfr_add(r8569, r8564, r8568, MPFR_RNDN);
        mpfr_mul(r8570, r8569, r8569, MPFR_RNDN);
        mpfr_div(r8571, r8567, r8570, MPFR_RNDN);
        return mpfr_get_d(r8571, MPFR_RNDN);
}

static mpfr_t r8572, r8573, r8574, r8575, r8576, r8577, r8578, r8579, r8580, r8581, r8582, r8583, r8584, r8585, r8586, r8587, r8588, r8589, r8590, r8591;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8572);
        mpfr_init(r8573);
        mpfr_init(r8574);
        mpfr_init(r8575);
        mpfr_init(r8576);
        mpfr_init(r8577);
        mpfr_init(r8578);
        mpfr_init(r8579);
        mpfr_init(r8580);
        mpfr_init(r8581);
        mpfr_init_set_str(r8582, "-2.811492338246317e-284", 10, MPFR_RNDN);
        mpfr_init(r8583);
        mpfr_init(r8584);
        mpfr_init_set_str(r8585, "2.196598921192166e-309", 10, MPFR_RNDN);
        mpfr_init(r8586);
        mpfr_init(r8587);
        mpfr_init(r8588);
        mpfr_init(r8589);
        mpfr_init(r8590);
        mpfr_init(r8591);
}

double f_fm(double u, double v, double t1) {
        mpfr_set_d(r8572, t1, MPFR_RNDN);
        mpfr_neg(r8573, r8572, MPFR_RNDN);
        mpfr_set_d(r8574, u, MPFR_RNDN);
        mpfr_add(r8575, r8572, r8574, MPFR_RNDN);
        mpfr_div(r8576, r8573, r8575, MPFR_RNDN);
        mpfr_sqrt(r8577, r8576, MPFR_RNDN);
        mpfr_set_d(r8578, v, MPFR_RNDN);
        mpfr_div(r8579, r8578, r8575, MPFR_RNDN);
        mpfr_mul(r8580, r8577, r8579, MPFR_RNDN);
        mpfr_mul(r8581, r8577, r8580, MPFR_RNDN);
        ;
        mpfr_set_si(r8583, mpfr_cmp(r8581, r8582) <= 0, MPFR_RNDN);
        mpfr_mul(r8584, r8576, r8579, MPFR_RNDN);
        ;
        mpfr_set_si(r8586, mpfr_cmp(r8581, r8585) <= 0, MPFR_RNDN);
        mpfr_mul(r8587, r8573, r8578, MPFR_RNDN);
        mpfr_div(r8588, r8587, r8575, MPFR_RNDN);
        mpfr_div(r8589, r8588, r8575, MPFR_RNDN);
        if (mpfr_get_si(r8586, MPFR_RNDN)) { mpfr_set(r8590, r8589, MPFR_RNDN); } else { mpfr_set(r8590, r8584, MPFR_RNDN); };
        if (mpfr_get_si(r8583, MPFR_RNDN)) { mpfr_set(r8591, r8584, MPFR_RNDN); } else { mpfr_set(r8591, r8590, MPFR_RNDN); };
        return mpfr_get_d(r8591, MPFR_RNDN);
}

static mpfr_t r8592, r8593, r8594, r8595, r8596, r8597, r8598, r8599, r8600, r8601, r8602, r8603, r8604, r8605, r8606, r8607, r8608, r8609, r8610, r8611;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8592);
        mpfr_init(r8593);
        mpfr_init(r8594);
        mpfr_init(r8595);
        mpfr_init(r8596);
        mpfr_init(r8597);
        mpfr_init(r8598);
        mpfr_init(r8599);
        mpfr_init(r8600);
        mpfr_init(r8601);
        mpfr_init_set_str(r8602, "-2.811492338246317e-284", 10, MPFR_RNDN);
        mpfr_init(r8603);
        mpfr_init(r8604);
        mpfr_init_set_str(r8605, "2.196598921192166e-309", 10, MPFR_RNDN);
        mpfr_init(r8606);
        mpfr_init(r8607);
        mpfr_init(r8608);
        mpfr_init(r8609);
        mpfr_init(r8610);
        mpfr_init(r8611);
}

double f_dm(double u, double v, double t1) {
        mpfr_set_d(r8592, t1, MPFR_RNDN);
        mpfr_neg(r8593, r8592, MPFR_RNDN);
        mpfr_set_d(r8594, u, MPFR_RNDN);
        mpfr_add(r8595, r8592, r8594, MPFR_RNDN);
        mpfr_div(r8596, r8593, r8595, MPFR_RNDN);
        mpfr_sqrt(r8597, r8596, MPFR_RNDN);
        mpfr_set_d(r8598, v, MPFR_RNDN);
        mpfr_div(r8599, r8598, r8595, MPFR_RNDN);
        mpfr_mul(r8600, r8597, r8599, MPFR_RNDN);
        mpfr_mul(r8601, r8597, r8600, MPFR_RNDN);
        ;
        mpfr_set_si(r8603, mpfr_cmp(r8601, r8602) <= 0, MPFR_RNDN);
        mpfr_mul(r8604, r8596, r8599, MPFR_RNDN);
        ;
        mpfr_set_si(r8606, mpfr_cmp(r8601, r8605) <= 0, MPFR_RNDN);
        mpfr_mul(r8607, r8593, r8598, MPFR_RNDN);
        mpfr_div(r8608, r8607, r8595, MPFR_RNDN);
        mpfr_div(r8609, r8608, r8595, MPFR_RNDN);
        if (mpfr_get_si(r8606, MPFR_RNDN)) { mpfr_set(r8610, r8609, MPFR_RNDN); } else { mpfr_set(r8610, r8604, MPFR_RNDN); };
        if (mpfr_get_si(r8603, MPFR_RNDN)) { mpfr_set(r8611, r8604, MPFR_RNDN); } else { mpfr_set(r8611, r8610, MPFR_RNDN); };
        return mpfr_get_d(r8611, MPFR_RNDN);
}

