#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 r44789 = x;
        float r44790 = y;
        float r44791 = r44789 + r44790;
        float r44792 = 2.0f;
        float r44793 = r44789 * r44792;
        float r44794 = r44793 * r44790;
        float r44795 = r44791 / r44794;
        return r44795;
}

double f_id(double x, double y) {
        double r44796 = x;
        double r44797 = y;
        double r44798 = r44796 + r44797;
        double r44799 = 2.0;
        double r44800 = r44796 * r44799;
        double r44801 = r44800 * r44797;
        double r44802 = r44798 / r44801;
        return r44802;
}


double f_of(float x, float y) {
        float r44803 = 0.5f;
        float r44804 = x;
        float r44805 = r44803 / r44804;
        float r44806 = y;
        float r44807 = r44803 / r44806;
        float r44808 = r44805 + r44807;
        return r44808;
}

double f_od(double x, double y) {
        double r44809 = 0.5;
        double r44810 = x;
        double r44811 = r44809 / r44810;
        double r44812 = y;
        double r44813 = r44809 / r44812;
        double r44814 = r44811 + r44813;
        return r44814;
}

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 r44815, r44816, r44817, r44818, r44819, r44820, r44821;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44815);
        mpfr_init(r44816);
        mpfr_init(r44817);
        mpfr_init_set_str(r44818, "2.0", 10, MPFR_RNDN);
        mpfr_init(r44819);
        mpfr_init(r44820);
        mpfr_init(r44821);
}

double f_im(double x, double y) {
        mpfr_set_d(r44815, x, MPFR_RNDN);
        mpfr_set_d(r44816, y, MPFR_RNDN);
        mpfr_add(r44817, r44815, r44816, MPFR_RNDN);
        ;
        mpfr_mul(r44819, r44815, r44818, MPFR_RNDN);
        mpfr_mul(r44820, r44819, r44816, MPFR_RNDN);
        mpfr_div(r44821, r44817, r44820, MPFR_RNDN);
        return mpfr_get_d(r44821, MPFR_RNDN);
}

static mpfr_t r44822, r44823, r44824, r44825, r44826, r44827;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r44822, "0.5", 10, MPFR_RNDN);
        mpfr_init(r44823);
        mpfr_init(r44824);
        mpfr_init(r44825);
        mpfr_init(r44826);
        mpfr_init(r44827);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r44823, x, MPFR_RNDN);
        mpfr_div(r44824, r44822, r44823, MPFR_RNDN);
        mpfr_set_d(r44825, y, MPFR_RNDN);
        mpfr_div(r44826, r44822, r44825, MPFR_RNDN);
        mpfr_add(r44827, r44824, r44826, MPFR_RNDN);
        return mpfr_get_d(r44827, MPFR_RNDN);
}

static mpfr_t r44828, r44829, r44830, r44831, r44832, r44833;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init_set_str(r44828, "0.5", 10, MPFR_RNDN);
        mpfr_init(r44829);
        mpfr_init(r44830);
        mpfr_init(r44831);
        mpfr_init(r44832);
        mpfr_init(r44833);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r44829, x, MPFR_RNDN);
        mpfr_div(r44830, r44828, r44829, MPFR_RNDN);
        mpfr_set_d(r44831, y, MPFR_RNDN);
        mpfr_div(r44832, r44828, r44831, MPFR_RNDN);
        mpfr_add(r44833, r44830, r44832, MPFR_RNDN);
        return mpfr_get_d(r44833, MPFR_RNDN);
}

