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

char *name = "Linear.Projection:inverseInfinitePerspective from linear-1.19.1.3";

double f_if(float x, float y, float z, float t) {
        float r44879 = x;
        float r44880 = y;
        float r44881 = r44879 * r44880;
        float r44882 = z;
        float r44883 = r44882 * r44880;
        float r44884 = r44881 - r44883;
        float r44885 = t;
        float r44886 = r44884 * r44885;
        return r44886;
}

double f_id(double x, double y, double z, double t) {
        double r44887 = x;
        double r44888 = y;
        double r44889 = r44887 * r44888;
        double r44890 = z;
        double r44891 = r44890 * r44888;
        double r44892 = r44889 - r44891;
        double r44893 = t;
        double r44894 = r44892 * r44893;
        return r44894;
}


double f_of(float x, float y, float z, float t) {
        float r44895 = x;
        float r44896 = y;
        float r44897 = r44895 * r44896;
        float r44898 = z;
        float r44899 = r44898 * r44896;
        float r44900 = r44897 - r44899;
        float r44901 = t;
        float r44902 = r44900 * r44901;
        float r44903 = -1.9065966854774704e+60f;
        bool r44904 = r44902 <= r44903;
        float r44905 = r44895 - r44898;
        float r44906 = r44896 * r44901;
        float r44907 = r44905 * r44906;
        float r44908 = -8.963050224559816e-300f;
        bool r44909 = r44902 <= r44908;
        float r44910 = r44905 * r44896;
        float r44911 = r44910 * r44901;
        float r44912 = -0.0f;
        bool r44913 = r44902 <= r44912;
        float r44914 = r44913 ? r44907 : r44911;
        float r44915 = r44909 ? r44911 : r44914;
        float r44916 = r44904 ? r44907 : r44915;
        return r44916;
}

double f_od(double x, double y, double z, double t) {
        double r44917 = x;
        double r44918 = y;
        double r44919 = r44917 * r44918;
        double r44920 = z;
        double r44921 = r44920 * r44918;
        double r44922 = r44919 - r44921;
        double r44923 = t;
        double r44924 = r44922 * r44923;
        double r44925 = -1.9065966854774704e+60;
        bool r44926 = r44924 <= r44925;
        double r44927 = r44917 - r44920;
        double r44928 = r44918 * r44923;
        double r44929 = r44927 * r44928;
        double r44930 = -8.963050224559816e-300;
        bool r44931 = r44924 <= r44930;
        double r44932 = r44927 * r44918;
        double r44933 = r44932 * r44923;
        double r44934 = -0.0;
        bool r44935 = r44924 <= r44934;
        double r44936 = r44935 ? r44929 : r44933;
        double r44937 = r44931 ? r44933 : r44936;
        double r44938 = r44926 ? r44929 : r44937;
        return r44938;
}

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 r44939, r44940, r44941, r44942, r44943, r44944, r44945, r44946;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44939);
        mpfr_init(r44940);
        mpfr_init(r44941);
        mpfr_init(r44942);
        mpfr_init(r44943);
        mpfr_init(r44944);
        mpfr_init(r44945);
        mpfr_init(r44946);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r44939, x, MPFR_RNDN);
        mpfr_set_d(r44940, y, MPFR_RNDN);
        mpfr_mul(r44941, r44939, r44940, MPFR_RNDN);
        mpfr_set_d(r44942, z, MPFR_RNDN);
        mpfr_mul(r44943, r44942, r44940, MPFR_RNDN);
        mpfr_sub(r44944, r44941, r44943, MPFR_RNDN);
        mpfr_set_d(r44945, t, MPFR_RNDN);
        mpfr_mul(r44946, r44944, r44945, MPFR_RNDN);
        return mpfr_get_d(r44946, MPFR_RNDN);
}

