#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 r44834 = x;
        float r44835 = y;
        float r44836 = r44834 - r44835;
        float r44837 = 2.0f;
        float r44838 = r44834 * r44837;
        float r44839 = r44838 * r44835;
        float r44840 = r44836 / r44839;
        return r44840;
}

double f_id(double x, double y) {
        double r44841 = x;
        double r44842 = y;
        double r44843 = r44841 - r44842;
        double r44844 = 2.0;
        double r44845 = r44841 * r44844;
        double r44846 = r44845 * r44842;
        double r44847 = r44843 / r44846;
        return r44847;
}


double f_of(float x, float y) {
        float r44848 = 0.5f;
        float r44849 = y;
        float r44850 = r44848 / r44849;
        float r44851 = x;
        float r44852 = r44848 / r44851;
        float r44853 = r44850 - r44852;
        return r44853;
}

double f_od(double x, double y) {
        double r44854 = 0.5;
        double r44855 = y;
        double r44856 = r44854 / r44855;
        double r44857 = x;
        double r44858 = r44854 / r44857;
        double r44859 = r44856 - r44858;
        return r44859;
}

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 r44860, r44861, r44862, r44863, r44864, r44865, r44866;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44860);
        mpfr_init(r44861);
        mpfr_init(r44862);
        mpfr_init_set_str(r44863, "2.0", 10, MPFR_RNDN);
        mpfr_init(r44864);
        mpfr_init(r44865);
        mpfr_init(r44866);
}

double f_im(double x, double y) {
        mpfr_set_d(r44860, x, MPFR_RNDN);
        mpfr_set_d(r44861, y, MPFR_RNDN);
        mpfr_sub(r44862, r44860, r44861, MPFR_RNDN);
        ;
        mpfr_mul(r44864, r44860, r44863, MPFR_RNDN);
        mpfr_mul(r44865, r44864, r44861, MPFR_RNDN);
        mpfr_div(r44866, r44862, r44865, MPFR_RNDN);
        return mpfr_get_d(r44866, MPFR_RNDN);
}

static mpfr_t r44867, r44868, r44869, r44870, r44871, r44872;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r44867, "0.5", 10, MPFR_RNDN);
        mpfr_init(r44868);
        mpfr_init(r44869);
        mpfr_init(r44870);
        mpfr_init(r44871);
        mpfr_init(r44872);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r44868, y, MPFR_RNDN);
        mpfr_div(r44869, r44867, r44868, MPFR_RNDN);
        mpfr_set_d(r44870, x, MPFR_RNDN);
        mpfr_div(r44871, r44867, r44870, MPFR_RNDN);
        mpfr_sub(r44872, r44869, r44871, MPFR_RNDN);
        return mpfr_get_d(r44872, MPFR_RNDN);
}

static mpfr_t r44873, r44874, r44875, r44876, r44877, r44878;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r44873, "0.5", 10, MPFR_RNDN);
        mpfr_init(r44874);
        mpfr_init(r44875);
        mpfr_init(r44876);
        mpfr_init(r44877);
        mpfr_init(r44878);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r44874, y, MPFR_RNDN);
        mpfr_div(r44875, r44873, r44874, MPFR_RNDN);
        mpfr_set_d(r44876, x, MPFR_RNDN);
        mpfr_div(r44877, r44873, r44876, MPFR_RNDN);
        mpfr_sub(r44878, r44875, r44877, MPFR_RNDN);
        return mpfr_get_d(r44878, MPFR_RNDN);
}

