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

char *name = "Asymptote C";

double f_if(float x) {
        float r10507 = x;
        float r10508 = 1;
        float r10509 = r10507 + r10508;
        float r10510 = r10507 / r10509;
        float r10511 = r10507 - r10508;
        float r10512 = r10509 / r10511;
        float r10513 = r10510 - r10512;
        return r10513;
}

double f_id(double x) {
        double r10514 = x;
        double r10515 = 1;
        double r10516 = r10514 + r10515;
        double r10517 = r10514 / r10516;
        double r10518 = r10514 - r10515;
        double r10519 = r10516 / r10518;
        double r10520 = r10517 - r10519;
        return r10520;
}


double f_of(float x) {
        float r10521 = 3;
        float r10522 = x;
        float r10523 = r10521 / r10522;
        float r10524 = 1;
        float r10525 = r10523 + r10524;
        float r10526 = -r10524;
        float r10527 = r10522 * r10522;
        float r10528 = r10526 / r10527;
        float r10529 = -r10521;
        float r10530 = r10529 / r10522;
        float r10531 = fma(r10525, r10528, r10530);
        float r10532 = -4.507052863629578e-19;
        bool r10533 = r10531 <= r10532;
        float r10534 = r10524 + r10522;
        float r10535 = r10522 / r10534;
        float r10536 = r10522 - r10524;
        float r10537 = r10534 / r10536;
        float r10538 = exp(r10537);
        float r10539 = log(r10538);
        float r10540 = r10535 - r10539;
        float r10541 = 3.5277422585388602e-06;
        bool r10542 = r10531 <= r10541;
        float r10543 = r10526 / r10536;
        float r10544 = fma(r10534, r10543, r10535);
        float r10545 = r10542 ? r10531 : r10544;
        float r10546 = r10533 ? r10540 : r10545;
        return r10546;
}

double f_od(double x) {
        double r10547 = 3;
        double r10548 = x;
        double r10549 = r10547 / r10548;
        double r10550 = 1;
        double r10551 = r10549 + r10550;
        double r10552 = -r10550;
        double r10553 = r10548 * r10548;
        double r10554 = r10552 / r10553;
        double r10555 = -r10547;
        double r10556 = r10555 / r10548;
        double r10557 = fma(r10551, r10554, r10556);
        double r10558 = -4.507052863629578e-19;
        bool r10559 = r10557 <= r10558;
        double r10560 = r10550 + r10548;
        double r10561 = r10548 / r10560;
        double r10562 = r10548 - r10550;
        double r10563 = r10560 / r10562;
        double r10564 = exp(r10563);
        double r10565 = log(r10564);
        double r10566 = r10561 - r10565;
        double r10567 = 3.5277422585388602e-06;
        bool r10568 = r10557 <= r10567;
        double r10569 = r10552 / r10562;
        double r10570 = fma(r10560, r10569, r10561);
        double r10571 = r10568 ? r10557 : r10570;
        double r10572 = r10559 ? r10566 : r10571;
        return r10572;
}

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 r10573, r10574, r10575, r10576, r10577, r10578, r10579;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10573);
        mpfr_init_set_str(r10574, "1", 10, MPFR_RNDN);
        mpfr_init(r10575);
        mpfr_init(r10576);
        mpfr_init(r10577);
        mpfr_init(r10578);
        mpfr_init(r10579);
}

double f_im(double x) {
        mpfr_set_d(r10573, x, MPFR_RNDN);
        ;
        mpfr_add(r10575, r10573, r10574, MPFR_RNDN);
        mpfr_div(r10576, r10573, r10575, MPFR_RNDN);
        mpfr_sub(r10577, r10573, r10574, MPFR_RNDN);
        mpfr_div(r10578, r10575, r10577, MPFR_RNDN);
        mpfr_sub(r10579, r10576, r10578, MPFR_RNDN);
        return mpfr_get_d(r10579, MPFR_RNDN);
}

