#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 r10107 = x;
        float r10108 = 1.0f;
        float r10109 = r10107 + r10108;
        float r10110 = r10107 / r10109;
        float r10111 = r10107 - r10108;
        float r10112 = r10109 / r10111;
        float r10113 = r10110 - r10112;
        return r10113;
}

double f_id(double x) {
        double r10114 = x;
        double r10115 = 1.0;
        double r10116 = r10114 + r10115;
        double r10117 = r10114 / r10116;
        double r10118 = r10114 - r10115;
        double r10119 = r10116 / r10118;
        double r10120 = r10117 - r10119;
        return r10120;
}


double f_of(float x) {
        float r10121 = 3.0f;
        float r10122 = x;
        float r10123 = r10121 / r10122;
        float r10124 = 1.0f;
        float r10125 = r10123 + r10124;
        float r10126 = -r10124;
        float r10127 = r10122 * r10122;
        float r10128 = r10126 / r10127;
        float r10129 = -r10123;
        float r10130 = fma(r10125, r10128, r10129);
        float r10131 = -9.35362369942047e-11f;
        bool r10132 = r10130 <= r10131;
        float r10133 = r10122 - r10124;
        float r10134 = r10124 + r10122;
        float r10135 = r10133 - r10134;
        float r10136 = r10134 / r10122;
        float r10137 = r10135 - r10136;
        float r10138 = r10133 * r10136;
        float r10139 = r10137 / r10138;
        float r10140 = 4.234656599064631e-25f;
        bool r10141 = r10130 <= r10140;
        float r10142 = r10127 - r10124;
        float r10143 = r10134 * r10142;
        float r10144 = fma(r10122, r10122, r10122);
        float r10145 = r10143 / r10144;
        float r10146 = r10137 / r10145;
        float r10147 = r10141 ? r10130 : r10146;
        float r10148 = r10132 ? r10139 : r10147;
        return r10148;
}

double f_od(double x) {
        double r10149 = 3.0;
        double r10150 = x;
        double r10151 = r10149 / r10150;
        double r10152 = 1.0;
        double r10153 = r10151 + r10152;
        double r10154 = -r10152;
        double r10155 = r10150 * r10150;
        double r10156 = r10154 / r10155;
        double r10157 = -r10151;
        double r10158 = fma(r10153, r10156, r10157);
        double r10159 = -9.35362369942047e-11;
        bool r10160 = r10158 <= r10159;
        double r10161 = r10150 - r10152;
        double r10162 = r10152 + r10150;
        double r10163 = r10161 - r10162;
        double r10164 = r10162 / r10150;
        double r10165 = r10163 - r10164;
        double r10166 = r10161 * r10164;
        double r10167 = r10165 / r10166;
        double r10168 = 4.234656599064631e-25;
        bool r10169 = r10158 <= r10168;
        double r10170 = r10155 - r10152;
        double r10171 = r10162 * r10170;
        double r10172 = fma(r10150, r10150, r10150);
        double r10173 = r10171 / r10172;
        double r10174 = r10165 / r10173;
        double r10175 = r10169 ? r10158 : r10174;
        double r10176 = r10160 ? r10167 : r10175;
        return r10176;
}

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 r10177, r10178, r10179, r10180, r10181, r10182, r10183;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10177);
        mpfr_init_set_str(r10178, "1", 10, MPFR_RNDN);
        mpfr_init(r10179);
        mpfr_init(r10180);
        mpfr_init(r10181);
        mpfr_init(r10182);
        mpfr_init(r10183);
}

double f_im(double x) {
        mpfr_set_d(r10177, x, MPFR_RNDN);
        ;
        mpfr_add(r10179, r10177, r10178, MPFR_RNDN);
        mpfr_div(r10180, r10177, r10179, MPFR_RNDN);
        mpfr_sub(r10181, r10177, r10178, MPFR_RNDN);
        mpfr_div(r10182, r10179, r10181, MPFR_RNDN);
        mpfr_sub(r10183, r10180, r10182, MPFR_RNDN);
        return mpfr_get_d(r10183, MPFR_RNDN);
}

