#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 r10130 = x;
        float r10131 = 1.0f;
        float r10132 = r10130 + r10131;
        float r10133 = r10130 / r10132;
        float r10134 = r10130 - r10131;
        float r10135 = r10132 / r10134;
        float r10136 = r10133 - r10135;
        return r10136;
}

double f_id(double x) {
        double r10137 = x;
        double r10138 = 1.0;
        double r10139 = r10137 + r10138;
        double r10140 = r10137 / r10139;
        double r10141 = r10137 - r10138;
        double r10142 = r10139 / r10141;
        double r10143 = r10140 - r10142;
        return r10143;
}


double f_of(float x) {
        float r10144 = x;
        float r10145 = -11360.011079950777f;
        bool r10146 = r10144 <= r10145;
        float r10147 = 10385.499811469535f;
        bool r10148 = r10144 <= r10147;
        float r10149 = !r10148;
        bool r10150 = r10146 || r10149;
        float r10151 = 3.0f;
        float r10152 = -r10151;
        float r10153 = r10152 / r10144;
        float r10154 = r10151 / r10144;
        float r10155 = 1.0f;
        float r10156 = r10154 + r10155;
        float r10157 = r10144 * r10144;
        float r10158 = r10156 / r10157;
        float r10159 = r10153 - r10158;
        float r10160 = r10144 + r10155;
        float r10161 = r10155 / r10160;
        float r10162 = r10161 * r10144;
        float r10163 = r10144 - r10155;
        float r10164 = r10160 / r10163;
        float r10165 = r10162 - r10164;
        float r10166 = r10150 ? r10159 : r10165;
        return r10166;
}

double f_od(double x) {
        double r10167 = x;
        double r10168 = -11360.011079950777;
        bool r10169 = r10167 <= r10168;
        double r10170 = 10385.499811469535;
        bool r10171 = r10167 <= r10170;
        double r10172 = !r10171;
        bool r10173 = r10169 || r10172;
        double r10174 = 3.0;
        double r10175 = -r10174;
        double r10176 = r10175 / r10167;
        double r10177 = r10174 / r10167;
        double r10178 = 1.0;
        double r10179 = r10177 + r10178;
        double r10180 = r10167 * r10167;
        double r10181 = r10179 / r10180;
        double r10182 = r10176 - r10181;
        double r10183 = r10167 + r10178;
        double r10184 = r10178 / r10183;
        double r10185 = r10184 * r10167;
        double r10186 = r10167 - r10178;
        double r10187 = r10183 / r10186;
        double r10188 = r10185 - r10187;
        double r10189 = r10173 ? r10182 : r10188;
        return r10189;
}

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 r10190, r10191, r10192, r10193, r10194, r10195, r10196;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10190);
        mpfr_init_set_str(r10191, "1", 10, MPFR_RNDN);
        mpfr_init(r10192);
        mpfr_init(r10193);
        mpfr_init(r10194);
        mpfr_init(r10195);
        mpfr_init(r10196);
}

double f_im(double x) {
        mpfr_set_d(r10190, x, MPFR_RNDN);
        ;
        mpfr_add(r10192, r10190, r10191, MPFR_RNDN);
        mpfr_div(r10193, r10190, r10192, MPFR_RNDN);
        mpfr_sub(r10194, r10190, r10191, MPFR_RNDN);
        mpfr_div(r10195, r10192, r10194, MPFR_RNDN);
        mpfr_sub(r10196, r10193, r10195, MPFR_RNDN);
        return mpfr_get_d(r10196, MPFR_RNDN);
}

static mpfr_t r10197, r10198, r10199, r10200, r10201, r10202, r10203, r10204, r10205, r10206, r10207, r10208, r10209, r10210, r10211, r10212, r10213, r10214, r10215, r10216, r10217, r10218, r10219;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10197);
        mpfr_init_set_str(r10198, "-11360.011079950777", 10, MPFR_RNDN);
        mpfr_init(r10199);
        mpfr_init_set_str(r10200, "10385.499811469535", 10, MPFR_RNDN);
        mpfr_init(r10201);
        mpfr_init(r10202);
        mpfr_init(r10203);
        mpfr_init_set_str(r10204, "3", 10, MPFR_RNDN);
        mpfr_init(r10205);
        mpfr_init(r10206);
        mpfr_init(r10207);
        mpfr_init_set_str(r10208, "1", 10, MPFR_RNDN);
        mpfr_init(r10209);
        mpfr_init(r10210);
        mpfr_init(r10211);
        mpfr_init(r10212);
        mpfr_init(r10213);
        mpfr_init(r10214);
        mpfr_init(r10215);
        mpfr_init(r10216);
        mpfr_init(r10217);
        mpfr_init(r10218);
        mpfr_init(r10219);
}

