#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 r26590 = x;
        float r26591 = 1;
        float r26592 = r26590 + r26591;
        float r26593 = r26590 / r26592;
        float r26594 = r26590 - r26591;
        float r26595 = r26592 / r26594;
        float r26596 = r26593 - r26595;
        return r26596;
}

double f_id(double x) {
        double r26597 = x;
        double r26598 = 1;
        double r26599 = r26597 + r26598;
        double r26600 = r26597 / r26599;
        double r26601 = r26597 - r26598;
        double r26602 = r26599 / r26601;
        double r26603 = r26600 - r26602;
        return r26603;
}


double f_of(float x) {
        float r26604 = -1;
        float r26605 = x;
        float r26606 = r26604 / r26605;
        float r26607 = 3;
        float r26608 = 1/3;
        float r26609 = r26607 * r26608;
        float r26610 = r26607 / r26605;
        float r26611 = r26609 + r26610;
        float r26612 = r26605 * r26605;
        float r26613 = r26604 / r26612;
        float r26614 = r26611 * r26613;
        float r26615 = fma(r26606, r26607, r26614);
        float r26616 = -1461976424.866403;
        bool r26617 = r26615 <= r26616;
        float r26618 = 1;
        float r26619 = r26605 + r26618;
        float r26620 = r26605 / r26619;
        float r26621 = r26605 - r26618;
        float r26622 = cbrt(r26621);
        float r26623 = r26619 / r26622;
        float r26624 = r26622 * r26622;
        float r26625 = r26623 / r26624;
        float r26626 = r26620 - r26625;
        float r26627 = 0.0004231168632593932;
        bool r26628 = r26615 <= r26627;
        float r26629 = r26618 + r26610;
        float r26630 = -r26618;
        float r26631 = r26630 / r26612;
        float r26632 = -r26607;
        float r26633 = r26632 / r26605;
        float r26634 = fma(r26629, r26631, r26633);
        float r26635 = fma(r26605, r26605, r26605);
        float r26636 = fma(r26619, r26635, r26619);
        float r26637 = fma(r26612, r26605, r26630);
        float r26638 = r26636 / r26637;
        float r26639 = r26620 - r26638;
        float r26640 = r26628 ? r26634 : r26639;
        float r26641 = r26617 ? r26626 : r26640;
        return r26641;
}

double f_od(double x) {
        double r26642 = -1;
        double r26643 = x;
        double r26644 = r26642 / r26643;
        double r26645 = 3;
        double r26646 = 1/3;
        double r26647 = r26645 * r26646;
        double r26648 = r26645 / r26643;
        double r26649 = r26647 + r26648;
        double r26650 = r26643 * r26643;
        double r26651 = r26642 / r26650;
        double r26652 = r26649 * r26651;
        double r26653 = fma(r26644, r26645, r26652);
        double r26654 = -1461976424.866403;
        bool r26655 = r26653 <= r26654;
        double r26656 = 1;
        double r26657 = r26643 + r26656;
        double r26658 = r26643 / r26657;
        double r26659 = r26643 - r26656;
        double r26660 = cbrt(r26659);
        double r26661 = r26657 / r26660;
        double r26662 = r26660 * r26660;
        double r26663 = r26661 / r26662;
        double r26664 = r26658 - r26663;
        double r26665 = 0.0004231168632593932;
        bool r26666 = r26653 <= r26665;
        double r26667 = r26656 + r26648;
        double r26668 = -r26656;
        double r26669 = r26668 / r26650;
        double r26670 = -r26645;
        double r26671 = r26670 / r26643;
        double r26672 = fma(r26667, r26669, r26671);
        double r26673 = fma(r26643, r26643, r26643);
        double r26674 = fma(r26657, r26673, r26657);
        double r26675 = fma(r26650, r26643, r26668);
        double r26676 = r26674 / r26675;
        double r26677 = r26658 - r26676;
        double r26678 = r26666 ? r26672 : r26677;
        double r26679 = r26655 ? r26664 : r26678;
        return r26679;
}

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 r26680, r26681, r26682, r26683, r26684, r26685, r26686;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26680);
        mpfr_init_set_str(r26681, "1", 10, MPFR_RNDN);
        mpfr_init(r26682);
        mpfr_init(r26683);
        mpfr_init(r26684);
        mpfr_init(r26685);
        mpfr_init(r26686);
}

double f_im(double x) {
        mpfr_set_d(r26680, x, MPFR_RNDN);
        ;
        mpfr_add(r26682, r26680, r26681, MPFR_RNDN);
        mpfr_div(r26683, r26680, r26682, MPFR_RNDN);
        mpfr_sub(r26684, r26680, r26681, MPFR_RNDN);
        mpfr_div(r26685, r26682, r26684, MPFR_RNDN);
        mpfr_sub(r26686, r26683, r26685, MPFR_RNDN);
        return mpfr_get_d(r26686, MPFR_RNDN);
}

