#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 r26376 = x;
        float r26377 = 1;
        float r26378 = r26376 + r26377;
        float r26379 = r26376 / r26378;
        float r26380 = r26376 - r26377;
        float r26381 = r26378 / r26380;
        float r26382 = r26379 - r26381;
        return r26382;
}

double f_id(double x) {
        double r26383 = x;
        double r26384 = 1;
        double r26385 = r26383 + r26384;
        double r26386 = r26383 / r26385;
        double r26387 = r26383 - r26384;
        double r26388 = r26385 / r26387;
        double r26389 = r26386 - r26388;
        return r26389;
}


double f_of(float x) {
        float r26390 = x;
        float r26391 = -10384.041792176024;
        bool r26392 = r26390 <= r26391;
        float r26393 = 15321.64328548718;
        bool r26394 = r26390 <= r26393;
        float r26395 = !r26394;
        bool r26396 = r26392 || r26395;
        float r26397 = 3;
        float r26398 = r26397 / r26390;
        float r26399 = -r26398;
        float r26400 = 1;
        float r26401 = r26400 + r26398;
        float r26402 = r26390 * r26390;
        float r26403 = r26401 / r26402;
        float r26404 = r26399 - r26403;
        float r26405 = r26402 - r26400;
        float r26406 = r26390 / r26405;
        float r26407 = pow(r26406, r26397);
        float r26408 = r26390 - r26400;
        float r26409 = pow(r26408, r26397);
        float r26410 = r26407 * r26409;
        float r26411 = r26410 * r26410;
        float r26412 = r26400 + r26390;
        float r26413 = r26412 / r26408;
        float r26414 = pow(r26413, r26397);
        float r26415 = r26414 * r26414;
        float r26416 = r26411 - r26415;
        float r26417 = r26410 + r26414;
        float r26418 = r26416 / r26417;
        float r26419 = r26390 / r26412;
        float r26420 = r26419 + r26413;
        float r26421 = r26420 * r26413;
        float r26422 = r26419 * r26419;
        float r26423 = r26421 + r26422;
        float r26424 = r26418 / r26423;
        float r26425 = r26396 ? r26404 : r26424;
        return r26425;
}

double f_od(double x) {
        double r26426 = x;
        double r26427 = -10384.041792176024;
        bool r26428 = r26426 <= r26427;
        double r26429 = 15321.64328548718;
        bool r26430 = r26426 <= r26429;
        double r26431 = !r26430;
        bool r26432 = r26428 || r26431;
        double r26433 = 3;
        double r26434 = r26433 / r26426;
        double r26435 = -r26434;
        double r26436 = 1;
        double r26437 = r26436 + r26434;
        double r26438 = r26426 * r26426;
        double r26439 = r26437 / r26438;
        double r26440 = r26435 - r26439;
        double r26441 = r26438 - r26436;
        double r26442 = r26426 / r26441;
        double r26443 = pow(r26442, r26433);
        double r26444 = r26426 - r26436;
        double r26445 = pow(r26444, r26433);
        double r26446 = r26443 * r26445;
        double r26447 = r26446 * r26446;
        double r26448 = r26436 + r26426;
        double r26449 = r26448 / r26444;
        double r26450 = pow(r26449, r26433);
        double r26451 = r26450 * r26450;
        double r26452 = r26447 - r26451;
        double r26453 = r26446 + r26450;
        double r26454 = r26452 / r26453;
        double r26455 = r26426 / r26448;
        double r26456 = r26455 + r26449;
        double r26457 = r26456 * r26449;
        double r26458 = r26455 * r26455;
        double r26459 = r26457 + r26458;
        double r26460 = r26454 / r26459;
        double r26461 = r26432 ? r26440 : r26460;
        return r26461;
}

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 r26462, r26463, r26464, r26465, r26466, r26467, r26468;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26462);
        mpfr_init_set_str(r26463, "1", 10, MPFR_RNDN);
        mpfr_init(r26464);
        mpfr_init(r26465);
        mpfr_init(r26466);
        mpfr_init(r26467);
        mpfr_init(r26468);
}

double f_im(double x) {
        mpfr_set_d(r26462, x, MPFR_RNDN);
        ;
        mpfr_add(r26464, r26462, r26463, MPFR_RNDN);
        mpfr_div(r26465, r26462, r26464, MPFR_RNDN);
        mpfr_sub(r26466, r26462, r26463, MPFR_RNDN);
        mpfr_div(r26467, r26464, r26466, MPFR_RNDN);
        mpfr_sub(r26468, r26465, r26467, MPFR_RNDN);
        return mpfr_get_d(r26468, MPFR_RNDN);
}

