#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 r26726 = x;
        float r26727 = 1;
        float r26728 = r26726 + r26727;
        float r26729 = r26726 / r26728;
        float r26730 = r26726 - r26727;
        float r26731 = r26728 / r26730;
        float r26732 = r26729 - r26731;
        return r26732;
}

double f_id(double x) {
        double r26733 = x;
        double r26734 = 1;
        double r26735 = r26733 + r26734;
        double r26736 = r26733 / r26735;
        double r26737 = r26733 - r26734;
        double r26738 = r26735 / r26737;
        double r26739 = r26736 - r26738;
        return r26739;
}


double f_of(float x) {
        float r26740 = 1;
        float r26741 = 3;
        float r26742 = x;
        float r26743 = r26741 / r26742;
        float r26744 = r26740 + r26743;
        float r26745 = -r26740;
        float r26746 = r26742 * r26742;
        float r26747 = r26745 / r26746;
        float r26748 = -r26743;
        float r26749 = fma(r26744, r26747, r26748);
        float r26750 = -1.2499307111724292e-06;
        bool r26751 = r26749 <= r26750;
        float r26752 = r26740 + r26742;
        float r26753 = r26742 / r26752;
        float r26754 = r26742 - r26740;
        float r26755 = r26752 / r26754;
        float r26756 = r26753 - r26755;
        float r26757 = exp(r26756);
        float r26758 = log(r26757);
        float r26759 = 0.00015916572654227904;
        bool r26760 = r26749 <= r26759;
        float r26761 = r26742 + r26740;
        float r26762 = r26742 / r26761;
        float r26763 = r26761 / r26754;
        float r26764 = r26762 - r26763;
        float r26765 = log(r26764);
        float r26766 = exp(r26765);
        float r26767 = r26760 ? r26749 : r26766;
        float r26768 = r26751 ? r26758 : r26767;
        return r26768;
}

double f_od(double x) {
        double r26769 = 1;
        double r26770 = 3;
        double r26771 = x;
        double r26772 = r26770 / r26771;
        double r26773 = r26769 + r26772;
        double r26774 = -r26769;
        double r26775 = r26771 * r26771;
        double r26776 = r26774 / r26775;
        double r26777 = -r26772;
        double r26778 = fma(r26773, r26776, r26777);
        double r26779 = -1.2499307111724292e-06;
        bool r26780 = r26778 <= r26779;
        double r26781 = r26769 + r26771;
        double r26782 = r26771 / r26781;
        double r26783 = r26771 - r26769;
        double r26784 = r26781 / r26783;
        double r26785 = r26782 - r26784;
        double r26786 = exp(r26785);
        double r26787 = log(r26786);
        double r26788 = 0.00015916572654227904;
        bool r26789 = r26778 <= r26788;
        double r26790 = r26771 + r26769;
        double r26791 = r26771 / r26790;
        double r26792 = r26790 / r26783;
        double r26793 = r26791 - r26792;
        double r26794 = log(r26793);
        double r26795 = exp(r26794);
        double r26796 = r26789 ? r26778 : r26795;
        double r26797 = r26780 ? r26787 : r26796;
        return r26797;
}

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 r26798, r26799, r26800, r26801, r26802, r26803, r26804;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26798);
        mpfr_init_set_str(r26799, "1", 10, MPFR_RNDN);
        mpfr_init(r26800);
        mpfr_init(r26801);
        mpfr_init(r26802);
        mpfr_init(r26803);
        mpfr_init(r26804);
}

double f_im(double x) {
        mpfr_set_d(r26798, x, MPFR_RNDN);
        ;
        mpfr_add(r26800, r26798, r26799, MPFR_RNDN);
        mpfr_div(r26801, r26798, r26800, MPFR_RNDN);
        mpfr_sub(r26802, r26798, r26799, MPFR_RNDN);
        mpfr_div(r26803, r26800, r26802, MPFR_RNDN);
        mpfr_sub(r26804, r26801, r26803, MPFR_RNDN);
        return mpfr_get_d(r26804, MPFR_RNDN);
}

