#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 r10181 = x;
        float r10182 = 1.0f;
        float r10183 = r10181 + r10182;
        float r10184 = r10181 / r10183;
        float r10185 = r10181 - r10182;
        float r10186 = r10183 / r10185;
        float r10187 = r10184 - r10186;
        return r10187;
}

double f_id(double x) {
        double r10188 = x;
        double r10189 = 1.0;
        double r10190 = r10188 + r10189;
        double r10191 = r10188 / r10190;
        double r10192 = r10188 - r10189;
        double r10193 = r10190 / r10192;
        double r10194 = r10191 - r10193;
        return r10194;
}


double f_of(float x) {
        float r10195 = x;
        float r10196 = -13129.667115746535f;
        bool r10197 = r10195 <= r10196;
        float r10198 = 14069.752478325832f;
        bool r10199 = r10195 <= r10198;
        float r10200 = !r10199;
        bool r10201 = r10197 || r10200;
        float r10202 = 1.0f;
        float r10203 = 3.0f;
        float r10204 = r10203 / r10195;
        float r10205 = r10202 + r10204;
        float r10206 = -r10202;
        float r10207 = r10195 * r10195;
        float r10208 = r10206 / r10207;
        float r10209 = -r10203;
        float r10210 = r10209 / r10195;
        float r10211 = fma(r10205, r10208, r10210);
        float r10212 = r10202 + r10195;
        float r10213 = r10202 / r10212;
        float r10214 = -r10212;
        float r10215 = r10195 - r10202;
        float r10216 = r10214 / r10215;
        float r10217 = fma(r10195, r10213, r10216);
        float r10218 = r10201 ? r10211 : r10217;
        return r10218;
}

double f_od(double x) {
        double r10219 = x;
        double r10220 = -13129.667115746535;
        bool r10221 = r10219 <= r10220;
        double r10222 = 14069.752478325832;
        bool r10223 = r10219 <= r10222;
        double r10224 = !r10223;
        bool r10225 = r10221 || r10224;
        double r10226 = 1.0;
        double r10227 = 3.0;
        double r10228 = r10227 / r10219;
        double r10229 = r10226 + r10228;
        double r10230 = -r10226;
        double r10231 = r10219 * r10219;
        double r10232 = r10230 / r10231;
        double r10233 = -r10227;
        double r10234 = r10233 / r10219;
        double r10235 = fma(r10229, r10232, r10234);
        double r10236 = r10226 + r10219;
        double r10237 = r10226 / r10236;
        double r10238 = -r10236;
        double r10239 = r10219 - r10226;
        double r10240 = r10238 / r10239;
        double r10241 = fma(r10219, r10237, r10240);
        double r10242 = r10225 ? r10235 : r10241;
        return r10242;
}

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 r10243, r10244, r10245, r10246, r10247, r10248, r10249;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10243);
        mpfr_init_set_str(r10244, "1", 10, MPFR_RNDN);
        mpfr_init(r10245);
        mpfr_init(r10246);
        mpfr_init(r10247);
        mpfr_init(r10248);
        mpfr_init(r10249);
}

double f_im(double x) {
        mpfr_set_d(r10243, x, MPFR_RNDN);
        ;
        mpfr_add(r10245, r10243, r10244, MPFR_RNDN);
        mpfr_div(r10246, r10243, r10245, MPFR_RNDN);
        mpfr_sub(r10247, r10243, r10244, MPFR_RNDN);
        mpfr_div(r10248, r10245, r10247, MPFR_RNDN);
        mpfr_sub(r10249, r10246, r10248, MPFR_RNDN);
        return mpfr_get_d(r10249, MPFR_RNDN);
}

static mpfr_t r10250, r10251, r10252, r10253, r10254, r10255, r10256, r10257, r10258, r10259, r10260, r10261, r10262, r10263, r10264, r10265, r10266, r10267, r10268, r10269, r10270, r10271, r10272, r10273;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10250);
        mpfr_init_set_str(r10251, "-13129.667115746535", 10, MPFR_RNDN);
        mpfr_init(r10252);
        mpfr_init_set_str(r10253, "14069.752478325832", 10, MPFR_RNDN);
        mpfr_init(r10254);
        mpfr_init(r10255);
        mpfr_init(r10256);
        mpfr_init_set_str(r10257, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10258, "3", 10, MPFR_RNDN);
        mpfr_init(r10259);
        mpfr_init(r10260);
        mpfr_init(r10261);
        mpfr_init(r10262);
        mpfr_init(r10263);
        mpfr_init(r10264);
        mpfr_init(r10265);
        mpfr_init(r10266);
        mpfr_init(r10267);
        mpfr_init(r10268);
        mpfr_init(r10269);
        mpfr_init(r10270);
        mpfr_init(r10271);
        mpfr_init(r10272);
        mpfr_init(r10273);
}

