#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 r26713 = x;
        float r26714 = 1;
        float r26715 = r26713 + r26714;
        float r26716 = r26713 / r26715;
        float r26717 = r26713 - r26714;
        float r26718 = r26715 / r26717;
        float r26719 = r26716 - r26718;
        return r26719;
}

double f_id(double x) {
        double r26720 = x;
        double r26721 = 1;
        double r26722 = r26720 + r26721;
        double r26723 = r26720 / r26722;
        double r26724 = r26720 - r26721;
        double r26725 = r26722 / r26724;
        double r26726 = r26723 - r26725;
        return r26726;
}


double f_of(float x) {
        float r26727 = 1;
        float r26728 = 3;
        float r26729 = x;
        float r26730 = r26728 / r26729;
        float r26731 = r26727 + r26730;
        float r26732 = -r26727;
        float r26733 = r26729 * r26729;
        float r26734 = r26732 / r26733;
        float r26735 = -r26730;
        float r26736 = fma(r26731, r26734, r26735);
        float r26737 = -4.612196402366588e-14;
        bool r26738 = r26736 <= r26737;
        float r26739 = r26729 - r26727;
        float r26740 = r26729 * r26739;
        float r26741 = r26729 + r26727;
        float r26742 = r26741 * r26741;
        float r26743 = r26740 - r26742;
        float r26744 = r26741 * r26739;
        float r26745 = r26743 / r26744;
        float r26746 = 6.034520012367825e-06;
        bool r26747 = r26736 <= r26746;
        float r26748 = log1p(r26743);
        float r26749 = expm1(r26748);
        float r26750 = r26749 / r26744;
        float r26751 = r26747 ? r26736 : r26750;
        float r26752 = r26738 ? r26745 : r26751;
        return r26752;
}

double f_od(double x) {
        double r26753 = 1;
        double r26754 = 3;
        double r26755 = x;
        double r26756 = r26754 / r26755;
        double r26757 = r26753 + r26756;
        double r26758 = -r26753;
        double r26759 = r26755 * r26755;
        double r26760 = r26758 / r26759;
        double r26761 = -r26756;
        double r26762 = fma(r26757, r26760, r26761);
        double r26763 = -4.612196402366588e-14;
        bool r26764 = r26762 <= r26763;
        double r26765 = r26755 - r26753;
        double r26766 = r26755 * r26765;
        double r26767 = r26755 + r26753;
        double r26768 = r26767 * r26767;
        double r26769 = r26766 - r26768;
        double r26770 = r26767 * r26765;
        double r26771 = r26769 / r26770;
        double r26772 = 6.034520012367825e-06;
        bool r26773 = r26762 <= r26772;
        double r26774 = log1p(r26769);
        double r26775 = expm1(r26774);
        double r26776 = r26775 / r26770;
        double r26777 = r26773 ? r26762 : r26776;
        double r26778 = r26764 ? r26771 : r26777;
        return r26778;
}

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 r26779, r26780, r26781, r26782, r26783, r26784, r26785;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26779);
        mpfr_init_set_str(r26780, "1", 10, MPFR_RNDN);
        mpfr_init(r26781);
        mpfr_init(r26782);
        mpfr_init(r26783);
        mpfr_init(r26784);
        mpfr_init(r26785);
}

double f_im(double x) {
        mpfr_set_d(r26779, x, MPFR_RNDN);
        ;
        mpfr_add(r26781, r26779, r26780, MPFR_RNDN);
        mpfr_div(r26782, r26779, r26781, MPFR_RNDN);
        mpfr_sub(r26783, r26779, r26780, MPFR_RNDN);
        mpfr_div(r26784, r26781, r26783, MPFR_RNDN);
        mpfr_sub(r26785, r26782, r26784, MPFR_RNDN);
        return mpfr_get_d(r26785, MPFR_RNDN);
}

