#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 r26949 = x;
        float r26950 = 1;
        float r26951 = r26949 + r26950;
        float r26952 = r26949 / r26951;
        float r26953 = r26949 - r26950;
        float r26954 = r26951 / r26953;
        float r26955 = r26952 - r26954;
        return r26955;
}

double f_id(double x) {
        double r26956 = x;
        double r26957 = 1;
        double r26958 = r26956 + r26957;
        double r26959 = r26956 / r26958;
        double r26960 = r26956 - r26957;
        double r26961 = r26958 / r26960;
        double r26962 = r26959 - r26961;
        return r26962;
}


double f_of(float x) {
        float r26963 = 1;
        float r26964 = 3;
        float r26965 = x;
        float r26966 = r26964 / r26965;
        float r26967 = r26963 + r26966;
        float r26968 = -r26963;
        float r26969 = r26965 * r26965;
        float r26970 = r26968 / r26969;
        float r26971 = -r26964;
        float r26972 = r26971 / r26965;
        float r26973 = fma(r26967, r26970, r26972);
        float r26974 = -1.1355472292343013e-23;
        bool r26975 = r26973 <= r26974;
        float r26976 = r26963 + r26965;
        float r26977 = r26965 / r26976;
        float r26978 = fma(r26965, r26965, r26965);
        float r26979 = fma(r26976, r26978, r26976);
        float r26980 = fma(r26969, r26965, r26968);
        float r26981 = r26979 / r26980;
        float r26982 = r26977 - r26981;
        float r26983 = 1.2157089492426344e-08;
        bool r26984 = r26973 <= r26983;
        float r26985 = r26963 / r26976;
        float r26986 = r26965 - r26963;
        float r26987 = r26976 / r26986;
        float r26988 = -r26987;
        float r26989 = fma(r26965, r26985, r26988);
        float r26990 = r26984 ? r26973 : r26989;
        float r26991 = r26975 ? r26982 : r26990;
        return r26991;
}

double f_od(double x) {
        double r26992 = 1;
        double r26993 = 3;
        double r26994 = x;
        double r26995 = r26993 / r26994;
        double r26996 = r26992 + r26995;
        double r26997 = -r26992;
        double r26998 = r26994 * r26994;
        double r26999 = r26997 / r26998;
        double r27000 = -r26993;
        double r27001 = r27000 / r26994;
        double r27002 = fma(r26996, r26999, r27001);
        double r27003 = -1.1355472292343013e-23;
        bool r27004 = r27002 <= r27003;
        double r27005 = r26992 + r26994;
        double r27006 = r26994 / r27005;
        double r27007 = fma(r26994, r26994, r26994);
        double r27008 = fma(r27005, r27007, r27005);
        double r27009 = fma(r26998, r26994, r26997);
        double r27010 = r27008 / r27009;
        double r27011 = r27006 - r27010;
        double r27012 = 1.2157089492426344e-08;
        bool r27013 = r27002 <= r27012;
        double r27014 = r26992 / r27005;
        double r27015 = r26994 - r26992;
        double r27016 = r27005 / r27015;
        double r27017 = -r27016;
        double r27018 = fma(r26994, r27014, r27017);
        double r27019 = r27013 ? r27002 : r27018;
        double r27020 = r27004 ? r27011 : r27019;
        return r27020;
}

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 r27021, r27022, r27023, r27024, r27025, r27026, r27027;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r27021);
        mpfr_init_set_str(r27022, "1", 10, MPFR_RNDN);
        mpfr_init(r27023);
        mpfr_init(r27024);
        mpfr_init(r27025);
        mpfr_init(r27026);
        mpfr_init(r27027);
}

double f_im(double x) {
        mpfr_set_d(r27021, x, MPFR_RNDN);
        ;
        mpfr_add(r27023, r27021, r27022, MPFR_RNDN);
        mpfr_div(r27024, r27021, r27023, MPFR_RNDN);
        mpfr_sub(r27025, r27021, r27022, MPFR_RNDN);
        mpfr_div(r27026, r27023, r27025, MPFR_RNDN);
        mpfr_sub(r27027, r27024, r27026, MPFR_RNDN);
        return mpfr_get_d(r27027, MPFR_RNDN);
}