static mpfr_t r26687, r26688, r26689, r26690, r26691, r26692, r26693, r26694, r26695, r26696, r26697, r26698, r26699, r26700, r26701, r26702, r26703, r26704, r26705, r26706, r26707, r26708, r26709, r26710, r26711, r26712, r26713, r26714, r26715, r26716, r26717, r26718, r26719, r26720, r26721, r26722, r26723, r26724;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26687, "-1", 10, MPFR_RNDN);
        mpfr_init(r26688);
        mpfr_init(r26689);
        mpfr_init_set_str(r26690, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26691, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26692);
        mpfr_init(r26693);
        mpfr_init(r26694);
        mpfr_init(r26695);
        mpfr_init(r26696);
        mpfr_init(r26697);
        mpfr_init(r26698);
        mpfr_init_set_str(r26699, "-1461976424.866403", 10, MPFR_RNDN);
        mpfr_init(r26700);
        mpfr_init_set_str(r26701, "1", 10, MPFR_RNDN);
        mpfr_init(r26702);
        mpfr_init(r26703);
        mpfr_init(r26704);
        mpfr_init(r26705);
        mpfr_init(r26706);
        mpfr_init(r26707);
        mpfr_init(r26708);
        mpfr_init(r26709);
        mpfr_init_set_str(r26710, "0.0004231168632593932", 10, MPFR_RNDN);
        mpfr_init(r26711);
        mpfr_init(r26712);
        mpfr_init(r26713);
        mpfr_init(r26714);
        mpfr_init(r26715);
        mpfr_init(r26716);
        mpfr_init(r26717);
        mpfr_init(r26718);
        mpfr_init(r26719);
        mpfr_init(r26720);
        mpfr_init(r26721);
        mpfr_init(r26722);
        mpfr_init(r26723);
        mpfr_init(r26724);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r26688, x, MPFR_RNDN);
        mpfr_div(r26689, r26687, r26688, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26692, r26690, r26691, MPFR_RNDN);
        mpfr_div(r26693, r26690, r26688, MPFR_RNDN);
        mpfr_add(r26694, r26692, r26693, MPFR_RNDN);
        mpfr_mul(r26695, r26688, r26688, MPFR_RNDN);
        mpfr_div(r26696, r26687, r26695, MPFR_RNDN);
        mpfr_mul(r26697, r26694, r26696, MPFR_RNDN);
        mpfr_fma(r26698, r26689, r26690, r26697, MPFR_RNDN);
        ;
        mpfr_set_si(r26700, mpfr_cmp(r26698, r26699) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r26702, r26688, r26701, MPFR_RNDN);
        mpfr_div(r26703, r26688, r26702, MPFR_RNDN);
        mpfr_sub(r26704, r26688, r26701, MPFR_RNDN);
        mpfr_cbrt(r26705, r26704, MPFR_RNDN);
        mpfr_div(r26706, r26702, r26705, MPFR_RNDN);
        mpfr_mul(r26707, r26705, r26705, MPFR_RNDN);
        mpfr_div(r26708, r26706, r26707, MPFR_RNDN);
        mpfr_sub(r26709, r26703, r26708, MPFR_RNDN);
        ;
        mpfr_set_si(r26711, mpfr_cmp(r26698, r26710) <= 0, MPFR_RNDN);
        mpfr_add(r26712, r26701, r26693, MPFR_RNDN);
        mpfr_neg(r26713, r26701, MPFR_RNDN);
        mpfr_div(r26714, r26713, r26695, MPFR_RNDN);
        mpfr_neg(r26715, r26690, MPFR_RNDN);
        mpfr_div(r26716, r26715, r26688, MPFR_RNDN);
        mpfr_fma(r26717, r26712, r26714, r26716, MPFR_RNDN);
        mpfr_fma(r26718, r26688, r26688, r26688, MPFR_RNDN);
        mpfr_fma(r26719, r26702, r26718, r26702, MPFR_RNDN);
        mpfr_fma(r26720, r26695, r26688, r26713, MPFR_RNDN);
        mpfr_div(r26721, r26719, r26720, MPFR_RNDN);
        mpfr_sub(r26722, r26703, r26721, MPFR_RNDN);
        if (mpfr_get_si(r26711, MPFR_RNDN)) { mpfr_set(r26723, r26717, MPFR_RNDN); } else { mpfr_set(r26723, r26722, MPFR_RNDN); };
        if (mpfr_get_si(r26700, MPFR_RNDN)) { mpfr_set(r26724, r26709, MPFR_RNDN); } else { mpfr_set(r26724, r26723, MPFR_RNDN); };
        return mpfr_get_d(r26724, MPFR_RNDN);
}

