#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 r26472 = x;
        float r26473 = 1;
        float r26474 = r26472 + r26473;
        float r26475 = r26472 / r26474;
        float r26476 = r26472 - r26473;
        float r26477 = r26474 / r26476;
        float r26478 = r26475 - r26477;
        return r26478;
}

double f_id(double x) {
        double r26479 = x;
        double r26480 = 1;
        double r26481 = r26479 + r26480;
        double r26482 = r26479 / r26481;
        double r26483 = r26479 - r26480;
        double r26484 = r26481 / r26483;
        double r26485 = r26482 - r26484;
        return r26485;
}


double f_of(float x) {
        float r26486 = x;
        float r26487 = -1.0027487462279761e+33;
        bool r26488 = r26486 <= r26487;
        float r26489 = 616004193554312.5;
        bool r26490 = r26486 <= r26489;
        float r26491 = !r26490;
        bool r26492 = r26488 || r26491;
        float r26493 = 3;
        float r26494 = r26493 / r26486;
        float r26495 = -r26494;
        float r26496 = 1;
        float r26497 = r26496 + r26494;
        float r26498 = r26486 * r26486;
        float r26499 = r26497 / r26498;
        float r26500 = r26495 - r26499;
        float r26501 = -r26486;
        float r26502 = r26501 - r26486;
        float r26503 = r26486 - r26496;
        float r26504 = r26496 + r26486;
        float r26505 = r26503 * r26504;
        float r26506 = r26502 / r26505;
        float r26507 = r26496 / r26503;
        float r26508 = r26506 - r26507;
        float r26509 = r26492 ? r26500 : r26508;
        return r26509;
}

double f_od(double x) {
        double r26510 = x;
        double r26511 = -1.0027487462279761e+33;
        bool r26512 = r26510 <= r26511;
        double r26513 = 616004193554312.5;
        bool r26514 = r26510 <= r26513;
        double r26515 = !r26514;
        bool r26516 = r26512 || r26515;
        double r26517 = 3;
        double r26518 = r26517 / r26510;
        double r26519 = -r26518;
        double r26520 = 1;
        double r26521 = r26520 + r26518;
        double r26522 = r26510 * r26510;
        double r26523 = r26521 / r26522;
        double r26524 = r26519 - r26523;
        double r26525 = -r26510;
        double r26526 = r26525 - r26510;
        double r26527 = r26510 - r26520;
        double r26528 = r26520 + r26510;
        double r26529 = r26527 * r26528;
        double r26530 = r26526 / r26529;
        double r26531 = r26520 / r26527;
        double r26532 = r26530 - r26531;
        double r26533 = r26516 ? r26524 : r26532;
        return r26533;
}

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 r26534, r26535, r26536, r26537, r26538, r26539, r26540;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26534);
        mpfr_init_set_str(r26535, "1", 10, MPFR_RNDN);
        mpfr_init(r26536);
        mpfr_init(r26537);
        mpfr_init(r26538);
        mpfr_init(r26539);
        mpfr_init(r26540);
}

double f_im(double x) {
        mpfr_set_d(r26534, x, MPFR_RNDN);
        ;
        mpfr_add(r26536, r26534, r26535, MPFR_RNDN);
        mpfr_div(r26537, r26534, r26536, MPFR_RNDN);
        mpfr_sub(r26538, r26534, r26535, MPFR_RNDN);
        mpfr_div(r26539, r26536, r26538, MPFR_RNDN);
        mpfr_sub(r26540, r26537, r26539, MPFR_RNDN);
        return mpfr_get_d(r26540, MPFR_RNDN);
}

static mpfr_t r26541, r26542, r26543, r26544, r26545, r26546, r26547, r26548, r26549, r26550, r26551, r26552, r26553, r26554, r26555, r26556, r26557, r26558, r26559, r26560, r26561, r26562, r26563, r26564;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26541);
        mpfr_init_set_str(r26542, "-1.0027487462279761e+33", 10, MPFR_RNDN);
        mpfr_init(r26543);
        mpfr_init_set_str(r26544, "616004193554312.5", 10, MPFR_RNDN);
        mpfr_init(r26545);
        mpfr_init(r26546);
        mpfr_init(r26547);
        mpfr_init_set_str(r26548, "3", 10, MPFR_RNDN);
        mpfr_init(r26549);
        mpfr_init(r26550);
        mpfr_init_set_str(r26551, "1", 10, MPFR_RNDN);
        mpfr_init(r26552);
        mpfr_init(r26553);
        mpfr_init(r26554);
        mpfr_init(r26555);
        mpfr_init(r26556);
        mpfr_init(r26557);
        mpfr_init(r26558);
        mpfr_init(r26559);
        mpfr_init(r26560);
        mpfr_init(r26561);
        mpfr_init(r26562);
        mpfr_init(r26563);
        mpfr_init(r26564);
}

