#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 r51870 = 1.0;
        float r51871 = x;
        float r51872 = r51870 - r51871;
        float r51873 = y;
        float r51874 = r51872 * r51873;
        float r51875 = r51873 + r51870;
        float r51876 = r51874 / r51875;
        float r51877 = r51870 - r51876;
        return r51877;
}

double f_id(double x, double y) {
        double r51878 = 1.0;
        double r51879 = x;
        double r51880 = r51878 - r51879;
        double r51881 = y;
        double r51882 = r51880 * r51881;
        double r51883 = r51881 + r51878;
        double r51884 = r51882 / r51883;
        double r51885 = r51878 - r51884;
        return r51885;
}


double f_of(float x, float y) {
        float r51886 = y;
        float r51887 = -105446982.68410039;
        bool r51888 = r51886 <= r51887;
        float r51889 = 1.0;
        float r51890 = r51889 / r51886;
        float r51891 = x;
        float r51892 = r51890 + r51891;
        float r51893 = r51891 * r51889;
        float r51894 = r51893 / r51886;
        float r51895 = r51892 - r51894;
        float r51896 = 232001311.40530783;
        bool r51897 = r51886 <= r51896;
        float r51898 = r51886 + r51889;
        float r51899 = r51886 / r51898;
        float r51900 = r51889 - r51891;
        float r51901 = r51899 * r51900;
        float r51902 = r51889 - r51901;
        float r51903 = r51897 ? r51902 : r51895;
        float r51904 = r51888 ? r51895 : r51903;
        return r51904;
}

double f_od(double x, double y) {
        double r51905 = y;
        double r51906 = -105446982.68410039;
        bool r51907 = r51905 <= r51906;
        double r51908 = 1.0;
        double r51909 = r51908 / r51905;
        double r51910 = x;
        double r51911 = r51909 + r51910;
        double r51912 = r51910 * r51908;
        double r51913 = r51912 / r51905;
        double r51914 = r51911 - r51913;
        double r51915 = 232001311.40530783;
        bool r51916 = r51905 <= r51915;
        double r51917 = r51905 + r51908;
        double r51918 = r51905 / r51917;
        double r51919 = r51908 - r51910;
        double r51920 = r51918 * r51919;
        double r51921 = r51908 - r51920;
        double r51922 = r51916 ? r51921 : r51914;
        double r51923 = r51907 ? r51914 : r51922;
        return r51923;
}

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 r51924, r51925, r51926, r51927, r51928, r51929, r51930, r51931;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r51924, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51925);
        mpfr_init(r51926);
        mpfr_init(r51927);
        mpfr_init(r51928);
        mpfr_init(r51929);
        mpfr_init(r51930);
        mpfr_init(r51931);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r51925, x, MPFR_RNDN);
        mpfr_sub(r51926, r51924, r51925, MPFR_RNDN);
        mpfr_set_d(r51927, y, MPFR_RNDN);
        mpfr_mul(r51928, r51926, r51927, MPFR_RNDN);
        mpfr_add(r51929, r51927, r51924, MPFR_RNDN);
        mpfr_div(r51930, r51928, r51929, MPFR_RNDN);
        mpfr_sub(r51931, r51924, r51930, MPFR_RNDN);
        return mpfr_get_d(r51931, MPFR_RNDN);
}

static mpfr_t r51932, r51933, r51934, r51935, r51936, r51937, r51938, r51939, r51940, r51941, r51942, r51943, r51944, r51945, r51946, r51947, r51948, r51949, r51950;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51932);
        mpfr_init_set_str(r51933, "-105446982.68410039", 10, MPFR_RNDN);
        mpfr_init(r51934);
        mpfr_init_set_str(r51935, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51936);
        mpfr_init(r51937);
        mpfr_init(r51938);
        mpfr_init(r51939);
        mpfr_init(r51940);
        mpfr_init(r51941);
        mpfr_init_set_str(r51942, "232001311.40530783", 10, MPFR_RNDN);
        mpfr_init(r51943);
        mpfr_init(r51944);
        mpfr_init(r51945);
        mpfr_init(r51946);
        mpfr_init(r51947);
        mpfr_init(r51948);
        mpfr_init(r51949);
        mpfr_init(r51950);
}

