#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 r47784 = x;
        float r47785 = y;
        float r47786 = r47784 - r47785;
        float r47787 = 2.0;
        float r47788 = r47784 * r47787;
        float r47789 = r47788 * r47785;
        float r47790 = r47786 / r47789;
        return r47790;
}

double f_id(double x, double y) {
        double r47791 = x;
        double r47792 = y;
        double r47793 = r47791 - r47792;
        double r47794 = 2.0;
        double r47795 = r47791 * r47794;
        double r47796 = r47795 * r47792;
        double r47797 = r47793 / r47796;
        return r47797;
}


double f_of(float x, float y) {
        float r47798 = 0.5;
        float r47799 = y;
        float r47800 = r47798 / r47799;
        float r47801 = x;
        float r47802 = r47798 / r47801;
        float r47803 = r47800 - r47802;
        return r47803;
}

double f_od(double x, double y) {
        double r47804 = 0.5;
        double r47805 = y;
        double r47806 = r47804 / r47805;
        double r47807 = x;
        double r47808 = r47804 / r47807;
        double r47809 = r47806 - r47808;
        return r47809;
}

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 r47810, r47811, r47812, r47813, r47814, r47815, r47816;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47810);
        mpfr_init(r47811);
        mpfr_init(r47812);
        mpfr_init_set_str(r47813, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47814);
        mpfr_init(r47815);
        mpfr_init(r47816);
}

double f_im(double x, double y) {
        mpfr_set_d(r47810, x, MPFR_RNDN);
        mpfr_set_d(r47811, y, MPFR_RNDN);
        mpfr_sub(r47812, r47810, r47811, MPFR_RNDN);
        ;
        mpfr_mul(r47814, r47810, r47813, MPFR_RNDN);
        mpfr_mul(r47815, r47814, r47811, MPFR_RNDN);
        mpfr_div(r47816, r47812, r47815, MPFR_RNDN);
        return mpfr_get_d(r47816, MPFR_RNDN);
}

static mpfr_t r47817, r47818, r47819, r47820, r47821, r47822;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47817, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47818);
        mpfr_init(r47819);
        mpfr_init(r47820);
        mpfr_init(r47821);
        mpfr_init(r47822);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r47818, y, MPFR_RNDN);
        mpfr_div(r47819, r47817, r47818, MPFR_RNDN);
        mpfr_set_d(r47820, x, MPFR_RNDN);
        mpfr_div(r47821, r47817, r47820, MPFR_RNDN);
        mpfr_sub(r47822, r47819, r47821, MPFR_RNDN);
        return mpfr_get_d(r47822, MPFR_RNDN);
}

static mpfr_t r47823, r47824, r47825, r47826, r47827, r47828;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47823, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47824);
        mpfr_init(r47825);
        mpfr_init(r47826);
        mpfr_init(r47827);
        mpfr_init(r47828);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r47824, y, MPFR_RNDN);
        mpfr_div(r47825, r47823, r47824, MPFR_RNDN);
        mpfr_set_d(r47826, x, MPFR_RNDN);
        mpfr_div(r47827, r47823, r47826, MPFR_RNDN);
        mpfr_sub(r47828, r47825, r47827, MPFR_RNDN);
        return mpfr_get_d(r47828, MPFR_RNDN);
}