double f_fm(double x) {
        mpfr_set_d(r10250, x, MPFR_RNDN);
        ;
        mpfr_set_si(r10252, mpfr_cmp(r10250, r10251) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10254, mpfr_cmp(r10250, r10253) <= 0, MPFR_RNDN);
        mpfr_set_si(r10255, !mpfr_get_si(r10254, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10256, mpfr_get_si(r10252, MPFR_RNDN) || mpfr_get_si(r10255, MPFR_RNDN), MPFR_RNDN);
        ;
        ;
        mpfr_div(r10259, r10258, r10250, MPFR_RNDN);
        mpfr_add(r10260, r10257, r10259, MPFR_RNDN);
        mpfr_neg(r10261, r10257, MPFR_RNDN);
        mpfr_mul(r10262, r10250, r10250, MPFR_RNDN);
        mpfr_div(r10263, r10261, r10262, MPFR_RNDN);
        mpfr_neg(r10264, r10258, MPFR_RNDN);
        mpfr_div(r10265, r10264, r10250, MPFR_RNDN);
        mpfr_fma(r10266, r10260, r10263, r10265, MPFR_RNDN);
        mpfr_add(r10267, r10257, r10250, MPFR_RNDN);
        mpfr_div(r10268, r10257, r10267, MPFR_RNDN);
        mpfr_neg(r10269, r10267, MPFR_RNDN);
        mpfr_sub(r10270, r10250, r10257, MPFR_RNDN);
        mpfr_div(r10271, r10269, r10270, MPFR_RNDN);
        mpfr_fma(r10272, r10250, r10268, r10271, MPFR_RNDN);
        if (mpfr_get_si(r10256, MPFR_RNDN)) { mpfr_set(r10273, r10266, MPFR_RNDN); } else { mpfr_set(r10273, r10272, MPFR_RNDN); };
        return mpfr_get_d(r10273, MPFR_RNDN);
}

static mpfr_t r10274, r10275, r10276, r10277, r10278, r10279, r10280, r10281, r10282, r10283, r10284, r10285, r10286, r10287, r10288, r10289, r10290, r10291, r10292, r10293, r10294, r10295, r10296, r10297;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10274);
        mpfr_init_set_str(r10275, "-13129.667115746535", 10, MPFR_RNDN);
        mpfr_init(r10276);
        mpfr_init_set_str(r10277, "14069.752478325832", 10, MPFR_RNDN);
        mpfr_init(r10278);
        mpfr_init(r10279);
        mpfr_init(r10280);
        mpfr_init_set_str(r10281, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10282, "3", 10, MPFR_RNDN);
        mpfr_init(r10283);
        mpfr_init(r10284);
        mpfr_init(r10285);
        mpfr_init(r10286);
        mpfr_init(r10287);
        mpfr_init(r10288);
        mpfr_init(r10289);
        mpfr_init(r10290);
        mpfr_init(r10291);
        mpfr_init(r10292);
        mpfr_init(r10293);
        mpfr_init(r10294);
        mpfr_init(r10295);
        mpfr_init(r10296);
        mpfr_init(r10297);
}

double f_dm(double x) {
        mpfr_set_d(r10274, x, MPFR_RNDN);
        ;
        mpfr_set_si(r10276, mpfr_cmp(r10274, r10275) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10278, mpfr_cmp(r10274, r10277) <= 0, MPFR_RNDN);
        mpfr_set_si(r10279, !mpfr_get_si(r10278, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10280, mpfr_get_si(r10276, MPFR_RNDN) || mpfr_get_si(r10279, MPFR_RNDN), MPFR_RNDN);
        ;
        ;
        mpfr_div(r10283, r10282, r10274, MPFR_RNDN);
        mpfr_add(r10284, r10281, r10283, MPFR_RNDN);
        mpfr_neg(r10285, r10281, MPFR_RNDN);
        mpfr_mul(r10286, r10274, r10274, MPFR_RNDN);
        mpfr_div(r10287, r10285, r10286, MPFR_RNDN);
        mpfr_neg(r10288, r10282, MPFR_RNDN);
        mpfr_div(r10289, r10288, r10274, MPFR_RNDN);
        mpfr_fma(r10290, r10284, r10287, r10289, MPFR_RNDN);
        mpfr_add(r10291, r10281, r10274, MPFR_RNDN);
        mpfr_div(r10292, r10281, r10291, MPFR_RNDN);
        mpfr_neg(r10293, r10291, MPFR_RNDN);
        mpfr_sub(r10294, r10274, r10281, MPFR_RNDN);
        mpfr_div(r10295, r10293, r10294, MPFR_RNDN);
        mpfr_fma(r10296, r10274, r10292, r10295, MPFR_RNDN);
        if (mpfr_get_si(r10280, MPFR_RNDN)) { mpfr_set(r10297, r10290, MPFR_RNDN); } else { mpfr_set(r10297, r10296, MPFR_RNDN); };
        return mpfr_get_d(r10297, MPFR_RNDN);
}