static mpfr_t r10580, r10581, r10582, r10583, r10584, r10585, r10586, r10587, r10588, r10589, r10590, r10591, r10592, r10593, r10594, r10595, r10596, r10597, r10598, r10599, r10600, r10601, r10602, r10603, r10604, r10605;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10580, "3", 10, MPFR_RNDN);
        mpfr_init(r10581);
        mpfr_init(r10582);
        mpfr_init_set_str(r10583, "1", 10, MPFR_RNDN);
        mpfr_init(r10584);
        mpfr_init(r10585);
        mpfr_init(r10586);
        mpfr_init(r10587);
        mpfr_init(r10588);
        mpfr_init(r10589);
        mpfr_init(r10590);
        mpfr_init_set_str(r10591, "-4.507052863629578e-19", 10, MPFR_RNDN);
        mpfr_init(r10592);
        mpfr_init(r10593);
        mpfr_init(r10594);
        mpfr_init(r10595);
        mpfr_init(r10596);
        mpfr_init(r10597);
        mpfr_init(r10598);
        mpfr_init(r10599);
        mpfr_init_set_str(r10600, "3.5277422585388602e-06", 10, MPFR_RNDN);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
        mpfr_init(r10605);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10581, x, MPFR_RNDN);
        mpfr_div(r10582, r10580, r10581, MPFR_RNDN);
        ;
        mpfr_add(r10584, r10582, r10583, MPFR_RNDN);
        mpfr_neg(r10585, r10583, MPFR_RNDN);
        mpfr_mul(r10586, r10581, r10581, MPFR_RNDN);
        mpfr_div(r10587, r10585, r10586, MPFR_RNDN);
        mpfr_neg(r10588, r10580, MPFR_RNDN);
        mpfr_div(r10589, r10588, r10581, MPFR_RNDN);
        mpfr_fma(r10590, r10584, r10587, r10589, MPFR_RNDN);
        ;
        mpfr_set_si(r10592, mpfr_cmp(r10590, r10591) <= 0, MPFR_RNDN);
        mpfr_add(r10593, r10583, r10581, MPFR_RNDN);
        mpfr_div(r10594, r10581, r10593, MPFR_RNDN);
        mpfr_sub(r10595, r10581, r10583, MPFR_RNDN);
        mpfr_div(r10596, r10593, r10595, MPFR_RNDN);
        mpfr_exp(r10597, r10596, MPFR_RNDN);
        mpfr_log(r10598, r10597, MPFR_RNDN);
        mpfr_sub(r10599, r10594, r10598, MPFR_RNDN);
        ;
        mpfr_set_si(r10601, mpfr_cmp(r10590, r10600) <= 0, MPFR_RNDN);
        mpfr_div(r10602, r10585, r10595, MPFR_RNDN);
        mpfr_fma(r10603, r10593, r10602, r10594, MPFR_RNDN);
        if (mpfr_get_si(r10601, MPFR_RNDN)) { mpfr_set(r10604, r10590, MPFR_RNDN); } else { mpfr_set(r10604, r10603, MPFR_RNDN); };
        if (mpfr_get_si(r10592, MPFR_RNDN)) { mpfr_set(r10605, r10599, MPFR_RNDN); } else { mpfr_set(r10605, r10604, MPFR_RNDN); };
        return mpfr_get_d(r10605, MPFR_RNDN);
}

static mpfr_t r10606, r10607, r10608, r10609, r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10606, "3", 10, MPFR_RNDN);
        mpfr_init(r10607);
        mpfr_init(r10608);
        mpfr_init_set_str(r10609, "1", 10, MPFR_RNDN);
        mpfr_init(r10610);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init(r10615);
        mpfr_init(r10616);
        mpfr_init_set_str(r10617, "-4.507052863629578e-19", 10, MPFR_RNDN);
        mpfr_init(r10618);
        mpfr_init(r10619);
        mpfr_init(r10620);
        mpfr_init(r10621);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init_set_str(r10626, "3.5277422585388602e-06", 10, MPFR_RNDN);
        mpfr_init(r10627);
        mpfr_init(r10628);
        mpfr_init(r10629);
        mpfr_init(r10630);
        mpfr_init(r10631);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10607, x, MPFR_RNDN);
        mpfr_div(r10608, r10606, r10607, MPFR_RNDN);
        ;
        mpfr_add(r10610, r10608, r10609, MPFR_RNDN);
        mpfr_neg(r10611, r10609, MPFR_RNDN);
        mpfr_mul(r10612, r10607, r10607, MPFR_RNDN);
        mpfr_div(r10613, r10611, r10612, MPFR_RNDN);
        mpfr_neg(r10614, r10606, MPFR_RNDN);
        mpfr_div(r10615, r10614, r10607, MPFR_RNDN);
        mpfr_fma(r10616, r10610, r10613, r10615, MPFR_RNDN);
        ;
        mpfr_set_si(r10618, mpfr_cmp(r10616, r10617) <= 0, MPFR_RNDN);
        mpfr_add(r10619, r10609, r10607, MPFR_RNDN);
        mpfr_div(r10620, r10607, r10619, MPFR_RNDN);
        mpfr_sub(r10621, r10607, r10609, MPFR_RNDN);
        mpfr_div(r10622, r10619, r10621, MPFR_RNDN);
        mpfr_exp(r10623, r10622, MPFR_RNDN);
        mpfr_log(r10624, r10623, MPFR_RNDN);
        mpfr_sub(r10625, r10620, r10624, MPFR_RNDN);
        ;
        mpfr_set_si(r10627, mpfr_cmp(r10616, r10626) <= 0, MPFR_RNDN);
        mpfr_div(r10628, r10611, r10621, MPFR_RNDN);
        mpfr_fma(r10629, r10619, r10628, r10620, MPFR_RNDN);
        if (mpfr_get_si(r10627, MPFR_RNDN)) { mpfr_set(r10630, r10616, MPFR_RNDN); } else { mpfr_set(r10630, r10629, MPFR_RNDN); };
        if (mpfr_get_si(r10618, MPFR_RNDN)) { mpfr_set(r10631, r10625, MPFR_RNDN); } else { mpfr_set(r10631, r10630, MPFR_RNDN); };
        return mpfr_get_d(r10631, MPFR_RNDN);
}