static mpfr_t r26786, r26787, r26788, r26789, r26790, r26791, r26792, r26793, r26794, r26795, r26796, r26797, r26798, r26799, r26800, r26801, r26802, r26803, r26804, r26805, r26806, r26807, r26808, r26809, r26810, r26811;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26786, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26787, "3", 10, MPFR_RNDN);
        mpfr_init(r26788);
        mpfr_init(r26789);
        mpfr_init(r26790);
        mpfr_init(r26791);
        mpfr_init(r26792);
        mpfr_init(r26793);
        mpfr_init(r26794);
        mpfr_init(r26795);
        mpfr_init_set_str(r26796, "-4.612196402366588e-14", 10, MPFR_RNDN);
        mpfr_init(r26797);
        mpfr_init(r26798);
        mpfr_init(r26799);
        mpfr_init(r26800);
        mpfr_init(r26801);
        mpfr_init(r26802);
        mpfr_init(r26803);
        mpfr_init(r26804);
        mpfr_init_set_str(r26805, "6.034520012367825e-06", 10, MPFR_RNDN);
        mpfr_init(r26806);
        mpfr_init(r26807);
        mpfr_init(r26808);
        mpfr_init(r26809);
        mpfr_init(r26810);
        mpfr_init(r26811);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r26788, x, MPFR_RNDN);
        mpfr_div(r26789, r26787, r26788, MPFR_RNDN);
        mpfr_add(r26790, r26786, r26789, MPFR_RNDN);
        mpfr_neg(r26791, r26786, MPFR_RNDN);
        mpfr_mul(r26792, r26788, r26788, MPFR_RNDN);
        mpfr_div(r26793, r26791, r26792, MPFR_RNDN);
        mpfr_neg(r26794, r26789, MPFR_RNDN);
        mpfr_fma(r26795, r26790, r26793, r26794, MPFR_RNDN);
        ;
        mpfr_set_si(r26797, mpfr_cmp(r26795, r26796) <= 0, MPFR_RNDN);
        mpfr_sub(r26798, r26788, r26786, MPFR_RNDN);
        mpfr_mul(r26799, r26788, r26798, MPFR_RNDN);
        mpfr_add(r26800, r26788, r26786, MPFR_RNDN);
        mpfr_mul(r26801, r26800, r26800, MPFR_RNDN);
        mpfr_sub(r26802, r26799, r26801, MPFR_RNDN);
        mpfr_mul(r26803, r26800, r26798, MPFR_RNDN);
        mpfr_div(r26804, r26802, r26803, MPFR_RNDN);
        ;
        mpfr_set_si(r26806, mpfr_cmp(r26795, r26805) <= 0, MPFR_RNDN);
        mpfr_log1p(r26807, r26802, MPFR_RNDN);
        mpfr_expm1(r26808, r26807, MPFR_RNDN);
        mpfr_div(r26809, r26808, r26803, MPFR_RNDN);
        if (mpfr_get_si(r26806, MPFR_RNDN)) { mpfr_set(r26810, r26795, MPFR_RNDN); } else { mpfr_set(r26810, r26809, MPFR_RNDN); };
        if (mpfr_get_si(r26797, MPFR_RNDN)) { mpfr_set(r26811, r26804, MPFR_RNDN); } else { mpfr_set(r26811, r26810, MPFR_RNDN); };
        return mpfr_get_d(r26811, MPFR_RNDN);
}

static mpfr_t r26812, r26813, r26814, r26815, r26816, r26817, r26818, r26819, r26820, r26821, r26822, r26823, r26824, r26825, r26826, r26827, r26828, r26829, r26830, r26831, r26832, r26833, r26834, r26835, r26836, r26837;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r26812, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r26813, "3", 10, MPFR_RNDN);
        mpfr_init(r26814);
        mpfr_init(r26815);
        mpfr_init(r26816);
        mpfr_init(r26817);
        mpfr_init(r26818);
        mpfr_init(r26819);
        mpfr_init(r26820);
        mpfr_init(r26821);
        mpfr_init_set_str(r26822, "-4.612196402366588e-14", 10, MPFR_RNDN);
        mpfr_init(r26823);
        mpfr_init(r26824);
        mpfr_init(r26825);
        mpfr_init(r26826);
        mpfr_init(r26827);
        mpfr_init(r26828);
        mpfr_init(r26829);
        mpfr_init(r26830);
        mpfr_init_set_str(r26831, "6.034520012367825e-06", 10, MPFR_RNDN);
        mpfr_init(r26832);
        mpfr_init(r26833);
        mpfr_init(r26834);
        mpfr_init(r26835);
        mpfr_init(r26836);
        mpfr_init(r26837);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r26814, x, MPFR_RNDN);
        mpfr_div(r26815, r26813, r26814, MPFR_RNDN);
        mpfr_add(r26816, r26812, r26815, MPFR_RNDN);
        mpfr_neg(r26817, r26812, MPFR_RNDN);
        mpfr_mul(r26818, r26814, r26814, MPFR_RNDN);
        mpfr_div(r26819, r26817, r26818, MPFR_RNDN);
        mpfr_neg(r26820, r26815, MPFR_RNDN);
        mpfr_fma(r26821, r26816, r26819, r26820, MPFR_RNDN);
        ;
        mpfr_set_si(r26823, mpfr_cmp(r26821, r26822) <= 0, MPFR_RNDN);
        mpfr_sub(r26824, r26814, r26812, MPFR_RNDN);
        mpfr_mul(r26825, r26814, r26824, MPFR_RNDN);
        mpfr_add(r26826, r26814, r26812, MPFR_RNDN);
        mpfr_mul(r26827, r26826, r26826, MPFR_RNDN);
        mpfr_sub(r26828, r26825, r26827, MPFR_RNDN);
        mpfr_mul(r26829, r26826, r26824, MPFR_RNDN);
        mpfr_div(r26830, r26828, r26829, MPFR_RNDN);
        ;
        mpfr_set_si(r26832, mpfr_cmp(r26821, r26831) <= 0, MPFR_RNDN);
        mpfr_log1p(r26833, r26828, MPFR_RNDN);
        mpfr_expm1(r26834, r26833, MPFR_RNDN);
        mpfr_div(r26835, r26834, r26829, MPFR_RNDN);
        if (mpfr_get_si(r26832, MPFR_RNDN)) { mpfr_set(r26836, r26821, MPFR_RNDN); } else { mpfr_set(r26836, r26835, MPFR_RNDN); };
        if (mpfr_get_si(r26823, MPFR_RNDN)) { mpfr_set(r26837, r26830, MPFR_RNDN); } else { mpfr_set(r26837, r26836, MPFR_RNDN); };
        return mpfr_get_d(r26837, MPFR_RNDN);
}

