#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, D";

double f_if(float x, float y) {
        float r52993 = 1.0;
        float r52994 = x;
        float r52995 = r52993 - r52994;
        float r52996 = y;
        float r52997 = r52995 * r52996;
        float r52998 = r52996 + r52993;
        float r52999 = r52997 / r52998;
        float r53000 = r52993 - r52999;
        return r53000;
}

double f_id(double x, double y) {
        double r53001 = 1.0;
        double r53002 = x;
        double r53003 = r53001 - r53002;
        double r53004 = y;
        double r53005 = r53003 * r53004;
        double r53006 = r53004 + r53001;
        double r53007 = r53005 / r53006;
        double r53008 = r53001 - r53007;
        return r53008;
}


double f_of(float x, float y) {
        float r53009 = y;
        float r53010 = -28.696850627339362;
        bool r53011 = r53009 <= r53010;
        float r53012 = 1.0;
        float r53013 = r53012 / r53009;
        float r53014 = x;
        float r53015 = r53013 + r53014;
        float r53016 = r53014 * r53012;
        float r53017 = r53016 / r53009;
        float r53018 = r53015 - r53017;
        float r53019 = 92563423223.6119;
        bool r53020 = r53009 <= r53019;
        float r53021 = r53012 - r53014;
        float r53022 = r53021 * r53009;
        float r53023 = r53009 + r53012;
        float r53024 = r53022 / r53023;
        float r53025 = r53012 - r53024;
        float r53026 = r53020 ? r53025 : r53018;
        float r53027 = r53011 ? r53018 : r53026;
        return r53027;
}

double f_od(double x, double y) {
        double r53028 = y;
        double r53029 = -28.696850627339362;
        bool r53030 = r53028 <= r53029;
        double r53031 = 1.0;
        double r53032 = r53031 / r53028;
        double r53033 = x;
        double r53034 = r53032 + r53033;
        double r53035 = r53033 * r53031;
        double r53036 = r53035 / r53028;
        double r53037 = r53034 - r53036;
        double r53038 = 92563423223.6119;
        bool r53039 = r53028 <= r53038;
        double r53040 = r53031 - r53033;
        double r53041 = r53040 * r53028;
        double r53042 = r53028 + r53031;
        double r53043 = r53041 / r53042;
        double r53044 = r53031 - r53043;
        double r53045 = r53039 ? r53044 : r53037;
        double r53046 = r53030 ? r53037 : r53045;
        return r53046;
}

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 r53047, r53048, r53049, r53050, r53051, r53052, r53053, r53054;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1168);
        mpfr_init_set_str(r53047, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53048);
        mpfr_init(r53049);
        mpfr_init(r53050);
        mpfr_init(r53051);
        mpfr_init(r53052);
        mpfr_init(r53053);
        mpfr_init(r53054);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r53048, x, MPFR_RNDN);
        mpfr_sub(r53049, r53047, r53048, MPFR_RNDN);
        mpfr_set_d(r53050, y, MPFR_RNDN);
        mpfr_mul(r53051, r53049, r53050, MPFR_RNDN);
        mpfr_add(r53052, r53050, r53047, MPFR_RNDN);
        mpfr_div(r53053, r53051, r53052, MPFR_RNDN);
        mpfr_sub(r53054, r53047, r53053, MPFR_RNDN);
        return mpfr_get_d(r53054, MPFR_RNDN);
}

static mpfr_t r53055, r53056, r53057, r53058, r53059, r53060, r53061, r53062, r53063, r53064, r53065, r53066, r53067, r53068, r53069, r53070, r53071, r53072, r53073;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r53055);
        mpfr_init_set_str(r53056, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r53057);
        mpfr_init_set_str(r53058, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53059);
        mpfr_init(r53060);
        mpfr_init(r53061);
        mpfr_init(r53062);
        mpfr_init(r53063);
        mpfr_init(r53064);
        mpfr_init_set_str(r53065, "92563423223.6119", 10, MPFR_RNDN);
        mpfr_init(r53066);
        mpfr_init(r53067);
        mpfr_init(r53068);
        mpfr_init(r53069);
        mpfr_init(r53070);
        mpfr_init(r53071);
        mpfr_init(r53072);
        mpfr_init(r53073);
}

