#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 r47765 = x;
        float r47766 = y;
        float r47767 = r47765 - r47766;
        float r47768 = 2.0;
        float r47769 = r47765 * r47768;
        float r47770 = r47769 * r47766;
        float r47771 = r47767 / r47770;
        return r47771;
}

double f_id(double x, double y) {
        double r47772 = x;
        double r47773 = y;
        double r47774 = r47772 - r47773;
        double r47775 = 2.0;
        double r47776 = r47772 * r47775;
        double r47777 = r47776 * r47773;
        double r47778 = r47774 / r47777;
        return r47778;
}


double f_of(float x, float y) {
        float r47779 = 0.5;
        float r47780 = y;
        float r47781 = r47779 / r47780;
        float r47782 = x;
        float r47783 = r47779 / r47782;
        float r47784 = r47781 - r47783;
        return r47784;
}

double f_od(double x, double y) {
        double r47785 = 0.5;
        double r47786 = y;
        double r47787 = r47785 / r47786;
        double r47788 = x;
        double r47789 = r47785 / r47788;
        double r47790 = r47787 - r47789;
        return r47790;
}

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 r47791, r47792, r47793, r47794, r47795, r47796, r47797;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47791);
        mpfr_init(r47792);
        mpfr_init(r47793);
        mpfr_init_set_str(r47794, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47795);
        mpfr_init(r47796);
        mpfr_init(r47797);
}

double f_im(double x, double y) {
        mpfr_set_d(r47791, x, MPFR_RNDN);
        mpfr_set_d(r47792, y, MPFR_RNDN);
        mpfr_sub(r47793, r47791, r47792, MPFR_RNDN);
        ;
        mpfr_mul(r47795, r47791, r47794, MPFR_RNDN);
        mpfr_mul(r47796, r47795, r47792, MPFR_RNDN);
        mpfr_div(r47797, r47793, r47796, MPFR_RNDN);
        return mpfr_get_d(r47797, MPFR_RNDN);
}

static mpfr_t r47798, r47799, r47800, r47801, r47802, r47803;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47798, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47799);
        mpfr_init(r47800);
        mpfr_init(r47801);
        mpfr_init(r47802);
        mpfr_init(r47803);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r47799, y, MPFR_RNDN);
        mpfr_div(r47800, r47798, r47799, MPFR_RNDN);
        mpfr_set_d(r47801, x, MPFR_RNDN);
        mpfr_div(r47802, r47798, r47801, MPFR_RNDN);
        mpfr_sub(r47803, r47800, r47802, MPFR_RNDN);
        return mpfr_get_d(r47803, MPFR_RNDN);
}

static mpfr_t r47804, r47805, r47806, r47807, r47808, r47809;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47804, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47805);
        mpfr_init(r47806);
        mpfr_init(r47807);
        mpfr_init(r47808);
        mpfr_init(r47809);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r47805, y, MPFR_RNDN);
        mpfr_div(r47806, r47804, r47805, MPFR_RNDN);
        mpfr_set_d(r47807, x, MPFR_RNDN);
        mpfr_div(r47808, r47804, r47807, MPFR_RNDN);
        mpfr_sub(r47809, r47806, r47808, MPFR_RNDN);
        return mpfr_get_d(r47809, MPFR_RNDN);
}

