#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 r47720 = x;
        float r47721 = y;
        float r47722 = r47720 + r47721;
        float r47723 = 2.0;
        float r47724 = r47720 * r47723;
        float r47725 = r47724 * r47721;
        float r47726 = r47722 / r47725;
        return r47726;
}

double f_id(double x, double y) {
        double r47727 = x;
        double r47728 = y;
        double r47729 = r47727 + r47728;
        double r47730 = 2.0;
        double r47731 = r47727 * r47730;
        double r47732 = r47731 * r47728;
        double r47733 = r47729 / r47732;
        return r47733;
}


double f_of(float x, float y) {
        float r47734 = 0.5;
        float r47735 = x;
        float r47736 = r47734 / r47735;
        float r47737 = y;
        float r47738 = r47734 / r47737;
        float r47739 = r47736 + r47738;
        return r47739;
}

double f_od(double x, double y) {
        double r47740 = 0.5;
        double r47741 = x;
        double r47742 = r47740 / r47741;
        double r47743 = y;
        double r47744 = r47740 / r47743;
        double r47745 = r47742 + r47744;
        return r47745;
}

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 r47746, r47747, r47748, r47749, r47750, r47751, r47752;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47746);
        mpfr_init(r47747);
        mpfr_init(r47748);
        mpfr_init_set_str(r47749, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47750);
        mpfr_init(r47751);
        mpfr_init(r47752);
}

double f_im(double x, double y) {
        mpfr_set_d(r47746, x, MPFR_RNDN);
        mpfr_set_d(r47747, y, MPFR_RNDN);
        mpfr_add(r47748, r47746, r47747, MPFR_RNDN);
        ;
        mpfr_mul(r47750, r47746, r47749, MPFR_RNDN);
        mpfr_mul(r47751, r47750, r47747, MPFR_RNDN);
        mpfr_div(r47752, r47748, r47751, MPFR_RNDN);
        return mpfr_get_d(r47752, MPFR_RNDN);
}

static mpfr_t r47753, r47754, r47755, r47756, r47757, r47758;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47753, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47754);
        mpfr_init(r47755);
        mpfr_init(r47756);
        mpfr_init(r47757);
        mpfr_init(r47758);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r47754, x, MPFR_RNDN);
        mpfr_div(r47755, r47753, r47754, MPFR_RNDN);
        mpfr_set_d(r47756, y, MPFR_RNDN);
        mpfr_div(r47757, r47753, r47756, MPFR_RNDN);
        mpfr_add(r47758, r47755, r47757, MPFR_RNDN);
        return mpfr_get_d(r47758, MPFR_RNDN);
}

static mpfr_t r47759, r47760, r47761, r47762, r47763, r47764;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47759, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47760);
        mpfr_init(r47761);
        mpfr_init(r47762);
        mpfr_init(r47763);
        mpfr_init(r47764);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r47760, x, MPFR_RNDN);
        mpfr_div(r47761, r47759, r47760, MPFR_RNDN);
        mpfr_set_d(r47762, y, MPFR_RNDN);
        mpfr_div(r47763, r47759, r47762, MPFR_RNDN);
        mpfr_add(r47764, r47761, r47763, MPFR_RNDN);
        return mpfr_get_d(r47764, MPFR_RNDN);
}