static mpfr_t r27028, r27029, r27030, r27031, r27032, r27033, r27034, r27035, r27036, r27037, r27038, r27039, r27040, r27041, r27042, r27043, r27044, r27045, r27046, r27047, r27048, r27049, r27050, r27051, r27052, r27053, r27054, r27055, r27056;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27028, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27029, "3", 10, MPFR_RNDN);
        mpfr_init(r27030);
        mpfr_init(r27031);
        mpfr_init(r27032);
        mpfr_init(r27033);
        mpfr_init(r27034);
        mpfr_init(r27035);
        mpfr_init(r27036);
        mpfr_init(r27037);
        mpfr_init(r27038);
        mpfr_init_set_str(r27039, "-1.1355472292343013e-23", 10, MPFR_RNDN);
        mpfr_init(r27040);
        mpfr_init(r27041);
        mpfr_init(r27042);
        mpfr_init(r27043);
        mpfr_init(r27044);
        mpfr_init(r27045);
        mpfr_init(r27046);
        mpfr_init(r27047);
        mpfr_init_set_str(r27048, "1.2157089492426344e-08", 10, MPFR_RNDN);
        mpfr_init(r27049);
        mpfr_init(r27050);
        mpfr_init(r27051);
        mpfr_init(r27052);
        mpfr_init(r27053);
        mpfr_init(r27054);
        mpfr_init(r27055);
        mpfr_init(r27056);
}

double f_fm(double x) {
        ;
        ;
        mpfr_set_d(r27030, x, MPFR_RNDN);
        mpfr_div(r27031, r27029, r27030, MPFR_RNDN);
        mpfr_add(r27032, r27028, r27031, MPFR_RNDN);
        mpfr_neg(r27033, r27028, MPFR_RNDN);
        mpfr_mul(r27034, r27030, r27030, MPFR_RNDN);
        mpfr_div(r27035, r27033, r27034, MPFR_RNDN);
        mpfr_neg(r27036, r27029, MPFR_RNDN);
        mpfr_div(r27037, r27036, r27030, MPFR_RNDN);
        mpfr_fma(r27038, r27032, r27035, r27037, MPFR_RNDN);
        ;
        mpfr_set_si(r27040, mpfr_cmp(r27038, r27039) <= 0, MPFR_RNDN);
        mpfr_add(r27041, r27028, r27030, MPFR_RNDN);
        mpfr_div(r27042, r27030, r27041, MPFR_RNDN);
        mpfr_fma(r27043, r27030, r27030, r27030, MPFR_RNDN);
        mpfr_fma(r27044, r27041, r27043, r27041, MPFR_RNDN);
        mpfr_fma(r27045, r27034, r27030, r27033, MPFR_RNDN);
        mpfr_div(r27046, r27044, r27045, MPFR_RNDN);
        mpfr_sub(r27047, r27042, r27046, MPFR_RNDN);
        ;
        mpfr_set_si(r27049, mpfr_cmp(r27038, r27048) <= 0, MPFR_RNDN);
        mpfr_div(r27050, r27028, r27041, MPFR_RNDN);
        mpfr_sub(r27051, r27030, r27028, MPFR_RNDN);
        mpfr_div(r27052, r27041, r27051, MPFR_RNDN);
        mpfr_neg(r27053, r27052, MPFR_RNDN);
        mpfr_fma(r27054, r27030, r27050, r27053, MPFR_RNDN);
        if (mpfr_get_si(r27049, MPFR_RNDN)) { mpfr_set(r27055, r27038, MPFR_RNDN); } else { mpfr_set(r27055, r27054, MPFR_RNDN); };
        if (mpfr_get_si(r27040, MPFR_RNDN)) { mpfr_set(r27056, r27047, MPFR_RNDN); } else { mpfr_set(r27056, r27055, MPFR_RNDN); };
        return mpfr_get_d(r27056, MPFR_RNDN);
}