static mpfr_t r26469, r26470, r26471, r26472, r26473, r26474, r26475, r26476, r26477, r26478, r26479, r26480, r26481, r26482, r26483, r26484, r26485, r26486, r26487, r26488, r26489, r26490, r26491, r26492, r26493, r26494, r26495, r26496, r26497, r26498, r26499, r26500, r26501, r26502, r26503, r26504;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26469);
        mpfr_init_set_str(r26470, "-10384.041792176024", 10, MPFR_RNDN);
        mpfr_init(r26471);
        mpfr_init_set_str(r26472, "15321.64328548718", 10, MPFR_RNDN);
        mpfr_init(r26473);
        mpfr_init(r26474);
        mpfr_init(r26475);
        mpfr_init_set_str(r26476, "3", 10, MPFR_RNDN);
        mpfr_init(r26477);
        mpfr_init(r26478);
        mpfr_init_set_str(r26479, "1", 10, MPFR_RNDN);
        mpfr_init(r26480);
        mpfr_init(r26481);
        mpfr_init(r26482);
        mpfr_init(r26483);
        mpfr_init(r26484);
        mpfr_init(r26485);
        mpfr_init(r26486);
        mpfr_init(r26487);
        mpfr_init(r26488);
        mpfr_init(r26489);
        mpfr_init(r26490);
        mpfr_init(r26491);
        mpfr_init(r26492);
        mpfr_init(r26493);
        mpfr_init(r26494);
        mpfr_init(r26495);
        mpfr_init(r26496);
        mpfr_init(r26497);
        mpfr_init(r26498);
        mpfr_init(r26499);
        mpfr_init(r26500);
        mpfr_init(r26501);
        mpfr_init(r26502);
        mpfr_init(r26503);
        mpfr_init(r26504);
}