static mpfr_t r44947, r44948, r44949, r44950, r44951, r44952, r44953, r44954, r44955, r44956, r44957, r44958, r44959, r44960, r44961, r44962, r44963, r44964, r44965, r44966, r44967, r44968;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44947);
        mpfr_init(r44948);
        mpfr_init(r44949);
        mpfr_init(r44950);
        mpfr_init(r44951);
        mpfr_init(r44952);
        mpfr_init(r44953);
        mpfr_init(r44954);
        mpfr_init_set_str(r44955, "-1.9065966854774704e+60", 10, MPFR_RNDN);
        mpfr_init(r44956);
        mpfr_init(r44957);
        mpfr_init(r44958);
        mpfr_init(r44959);
        mpfr_init_set_str(r44960, "-8.963050224559816e-300", 10, MPFR_RNDN);
        mpfr_init(r44961);
        mpfr_init(r44962);
        mpfr_init(r44963);
        mpfr_init_set_str(r44964, "-0.0", 10, MPFR_RNDN);
        mpfr_init(r44965);
        mpfr_init(r44966);
        mpfr_init(r44967);
        mpfr_init(r44968);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r44947, x, MPFR_RNDN);
        mpfr_set_d(r44948, y, MPFR_RNDN);
        mpfr_mul(r44949, r44947, r44948, MPFR_RNDN);
        mpfr_set_d(r44950, z, MPFR_RNDN);
        mpfr_mul(r44951, r44950, r44948, MPFR_RNDN);
        mpfr_sub(r44952, r44949, r44951, MPFR_RNDN);
        mpfr_set_d(r44953, t, MPFR_RNDN);
        mpfr_mul(r44954, r44952, r44953, MPFR_RNDN);
        ;
        mpfr_set_si(r44956, mpfr_cmp(r44954, r44955) <= 0, MPFR_RNDN);
        mpfr_sub(r44957, r44947, r44950, MPFR_RNDN);
        mpfr_mul(r44958, r44948, r44953, MPFR_RNDN);
        mpfr_mul(r44959, r44957, r44958, MPFR_RNDN);
        ;
        mpfr_set_si(r44961, mpfr_cmp(r44954, r44960) <= 0, MPFR_RNDN);
        mpfr_mul(r44962, r44957, r44948, MPFR_RNDN);
        mpfr_mul(r44963, r44962, r44953, MPFR_RNDN);
        ;
        mpfr_set_si(r44965, mpfr_cmp(r44954, r44964) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r44965, MPFR_RNDN)) { mpfr_set(r44966, r44959, MPFR_RNDN); } else { mpfr_set(r44966, r44963, MPFR_RNDN); };
        if (mpfr_get_si(r44961, MPFR_RNDN)) { mpfr_set(r44967, r44963, MPFR_RNDN); } else { mpfr_set(r44967, r44966, MPFR_RNDN); };
        if (mpfr_get_si(r44956, MPFR_RNDN)) { mpfr_set(r44968, r44959, MPFR_RNDN); } else { mpfr_set(r44968, r44967, MPFR_RNDN); };
        return mpfr_get_d(r44968, MPFR_RNDN);
}

static mpfr_t r44969, r44970, r44971, r44972, r44973, r44974, r44975, r44976, r44977, r44978, r44979, r44980, r44981, r44982, r44983, r44984, r44985, r44986, r44987, r44988, r44989, r44990;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44969);
        mpfr_init(r44970);
        mpfr_init(r44971);
        mpfr_init(r44972);
        mpfr_init(r44973);
        mpfr_init(r44974);
        mpfr_init(r44975);
        mpfr_init(r44976);
        mpfr_init_set_str(r44977, "-1.9065966854774704e+60", 10, MPFR_RNDN);
        mpfr_init(r44978);
        mpfr_init(r44979);
        mpfr_init(r44980);
        mpfr_init(r44981);
        mpfr_init_set_str(r44982, "-8.963050224559816e-300", 10, MPFR_RNDN);
        mpfr_init(r44983);
        mpfr_init(r44984);
        mpfr_init(r44985);
        mpfr_init_set_str(r44986, "-0.0", 10, MPFR_RNDN);
        mpfr_init(r44987);
        mpfr_init(r44988);
        mpfr_init(r44989);
        mpfr_init(r44990);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r44969, x, MPFR_RNDN);
        mpfr_set_d(r44970, y, MPFR_RNDN);
        mpfr_mul(r44971, r44969, r44970, MPFR_RNDN);
        mpfr_set_d(r44972, z, MPFR_RNDN);
        mpfr_mul(r44973, r44972, r44970, MPFR_RNDN);
        mpfr_sub(r44974, r44971, r44973, MPFR_RNDN);
        mpfr_set_d(r44975, t, MPFR_RNDN);
        mpfr_mul(r44976, r44974, r44975, MPFR_RNDN);
        ;
        mpfr_set_si(r44978, mpfr_cmp(r44976, r44977) <= 0, MPFR_RNDN);
        mpfr_sub(r44979, r44969, r44972, MPFR_RNDN);
        mpfr_mul(r44980, r44970, r44975, MPFR_RNDN);
        mpfr_mul(r44981, r44979, r44980, MPFR_RNDN);
        ;
        mpfr_set_si(r44983, mpfr_cmp(r44976, r44982) <= 0, MPFR_RNDN);
        mpfr_mul(r44984, r44979, r44970, MPFR_RNDN);
        mpfr_mul(r44985, r44984, r44975, MPFR_RNDN);
        ;
        mpfr_set_si(r44987, mpfr_cmp(r44976, r44986) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r44987, MPFR_RNDN)) { mpfr_set(r44988, r44981, MPFR_RNDN); } else { mpfr_set(r44988, r44985, MPFR_RNDN); };
        if (mpfr_get_si(r44983, MPFR_RNDN)) { mpfr_set(r44989, r44985, MPFR_RNDN); } else { mpfr_set(r44989, r44988, MPFR_RNDN); };
        if (mpfr_get_si(r44978, MPFR_RNDN)) { mpfr_set(r44990, r44981, MPFR_RNDN); } else { mpfr_set(r44990, r44989, MPFR_RNDN); };
        return mpfr_get_d(r44990, MPFR_RNDN);
}