static mpfr_t r10184, r10185, r10186, r10187, r10188, r10189, r10190, r10191, r10192, r10193, r10194, r10195, r10196, r10197, r10198, r10199, r10200, r10201, r10202, r10203, r10204, r10205, r10206, r10207, r10208, r10209, r10210, r10211;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10184, "3", 10, MPFR_RNDN);
        mpfr_init(r10185);
        mpfr_init(r10186);
        mpfr_init_set_str(r10187, "1", 10, MPFR_RNDN);
        mpfr_init(r10188);
        mpfr_init(r10189);
        mpfr_init(r10190);
        mpfr_init(r10191);
        mpfr_init(r10192);
        mpfr_init(r10193);
        mpfr_init_set_str(r10194, "-9.35362369942047e-11", 10, MPFR_RNDN);
        mpfr_init(r10195);
        mpfr_init(r10196);
        mpfr_init(r10197);
        mpfr_init(r10198);
        mpfr_init(r10199);
        mpfr_init(r10200);
        mpfr_init(r10201);
        mpfr_init(r10202);
        mpfr_init_set_str(r10203, "4.234656599064631e-25", 10, MPFR_RNDN);
        mpfr_init(r10204);
        mpfr_init(r10205);
        mpfr_init(r10206);
        mpfr_init(r10207);
        mpfr_init(r10208);
        mpfr_init(r10209);
        mpfr_init(r10210);
        mpfr_init(r10211);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10185, x, MPFR_RNDN);
        mpfr_div(r10186, r10184, r10185, MPFR_RNDN);
        ;
        mpfr_add(r10188, r10186, r10187, MPFR_RNDN);
        mpfr_neg(r10189, r10187, MPFR_RNDN);
        mpfr_mul(r10190, r10185, r10185, MPFR_RNDN);
        mpfr_div(r10191, r10189, r10190, MPFR_RNDN);
        mpfr_neg(r10192, r10186, MPFR_RNDN);
        mpfr_fma(r10193, r10188, r10191, r10192, MPFR_RNDN);
        ;
        mpfr_set_si(r10195, mpfr_cmp(r10193, r10194) <= 0, MPFR_RNDN);
        mpfr_sub(r10196, r10185, r10187, MPFR_RNDN);
        mpfr_add(r10197, r10187, r10185, MPFR_RNDN);
        mpfr_sub(r10198, r10196, r10197, MPFR_RNDN);
        mpfr_div(r10199, r10197, r10185, MPFR_RNDN);
        mpfr_sub(r10200, r10198, r10199, MPFR_RNDN);
        mpfr_mul(r10201, r10196, r10199, MPFR_RNDN);
        mpfr_div(r10202, r10200, r10201, MPFR_RNDN);
        ;
        mpfr_set_si(r10204, mpfr_cmp(r10193, r10203) <= 0, MPFR_RNDN);
        mpfr_sub(r10205, r10190, r10187, MPFR_RNDN);
        mpfr_mul(r10206, r10197, r10205, MPFR_RNDN);
        mpfr_fma(r10207, r10185, r10185, r10185, MPFR_RNDN);
        mpfr_div(r10208, r10206, r10207, MPFR_RNDN);
        mpfr_div(r10209, r10200, r10208, MPFR_RNDN);
        if (mpfr_get_si(r10204, MPFR_RNDN)) { mpfr_set(r10210, r10193, MPFR_RNDN); } else { mpfr_set(r10210, r10209, MPFR_RNDN); };
        if (mpfr_get_si(r10195, MPFR_RNDN)) { mpfr_set(r10211, r10202, MPFR_RNDN); } else { mpfr_set(r10211, r10210, MPFR_RNDN); };
        return mpfr_get_d(r10211, MPFR_RNDN);
}

static mpfr_t r10212, r10213, r10214, r10215, r10216, r10217, r10218, r10219, r10220, r10221, r10222, r10223, r10224, r10225, r10226, r10227, r10228, r10229, r10230, r10231, r10232, r10233, r10234, r10235, r10236, r10237, r10238, r10239;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10212, "3", 10, MPFR_RNDN);
        mpfr_init(r10213);
        mpfr_init(r10214);
        mpfr_init_set_str(r10215, "1", 10, MPFR_RNDN);
        mpfr_init(r10216);
        mpfr_init(r10217);
        mpfr_init(r10218);
        mpfr_init(r10219);
        mpfr_init(r10220);
        mpfr_init(r10221);
        mpfr_init_set_str(r10222, "-9.35362369942047e-11", 10, MPFR_RNDN);
        mpfr_init(r10223);
        mpfr_init(r10224);
        mpfr_init(r10225);
        mpfr_init(r10226);
        mpfr_init(r10227);
        mpfr_init(r10228);
        mpfr_init(r10229);
        mpfr_init(r10230);
        mpfr_init_set_str(r10231, "4.234656599064631e-25", 10, MPFR_RNDN);
        mpfr_init(r10232);
        mpfr_init(r10233);
        mpfr_init(r10234);
        mpfr_init(r10235);
        mpfr_init(r10236);
        mpfr_init(r10237);
        mpfr_init(r10238);
        mpfr_init(r10239);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10213, x, MPFR_RNDN);
        mpfr_div(r10214, r10212, r10213, MPFR_RNDN);
        ;
        mpfr_add(r10216, r10214, r10215, MPFR_RNDN);
        mpfr_neg(r10217, r10215, MPFR_RNDN);
        mpfr_mul(r10218, r10213, r10213, MPFR_RNDN);
        mpfr_div(r10219, r10217, r10218, MPFR_RNDN);
        mpfr_neg(r10220, r10214, MPFR_RNDN);
        mpfr_fma(r10221, r10216, r10219, r10220, MPFR_RNDN);
        ;
        mpfr_set_si(r10223, mpfr_cmp(r10221, r10222) <= 0, MPFR_RNDN);
        mpfr_sub(r10224, r10213, r10215, MPFR_RNDN);
        mpfr_add(r10225, r10215, r10213, MPFR_RNDN);
        mpfr_sub(r10226, r10224, r10225, MPFR_RNDN);
        mpfr_div(r10227, r10225, r10213, MPFR_RNDN);
        mpfr_sub(r10228, r10226, r10227, MPFR_RNDN);
        mpfr_mul(r10229, r10224, r10227, MPFR_RNDN);
        mpfr_div(r10230, r10228, r10229, MPFR_RNDN);
        ;
        mpfr_set_si(r10232, mpfr_cmp(r10221, r10231) <= 0, MPFR_RNDN);
        mpfr_sub(r10233, r10218, r10215, MPFR_RNDN);
        mpfr_mul(r10234, r10225, r10233, MPFR_RNDN);
        mpfr_fma(r10235, r10213, r10213, r10213, MPFR_RNDN);
        mpfr_div(r10236, r10234, r10235, MPFR_RNDN);
        mpfr_div(r10237, r10228, r10236, MPFR_RNDN);
        if (mpfr_get_si(r10232, MPFR_RNDN)) { mpfr_set(r10238, r10221, MPFR_RNDN); } else { mpfr_set(r10238, r10237, MPFR_RNDN); };
        if (mpfr_get_si(r10223, MPFR_RNDN)) { mpfr_set(r10239, r10230, MPFR_RNDN); } else { mpfr_set(r10239, r10238, MPFR_RNDN); };
        return mpfr_get_d(r10239, MPFR_RNDN);
}