static mpfr_t r26805, r26806, r26807, r26808, r26809, r26810, r26811, r26812, r26813, r26814, r26815, r26816, r26817, r26818, r26819, r26820, r26821, r26822, r26823, r26824, r26825, r26826, r26827, r26828, r26829, r26830, r26831, r26832, r26833;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26805, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26806, "3", 10, MPFR_RNDN);
        mpfr_init(r26807);
        mpfr_init(r26808);
        mpfr_init(r26809);
        mpfr_init(r26810);
        mpfr_init(r26811);
        mpfr_init(r26812);
        mpfr_init(r26813);
        mpfr_init(r26814);
        mpfr_init_set_str(r26815, "-1.2499307111724292e-06", 10, MPFR_RNDN);
        mpfr_init(r26816);
        mpfr_init(r26817);
        mpfr_init(r26818);
        mpfr_init(r26819);
        mpfr_init(r26820);
        mpfr_init(r26821);
        mpfr_init(r26822);
        mpfr_init(r26823);
        mpfr_init_set_str(r26824, "0.00015916572654227904", 10, MPFR_RNDN);
        mpfr_init(r26825);
        mpfr_init(r26826);
        mpfr_init(r26827);
        mpfr_init(r26828);
        mpfr_init(r26829);
        mpfr_init(r26830);
        mpfr_init(r26831);
        mpfr_init(r26832);
        mpfr_init(r26833);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r26807, x, MPFR_RNDN);
        mpfr_div(r26808, r26806, r26807, MPFR_RNDN);
        mpfr_add(r26809, r26805, r26808, MPFR_RNDN);
        mpfr_neg(r26810, r26805, MPFR_RNDN);
        mpfr_mul(r26811, r26807, r26807, MPFR_RNDN);
        mpfr_div(r26812, r26810, r26811, MPFR_RNDN);
        mpfr_neg(r26813, r26808, MPFR_RNDN);
        mpfr_fma(r26814, r26809, r26812, r26813, MPFR_RNDN);
        ;
        mpfr_set_si(r26816, mpfr_cmp(r26814, r26815) <= 0, MPFR_RNDN);
        mpfr_add(r26817, r26805, r26807, MPFR_RNDN);
        mpfr_div(r26818, r26807, r26817, MPFR_RNDN);
        mpfr_sub(r26819, r26807, r26805, MPFR_RNDN);
        mpfr_div(r26820, r26817, r26819, MPFR_RNDN);
        mpfr_sub(r26821, r26818, r26820, MPFR_RNDN);
        mpfr_exp(r26822, r26821, MPFR_RNDN);
        mpfr_log(r26823, r26822, MPFR_RNDN);
        ;
        mpfr_set_si(r26825, mpfr_cmp(r26814, r26824) <= 0, MPFR_RNDN);
        mpfr_add(r26826, r26807, r26805, MPFR_RNDN);
        mpfr_div(r26827, r26807, r26826, MPFR_RNDN);
        mpfr_div(r26828, r26826, r26819, MPFR_RNDN);
        mpfr_sub(r26829, r26827, r26828, MPFR_RNDN);
        mpfr_log(r26830, r26829, MPFR_RNDN);
        mpfr_exp(r26831, r26830, MPFR_RNDN);
        if (mpfr_get_si(r26825, MPFR_RNDN)) { mpfr_set(r26832, r26814, MPFR_RNDN); } else { mpfr_set(r26832, r26831, MPFR_RNDN); };
        if (mpfr_get_si(r26816, MPFR_RNDN)) { mpfr_set(r26833, r26823, MPFR_RNDN); } else { mpfr_set(r26833, r26832, MPFR_RNDN); };
        return mpfr_get_d(r26833, MPFR_RNDN);
}

static mpfr_t r26834, r26835, r26836, r26837, r26838, r26839, r26840, r26841, r26842, r26843, r26844, r26845, r26846, r26847, r26848, r26849, r26850, r26851, r26852, r26853, r26854, r26855, r26856, r26857, r26858, r26859, r26860, r26861, r26862;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26834, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26835, "3", 10, MPFR_RNDN);
        mpfr_init(r26836);
        mpfr_init(r26837);
        mpfr_init(r26838);
        mpfr_init(r26839);
        mpfr_init(r26840);
        mpfr_init(r26841);
        mpfr_init(r26842);
        mpfr_init(r26843);
        mpfr_init_set_str(r26844, "-1.2499307111724292e-06", 10, MPFR_RNDN);
        mpfr_init(r26845);
        mpfr_init(r26846);
        mpfr_init(r26847);
        mpfr_init(r26848);
        mpfr_init(r26849);
        mpfr_init(r26850);
        mpfr_init(r26851);
        mpfr_init(r26852);
        mpfr_init_set_str(r26853, "0.00015916572654227904", 10, MPFR_RNDN);
        mpfr_init(r26854);
        mpfr_init(r26855);
        mpfr_init(r26856);
        mpfr_init(r26857);
        mpfr_init(r26858);
        mpfr_init(r26859);
        mpfr_init(r26860);
        mpfr_init(r26861);
        mpfr_init(r26862);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r26836, x, MPFR_RNDN);
        mpfr_div(r26837, r26835, r26836, MPFR_RNDN);
        mpfr_add(r26838, r26834, r26837, MPFR_RNDN);
        mpfr_neg(r26839, r26834, MPFR_RNDN);
        mpfr_mul(r26840, r26836, r26836, MPFR_RNDN);
        mpfr_div(r26841, r26839, r26840, MPFR_RNDN);
        mpfr_neg(r26842, r26837, MPFR_RNDN);
        mpfr_fma(r26843, r26838, r26841, r26842, MPFR_RNDN);
        ;
        mpfr_set_si(r26845, mpfr_cmp(r26843, r26844) <= 0, MPFR_RNDN);
        mpfr_add(r26846, r26834, r26836, MPFR_RNDN);
        mpfr_div(r26847, r26836, r26846, MPFR_RNDN);
        mpfr_sub(r26848, r26836, r26834, MPFR_RNDN);
        mpfr_div(r26849, r26846, r26848, MPFR_RNDN);
        mpfr_sub(r26850, r26847, r26849, MPFR_RNDN);
        mpfr_exp(r26851, r26850, MPFR_RNDN);
        mpfr_log(r26852, r26851, MPFR_RNDN);
        ;
        mpfr_set_si(r26854, mpfr_cmp(r26843, r26853) <= 0, MPFR_RNDN);
        mpfr_add(r26855, r26836, r26834, MPFR_RNDN);
        mpfr_div(r26856, r26836, r26855, MPFR_RNDN);
        mpfr_div(r26857, r26855, r26848, MPFR_RNDN);
        mpfr_sub(r26858, r26856, r26857, MPFR_RNDN);
        mpfr_log(r26859, r26858, MPFR_RNDN);
        mpfr_exp(r26860, r26859, MPFR_RNDN);
        if (mpfr_get_si(r26854, MPFR_RNDN)) { mpfr_set(r26861, r26843, MPFR_RNDN); } else { mpfr_set(r26861, r26860, MPFR_RNDN); };
        if (mpfr_get_si(r26845, MPFR_RNDN)) { mpfr_set(r26862, r26852, MPFR_RNDN); } else { mpfr_set(r26862, r26861, MPFR_RNDN); };
        return mpfr_get_d(r26862, MPFR_RNDN);
}

