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

double f_if(float x, float y) {
        float r48043 = 2.0;
        float r48044 = x;
        float r48045 = r48044 * r48044;
        float r48046 = y;
        float r48047 = r48044 * r48046;
        float r48048 = r48045 + r48047;
        float r48049 = r48043 * r48048;
        return r48049;
}

double f_id(double x, double y) {
        double r48050 = 2.0;
        double r48051 = x;
        double r48052 = r48051 * r48051;
        double r48053 = y;
        double r48054 = r48051 * r48053;
        double r48055 = r48052 + r48054;
        double r48056 = r48050 * r48055;
        return r48056;
}


double f_of(float x, float y) {
        float r48057 = 2.0;
        float r48058 = x;
        float r48059 = r48058 * r48058;
        float r48060 = y;
        float r48061 = r48058 * r48060;
        float r48062 = r48059 + r48061;
        float r48063 = r48057 * r48062;
        return r48063;
}

double f_od(double x, double y) {
        double r48064 = 2.0;
        double r48065 = x;
        double r48066 = r48065 * r48065;
        double r48067 = y;
        double r48068 = r48065 * r48067;
        double r48069 = r48066 + r48068;
        double r48070 = r48064 * r48069;
        return r48070;
}

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 r48071, r48072, r48073, r48074, r48075, r48076, r48077;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r48071, "2.0", 10, MPFR_RNDN);
        mpfr_init(r48072);
        mpfr_init(r48073);
        mpfr_init(r48074);
        mpfr_init(r48075);
        mpfr_init(r48076);
        mpfr_init(r48077);
}

double f_im(double x, double y) {
        ;
        mpfr_set_d(r48072, x, MPFR_RNDN);
        mpfr_mul(r48073, r48072, r48072, MPFR_RNDN);
        mpfr_set_d(r48074, y, MPFR_RNDN);
        mpfr_mul(r48075, r48072, r48074, MPFR_RNDN);
        mpfr_add(r48076, r48073, r48075, MPFR_RNDN);
        mpfr_mul(r48077, r48071, r48076, MPFR_RNDN);
        return mpfr_get_d(r48077, MPFR_RNDN);
}

static mpfr_t r48078, r48079, r48080, r48081, r48082, r48083, r48084;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r48078, "2.0", 10, MPFR_RNDN);
        mpfr_init(r48079);
        mpfr_init(r48080);
        mpfr_init(r48081);
        mpfr_init(r48082);
        mpfr_init(r48083);
        mpfr_init(r48084);
}

double f_fm(double x, double y) {
        ;
        mpfr_set_d(r48079, x, MPFR_RNDN);
        mpfr_mul(r48080, r48079, r48079, MPFR_RNDN);
        mpfr_set_d(r48081, y, MPFR_RNDN);
        mpfr_mul(r48082, r48079, r48081, MPFR_RNDN);
        mpfr_add(r48083, r48080, r48082, MPFR_RNDN);
        mpfr_mul(r48084, r48078, r48083, MPFR_RNDN);
        return mpfr_get_d(r48084, MPFR_RNDN);
}

static mpfr_t r48085, r48086, r48087, r48088, r48089, r48090, r48091;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r48085, "2.0", 10, MPFR_RNDN);
        mpfr_init(r48086);
        mpfr_init(r48087);
        mpfr_init(r48088);
        mpfr_init(r48089);
        mpfr_init(r48090);
        mpfr_init(r48091);
}

double f_dm(double x, double y) {
        ;
        mpfr_set_d(r48086, x, MPFR_RNDN);
        mpfr_mul(r48087, r48086, r48086, MPFR_RNDN);
        mpfr_set_d(r48088, y, MPFR_RNDN);
        mpfr_mul(r48089, r48086, r48088, MPFR_RNDN);
        mpfr_add(r48090, r48087, r48089, MPFR_RNDN);
        mpfr_mul(r48091, r48085, r48090, MPFR_RNDN);
        return mpfr_get_d(r48091, MPFR_RNDN);
}

