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

char *name = "Linear.Projection:inversePerspective from linear-1.19.1.3, B";

double f_if(float x, float y) {
        float r47957 = x;
        float r47958 = y;
        float r47959 = r47957 - r47958;
        float r47960 = 2.0;
        float r47961 = r47957 * r47960;
        float r47962 = r47961 * r47958;
        float r47963 = r47959 / r47962;
        return r47963;
}

double f_id(double x, double y) {
        double r47964 = x;
        double r47965 = y;
        double r47966 = r47964 - r47965;
        double r47967 = 2.0;
        double r47968 = r47964 * r47967;
        double r47969 = r47968 * r47965;
        double r47970 = r47966 / r47969;
        return r47970;
}


double f_of(float x, float y) {
        float r47971 = 0.5;
        float r47972 = y;
        float r47973 = r47971 / r47972;
        float r47974 = x;
        float r47975 = r47971 / r47974;
        float r47976 = r47973 - r47975;
        return r47976;
}

double f_od(double x, double y) {
        double r47977 = 0.5;
        double r47978 = y;
        double r47979 = r47977 / r47978;
        double r47980 = x;
        double r47981 = r47977 / r47980;
        double r47982 = r47979 - r47981;
        return r47982;
}

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 r47983, r47984, r47985, r47986, r47987, r47988, r47989;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47983);
        mpfr_init(r47984);
        mpfr_init(r47985);
        mpfr_init_set_str(r47986, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47987);
        mpfr_init(r47988);
        mpfr_init(r47989);
}

double f_im(double x, double y) {
        mpfr_set_d(r47983, x, MPFR_RNDN);
        mpfr_set_d(r47984, y, MPFR_RNDN);
        mpfr_sub(r47985, r47983, r47984, MPFR_RNDN);
        ;
        mpfr_mul(r47987, r47983, r47986, MPFR_RNDN);
        mpfr_mul(r47988, r47987, r47984, MPFR_RNDN);
        mpfr_div(r47989, r47985, r47988, MPFR_RNDN);
        return mpfr_get_d(r47989, MPFR_RNDN);
}

static mpfr_t r47990, r47991, r47992, r47993, r47994, r47995;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47990, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47991);
        mpfr_init(r47992);
        mpfr_init(r47993);
        mpfr_init(r47994);
        mpfr_init(r47995);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r47991, y, MPFR_RNDN);
        mpfr_div(r47992, r47990, r47991, MPFR_RNDN);
        mpfr_set_d(r47993, x, MPFR_RNDN);
        mpfr_div(r47994, r47990, r47993, MPFR_RNDN);
        mpfr_sub(r47995, r47992, r47994, MPFR_RNDN);
        return mpfr_get_d(r47995, MPFR_RNDN);
}

static mpfr_t r47996, r47997, r47998, r47999, r48000, r48001;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47996, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47997);
        mpfr_init(r47998);
        mpfr_init(r47999);
        mpfr_init(r48000);
        mpfr_init(r48001);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r47997, y, MPFR_RNDN);
        mpfr_div(r47998, r47996, r47997, MPFR_RNDN);
        mpfr_set_d(r47999, x, MPFR_RNDN);
        mpfr_div(r48000, r47996, r47999, MPFR_RNDN);
        mpfr_sub(r48001, r47998, r48000, MPFR_RNDN);
        return mpfr_get_d(r48001, MPFR_RNDN);
}

