#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 r52805 = 1.0;
        float r52806 = x;
        float r52807 = r52805 - r52806;
        float r52808 = y;
        float r52809 = r52807 * r52808;
        float r52810 = r52808 + r52805;
        float r52811 = r52809 / r52810;
        float r52812 = r52805 - r52811;
        return r52812;
}

double f_id(double x, double y) {
        double r52813 = 1.0;
        double r52814 = x;
        double r52815 = r52813 - r52814;
        double r52816 = y;
        double r52817 = r52815 * r52816;
        double r52818 = r52816 + r52813;
        double r52819 = r52817 / r52818;
        double r52820 = r52813 - r52819;
        return r52820;
}


double f_of(float x, float y) {
        float r52821 = y;
        float r52822 = -105446982.68410039;
        bool r52823 = r52821 <= r52822;
        float r52824 = 1.0;
        float r52825 = r52824 / r52821;
        float r52826 = x;
        float r52827 = r52825 + r52826;
        float r52828 = r52826 * r52824;
        float r52829 = r52828 / r52821;
        float r52830 = r52827 - r52829;
        float r52831 = 232001311.40530783;
        bool r52832 = r52821 <= r52831;
        float r52833 = r52821 + r52824;
        float r52834 = r52821 / r52833;
        float r52835 = r52824 - r52826;
        float r52836 = r52834 * r52835;
        float r52837 = r52824 - r52836;
        float r52838 = r52832 ? r52837 : r52830;
        float r52839 = r52823 ? r52830 : r52838;
        return r52839;
}

double f_od(double x, double y) {
        double r52840 = y;
        double r52841 = -105446982.68410039;
        bool r52842 = r52840 <= r52841;
        double r52843 = 1.0;
        double r52844 = r52843 / r52840;
        double r52845 = x;
        double r52846 = r52844 + r52845;
        double r52847 = r52845 * r52843;
        double r52848 = r52847 / r52840;
        double r52849 = r52846 - r52848;
        double r52850 = 232001311.40530783;
        bool r52851 = r52840 <= r52850;
        double r52852 = r52840 + r52843;
        double r52853 = r52840 / r52852;
        double r52854 = r52843 - r52845;
        double r52855 = r52853 * r52854;
        double r52856 = r52843 - r52855;
        double r52857 = r52851 ? r52856 : r52849;
        double r52858 = r52842 ? r52849 : r52857;
        return r52858;
}

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 r52859, r52860, r52861, r52862, r52863, r52864, r52865, r52866;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r52859, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52860);
        mpfr_init(r52861);
        mpfr_init(r52862);
        mpfr_init(r52863);
        mpfr_init(r52864);
        mpfr_init(r52865);
        mpfr_init(r52866);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r52860, x, MPFR_RNDN);
        mpfr_sub(r52861, r52859, r52860, MPFR_RNDN);
        mpfr_set_d(r52862, y, MPFR_RNDN);
        mpfr_mul(r52863, r52861, r52862, MPFR_RNDN);
        mpfr_add(r52864, r52862, r52859, MPFR_RNDN);
        mpfr_div(r52865, r52863, r52864, MPFR_RNDN);
        mpfr_sub(r52866, r52859, r52865, MPFR_RNDN);
        return mpfr_get_d(r52866, MPFR_RNDN);
}

static mpfr_t r52867, r52868, r52869, r52870, r52871, r52872, r52873, r52874, r52875, r52876, r52877, r52878, r52879, r52880, r52881, r52882, r52883, r52884, r52885;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r52867);
        mpfr_init_set_str(r52868, "-105446982.68410039", 10, MPFR_RNDN);
        mpfr_init(r52869);
        mpfr_init_set_str(r52870, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52871);
        mpfr_init(r52872);
        mpfr_init(r52873);
        mpfr_init(r52874);
        mpfr_init(r52875);
        mpfr_init(r52876);
        mpfr_init_set_str(r52877, "232001311.40530783", 10, MPFR_RNDN);
        mpfr_init(r52878);
        mpfr_init(r52879);
        mpfr_init(r52880);
        mpfr_init(r52881);
        mpfr_init(r52882);
        mpfr_init(r52883);
        mpfr_init(r52884);
        mpfr_init(r52885);
}

