#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 r10206 = x;
        float r10207 = 1.0f;
        float r10208 = r10206 + r10207;
        float r10209 = r10206 / r10208;
        float r10210 = r10206 - r10207;
        float r10211 = r10208 / r10210;
        float r10212 = r10209 - r10211;
        return r10212;
}

double f_id(double x) {
        double r10213 = x;
        double r10214 = 1.0;
        double r10215 = r10213 + r10214;
        double r10216 = r10213 / r10215;
        double r10217 = r10213 - r10214;
        double r10218 = r10215 / r10217;
        double r10219 = r10216 - r10218;
        return r10219;
}


double f_of(float x) {
        float r10220 = 3.0f;
        float r10221 = x;
        float r10222 = r10220 / r10221;
        float r10223 = 1.0f;
        float r10224 = r10222 + r10223;
        float r10225 = -r10223;
        float r10226 = r10221 * r10221;
        float r10227 = r10225 / r10226;
        float r10228 = -r10222;
        float r10229 = fma(r10224, r10227, r10228);
        float r10230 = -9.35362369942047e-11f;
        bool r10231 = r10229 <= r10230;
        float r10232 = r10221 - r10223;
        float r10233 = r10223 + r10221;
        float r10234 = r10232 - r10233;
        float r10235 = r10233 / r10221;
        float r10236 = r10234 - r10235;
        float r10237 = r10232 * r10235;
        float r10238 = r10236 / r10237;
        float r10239 = 4.234656599064631e-25f;
        bool r10240 = r10229 <= r10239;
        float r10241 = r10226 - r10223;
        float r10242 = r10233 * r10241;
        float r10243 = fma(r10221, r10221, r10221);
        float r10244 = r10242 / r10243;
        float r10245 = r10236 / r10244;
        float r10246 = r10240 ? r10229 : r10245;
        float r10247 = r10231 ? r10238 : r10246;
        return r10247;
}

double f_od(double x) {
        double r10248 = 3.0;
        double r10249 = x;
        double r10250 = r10248 / r10249;
        double r10251 = 1.0;
        double r10252 = r10250 + r10251;
        double r10253 = -r10251;
        double r10254 = r10249 * r10249;
        double r10255 = r10253 / r10254;
        double r10256 = -r10250;
        double r10257 = fma(r10252, r10255, r10256);
        double r10258 = -9.35362369942047e-11;
        bool r10259 = r10257 <= r10258;
        double r10260 = r10249 - r10251;
        double r10261 = r10251 + r10249;
        double r10262 = r10260 - r10261;
        double r10263 = r10261 / r10249;
        double r10264 = r10262 - r10263;
        double r10265 = r10260 * r10263;
        double r10266 = r10264 / r10265;
        double r10267 = 4.234656599064631e-25;
        bool r10268 = r10257 <= r10267;
        double r10269 = r10254 - r10251;
        double r10270 = r10261 * r10269;
        double r10271 = fma(r10249, r10249, r10249);
        double r10272 = r10270 / r10271;
        double r10273 = r10264 / r10272;
        double r10274 = r10268 ? r10257 : r10273;
        double r10275 = r10259 ? r10266 : r10274;
        return r10275;
}

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 r10276, r10277, r10278, r10279, r10280, r10281, r10282;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10276);
        mpfr_init_set_str(r10277, "1", 10, MPFR_RNDN);
        mpfr_init(r10278);
        mpfr_init(r10279);
        mpfr_init(r10280);
        mpfr_init(r10281);
        mpfr_init(r10282);
}

double f_im(double x) {
        mpfr_set_d(r10276, x, MPFR_RNDN);
        ;
        mpfr_add(r10278, r10276, r10277, MPFR_RNDN);
        mpfr_div(r10279, r10276, r10278, MPFR_RNDN);
        mpfr_sub(r10280, r10276, r10277, MPFR_RNDN);
        mpfr_div(r10281, r10278, r10280, MPFR_RNDN);
        mpfr_sub(r10282, r10279, r10281, MPFR_RNDN);
        return mpfr_get_d(r10282, MPFR_RNDN);
}