double f_fm(double x) {
        mpfr_set_d(r26541, x, MPFR_RNDN);
        ;
        mpfr_set_si(r26543, mpfr_cmp(r26541, r26542) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26545, mpfr_cmp(r26541, r26544) <= 0, MPFR_RNDN);
        mpfr_set_si(r26546, !mpfr_get_si(r26545, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r26547, mpfr_get_si(r26543, MPFR_RNDN) || mpfr_get_si(r26546, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_div(r26549, r26548, r26541, MPFR_RNDN);
        mpfr_neg(r26550, r26549, MPFR_RNDN);
        ;
        mpfr_add(r26552, r26551, r26549, MPFR_RNDN);
        mpfr_mul(r26553, r26541, r26541, MPFR_RNDN);
        mpfr_div(r26554, r26552, r26553, MPFR_RNDN);
        mpfr_sub(r26555, r26550, r26554, MPFR_RNDN);
        mpfr_neg(r26556, r26541, MPFR_RNDN);
        mpfr_sub(r26557, r26556, r26541, MPFR_RNDN);
        mpfr_sub(r26558, r26541, r26551, MPFR_RNDN);
        mpfr_add(r26559, r26551, r26541, MPFR_RNDN);
        mpfr_mul(r26560, r26558, r26559, MPFR_RNDN);
        mpfr_div(r26561, r26557, r26560, MPFR_RNDN);
        mpfr_div(r26562, r26551, r26558, MPFR_RNDN);
        mpfr_sub(r26563, r26561, r26562, MPFR_RNDN);
        if (mpfr_get_si(r26547, MPFR_RNDN)) { mpfr_set(r26564, r26555, MPFR_RNDN); } else { mpfr_set(r26564, r26563, MPFR_RNDN); };
        return mpfr_get_d(r26564, MPFR_RNDN);
}

static mpfr_t r26565, r26566, r26567, r26568, r26569, r26570, r26571, r26572, r26573, r26574, r26575, r26576, r26577, r26578, r26579, r26580, r26581, r26582, r26583, r26584, r26585, r26586, r26587, r26588;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26565);
        mpfr_init_set_str(r26566, "-1.0027487462279761e+33", 10, MPFR_RNDN);
        mpfr_init(r26567);
        mpfr_init_set_str(r26568, "616004193554312.5", 10, MPFR_RNDN);
        mpfr_init(r26569);
        mpfr_init(r26570);
        mpfr_init(r26571);
        mpfr_init_set_str(r26572, "3", 10, MPFR_RNDN);
        mpfr_init(r26573);
        mpfr_init(r26574);
        mpfr_init_set_str(r26575, "1", 10, MPFR_RNDN);
        mpfr_init(r26576);
        mpfr_init(r26577);
        mpfr_init(r26578);
        mpfr_init(r26579);
        mpfr_init(r26580);
        mpfr_init(r26581);
        mpfr_init(r26582);
        mpfr_init(r26583);
        mpfr_init(r26584);
        mpfr_init(r26585);
        mpfr_init(r26586);
        mpfr_init(r26587);
        mpfr_init(r26588);
}

double f_dm(double x) {
        mpfr_set_d(r26565, x, MPFR_RNDN);
        ;
        mpfr_set_si(r26567, mpfr_cmp(r26565, r26566) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r26569, mpfr_cmp(r26565, r26568) <= 0, MPFR_RNDN);
        mpfr_set_si(r26570, !mpfr_get_si(r26569, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r26571, mpfr_get_si(r26567, MPFR_RNDN) || mpfr_get_si(r26570, MPFR_RNDN), MPFR_RNDN);
        ;
        mpfr_div(r26573, r26572, r26565, MPFR_RNDN);
        mpfr_neg(r26574, r26573, MPFR_RNDN);
        ;
        mpfr_add(r26576, r26575, r26573, MPFR_RNDN);
        mpfr_mul(r26577, r26565, r26565, MPFR_RNDN);
        mpfr_div(r26578, r26576, r26577, MPFR_RNDN);
        mpfr_sub(r26579, r26574, r26578, MPFR_RNDN);
        mpfr_neg(r26580, r26565, MPFR_RNDN);
        mpfr_sub(r26581, r26580, r26565, MPFR_RNDN);
        mpfr_sub(r26582, r26565, r26575, MPFR_RNDN);
        mpfr_add(r26583, r26575, r26565, MPFR_RNDN);
        mpfr_mul(r26584, r26582, r26583, MPFR_RNDN);
        mpfr_div(r26585, r26581, r26584, MPFR_RNDN);
        mpfr_div(r26586, r26575, r26582, MPFR_RNDN);
        mpfr_sub(r26587, r26585, r26586, MPFR_RNDN);
        if (mpfr_get_si(r26571, MPFR_RNDN)) { mpfr_set(r26588, r26579, MPFR_RNDN); } else { mpfr_set(r26588, r26587, MPFR_RNDN); };
        return mpfr_get_d(r26588, MPFR_RNDN);
}

