#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, C";

double f_if(float x, float y) {
        float r46966 = x;
        float r46967 = y;
        float r46968 = r46966 + r46967;
        float r46969 = 2.0;
        float r46970 = r46966 * r46969;
        float r46971 = r46970 * r46967;
        float r46972 = r46968 / r46971;
        return r46972;
}

double f_id(double x, double y) {
        double r46973 = x;
        double r46974 = y;
        double r46975 = r46973 + r46974;
        double r46976 = 2.0;
        double r46977 = r46973 * r46976;
        double r46978 = r46977 * r46974;
        double r46979 = r46975 / r46978;
        return r46979;
}


double f_of(float x, float y) {
        float r46980 = 0.5;
        float r46981 = x;
        float r46982 = r46980 / r46981;
        float r46983 = y;
        float r46984 = r46980 / r46983;
        float r46985 = r46982 + r46984;
        return r46985;
}

double f_od(double x, double y) {
        double r46986 = 0.5;
        double r46987 = x;
        double r46988 = r46986 / r46987;
        double r46989 = y;
        double r46990 = r46986 / r46989;
        double r46991 = r46988 + r46990;
        return r46991;
}

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 r46992, r46993, r46994, r46995, r46996, r46997, r46998;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46992);
        mpfr_init(r46993);
        mpfr_init(r46994);
        mpfr_init_set_str(r46995, "2.0", 10, MPFR_RNDN);
        mpfr_init(r46996);
        mpfr_init(r46997);
        mpfr_init(r46998);
}

double f_im(double x, double y) {
        mpfr_set_d(r46992, x, MPFR_RNDN);
        mpfr_set_d(r46993, y, MPFR_RNDN);
        mpfr_add(r46994, r46992, r46993, MPFR_RNDN);
        ;
        mpfr_mul(r46996, r46992, r46995, MPFR_RNDN);
        mpfr_mul(r46997, r46996, r46993, MPFR_RNDN);
        mpfr_div(r46998, r46994, r46997, MPFR_RNDN);
        return mpfr_get_d(r46998, MPFR_RNDN);
}

static mpfr_t r46999, r47000, r47001, r47002, r47003, r47004;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r46999, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47000);
        mpfr_init(r47001);
        mpfr_init(r47002);
        mpfr_init(r47003);
        mpfr_init(r47004);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r47000, x, MPFR_RNDN);
        mpfr_div(r47001, r46999, r47000, MPFR_RNDN);
        mpfr_set_d(r47002, y, MPFR_RNDN);
        mpfr_div(r47003, r46999, r47002, MPFR_RNDN);
        mpfr_add(r47004, r47001, r47003, MPFR_RNDN);
        return mpfr_get_d(r47004, MPFR_RNDN);
}

static mpfr_t r47005, r47006, r47007, r47008, r47009, r47010;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47005, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47006);
        mpfr_init(r47007);
        mpfr_init(r47008);
        mpfr_init(r47009);
        mpfr_init(r47010);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r47006, x, MPFR_RNDN);
        mpfr_div(r47007, r47005, r47006, MPFR_RNDN);
        mpfr_set_d(r47008, y, MPFR_RNDN);
        mpfr_div(r47009, r47005, r47008, MPFR_RNDN);
        mpfr_add(r47010, r47007, r47009, MPFR_RNDN);
        return mpfr_get_d(r47010, MPFR_RNDN);
}