static mpfr_t r10283, r10284, r10285, r10286, r10287, r10288, r10289, r10290, r10291, r10292, r10293, r10294, r10295, r10296, r10297, r10298, r10299, r10300, r10301, r10302, r10303, r10304, r10305, r10306, r10307, r10308, r10309, r10310;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10283, "3", 10, MPFR_RNDN);
        mpfr_init(r10284);
        mpfr_init(r10285);
        mpfr_init_set_str(r10286, "1", 10, MPFR_RNDN);
        mpfr_init(r10287);
        mpfr_init(r10288);
        mpfr_init(r10289);
        mpfr_init(r10290);
        mpfr_init(r10291);
        mpfr_init(r10292);
        mpfr_init_set_str(r10293, "-9.35362369942047e-11", 10, MPFR_RNDN);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init(r10296);
        mpfr_init(r10297);
        mpfr_init(r10298);
        mpfr_init(r10299);
        mpfr_init(r10300);
        mpfr_init(r10301);
        mpfr_init_set_str(r10302, "4.234656599064631e-25", 10, MPFR_RNDN);
        mpfr_init(r10303);
        mpfr_init(r10304);
        mpfr_init(r10305);
        mpfr_init(r10306);
        mpfr_init(r10307);
        mpfr_init(r10308);
        mpfr_init(r10309);
        mpfr_init(r10310);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r10284, x, MPFR_RNDN);
        mpfr_div(r10285, r10283, r10284, MPFR_RNDN);
        ;
        mpfr_add(r10287, r10285, r10286, MPFR_RNDN);
        mpfr_neg(r10288, r10286, MPFR_RNDN);
        mpfr_mul(r10289, r10284, r10284, MPFR_RNDN);
        mpfr_div(r10290, r10288, r10289, MPFR_RNDN);
        mpfr_neg(r10291, r10285, MPFR_RNDN);
        mpfr_fma(r10292, r10287, r10290, r10291, MPFR_RNDN);
        ;
        mpfr_set_si(r10294, mpfr_cmp(r10292, r10293) <= 0, MPFR_RNDN);
        mpfr_sub(r10295, r10284, r10286, MPFR_RNDN);
        mpfr_add(r10296, r10286, r10284, MPFR_RNDN);
        mpfr_sub(r10297, r10295, r10296, MPFR_RNDN);
        mpfr_div(r10298, r10296, r10284, MPFR_RNDN);
        mpfr_sub(r10299, r10297, r10298, MPFR_RNDN);
        mpfr_mul(r10300, r10295, r10298, MPFR_RNDN);
        mpfr_div(r10301, r10299, r10300, MPFR_RNDN);
        ;
        mpfr_set_si(r10303, mpfr_cmp(r10292, r10302) <= 0, MPFR_RNDN);
        mpfr_sub(r10304, r10289, r10286, MPFR_RNDN);
        mpfr_mul(r10305, r10296, r10304, MPFR_RNDN);
        mpfr_fma(r10306, r10284, r10284, r10284, MPFR_RNDN);
        mpfr_div(r10307, r10305, r10306, MPFR_RNDN);
        mpfr_div(r10308, r10299, r10307, MPFR_RNDN);
        if (mpfr_get_si(r10303, MPFR_RNDN)) { mpfr_set(r10309, r10292, MPFR_RNDN); } else { mpfr_set(r10309, r10308, MPFR_RNDN); };
        if (mpfr_get_si(r10294, MPFR_RNDN)) { mpfr_set(r10310, r10301, MPFR_RNDN); } else { mpfr_set(r10310, r10309, MPFR_RNDN); };
        return mpfr_get_d(r10310, MPFR_RNDN);
}

static mpfr_t r10311, r10312, r10313, r10314, r10315, r10316, r10317, r10318, r10319, r10320, r10321, r10322, r10323, r10324, r10325, r10326, r10327, r10328, r10329, r10330, r10331, r10332, r10333, r10334, r10335, r10336, r10337, r10338;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r10311, "3", 10, MPFR_RNDN);
        mpfr_init(r10312);
        mpfr_init(r10313);
        mpfr_init_set_str(r10314, "1", 10, MPFR_RNDN);
        mpfr_init(r10315);
        mpfr_init(r10316);
        mpfr_init(r10317);
        mpfr_init(r10318);
        mpfr_init(r10319);
        mpfr_init(r10320);
        mpfr_init_set_str(r10321, "-9.35362369942047e-11", 10, MPFR_RNDN);
        mpfr_init(r10322);
        mpfr_init(r10323);
        mpfr_init(r10324);
        mpfr_init(r10325);
        mpfr_init(r10326);
        mpfr_init(r10327);
        mpfr_init(r10328);
        mpfr_init(r10329);
        mpfr_init_set_str(r10330, "4.234656599064631e-25", 10, MPFR_RNDN);
        mpfr_init(r10331);
        mpfr_init(r10332);
        mpfr_init(r10333);
        mpfr_init(r10334);
        mpfr_init(r10335);
        mpfr_init(r10336);
        mpfr_init(r10337);
        mpfr_init(r10338);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r10312, x, MPFR_RNDN);
        mpfr_div(r10313, r10311, r10312, MPFR_RNDN);
        ;
        mpfr_add(r10315, r10313, r10314, MPFR_RNDN);
        mpfr_neg(r10316, r10314, MPFR_RNDN);
        mpfr_mul(r10317, r10312, r10312, MPFR_RNDN);
        mpfr_div(r10318, r10316, r10317, MPFR_RNDN);
        mpfr_neg(r10319, r10313, MPFR_RNDN);
        mpfr_fma(r10320, r10315, r10318, r10319, MPFR_RNDN);
        ;
        mpfr_set_si(r10322, mpfr_cmp(r10320, r10321) <= 0, MPFR_RNDN);
        mpfr_sub(r10323, r10312, r10314, MPFR_RNDN);
        mpfr_add(r10324, r10314, r10312, MPFR_RNDN);
        mpfr_sub(r10325, r10323, r10324, MPFR_RNDN);
        mpfr_div(r10326, r10324, r10312, MPFR_RNDN);
        mpfr_sub(r10327, r10325, r10326, MPFR_RNDN);
        mpfr_mul(r10328, r10323, r10326, MPFR_RNDN);
        mpfr_div(r10329, r10327, r10328, MPFR_RNDN);
        ;
        mpfr_set_si(r10331, mpfr_cmp(r10320, r10330) <= 0, MPFR_RNDN);
        mpfr_sub(r10332, r10317, r10314, MPFR_RNDN);
        mpfr_mul(r10333, r10324, r10332, MPFR_RNDN);
        mpfr_fma(r10334, r10312, r10312, r10312, MPFR_RNDN);
        mpfr_div(r10335, r10333, r10334, MPFR_RNDN);
        mpfr_div(r10336, r10327, r10335, MPFR_RNDN);
        if (mpfr_get_si(r10331, MPFR_RNDN)) { mpfr_set(r10337, r10320, MPFR_RNDN); } else { mpfr_set(r10337, r10336, MPFR_RNDN); };
        if (mpfr_get_si(r10322, MPFR_RNDN)) { mpfr_set(r10338, r10329, MPFR_RNDN); } else { mpfr_set(r10338, r10337, MPFR_RNDN); };
        return mpfr_get_d(r10338, MPFR_RNDN);
}

