#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Linear.Matrix:fromQuaternion from linear-1.19.1.3, A";

double f_if(float x, float y) {
        float r47753 = 2.0;
        float r47754 = x;
        float r47755 = r47754 * r47754;
        float r47756 = y;
        float r47757 = r47754 * r47756;
        float r47758 = r47755 - r47757;
        float r47759 = r47753 * r47758;
        return r47759;
}

double f_id(double x, double y) {
        double r47760 = 2.0;
        double r47761 = x;
        double r47762 = r47761 * r47761;
        double r47763 = y;
        double r47764 = r47761 * r47763;
        double r47765 = r47762 - r47764;
        double r47766 = r47760 * r47765;
        return r47766;
}


double f_of(float x, float y) {
        float r47767 = 2.0;
        float r47768 = x;
        float r47769 = r47768 * r47768;
        float r47770 = y;
        float r47771 = r47768 * r47770;
        float r47772 = r47769 - r47771;
        float r47773 = r47767 * r47772;
        return r47773;
}

double f_od(double x, double y) {
        double r47774 = 2.0;
        double r47775 = x;
        double r47776 = r47775 * r47775;
        double r47777 = y;
        double r47778 = r47775 * r47777;
        double r47779 = r47776 - r47778;
        double r47780 = r47774 * r47779;
        return r47780;
}

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 r47781, r47782, r47783, r47784, r47785, r47786, r47787;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47781, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47782);
        mpfr_init(r47783);
        mpfr_init(r47784);
        mpfr_init(r47785);
        mpfr_init(r47786);
        mpfr_init(r47787);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r47782, x, MPFR_RNDN);
        mpfr_mul(r47783, r47782, r47782, MPFR_RNDN);
        mpfr_set_d(r47784, y, MPFR_RNDN);
        mpfr_mul(r47785, r47782, r47784, MPFR_RNDN);
        mpfr_sub(r47786, r47783, r47785, MPFR_RNDN);
        mpfr_mul(r47787, r47781, r47786, MPFR_RNDN);
        return mpfr_get_d(r47787, MPFR_RNDN);
}

static mpfr_t r47788, r47789, r47790, r47791, r47792, r47793, r47794;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47788, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47789);
        mpfr_init(r47790);
        mpfr_init(r47791);
        mpfr_init(r47792);
        mpfr_init(r47793);
        mpfr_init(r47794);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r47789, x, MPFR_RNDN);
        mpfr_mul(r47790, r47789, r47789, MPFR_RNDN);
        mpfr_set_d(r47791, y, MPFR_RNDN);
        mpfr_mul(r47792, r47789, r47791, MPFR_RNDN);
        mpfr_sub(r47793, r47790, r47792, MPFR_RNDN);
        mpfr_mul(r47794, r47788, r47793, MPFR_RNDN);
        return mpfr_get_d(r47794, MPFR_RNDN);
}

static mpfr_t r47795, r47796, r47797, r47798, r47799, r47800, r47801;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r47795, "2.0", 10, MPFR_RNDN);
        mpfr_init(r47796);
        mpfr_init(r47797);
        mpfr_init(r47798);
        mpfr_init(r47799);
        mpfr_init(r47800);
        mpfr_init(r47801);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r47796, x, MPFR_RNDN);
        mpfr_mul(r47797, r47796, r47796, MPFR_RNDN);
        mpfr_set_d(r47798, y, MPFR_RNDN);
        mpfr_mul(r47799, r47796, r47798, MPFR_RNDN);
        mpfr_sub(r47800, r47797, r47799, MPFR_RNDN);
        mpfr_mul(r47801, r47795, r47800, MPFR_RNDN);
        return mpfr_get_d(r47801, MPFR_RNDN);
}

