#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 r26525 = x;
        float r26526 = 1;
        float r26527 = r26525 + r26526;
        float r26528 = r26525 / r26527;
        float r26529 = r26525 - r26526;
        float r26530 = r26527 / r26529;
        float r26531 = r26528 - r26530;
        return r26531;
}

double f_id(double x) {
        double r26532 = x;
        double r26533 = 1;
        double r26534 = r26532 + r26533;
        double r26535 = r26532 / r26534;
        double r26536 = r26532 - r26533;
        double r26537 = r26534 / r26536;
        double r26538 = r26535 - r26537;
        return r26538;
}


double f_of(float x) {
        float r26539 = x;
        float r26540 = 1;
        float r26541 = r26539 + r26540;
        float r26542 = r26539 / r26541;
        float r26543 = r26539 - r26540;
        float r26544 = r26541 / r26543;
        float r26545 = r26542 - r26544;
        float r26546 = 2.1316266130167845e-219;
        bool r26547 = r26545 <= r26546;
        float r26548 = 3;
        float r26549 = r26548 / r26539;
        float r26550 = r26540 + r26549;
        float r26551 = -r26540;
        float r26552 = r26539 * r26539;
        float r26553 = r26551 / r26552;
        float r26554 = -r26549;
        float r26555 = fma(r26550, r26553, r26554);
        float r26556 = r26542 * r26539;
        float r26557 = r26543 * r26543;
        float r26558 = r26556 * r26557;
        float r26559 = r26541 * r26541;
        float r26560 = r26541 * r26559;
        float r26561 = r26558 - r26560;
        float r26562 = r26541 * r26557;
        float r26563 = r26561 / r26562;
        float r26564 = r26542 + r26544;
        float r26565 = r26563 / r26564;
        float r26566 = r26547 ? r26555 : r26565;
        return r26566;
}

double f_od(double x) {
        double r26567 = x;
        double r26568 = 1;
        double r26569 = r26567 + r26568;
        double r26570 = r26567 / r26569;
        double r26571 = r26567 - r26568;
        double r26572 = r26569 / r26571;
        double r26573 = r26570 - r26572;
        double r26574 = 2.1316266130167845e-219;
        bool r26575 = r26573 <= r26574;
        double r26576 = 3;
        double r26577 = r26576 / r26567;
        double r26578 = r26568 + r26577;
        double r26579 = -r26568;
        double r26580 = r26567 * r26567;
        double r26581 = r26579 / r26580;
        double r26582 = -r26577;
        double r26583 = fma(r26578, r26581, r26582);
        double r26584 = r26570 * r26567;
        double r26585 = r26571 * r26571;
        double r26586 = r26584 * r26585;
        double r26587 = r26569 * r26569;
        double r26588 = r26569 * r26587;
        double r26589 = r26586 - r26588;
        double r26590 = r26569 * r26585;
        double r26591 = r26589 / r26590;
        double r26592 = r26570 + r26572;
        double r26593 = r26591 / r26592;
        double r26594 = r26575 ? r26583 : r26593;
        return r26594;
}

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 r26595, r26596, r26597, r26598, r26599, r26600, r26601;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26595);
        mpfr_init_set_str(r26596, "1", 10, MPFR_RNDN);
        mpfr_init(r26597);
        mpfr_init(r26598);
        mpfr_init(r26599);
        mpfr_init(r26600);
        mpfr_init(r26601);
}

double f_im(double x) {
        mpfr_set_d(r26595, x, MPFR_RNDN);
        ;
        mpfr_add(r26597, r26595, r26596, MPFR_RNDN);
        mpfr_div(r26598, r26595, r26597, MPFR_RNDN);
        mpfr_sub(r26599, r26595, r26596, MPFR_RNDN);
        mpfr_div(r26600, r26597, r26599, MPFR_RNDN);
        mpfr_sub(r26601, r26598, r26600, MPFR_RNDN);
        return mpfr_get_d(r26601, MPFR_RNDN);
}

static mpfr_t r26602, r26603, r26604, r26605, r26606, r26607, r26608, r26609, r26610, r26611, r26612, r26613, r26614, r26615, r26616, r26617, r26618, r26619, r26620, r26621, r26622, r26623, r26624, r26625, r26626, r26627, r26628, r26629;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26602);
        mpfr_init_set_str(r26603, "1", 10, MPFR_RNDN);
        mpfr_init(r26604);
        mpfr_init(r26605);
        mpfr_init(r26606);
        mpfr_init(r26607);
        mpfr_init(r26608);
        mpfr_init_set_str(r26609, "2.1316266130167845e-219", 10, MPFR_RNDN);
        mpfr_init(r26610);
        mpfr_init_set_str(r26611, "3", 10, MPFR_RNDN);
        mpfr_init(r26612);
        mpfr_init(r26613);
        mpfr_init(r26614);
        mpfr_init(r26615);
        mpfr_init(r26616);
        mpfr_init(r26617);
        mpfr_init(r26618);
        mpfr_init(r26619);
        mpfr_init(r26620);
        mpfr_init(r26621);
        mpfr_init(r26622);
        mpfr_init(r26623);
        mpfr_init(r26624);
        mpfr_init(r26625);
        mpfr_init(r26626);
        mpfr_init(r26627);
        mpfr_init(r26628);
        mpfr_init(r26629);
}