static mpfr_t r26725, r26726, r26727, r26728, r26729, r26730, r26731, r26732, r26733, r26734, r26735, r26736, r26737, r26738, r26739, r26740, r26741, r26742, r26743, r26744, r26745, r26746, r26747, r26748, r26749, r26750, r26751, r26752, r26753, r26754, r26755, r26756, r26757, r26758, r26759, r26760, r26761, r26762;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26725, "-1", 10, MPFR_RNDN);
        mpfr_init(r26726);
        mpfr_init(r26727);
        mpfr_init_set_str(r26728, "3", 10, MPFR_RNDN);
        mpfr_init_set_str(r26729, "1/3", 10, MPFR_RNDN);
        mpfr_init(r26730);
        mpfr_init(r26731);
        mpfr_init(r26732);
        mpfr_init(r26733);
        mpfr_init(r26734);
        mpfr_init(r26735);
        mpfr_init(r26736);
        mpfr_init_set_str(r26737, "-1461976424.866403", 10, MPFR_RNDN);
        mpfr_init(r26738);
        mpfr_init_set_str(r26739, "1", 10, MPFR_RNDN);
        mpfr_init(r26740);
        mpfr_init(r26741);
        mpfr_init(r26742);
        mpfr_init(r26743);
        mpfr_init(r26744);
        mpfr_init(r26745);
        mpfr_init(r26746);
        mpfr_init(r26747);
        mpfr_init_set_str(r26748, "0.0004231168632593932", 10, MPFR_RNDN);
        mpfr_init(r26749);
        mpfr_init(r26750);
        mpfr_init(r26751);
        mpfr_init(r26752);
        mpfr_init(r26753);
        mpfr_init(r26754);
        mpfr_init(r26755);
        mpfr_init(r26756);
        mpfr_init(r26757);
        mpfr_init(r26758);
        mpfr_init(r26759);
        mpfr_init(r26760);
        mpfr_init(r26761);
        mpfr_init(r26762);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r26726, x, MPFR_RNDN);
        mpfr_div(r26727, r26725, r26726, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r26730, r26728, r26729, MPFR_RNDN);
        mpfr_div(r26731, r26728, r26726, MPFR_RNDN);
        mpfr_add(r26732, r26730, r26731, MPFR_RNDN);
        mpfr_mul(r26733, r26726, r26726, MPFR_RNDN);
        mpfr_div(r26734, r26725, r26733, MPFR_RNDN);
        mpfr_mul(r26735, r26732, r26734, MPFR_RNDN);
        mpfr_fma(r26736, r26727, r26728, r26735, MPFR_RNDN);
        ;
        mpfr_set_si(r26738, mpfr_cmp(r26736, r26737) <= 0, MPFR_RNDN);
        ;
        mpfr_add(r26740, r26726, r26739, MPFR_RNDN);
        mpfr_div(r26741, r26726, r26740, MPFR_RNDN);
        mpfr_sub(r26742, r26726, r26739, MPFR_RNDN);
        mpfr_cbrt(r26743, r26742, MPFR_RNDN);
        mpfr_div(r26744, r26740, r26743, MPFR_RNDN);
        mpfr_mul(r26745, r26743, r26743, MPFR_RNDN);
        mpfr_div(r26746, r26744, r26745, MPFR_RNDN);
        mpfr_sub(r26747, r26741, r26746, MPFR_RNDN);
        ;
        mpfr_set_si(r26749, mpfr_cmp(r26736, r26748) <= 0, MPFR_RNDN);
        mpfr_add(r26750, r26739, r26731, MPFR_RNDN);
        mpfr_neg(r26751, r26739, MPFR_RNDN);
        mpfr_div(r26752, r26751, r26733, MPFR_RNDN);
        mpfr_neg(r26753, r26728, MPFR_RNDN);
        mpfr_div(r26754, r26753, r26726, MPFR_RNDN);
        mpfr_fma(r26755, r26750, r26752, r26754, MPFR_RNDN);
        mpfr_fma(r26756, r26726, r26726, r26726, MPFR_RNDN);
        mpfr_fma(r26757, r26740, r26756, r26740, MPFR_RNDN);
        mpfr_fma(r26758, r26733, r26726, r26751, MPFR_RNDN);
        mpfr_div(r26759, r26757, r26758, MPFR_RNDN);
        mpfr_sub(r26760, r26741, r26759, MPFR_RNDN);
        if (mpfr_get_si(r26749, MPFR_RNDN)) { mpfr_set(r26761, r26755, MPFR_RNDN); } else { mpfr_set(r26761, r26760, MPFR_RNDN); };
        if (mpfr_get_si(r26738, MPFR_RNDN)) { mpfr_set(r26762, r26747, MPFR_RNDN); } else { mpfr_set(r26762, r26761, MPFR_RNDN); };
        return mpfr_get_d(r26762, MPFR_RNDN);
}

