#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 r10467 = x;
        float r10468 = 1;
        float r10469 = r10467 + r10468;
        float r10470 = r10467 / r10469;
        float r10471 = r10467 - r10468;
        float r10472 = r10469 / r10471;
        float r10473 = r10470 - r10472;
        return r10473;
}

double f_id(double x) {
        double r10474 = x;
        double r10475 = 1;
        double r10476 = r10474 + r10475;
        double r10477 = r10474 / r10476;
        double r10478 = r10474 - r10475;
        double r10479 = r10476 / r10478;
        double r10480 = r10477 - r10479;
        return r10480;
}


double f_of(float x) {
        float r10481 = 3;
        float r10482 = -r10481;
        float r10483 = x;
        float r10484 = r10482 / r10483;
        float r10485 = 1;
        float r10486 = r10481 / r10483;
        float r10487 = r10485 + r10486;
        float r10488 = r10483 * r10483;
        float r10489 = r10487 / r10488;
        float r10490 = r10484 - r10489;
        float r10491 = -1.0289384793425094e-13;
        bool r10492 = r10490 <= r10491;
        float r10493 = r10485 + r10483;
        float r10494 = r10483 / r10493;
        float r10495 = r10483 - r10485;
        float r10496 = r10493 / r10495;
        float r10497 = r10494 - r10496;
        float r10498 = exp(r10497);
        float r10499 = log(r10498);
        float r10500 = 1.0998023011309302e-14;
        bool r10501 = r10490 <= r10500;
        float r10502 = r10493 - r10488;
        float r10503 = r10502 * r10493;
        float r10504 = r10488 * r10488;
        float r10505 = r10503 + r10504;
        float r10506 = -r10483;
        float r10507 = r10506 + r10504;
        float r10508 = r10505 * r10507;
        float r10509 = pow(r10493, r10481);
        float r10510 = pow(r10488, r10481);
        float r10511 = r10509 + r10510;
        float r10512 = r10493 * r10493;
        float r10513 = r10511 * r10512;
        float r10514 = r10508 - r10513;
        float r10515 = pow(r10483, r10481);
        float r10516 = r10515 - r10485;
        float r10517 = r10493 * r10516;
        float r10518 = r10517 * r10505;
        float r10519 = r10514 / r10518;
        float r10520 = r10501 ? r10490 : r10519;
        float r10521 = r10492 ? r10499 : r10520;
        return r10521;
}

double f_od(double x) {
        double r10522 = 3;
        double r10523 = -r10522;
        double r10524 = x;
        double r10525 = r10523 / r10524;
        double r10526 = 1;
        double r10527 = r10522 / r10524;
        double r10528 = r10526 + r10527;
        double r10529 = r10524 * r10524;
        double r10530 = r10528 / r10529;
        double r10531 = r10525 - r10530;
        double r10532 = -1.0289384793425094e-13;
        bool r10533 = r10531 <= r10532;
        double r10534 = r10526 + r10524;
        double r10535 = r10524 / r10534;
        double r10536 = r10524 - r10526;
        double r10537 = r10534 / r10536;
        double r10538 = r10535 - r10537;
        double r10539 = exp(r10538);
        double r10540 = log(r10539);
        double r10541 = 1.0998023011309302e-14;
        bool r10542 = r10531 <= r10541;
        double r10543 = r10534 - r10529;
        double r10544 = r10543 * r10534;
        double r10545 = r10529 * r10529;
        double r10546 = r10544 + r10545;
        double r10547 = -r10524;
        double r10548 = r10547 + r10545;
        double r10549 = r10546 * r10548;
        double r10550 = pow(r10534, r10522);
        double r10551 = pow(r10529, r10522);
        double r10552 = r10550 + r10551;
        double r10553 = r10534 * r10534;
        double r10554 = r10552 * r10553;
        double r10555 = r10549 - r10554;
        double r10556 = pow(r10524, r10522);
        double r10557 = r10556 - r10526;
        double r10558 = r10534 * r10557;
        double r10559 = r10558 * r10546;
        double r10560 = r10555 / r10559;
        double r10561 = r10542 ? r10531 : r10560;
        double r10562 = r10533 ? r10540 : r10561;
        return r10562;
}

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 r10563, r10564, r10565, r10566, r10567, r10568, r10569;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10563);
        mpfr_init_set_str(r10564, "1", 10, MPFR_RNDN);
        mpfr_init(r10565);
        mpfr_init(r10566);
        mpfr_init(r10567);
        mpfr_init(r10568);
        mpfr_init(r10569);
}

double f_im(double x) {
        mpfr_set_d(r10563, x, MPFR_RNDN);
        ;
        mpfr_add(r10565, r10563, r10564, MPFR_RNDN);
        mpfr_div(r10566, r10563, r10565, MPFR_RNDN);
        mpfr_sub(r10567, r10563, r10564, MPFR_RNDN);
        mpfr_div(r10568, r10565, r10567, MPFR_RNDN);
        mpfr_sub(r10569, r10566, r10568, MPFR_RNDN);
        return mpfr_get_d(r10569, MPFR_RNDN);
}