double f_fm(double x, double y) {
        mpfr_set_d(r51932, y, MPFR_RNDN);
        ;
        mpfr_set_si(r51934, mpfr_cmp(r51932, r51933) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r51936, r51935, r51932, MPFR_RNDN);
        mpfr_set_d(r51937, x, MPFR_RNDN);
        mpfr_add(r51938, r51936, r51937, MPFR_RNDN);
        mpfr_mul(r51939, r51937, r51935, MPFR_RNDN);
        mpfr_div(r51940, r51939, r51932, MPFR_RNDN);
        mpfr_sub(r51941, r51938, r51940, MPFR_RNDN);
        ;
        mpfr_set_si(r51943, mpfr_cmp(r51932, r51942) <= 0, MPFR_RNDN);
        mpfr_add(r51944, r51932, r51935, MPFR_RNDN);
        mpfr_div(r51945, r51932, r51944, MPFR_RNDN);
        mpfr_sub(r51946, r51935, r51937, MPFR_RNDN);
        mpfr_mul(r51947, r51945, r51946, MPFR_RNDN);
        mpfr_sub(r51948, r51935, r51947, MPFR_RNDN);
        if (mpfr_get_si(r51943, MPFR_RNDN)) { mpfr_set(r51949, r51948, MPFR_RNDN); } else { mpfr_set(r51949, r51941, MPFR_RNDN); };
        if (mpfr_get_si(r51934, MPFR_RNDN)) { mpfr_set(r51950, r51941, MPFR_RNDN); } else { mpfr_set(r51950, r51949, MPFR_RNDN); };
        return mpfr_get_d(r51950, MPFR_RNDN);
}

static mpfr_t r51951, r51952, r51953, r51954, r51955, r51956, r51957, r51958, r51959, r51960, r51961, r51962, r51963, r51964, r51965, r51966, r51967, r51968, r51969;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r51951);
        mpfr_init_set_str(r51952, "-105446982.68410039", 10, MPFR_RNDN);
        mpfr_init(r51953);
        mpfr_init_set_str(r51954, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51955);
        mpfr_init(r51956);
        mpfr_init(r51957);
        mpfr_init(r51958);
        mpfr_init(r51959);
        mpfr_init(r51960);
        mpfr_init_set_str(r51961, "232001311.40530783", 10, MPFR_RNDN);
        mpfr_init(r51962);
        mpfr_init(r51963);
        mpfr_init(r51964);
        mpfr_init(r51965);
        mpfr_init(r51966);
        mpfr_init(r51967);
        mpfr_init(r51968);
        mpfr_init(r51969);
}

double f_dm(double x, double y) {
        mpfr_set_d(r51951, y, MPFR_RNDN);
        ;
        mpfr_set_si(r51953, mpfr_cmp(r51951, r51952) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r51955, r51954, r51951, MPFR_RNDN);
        mpfr_set_d(r51956, x, MPFR_RNDN);
        mpfr_add(r51957, r51955, r51956, MPFR_RNDN);
        mpfr_mul(r51958, r51956, r51954, MPFR_RNDN);
        mpfr_div(r51959, r51958, r51951, MPFR_RNDN);
        mpfr_sub(r51960, r51957, r51959, MPFR_RNDN);
        ;
        mpfr_set_si(r51962, mpfr_cmp(r51951, r51961) <= 0, MPFR_RNDN);
        mpfr_add(r51963, r51951, r51954, MPFR_RNDN);
        mpfr_div(r51964, r51951, r51963, MPFR_RNDN);
        mpfr_sub(r51965, r51954, r51956, MPFR_RNDN);
        mpfr_mul(r51966, r51964, r51965, MPFR_RNDN);
        mpfr_sub(r51967, r51954, r51966, MPFR_RNDN);
        if (mpfr_get_si(r51962, MPFR_RNDN)) { mpfr_set(r51968, r51967, MPFR_RNDN); } else { mpfr_set(r51968, r51960, MPFR_RNDN); };
        if (mpfr_get_si(r51953, MPFR_RNDN)) { mpfr_set(r51969, r51960, MPFR_RNDN); } else { mpfr_set(r51969, r51968, MPFR_RNDN); };
        return mpfr_get_d(r51969, MPFR_RNDN);
}

