#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 r3912278 = x;
        float r3912279 = 1;
        float r3912280 = r3912278 + r3912279;
        float r3912281 = r3912278 / r3912280;
        float r3912282 = r3912278 - r3912279;
        float r3912283 = r3912280 / r3912282;
        float r3912284 = r3912281 - r3912283;
        return r3912284;
}

double f_id(double x) {
        double r3912285 = x;
        double r3912286 = 1;
        double r3912287 = r3912285 + r3912286;
        double r3912288 = r3912285 / r3912287;
        double r3912289 = r3912285 - r3912286;
        double r3912290 = r3912287 / r3912289;
        double r3912291 = r3912288 - r3912290;
        return r3912291;
}


double f_of(float x) {
        float r3912292 = x;
        float r3912293 = -11711.035741065163;
        bool r3912294 = r3912292 <= r3912293;
        float r3912295 = 1;
        float r3912296 = 3;
        float r3912297 = r3912296 / r3912292;
        float r3912298 = r3912295 + r3912297;
        float r3912299 = -r3912295;
        float r3912300 = r3912292 * r3912292;
        float r3912301 = r3912299 / r3912300;
        float r3912302 = r3912298 * r3912301;
        float r3912303 = -r3912297;
        float r3912304 = r3912302 + r3912303;
        float r3912305 = 13794.093518101245;
        bool r3912306 = r3912292 <= r3912305;
        float r3912307 = r3912292 + r3912295;
        float r3912308 = r3912295 / r3912307;
        float r3912309 = r3912292 * r3912308;
        float r3912310 = r3912292 - r3912295;
        float r3912311 = r3912307 / r3912310;
        float r3912312 = r3912309 - r3912311;
        float r3912313 = r3912306 ? r3912312 : r3912304;
        float r3912314 = r3912294 ? r3912304 : r3912313;
        return r3912314;
}

double f_od(double x) {
        double r3912315 = x;
        double r3912316 = -11711.035741065163;
        bool r3912317 = r3912315 <= r3912316;
        double r3912318 = 1;
        double r3912319 = 3;
        double r3912320 = r3912319 / r3912315;
        double r3912321 = r3912318 + r3912320;
        double r3912322 = -r3912318;
        double r3912323 = r3912315 * r3912315;
        double r3912324 = r3912322 / r3912323;
        double r3912325 = r3912321 * r3912324;
        double r3912326 = -r3912320;
        double r3912327 = r3912325 + r3912326;
        double r3912328 = 13794.093518101245;
        bool r3912329 = r3912315 <= r3912328;
        double r3912330 = r3912315 + r3912318;
        double r3912331 = r3912318 / r3912330;
        double r3912332 = r3912315 * r3912331;
        double r3912333 = r3912315 - r3912318;
        double r3912334 = r3912330 / r3912333;
        double r3912335 = r3912332 - r3912334;
        double r3912336 = r3912329 ? r3912335 : r3912327;
        double r3912337 = r3912317 ? r3912327 : r3912336;
        return r3912337;
}

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 r3912338, r3912339, r3912340, r3912341, r3912342, r3912343, r3912344;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r3912338);
        mpfr_init_set_str(r3912339, "1", 10, MPFR_RNDN);
        mpfr_init(r3912340);
        mpfr_init(r3912341);
        mpfr_init(r3912342);
        mpfr_init(r3912343);
        mpfr_init(r3912344);
}

double f_im(double x) {
        mpfr_set_d(r3912338, x, MPFR_RNDN);
        ;
        mpfr_add(r3912340, r3912338, r3912339, MPFR_RNDN);
        mpfr_div(r3912341, r3912338, r3912340, MPFR_RNDN);
        mpfr_sub(r3912342, r3912338, r3912339, MPFR_RNDN);
        mpfr_div(r3912343, r3912340, r3912342, MPFR_RNDN);
        mpfr_sub(r3912344, r3912341, r3912343, MPFR_RNDN);
        return mpfr_get_d(r3912344, MPFR_RNDN);
}

static mpfr_t r3912345, r3912346, r3912347, r3912348, r3912349, r3912350, r3912351, r3912352, r3912353, r3912354, r3912355, r3912356, r3912357, r3912358, r3912359, r3912360, r3912361, r3912362, r3912363, r3912364, r3912365, r3912366, r3912367;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r3912345);
        mpfr_init_set_str(r3912346, "-11711.035741065163", 10, MPFR_RNDN);
        mpfr_init(r3912347);
        mpfr_init_set_str(r3912348, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r3912349, "3", 10, MPFR_RNDN);
        mpfr_init(r3912350);
        mpfr_init(r3912351);
        mpfr_init(r3912352);
        mpfr_init(r3912353);
        mpfr_init(r3912354);
        mpfr_init(r3912355);
        mpfr_init(r3912356);
        mpfr_init(r3912357);
        mpfr_init_set_str(r3912358, "13794.093518101245", 10, MPFR_RNDN);
        mpfr_init(r3912359);
        mpfr_init(r3912360);
        mpfr_init(r3912361);
        mpfr_init(r3912362);
        mpfr_init(r3912363);
        mpfr_init(r3912364);
        mpfr_init(r3912365);
        mpfr_init(r3912366);
        mpfr_init(r3912367);
}