static mpfr_t r10570, r10571, r10572, r10573, r10574, r10575, r10576, r10577, r10578, r10579, 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, r10606, r10607, r10608, r10609, r10610;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10570, "3", 10, MPFR_RNDN);
        mpfr_init(r10571);
        mpfr_init(r10572);
        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);
        mpfr_init_set_str(r10580, "-1.0289384793425094e-13", 10, MPFR_RNDN);
        mpfr_init(r10581);
        mpfr_init(r10582);
        mpfr_init(r10583);
        mpfr_init(r10584);
        mpfr_init(r10585);
        mpfr_init(r10586);
        mpfr_init(r10587);
        mpfr_init(r10588);
        mpfr_init_set_str(r10589, "1.0998023011309302e-14", 10, MPFR_RNDN);
        mpfr_init(r10590);
        mpfr_init(r10591);
        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(r10600);
        mpfr_init(r10601);
        mpfr_init(r10602);
        mpfr_init(r10603);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init(r10606);
        mpfr_init(r10607);
        mpfr_init(r10608);
        mpfr_init(r10609);
        mpfr_init(r10610);
}

double f_fm(double x) {
        ;
        mpfr_neg(r10571, r10570, MPFR_RNDN);
        mpfr_set_d(r10572, x, MPFR_RNDN);
        mpfr_div(r10573, r10571, r10572, MPFR_RNDN);
        ;
        mpfr_div(r10575, r10570, r10572, MPFR_RNDN);
        mpfr_add(r10576, r10574, r10575, MPFR_RNDN);
        mpfr_mul(r10577, r10572, r10572, MPFR_RNDN);
        mpfr_div(r10578, r10576, r10577, MPFR_RNDN);
        mpfr_sub(r10579, r10573, r10578, MPFR_RNDN);
        ;
        mpfr_set_si(r10581, mpfr_cmp(r10579, r10580) <= 0, MPFR_RNDN);
        mpfr_add(r10582, r10574, r10572, MPFR_RNDN);
        mpfr_div(r10583, r10572, r10582, MPFR_RNDN);
        mpfr_sub(r10584, r10572, r10574, MPFR_RNDN);
        mpfr_div(r10585, r10582, r10584, MPFR_RNDN);
        mpfr_sub(r10586, r10583, r10585, MPFR_RNDN);
        mpfr_exp(r10587, r10586, MPFR_RNDN);
        mpfr_log(r10588, r10587, MPFR_RNDN);
        ;
        mpfr_set_si(r10590, mpfr_cmp(r10579, r10589) <= 0, MPFR_RNDN);
        mpfr_sub(r10591, r10582, r10577, MPFR_RNDN);
        mpfr_mul(r10592, r10591, r10582, MPFR_RNDN);
        mpfr_mul(r10593, r10577, r10577, MPFR_RNDN);
        mpfr_add(r10594, r10592, r10593, MPFR_RNDN);
        mpfr_neg(r10595, r10572, MPFR_RNDN);
        mpfr_add(r10596, r10595, r10593, MPFR_RNDN);
        mpfr_mul(r10597, r10594, r10596, MPFR_RNDN);
        mpfr_pow(r10598, r10582, r10570, MPFR_RNDN);
        mpfr_pow(r10599, r10577, r10570, MPFR_RNDN);
        mpfr_add(r10600, r10598, r10599, MPFR_RNDN);
        mpfr_mul(r10601, r10582, r10582, MPFR_RNDN);
        mpfr_mul(r10602, r10600, r10601, MPFR_RNDN);
        mpfr_sub(r10603, r10597, r10602, MPFR_RNDN);
        mpfr_pow(r10604, r10572, r10570, MPFR_RNDN);
        mpfr_sub(r10605, r10604, r10574, MPFR_RNDN);
        mpfr_mul(r10606, r10582, r10605, MPFR_RNDN);
        mpfr_mul(r10607, r10606, r10594, MPFR_RNDN);
        mpfr_div(r10608, r10603, r10607, MPFR_RNDN);
        if (mpfr_get_si(r10590, MPFR_RNDN)) { mpfr_set(r10609, r10579, MPFR_RNDN); } else { mpfr_set(r10609, r10608, MPFR_RNDN); };
        if (mpfr_get_si(r10581, MPFR_RNDN)) { mpfr_set(r10610, r10588, MPFR_RNDN); } else { mpfr_set(r10610, r10609, MPFR_RNDN); };
        return mpfr_get_d(r10610, MPFR_RNDN);
}