double f_fm(double x) {
        mpfr_set_d(r10197, x, MPFR_RNDN);
        ;
        mpfr_set_si(r10199, mpfr_cmp(r10197, r10198) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10201, mpfr_cmp(r10197, r10200) <= 0, MPFR_RNDN);
        mpfr_set_si(r10202, !mpfr_get_si(r10201, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10203, mpfr_get_si(r10199, MPFR_RNDN) || mpfr_get_si(r10202, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_neg(r10205, r10204, MPFR_RNDN);
        mpfr_div(r10206, r10205, r10197, MPFR_RNDN);
        mpfr_div(r10207, r10204, r10197, MPFR_RNDN);
        ;
        mpfr_add(r10209, r10207, r10208, MPFR_RNDN);
        mpfr_mul(r10210, r10197, r10197, MPFR_RNDN);
        mpfr_div(r10211, r10209, r10210, MPFR_RNDN);
        mpfr_sub(r10212, r10206, r10211, MPFR_RNDN);
        mpfr_add(r10213, r10197, r10208, MPFR_RNDN);
        mpfr_div(r10214, r10208, r10213, MPFR_RNDN);
        mpfr_mul(r10215, r10214, r10197, MPFR_RNDN);
        mpfr_sub(r10216, r10197, r10208, MPFR_RNDN);
        mpfr_div(r10217, r10213, r10216, MPFR_RNDN);
        mpfr_sub(r10218, r10215, r10217, MPFR_RNDN);
        if (mpfr_get_si(r10203, MPFR_RNDN)) { mpfr_set(r10219, r10212, MPFR_RNDN); } else { mpfr_set(r10219, r10218, MPFR_RNDN); };
        return mpfr_get_d(r10219, MPFR_RNDN);
}

static mpfr_t r10220, r10221, r10222, r10223, r10224, r10225, r10226, r10227, r10228, r10229, r10230, r10231, r10232, r10233, r10234, r10235, r10236, r10237, r10238, r10239, r10240, r10241, r10242;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r10220);
        mpfr_init_set_str(r10221, "-11360.011079950777", 10, MPFR_RNDN);
        mpfr_init(r10222);
        mpfr_init_set_str(r10223, "10385.499811469535", 10, MPFR_RNDN);
        mpfr_init(r10224);
        mpfr_init(r10225);
        mpfr_init(r10226);
        mpfr_init_set_str(r10227, "3", 10, MPFR_RNDN);
        mpfr_init(r10228);
        mpfr_init(r10229);
        mpfr_init(r10230);
        mpfr_init_set_str(r10231, "1", 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);
        mpfr_init(r10240);
        mpfr_init(r10241);
        mpfr_init(r10242);
}

double f_dm(double x) {
        mpfr_set_d(r10220, x, MPFR_RNDN);
        ;
        mpfr_set_si(r10222, mpfr_cmp(r10220, r10221) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r10224, mpfr_cmp(r10220, r10223) <= 0, MPFR_RNDN);
        mpfr_set_si(r10225, !mpfr_get_si(r10224, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r10226, mpfr_get_si(r10222, MPFR_RNDN) || mpfr_get_si(r10225, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_neg(r10228, r10227, MPFR_RNDN);
        mpfr_div(r10229, r10228, r10220, MPFR_RNDN);
        mpfr_div(r10230, r10227, r10220, MPFR_RNDN);
        ;
        mpfr_add(r10232, r10230, r10231, MPFR_RNDN);
        mpfr_mul(r10233, r10220, r10220, MPFR_RNDN);
        mpfr_div(r10234, r10232, r10233, MPFR_RNDN);
        mpfr_sub(r10235, r10229, r10234, MPFR_RNDN);
        mpfr_add(r10236, r10220, r10231, MPFR_RNDN);
        mpfr_div(r10237, r10231, r10236, MPFR_RNDN);
        mpfr_mul(r10238, r10237, r10220, MPFR_RNDN);
        mpfr_sub(r10239, r10220, r10231, MPFR_RNDN);
        mpfr_div(r10240, r10236, r10239, MPFR_RNDN);
        mpfr_sub(r10241, r10238, r10240, MPFR_RNDN);
        if (mpfr_get_si(r10226, MPFR_RNDN)) { mpfr_set(r10242, r10235, MPFR_RNDN); } else { mpfr_set(r10242, r10241, MPFR_RNDN); };
        return mpfr_get_d(r10242, MPFR_RNDN);
}