double f_fm(double x) {
        mpfr_set_d(r3912345, x, MPFR_RNDN);
        ;
        mpfr_set_si(r3912347, mpfr_cmp(r3912345, r3912346) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r3912350, r3912349, r3912345, MPFR_RNDN);
        mpfr_add(r3912351, r3912348, r3912350, MPFR_RNDN);
        mpfr_neg(r3912352, r3912348, MPFR_RNDN);
        mpfr_mul(r3912353, r3912345, r3912345, MPFR_RNDN);
        mpfr_div(r3912354, r3912352, r3912353, MPFR_RNDN);
        mpfr_mul(r3912355, r3912351, r3912354, MPFR_RNDN);
        mpfr_neg(r3912356, r3912350, MPFR_RNDN);
        mpfr_add(r3912357, r3912355, r3912356, MPFR_RNDN);
        ;
        mpfr_set_si(r3912359, mpfr_cmp(r3912345, r3912358) <= 0, MPFR_RNDN);
        mpfr_add(r3912360, r3912345, r3912348, MPFR_RNDN);
        mpfr_div(r3912361, r3912348, r3912360, MPFR_RNDN);
        mpfr_mul(r3912362, r3912345, r3912361, MPFR_RNDN);
        mpfr_sub(r3912363, r3912345, r3912348, MPFR_RNDN);
        mpfr_div(r3912364, r3912360, r3912363, MPFR_RNDN);
        mpfr_sub(r3912365, r3912362, r3912364, MPFR_RNDN);
        if (mpfr_get_si(r3912359, MPFR_RNDN)) { mpfr_set(r3912366, r3912365, MPFR_RNDN); } else { mpfr_set(r3912366, r3912357, MPFR_RNDN); };
        if (mpfr_get_si(r3912347, MPFR_RNDN)) { mpfr_set(r3912367, r3912357, MPFR_RNDN); } else { mpfr_set(r3912367, r3912366, MPFR_RNDN); };
        return mpfr_get_d(r3912367, MPFR_RNDN);
}

static mpfr_t r3912368, r3912369, r3912370, r3912371, r3912372, r3912373, r3912374, r3912375, r3912376, r3912377, r3912378, r3912379, r3912380, r3912381, r3912382, r3912383, r3912384, r3912385, r3912386, r3912387, r3912388, r3912389, r3912390;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r3912368);
        mpfr_init_set_str(r3912369, "-11711.035741065163", 10, MPFR_RNDN);
        mpfr_init(r3912370);
        mpfr_init_set_str(r3912371, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r3912372, "3", 10, MPFR_RNDN);
        mpfr_init(r3912373);
        mpfr_init(r3912374);
        mpfr_init(r3912375);
        mpfr_init(r3912376);
        mpfr_init(r3912377);
        mpfr_init(r3912378);
        mpfr_init(r3912379);
        mpfr_init(r3912380);
        mpfr_init_set_str(r3912381, "13794.093518101245", 10, MPFR_RNDN);
        mpfr_init(r3912382);
        mpfr_init(r3912383);
        mpfr_init(r3912384);
        mpfr_init(r3912385);
        mpfr_init(r3912386);
        mpfr_init(r3912387);
        mpfr_init(r3912388);
        mpfr_init(r3912389);
        mpfr_init(r3912390);
}

double f_dm(double x) {
        mpfr_set_d(r3912368, x, MPFR_RNDN);
        ;
        mpfr_set_si(r3912370, mpfr_cmp(r3912368, r3912369) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r3912373, r3912372, r3912368, MPFR_RNDN);
        mpfr_add(r3912374, r3912371, r3912373, MPFR_RNDN);
        mpfr_neg(r3912375, r3912371, MPFR_RNDN);
        mpfr_mul(r3912376, r3912368, r3912368, MPFR_RNDN);
        mpfr_div(r3912377, r3912375, r3912376, MPFR_RNDN);
        mpfr_mul(r3912378, r3912374, r3912377, MPFR_RNDN);
        mpfr_neg(r3912379, r3912373, MPFR_RNDN);
        mpfr_add(r3912380, r3912378, r3912379, MPFR_RNDN);
        ;
        mpfr_set_si(r3912382, mpfr_cmp(r3912368, r3912381) <= 0, MPFR_RNDN);
        mpfr_add(r3912383, r3912368, r3912371, MPFR_RNDN);
        mpfr_div(r3912384, r3912371, r3912383, MPFR_RNDN);
        mpfr_mul(r3912385, r3912368, r3912384, MPFR_RNDN);
        mpfr_sub(r3912386, r3912368, r3912371, MPFR_RNDN);
        mpfr_div(r3912387, r3912383, r3912386, MPFR_RNDN);
        mpfr_sub(r3912388, r3912385, r3912387, MPFR_RNDN);
        if (mpfr_get_si(r3912382, MPFR_RNDN)) { mpfr_set(r3912389, r3912388, MPFR_RNDN); } else { mpfr_set(r3912389, r3912380, MPFR_RNDN); };
        if (mpfr_get_si(r3912370, MPFR_RNDN)) { mpfr_set(r3912390, r3912380, MPFR_RNDN); } else { mpfr_set(r3912390, r3912389, MPFR_RNDN); };
        return mpfr_get_d(r3912390, MPFR_RNDN);
}