static mpfr_t r27057, r27058, r27059, r27060, r27061, r27062, r27063, r27064, r27065, r27066, r27067, r27068, r27069, r27070, r27071, r27072, r27073, r27074, r27075, r27076, r27077, r27078, r27079, r27080, r27081, r27082, r27083, r27084, r27085;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r27057, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27058, "3", 10, MPFR_RNDN);
        mpfr_init(r27059);
        mpfr_init(r27060);
        mpfr_init(r27061);
        mpfr_init(r27062);
        mpfr_init(r27063);
        mpfr_init(r27064);
        mpfr_init(r27065);
        mpfr_init(r27066);
        mpfr_init(r27067);
        mpfr_init_set_str(r27068, "-1.1355472292343013e-23", 10, MPFR_RNDN);
        mpfr_init(r27069);
        mpfr_init(r27070);
        mpfr_init(r27071);
        mpfr_init(r27072);
        mpfr_init(r27073);
        mpfr_init(r27074);
        mpfr_init(r27075);
        mpfr_init(r27076);
        mpfr_init_set_str(r27077, "1.2157089492426344e-08", 10, MPFR_RNDN);
        mpfr_init(r27078);
        mpfr_init(r27079);
        mpfr_init(r27080);
        mpfr_init(r27081);
        mpfr_init(r27082);
        mpfr_init(r27083);
        mpfr_init(r27084);
        mpfr_init(r27085);
}

double f_dm(double x) {
        ;
        ;
        mpfr_set_d(r27059, x, MPFR_RNDN);
        mpfr_div(r27060, r27058, r27059, MPFR_RNDN);
        mpfr_add(r27061, r27057, r27060, MPFR_RNDN);
        mpfr_neg(r27062, r27057, MPFR_RNDN);
        mpfr_mul(r27063, r27059, r27059, MPFR_RNDN);
        mpfr_div(r27064, r27062, r27063, MPFR_RNDN);
        mpfr_neg(r27065, r27058, MPFR_RNDN);
        mpfr_div(r27066, r27065, r27059, MPFR_RNDN);
        mpfr_fma(r27067, r27061, r27064, r27066, MPFR_RNDN);
        ;
        mpfr_set_si(r27069, mpfr_cmp(r27067, r27068) <= 0, MPFR_RNDN);
        mpfr_add(r27070, r27057, r27059, MPFR_RNDN);
        mpfr_div(r27071, r27059, r27070, MPFR_RNDN);
        mpfr_fma(r27072, r27059, r27059, r27059, MPFR_RNDN);
        mpfr_fma(r27073, r27070, r27072, r27070, MPFR_RNDN);
        mpfr_fma(r27074, r27063, r27059, r27062, MPFR_RNDN);
        mpfr_div(r27075, r27073, r27074, MPFR_RNDN);
        mpfr_sub(r27076, r27071, r27075, MPFR_RNDN);
        ;
        mpfr_set_si(r27078, mpfr_cmp(r27067, r27077) <= 0, MPFR_RNDN);
        mpfr_div(r27079, r27057, r27070, MPFR_RNDN);
        mpfr_sub(r27080, r27059, r27057, MPFR_RNDN);
        mpfr_div(r27081, r27070, r27080, MPFR_RNDN);
        mpfr_neg(r27082, r27081, MPFR_RNDN);
        mpfr_fma(r27083, r27059, r27079, r27082, MPFR_RNDN);
        if (mpfr_get_si(r27078, MPFR_RNDN)) { mpfr_set(r27084, r27067, MPFR_RNDN); } else { mpfr_set(r27084, r27083, MPFR_RNDN); };
        if (mpfr_get_si(r27069, MPFR_RNDN)) { mpfr_set(r27085, r27076, MPFR_RNDN); } else { mpfr_set(r27085, r27084, MPFR_RNDN); };
        return mpfr_get_d(r27085, MPFR_RNDN);
}