double f_fm(double x, double y) {
        mpfr_set_d(r53055, y, MPFR_RNDN);
        ;
        mpfr_set_si(r53057, mpfr_cmp(r53055, r53056) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r53059, r53058, r53055, MPFR_RNDN);
        mpfr_set_d(r53060, x, MPFR_RNDN);
        mpfr_add(r53061, r53059, r53060, MPFR_RNDN);
        mpfr_mul(r53062, r53060, r53058, MPFR_RNDN);
        mpfr_div(r53063, r53062, r53055, MPFR_RNDN);
        mpfr_sub(r53064, r53061, r53063, MPFR_RNDN);
        ;
        mpfr_set_si(r53066, mpfr_cmp(r53055, r53065) <= 0, MPFR_RNDN);
        mpfr_sub(r53067, r53058, r53060, MPFR_RNDN);
        mpfr_mul(r53068, r53067, r53055, MPFR_RNDN);
        mpfr_add(r53069, r53055, r53058, MPFR_RNDN);
        mpfr_div(r53070, r53068, r53069, MPFR_RNDN);
        mpfr_sub(r53071, r53058, r53070, MPFR_RNDN);
        if (mpfr_get_si(r53066, MPFR_RNDN)) { mpfr_set(r53072, r53071, MPFR_RNDN); } else { mpfr_set(r53072, r53064, MPFR_RNDN); };
        if (mpfr_get_si(r53057, MPFR_RNDN)) { mpfr_set(r53073, r53064, MPFR_RNDN); } else { mpfr_set(r53073, r53072, MPFR_RNDN); };
        return mpfr_get_d(r53073, MPFR_RNDN);
}

static mpfr_t r53074, r53075, r53076, r53077, r53078, r53079, r53080, r53081, r53082, r53083, r53084, r53085, r53086, r53087, r53088, r53089, r53090, r53091, r53092;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1168);
        mpfr_init(r53074);
        mpfr_init_set_str(r53075, "-28.696850627339362", 10, MPFR_RNDN);
        mpfr_init(r53076);
        mpfr_init_set_str(r53077, "1.0", 10, MPFR_RNDN);
        mpfr_init(r53078);
        mpfr_init(r53079);
        mpfr_init(r53080);
        mpfr_init(r53081);
        mpfr_init(r53082);
        mpfr_init(r53083);
        mpfr_init_set_str(r53084, "92563423223.6119", 10, MPFR_RNDN);
        mpfr_init(r53085);
        mpfr_init(r53086);
        mpfr_init(r53087);
        mpfr_init(r53088);
        mpfr_init(r53089);
        mpfr_init(r53090);
        mpfr_init(r53091);
        mpfr_init(r53092);
}

double f_dm(double x, double y) {
        mpfr_set_d(r53074, y, MPFR_RNDN);
        ;
        mpfr_set_si(r53076, mpfr_cmp(r53074, r53075) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r53078, r53077, r53074, MPFR_RNDN);
        mpfr_set_d(r53079, x, MPFR_RNDN);
        mpfr_add(r53080, r53078, r53079, MPFR_RNDN);
        mpfr_mul(r53081, r53079, r53077, MPFR_RNDN);
        mpfr_div(r53082, r53081, r53074, MPFR_RNDN);
        mpfr_sub(r53083, r53080, r53082, MPFR_RNDN);
        ;
        mpfr_set_si(r53085, mpfr_cmp(r53074, r53084) <= 0, MPFR_RNDN);
        mpfr_sub(r53086, r53077, r53079, MPFR_RNDN);
        mpfr_mul(r53087, r53086, r53074, MPFR_RNDN);
        mpfr_add(r53088, r53074, r53077, MPFR_RNDN);
        mpfr_div(r53089, r53087, r53088, MPFR_RNDN);
        mpfr_sub(r53090, r53077, r53089, MPFR_RNDN);
        if (mpfr_get_si(r53085, MPFR_RNDN)) { mpfr_set(r53091, r53090, MPFR_RNDN); } else { mpfr_set(r53091, r53083, MPFR_RNDN); };
        if (mpfr_get_si(r53076, MPFR_RNDN)) { mpfr_set(r53092, r53083, MPFR_RNDN); } else { mpfr_set(r53092, r53091, MPFR_RNDN); };
        return mpfr_get_d(r53092, MPFR_RNDN);
}