double f_fm(double x) {
        mpfr_set_d(r26602, x, MPFR_RNDN);
        ;
        mpfr_add(r26604, r26602, r26603, MPFR_RNDN);
        mpfr_div(r26605, r26602, r26604, MPFR_RNDN);
        mpfr_sub(r26606, r26602, r26603, MPFR_RNDN);
        mpfr_div(r26607, r26604, r26606, MPFR_RNDN);
        mpfr_sub(r26608, r26605, r26607, MPFR_RNDN);
        ;
        mpfr_set_si(r26610, mpfr_cmp(r26608, r26609) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26612, r26611, r26602, MPFR_RNDN);
        mpfr_add(r26613, r26603, r26612, MPFR_RNDN);
        mpfr_neg(r26614, r26603, MPFR_RNDN);
        mpfr_mul(r26615, r26602, r26602, MPFR_RNDN);
        mpfr_div(r26616, r26614, r26615, MPFR_RNDN);
        mpfr_neg(r26617, r26612, MPFR_RNDN);
        mpfr_fma(r26618, r26613, r26616, r26617, MPFR_RNDN);
        mpfr_mul(r26619, r26605, r26602, MPFR_RNDN);
        mpfr_mul(r26620, r26606, r26606, MPFR_RNDN);
        mpfr_mul(r26621, r26619, r26620, MPFR_RNDN);
        mpfr_mul(r26622, r26604, r26604, MPFR_RNDN);
        mpfr_mul(r26623, r26604, r26622, MPFR_RNDN);
        mpfr_sub(r26624, r26621, r26623, MPFR_RNDN);
        mpfr_mul(r26625, r26604, r26620, MPFR_RNDN);
        mpfr_div(r26626, r26624, r26625, MPFR_RNDN);
        mpfr_add(r26627, r26605, r26607, MPFR_RNDN);
        mpfr_div(r26628, r26626, r26627, MPFR_RNDN);
        if (mpfr_get_si(r26610, MPFR_RNDN)) { mpfr_set(r26629, r26618, MPFR_RNDN); } else { mpfr_set(r26629, r26628, MPFR_RNDN); };
        return mpfr_get_d(r26629, MPFR_RNDN);
}

static mpfr_t r26630, r26631, r26632, r26633, r26634, r26635, r26636, r26637, r26638, r26639, r26640, r26641, r26642, r26643, r26644, r26645, r26646, r26647, r26648, r26649, r26650, r26651, r26652, r26653, r26654, r26655, r26656, r26657;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r26630);
        mpfr_init_set_str(r26631, "1", 10, MPFR_RNDN);
        mpfr_init(r26632);
        mpfr_init(r26633);
        mpfr_init(r26634);
        mpfr_init(r26635);
        mpfr_init(r26636);
        mpfr_init_set_str(r26637, "2.1316266130167845e-219", 10, MPFR_RNDN);
        mpfr_init(r26638);
        mpfr_init_set_str(r26639, "3", 10, MPFR_RNDN);
        mpfr_init(r26640);
        mpfr_init(r26641);
        mpfr_init(r26642);
        mpfr_init(r26643);
        mpfr_init(r26644);
        mpfr_init(r26645);
        mpfr_init(r26646);
        mpfr_init(r26647);
        mpfr_init(r26648);
        mpfr_init(r26649);
        mpfr_init(r26650);
        mpfr_init(r26651);
        mpfr_init(r26652);
        mpfr_init(r26653);
        mpfr_init(r26654);
        mpfr_init(r26655);
        mpfr_init(r26656);
        mpfr_init(r26657);
}

double f_dm(double x) {
        mpfr_set_d(r26630, x, MPFR_RNDN);
        ;
        mpfr_add(r26632, r26630, r26631, MPFR_RNDN);
        mpfr_div(r26633, r26630, r26632, MPFR_RNDN);
        mpfr_sub(r26634, r26630, r26631, MPFR_RNDN);
        mpfr_div(r26635, r26632, r26634, MPFR_RNDN);
        mpfr_sub(r26636, r26633, r26635, MPFR_RNDN);
        ;
        mpfr_set_si(r26638, mpfr_cmp(r26636, r26637) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r26640, r26639, r26630, MPFR_RNDN);
        mpfr_add(r26641, r26631, r26640, MPFR_RNDN);
        mpfr_neg(r26642, r26631, MPFR_RNDN);
        mpfr_mul(r26643, r26630, r26630, MPFR_RNDN);
        mpfr_div(r26644, r26642, r26643, MPFR_RNDN);
        mpfr_neg(r26645, r26640, MPFR_RNDN);
        mpfr_fma(r26646, r26641, r26644, r26645, MPFR_RNDN);
        mpfr_mul(r26647, r26633, r26630, MPFR_RNDN);
        mpfr_mul(r26648, r26634, r26634, MPFR_RNDN);
        mpfr_mul(r26649, r26647, r26648, MPFR_RNDN);
        mpfr_mul(r26650, r26632, r26632, MPFR_RNDN);
        mpfr_mul(r26651, r26632, r26650, MPFR_RNDN);
        mpfr_sub(r26652, r26649, r26651, MPFR_RNDN);
        mpfr_mul(r26653, r26632, r26648, MPFR_RNDN);
        mpfr_div(r26654, r26652, r26653, MPFR_RNDN);
        mpfr_add(r26655, r26633, r26635, MPFR_RNDN);
        mpfr_div(r26656, r26654, r26655, MPFR_RNDN);
        if (mpfr_get_si(r26638, MPFR_RNDN)) { mpfr_set(r26657, r26646, MPFR_RNDN); } else { mpfr_set(r26657, r26656, MPFR_RNDN); };
        return mpfr_get_d(r26657, MPFR_RNDN);
}

