#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 r47011 = x;
        float r47012 = y;
        float r47013 = r47011 - r47012;
        float r47014 = 2.0;
        float r47015 = r47011 * r47014;
        float r47016 = r47015 * r47012;
        float r47017 = r47013 / r47016;
        return r47017;
}

double f_id(double x, double y) {
        double r47018 = x;
        double r47019 = y;
        double r47020 = r47018 - r47019;
        double r47021 = 2.0;
        double r47022 = r47018 * r47021;
        double r47023 = r47022 * r47019;
        double r47024 = r47020 / r47023;
        return r47024;
}


double f_of(float x, float y) {
        float r47025 = 0.5;
        float r47026 = y;
        float r47027 = r47025 / r47026;
        float r47028 = x;
        float r47029 = r47025 / r47028;
        float r47030 = r47027 - r47029;
        return r47030;
}

double f_od(double x, double y) {
        double r47031 = 0.5;
        double r47032 = y;
        double r47033 = r47031 / r47032;
        double r47034 = x;
        double r47035 = r47031 / r47034;
        double r47036 = r47033 - r47035;
        return r47036;
}

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 r47037, r47038, r47039, r47040, r47041, r47042, r47043;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47037);
        mpfr_init(r47038);
        mpfr_init(r47039);
        mpfr_init_set_str(r47040, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47041);
        mpfr_init(r47042);
        mpfr_init(r47043);
}

double f_im(double x, double y) {
        mpfr_set_d(r47037, x, MPFR_RNDN);
        mpfr_set_d(r47038, y, MPFR_RNDN);
        mpfr_sub(r47039, r47037, r47038, MPFR_RNDN);
        ;
        mpfr_mul(r47041, r47037, r47040, MPFR_RNDN);
        mpfr_mul(r47042, r47041, r47038, MPFR_RNDN);
        mpfr_div(r47043, r47039, r47042, MPFR_RNDN);
        return mpfr_get_d(r47043, MPFR_RNDN);
}

static mpfr_t r47044, r47045, r47046, r47047, r47048, r47049;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47044, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47045);
        mpfr_init(r47046);
        mpfr_init(r47047);
        mpfr_init(r47048);
        mpfr_init(r47049);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r47045, y, MPFR_RNDN);
        mpfr_div(r47046, r47044, r47045, MPFR_RNDN);
        mpfr_set_d(r47047, x, MPFR_RNDN);
        mpfr_div(r47048, r47044, r47047, MPFR_RNDN);
        mpfr_sub(r47049, r47046, r47048, MPFR_RNDN);
        return mpfr_get_d(r47049, MPFR_RNDN);
}

static mpfr_t r47050, r47051, r47052, r47053, r47054, r47055;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47050, "0.5", 10, MPFR_RNDN);
        mpfr_init(r47051);
        mpfr_init(r47052);
        mpfr_init(r47053);
        mpfr_init(r47054);
        mpfr_init(r47055);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r47051, y, MPFR_RNDN);
        mpfr_div(r47052, r47050, r47051, MPFR_RNDN);
        mpfr_set_d(r47053, x, MPFR_RNDN);
        mpfr_div(r47054, r47050, r47053, MPFR_RNDN);
        mpfr_sub(r47055, r47052, r47054, MPFR_RNDN);
        return mpfr_get_d(r47055, MPFR_RNDN);
}