static mpfr_t r10611, r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631, r10632, r10633, r10634, r10635, r10636, r10637, r10638, r10639, r10640, r10641, r10642, r10643, r10644, r10645, r10646, r10647, r10648, r10649, r10650, r10651;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10611, "3", 10, MPFR_RNDN);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init_set_str(r10615, "1", 10, MPFR_RNDN);
        mpfr_init(r10616);
        mpfr_init(r10617);
        mpfr_init(r10618);
        mpfr_init(r10619);
        mpfr_init(r10620);
        mpfr_init_set_str(r10621, "-1.0289384793425094e-13", 10, MPFR_RNDN);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init(r10626);
        mpfr_init(r10627);
        mpfr_init(r10628);
        mpfr_init(r10629);
        mpfr_init_set_str(r10630, "1.0998023011309302e-14", 10, MPFR_RNDN);
        mpfr_init(r10631);
        mpfr_init(r10632);
        mpfr_init(r10633);
        mpfr_init(r10634);
        mpfr_init(r10635);
        mpfr_init(r10636);
        mpfr_init(r10637);
        mpfr_init(r10638);
        mpfr_init(r10639);
        mpfr_init(r10640);
        mpfr_init(r10641);
        mpfr_init(r10642);
        mpfr_init(r10643);
        mpfr_init(r10644);
        mpfr_init(r10645);
        mpfr_init(r10646);
        mpfr_init(r10647);
        mpfr_init(r10648);
        mpfr_init(r10649);
        mpfr_init(r10650);
        mpfr_init(r10651);
}

double f_dm(double x) {
        ;
        mpfr_neg(r10612, r10611, MPFR_RNDN);
        mpfr_set_d(r10613, x, MPFR_RNDN);
        mpfr_div(r10614, r10612, r10613, MPFR_RNDN);
        ;
        mpfr_div(r10616, r10611, r10613, MPFR_RNDN);
        mpfr_add(r10617, r10615, r10616, MPFR_RNDN);
        mpfr_mul(r10618, r10613, r10613, MPFR_RNDN);
        mpfr_div(r10619, r10617, r10618, MPFR_RNDN);
        mpfr_sub(r10620, r10614, r10619, MPFR_RNDN);
        ;
        mpfr_set_si(r10622, mpfr_cmp(r10620, r10621) <= 0, MPFR_RNDN);
        mpfr_add(r10623, r10615, r10613, MPFR_RNDN);
        mpfr_div(r10624, r10613, r10623, MPFR_RNDN);
        mpfr_sub(r10625, r10613, r10615, MPFR_RNDN);
        mpfr_div(r10626, r10623, r10625, MPFR_RNDN);
        mpfr_sub(r10627, r10624, r10626, MPFR_RNDN);
        mpfr_exp(r10628, r10627, MPFR_RNDN);
        mpfr_log(r10629, r10628, MPFR_RNDN);
        ;
        mpfr_set_si(r10631, mpfr_cmp(r10620, r10630) <= 0, MPFR_RNDN);
        mpfr_sub(r10632, r10623, r10618, MPFR_RNDN);
        mpfr_mul(r10633, r10632, r10623, MPFR_RNDN);
        mpfr_mul(r10634, r10618, r10618, MPFR_RNDN);
        mpfr_add(r10635, r10633, r10634, MPFR_RNDN);
        mpfr_neg(r10636, r10613, MPFR_RNDN);
        mpfr_add(r10637, r10636, r10634, MPFR_RNDN);
        mpfr_mul(r10638, r10635, r10637, MPFR_RNDN);
        mpfr_pow(r10639, r10623, r10611, MPFR_RNDN);
        mpfr_pow(r10640, r10618, r10611, MPFR_RNDN);
        mpfr_add(r10641, r10639, r10640, MPFR_RNDN);
        mpfr_mul(r10642, r10623, r10623, MPFR_RNDN);
        mpfr_mul(r10643, r10641, r10642, MPFR_RNDN);
        mpfr_sub(r10644, r10638, r10643, MPFR_RNDN);
        mpfr_pow(r10645, r10613, r10611, MPFR_RNDN);
        mpfr_sub(r10646, r10645, r10615, MPFR_RNDN);
        mpfr_mul(r10647, r10623, r10646, MPFR_RNDN);
        mpfr_mul(r10648, r10647, r10635, MPFR_RNDN);
        mpfr_div(r10649, r10644, r10648, MPFR_RNDN);
        if (mpfr_get_si(r10631, MPFR_RNDN)) { mpfr_set(r10650, r10620, MPFR_RNDN); } else { mpfr_set(r10650, r10649, MPFR_RNDN); };
        if (mpfr_get_si(r10622, MPFR_RNDN)) { mpfr_set(r10651, r10629, MPFR_RNDN); } else { mpfr_set(r10651, r10650, MPFR_RNDN); };
        return mpfr_get_d(r10651, MPFR_RNDN);
}