double f_fm(double x) {
        mpfr_set_d(r26469, x, MPFR_RNDN);
        ;
        mpfr_set_si(r26471, mpfr_cmp(r26469, r26470) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26473, mpfr_cmp(r26469, r26472) <= 0, MPFR_RNDN);
        mpfr_set_si(r26474, !mpfr_get_si(r26473, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r26475, mpfr_get_si(r26471, MPFR_RNDN) || mpfr_get_si(r26474, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_div(r26477, r26476, r26469, MPFR_RNDN);
        mpfr_neg(r26478, r26477, MPFR_RNDN);
        ;
        mpfr_add(r26480, r26479, r26477, MPFR_RNDN);
        mpfr_mul(r26481, r26469, r26469, MPFR_RNDN);
        mpfr_div(r26482, r26480, r26481, MPFR_RNDN);
        mpfr_sub(r26483, r26478, r26482, MPFR_RNDN);
        mpfr_sub(r26484, r26481, r26479, MPFR_RNDN);
        mpfr_div(r26485, r26469, r26484, MPFR_RNDN);
        mpfr_pow(r26486, r26485, r26476, MPFR_RNDN);
        mpfr_sub(r26487, r26469, r26479, MPFR_RNDN);
        mpfr_pow(r26488, r26487, r26476, MPFR_RNDN);
        mpfr_mul(r26489, r26486, r26488, MPFR_RNDN);
        mpfr_mul(r26490, r26489, r26489, MPFR_RNDN);
        mpfr_add(r26491, r26479, r26469, MPFR_RNDN);
        mpfr_div(r26492, r26491, r26487, MPFR_RNDN);
        mpfr_pow(r26493, r26492, r26476, MPFR_RNDN);
        mpfr_mul(r26494, r26493, r26493, MPFR_RNDN);
        mpfr_sub(r26495, r26490, r26494, MPFR_RNDN);
        mpfr_add(r26496, r26489, r26493, MPFR_RNDN);
        mpfr_div(r26497, r26495, r26496, MPFR_RNDN);
        mpfr_div(r26498, r26469, r26491, MPFR_RNDN);
        mpfr_add(r26499, r26498, r26492, MPFR_RNDN);
        mpfr_mul(r26500, r26499, r26492, MPFR_RNDN);
        mpfr_mul(r26501, r26498, r26498, MPFR_RNDN);
        mpfr_add(r26502, r26500, r26501, MPFR_RNDN);
        mpfr_div(r26503, r26497, r26502, MPFR_RNDN);
        if (mpfr_get_si(r26475, MPFR_RNDN)) { mpfr_set(r26504, r26483, MPFR_RNDN); } else { mpfr_set(r26504, r26503, MPFR_RNDN); };
        return mpfr_get_d(r26504, MPFR_RNDN);
}

static mpfr_t r26505, r26506, r26507, r26508, r26509, r26510, r26511, r26512, r26513, r26514, r26515, r26516, r26517, r26518, r26519, r26520, r26521, r26522, r26523, r26524, r26525, r26526, r26527, r26528, r26529, r26530, r26531, r26532, r26533, r26534, r26535, r26536, r26537, r26538, r26539, r26540;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26505);
        mpfr_init_set_str(r26506, "-10384.041792176024", 10, MPFR_RNDN);
        mpfr_init(r26507);
        mpfr_init_set_str(r26508, "15321.64328548718", 10, MPFR_RNDN);
        mpfr_init(r26509);
        mpfr_init(r26510);
        mpfr_init(r26511);
        mpfr_init_set_str(r26512, "3", 10, MPFR_RNDN);
        mpfr_init(r26513);
        mpfr_init(r26514);
        mpfr_init_set_str(r26515, "1", 10, MPFR_RNDN);
        mpfr_init(r26516);
        mpfr_init(r26517);
        mpfr_init(r26518);
        mpfr_init(r26519);
        mpfr_init(r26520);
        mpfr_init(r26521);
        mpfr_init(r26522);
        mpfr_init(r26523);
        mpfr_init(r26524);
        mpfr_init(r26525);
        mpfr_init(r26526);
        mpfr_init(r26527);
        mpfr_init(r26528);
        mpfr_init(r26529);
        mpfr_init(r26530);
        mpfr_init(r26531);
        mpfr_init(r26532);
        mpfr_init(r26533);
        mpfr_init(r26534);
        mpfr_init(r26535);
        mpfr_init(r26536);
        mpfr_init(r26537);
        mpfr_init(r26538);
        mpfr_init(r26539);
        mpfr_init(r26540);
}

double f_dm(double x) {
        mpfr_set_d(r26505, x, MPFR_RNDN);
        ;
        mpfr_set_si(r26507, mpfr_cmp(r26505, r26506) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26509, mpfr_cmp(r26505, r26508) <= 0, MPFR_RNDN);
        mpfr_set_si(r26510, !mpfr_get_si(r26509, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r26511, mpfr_get_si(r26507, MPFR_RNDN) || mpfr_get_si(r26510, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_div(r26513, r26512, r26505, MPFR_RNDN);
        mpfr_neg(r26514, r26513, MPFR_RNDN);
        ;
        mpfr_add(r26516, r26515, r26513, MPFR_RNDN);
        mpfr_mul(r26517, r26505, r26505, MPFR_RNDN);
        mpfr_div(r26518, r26516, r26517, MPFR_RNDN);
        mpfr_sub(r26519, r26514, r26518, MPFR_RNDN);
        mpfr_sub(r26520, r26517, r26515, MPFR_RNDN);
        mpfr_div(r26521, r26505, r26520, MPFR_RNDN);
        mpfr_pow(r26522, r26521, r26512, MPFR_RNDN);
        mpfr_sub(r26523, r26505, r26515, MPFR_RNDN);
        mpfr_pow(r26524, r26523, r26512, MPFR_RNDN);
        mpfr_mul(r26525, r26522, r26524, MPFR_RNDN);
        mpfr_mul(r26526, r26525, r26525, MPFR_RNDN);
        mpfr_add(r26527, r26515, r26505, MPFR_RNDN);
        mpfr_div(r26528, r26527, r26523, MPFR_RNDN);
        mpfr_pow(r26529, r26528, r26512, MPFR_RNDN);
        mpfr_mul(r26530, r26529, r26529, MPFR_RNDN);
        mpfr_sub(r26531, r26526, r26530, MPFR_RNDN);
        mpfr_add(r26532, r26525, r26529, MPFR_RNDN);
        mpfr_div(r26533, r26531, r26532, MPFR_RNDN);
        mpfr_div(r26534, r26505, r26527, MPFR_RNDN);
        mpfr_add(r26535, r26534, r26528, MPFR_RNDN);
        mpfr_mul(r26536, r26535, r26528, MPFR_RNDN);
        mpfr_mul(r26537, r26534, r26534, MPFR_RNDN);
        mpfr_add(r26538, r26536, r26537, MPFR_RNDN);
        mpfr_div(r26539, r26533, r26538, MPFR_RNDN);
        if (mpfr_get_si(r26511, MPFR_RNDN)) { mpfr_set(r26540, r26519, MPFR_RNDN); } else { mpfr_set(r26540, r26539, MPFR_RNDN); };
        return mpfr_get_d(r26540, MPFR_RNDN);
}