double f_fm(double x, double y) {
        mpfr_set_d(r52867, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52869, mpfr_cmp(r52867, r52868) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r52871, r52870, r52867, MPFR_RNDN);
        mpfr_set_d(r52872, x, MPFR_RNDN);
        mpfr_add(r52873, r52871, r52872, MPFR_RNDN);
        mpfr_mul(r52874, r52872, r52870, MPFR_RNDN);
        mpfr_div(r52875, r52874, r52867, MPFR_RNDN);
        mpfr_sub(r52876, r52873, r52875, MPFR_RNDN);
        ;
        mpfr_set_si(r52878, mpfr_cmp(r52867, r52877) <= 0, MPFR_RNDN);
        mpfr_add(r52879, r52867, r52870, MPFR_RNDN);
        mpfr_div(r52880, r52867, r52879, MPFR_RNDN);
        mpfr_sub(r52881, r52870, r52872, MPFR_RNDN);
        mpfr_mul(r52882, r52880, r52881, MPFR_RNDN);
        mpfr_sub(r52883, r52870, r52882, MPFR_RNDN);
        if (mpfr_get_si(r52878, MPFR_RNDN)) { mpfr_set(r52884, r52883, MPFR_RNDN); } else { mpfr_set(r52884, r52876, MPFR_RNDN); };
        if (mpfr_get_si(r52869, MPFR_RNDN)) { mpfr_set(r52885, r52876, MPFR_RNDN); } else { mpfr_set(r52885, r52884, MPFR_RNDN); };
        return mpfr_get_d(r52885, MPFR_RNDN);
}

static mpfr_t r52886, r52887, r52888, r52889, r52890, r52891, r52892, r52893, r52894, r52895, r52896, r52897, r52898, r52899, r52900, r52901, r52902, r52903, r52904;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r52886);
        mpfr_init_set_str(r52887, "-105446982.68410039", 10, MPFR_RNDN);
        mpfr_init(r52888);
        mpfr_init_set_str(r52889, "1.0", 10, MPFR_RNDN);
        mpfr_init(r52890);
        mpfr_init(r52891);
        mpfr_init(r52892);
        mpfr_init(r52893);
        mpfr_init(r52894);
        mpfr_init(r52895);
        mpfr_init_set_str(r52896, "232001311.40530783", 10, MPFR_RNDN);
        mpfr_init(r52897);
        mpfr_init(r52898);
        mpfr_init(r52899);
        mpfr_init(r52900);
        mpfr_init(r52901);
        mpfr_init(r52902);
        mpfr_init(r52903);
        mpfr_init(r52904);
}

double f_dm(double x, double y) {
        mpfr_set_d(r52886, y, MPFR_RNDN);
        ;
        mpfr_set_si(r52888, mpfr_cmp(r52886, r52887) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r52890, r52889, r52886, MPFR_RNDN);
        mpfr_set_d(r52891, x, MPFR_RNDN);
        mpfr_add(r52892, r52890, r52891, MPFR_RNDN);
        mpfr_mul(r52893, r52891, r52889, MPFR_RNDN);
        mpfr_div(r52894, r52893, r52886, MPFR_RNDN);
        mpfr_sub(r52895, r52892, r52894, MPFR_RNDN);
        ;
        mpfr_set_si(r52897, mpfr_cmp(r52886, r52896) <= 0, MPFR_RNDN);
        mpfr_add(r52898, r52886, r52889, MPFR_RNDN);
        mpfr_div(r52899, r52886, r52898, MPFR_RNDN);
        mpfr_sub(r52900, r52889, r52891, MPFR_RNDN);
        mpfr_mul(r52901, r52899, r52900, MPFR_RNDN);
        mpfr_sub(r52902, r52889, r52901, MPFR_RNDN);
        if (mpfr_get_si(r52897, MPFR_RNDN)) { mpfr_set(r52903, r52902, MPFR_RNDN); } else { mpfr_set(r52903, r52895, MPFR_RNDN); };
        if (mpfr_get_si(r52888, MPFR_RNDN)) { mpfr_set(r52904, r52895, MPFR_RNDN); } else { mpfr_set(r52904, r52903, MPFR_RNDN); };
        return mpfr_get_d(r52904, MPFR_RNDN);
}

