#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, B";

double f_if(float x, float y) {
        float r51970 = x;
        float r51971 = y;
        float r51972 = r51970 * r51971;
        float r51973 = 1.0;
        float r51974 = r51971 + r51973;
        float r51975 = r51972 / r51974;
        return r51975;
}

double f_id(double x, double y) {
        double r51976 = x;
        double r51977 = y;
        double r51978 = r51976 * r51977;
        double r51979 = 1.0;
        double r51980 = r51977 + r51979;
        double r51981 = r51978 / r51980;
        return r51981;
}


double f_of(float x, float y) {
        float r51982 = y;
        float r51983 = -411930.8608633218;
        bool r51984 = r51982 <= r51983;
        float r51985 = x;
        float r51986 = 1.0;
        float r51987 = r51986 / r51982;
        float r51988 = r51987 - r51986;
        float r51989 = r51985 / r51982;
        float r51990 = r51988 * r51989;
        float r51991 = r51985 + r51990;
        float r51992 = 282709.3197423372;
        bool r51993 = r51982 <= r51992;
        float r51994 = r51985 * r51982;
        float r51995 = r51982 + r51986;
        float r51996 = r51994 / r51995;
        float r51997 = r51993 ? r51996 : r51991;
        float r51998 = r51984 ? r51991 : r51997;
        return r51998;
}

double f_od(double x, double y) {
        double r51999 = y;
        double r52000 = -411930.8608633218;
        bool r52001 = r51999 <= r52000;
        double r52002 = x;
        double r52003 = 1.0;
        double r52004 = r52003 / r51999;
        double r52005 = r52004 - r52003;
        double r52006 = r52002 / r51999;
        double r52007 = r52005 * r52006;
        double r52008 = r52002 + r52007;
        double r52009 = 282709.3197423372;
        bool r52010 = r51999 <= r52009;
        double r52011 = r52002 * r51999;
        double r52012 = r51999 + r52003;
        double r52013 = r52011 / r52012;
        double r52014 = r52010 ? r52013 : r52008;
        double r52015 = r52001 ? r52008 : r52014;
        return r52015;
}

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 r52016, r52017, r52018, r52019, r52020, r52021;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r52016);
        mpfr_init(r52017);
        mpfr_init(r52018);
        mpfr_init_set_str(r52019, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52020);
        mpfr_init(r52021);
}

double f_im(double x, double y) {
        mpfr_set_d(r52016, x, MPFR_RNDN);
        mpfr_set_d(r52017, y, MPFR_RNDN);
        mpfr_mul(r52018, r52016, r52017, MPFR_RNDN);
        ;
        mpfr_add(r52020, r52017, r52019, MPFR_RNDN);
        mpfr_div(r52021, r52018, r52020, MPFR_RNDN);
        return mpfr_get_d(r52021, MPFR_RNDN);
}

static mpfr_t r52022, r52023, r52024, r52025, r52026, r52027, r52028, r52029, r52030, r52031, r52032, r52033, r52034, r52035, r52036, r52037, r52038;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52022);
        mpfr_init_set_str(r52023, "-411930.8608633218", 10, MPFR_RNDN);
        mpfr_init(r52024);
        mpfr_init(r52025);
        mpfr_init_set_str(r52026, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52027);
        mpfr_init(r52028);
        mpfr_init(r52029);
        mpfr_init(r52030);
        mpfr_init(r52031);
        mpfr_init_set_str(r52032, "282709.3197423372", 10, MPFR_RNDN);
        mpfr_init(r52033);
        mpfr_init(r52034);
        mpfr_init(r52035);
        mpfr_init(r52036);
        mpfr_init(r52037);
        mpfr_init(r52038);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52022, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52024, mpfr_cmp(r52022, r52023) <= 0, MPFR_RNDN);
        mpfr_set_d(r52025, x, MPFR_RNDN);
        ;
        mpfr_div(r52027, r52026, r52022, MPFR_RNDN);
        mpfr_sub(r52028, r52027, r52026, MPFR_RNDN);
        mpfr_div(r52029, r52025, r52022, MPFR_RNDN);
        mpfr_mul(r52030, r52028, r52029, MPFR_RNDN);
        mpfr_add(r52031, r52025, r52030, MPFR_RNDN);
        ;
        mpfr_set_si(r52033, mpfr_cmp(r52022, r52032) <= 0, MPFR_RNDN);
        mpfr_mul(r52034, r52025, r52022, MPFR_RNDN);
        mpfr_add(r52035, r52022, r52026, MPFR_RNDN);
        mpfr_div(r52036, r52034, r52035, MPFR_RNDN);
        if (mpfr_get_si(r52033, MPFR_RNDN)) { mpfr_set(r52037, r52036, MPFR_RNDN); } else { mpfr_set(r52037, r52031, MPFR_RNDN); };
        if (mpfr_get_si(r52024, MPFR_RNDN)) { mpfr_set(r52038, r52031, MPFR_RNDN); } else { mpfr_set(r52038, r52037, MPFR_RNDN); };
        return mpfr_get_d(r52038, MPFR_RNDN);
}

static mpfr_t r52039, r52040, r52041, r52042, r52043, r52044, r52045, r52046, r52047, r52048, r52049, r52050, r52051, r52052, r52053, r52054, r52055;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r52039);
        mpfr_init_set_str(r52040, "-411930.8608633218", 10, MPFR_RNDN);
        mpfr_init(r52041);
        mpfr_init(r52042);
        mpfr_init_set_str(r52043, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52044);
        mpfr_init(r52045);
        mpfr_init(r52046);
        mpfr_init(r52047);
        mpfr_init(r52048);
        mpfr_init_set_str(r52049, "282709.3197423372", 10, MPFR_RNDN);
        mpfr_init(r52050);
        mpfr_init(r52051);
        mpfr_init(r52052);
        mpfr_init(r52053);
        mpfr_init(r52054);
        mpfr_init(r52055);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52039, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52041, mpfr_cmp(r52039, r52040) <= 0, MPFR_RNDN);
        mpfr_set_d(r52042, x, MPFR_RNDN);
        ;
        mpfr_div(r52044, r52043, r52039, MPFR_RNDN);
        mpfr_sub(r52045, r52044, r52043, MPFR_RNDN);
        mpfr_div(r52046, r52042, r52039, MPFR_RNDN);
        mpfr_mul(r52047, r52045, r52046, MPFR_RNDN);
        mpfr_add(r52048, r52042, r52047, MPFR_RNDN);
        ;
        mpfr_set_si(r52050, mpfr_cmp(r52039, r52049) <= 0, MPFR_RNDN);
        mpfr_mul(r52051, r52042, r52039, MPFR_RNDN);
        mpfr_add(r52052, r52039, r52043, MPFR_RNDN);
        mpfr_div(r52053, r52051, r52052, MPFR_RNDN);
        if (mpfr_get_si(r52050, MPFR_RNDN)) { mpfr_set(r52054, r52053, MPFR_RNDN); } else { mpfr_set(r52054, r52048, MPFR_RNDN); };
        if (mpfr_get_si(r52041, MPFR_RNDN)) { mpfr_set(r52055, r52048, MPFR_RNDN); } else { mpfr_set(r52055, r52054, MPFR_RNDN); };
        return mpfr_get_d(r52055, MPFR_RNDN);
}

