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

char *name = "Linear.V3:cross from linear-1.19.1.3";

double f_if(float x, float y, float z, float t) {
        float r29272 = x;
        float r29273 = y;
        float r29274 = r29272 * r29273;
        float r29275 = z;
        float r29276 = t;
        float r29277 = r29275 * r29276;
        float r29278 = r29274 - r29277;
        return r29278;
}

double f_id(double x, double y, double z, double t) {
        double r29279 = x;
        double r29280 = y;
        double r29281 = r29279 * r29280;
        double r29282 = z;
        double r29283 = t;
        double r29284 = r29282 * r29283;
        double r29285 = r29281 - r29284;
        return r29285;
}


double f_of(float x, float y, float z, float t) {
        float r29286 = x;
        float r29287 = y;
        float r29288 = r29286 * r29287;
        float r29289 = z;
        float r29290 = t;
        float r29291 = r29289 * r29290;
        float r29292 = r29288 - r29291;
        return r29292;
}

double f_od(double x, double y, double z, double t) {
        double r29293 = x;
        double r29294 = y;
        double r29295 = r29293 * r29294;
        double r29296 = z;
        double r29297 = t;
        double r29298 = r29296 * r29297;
        double r29299 = r29295 - r29298;
        return r29299;
}

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 r29300, r29301, r29302, r29303, r29304, r29305, r29306;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29300);
        mpfr_init(r29301);
        mpfr_init(r29302);
        mpfr_init(r29303);
        mpfr_init(r29304);
        mpfr_init(r29305);
        mpfr_init(r29306);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r29300, x, MPFR_RNDN);
        mpfr_set_d(r29301, y, MPFR_RNDN);
        mpfr_mul(r29302, r29300, r29301, MPFR_RNDN);
        mpfr_set_d(r29303, z, MPFR_RNDN);
        mpfr_set_d(r29304, t, MPFR_RNDN);
        mpfr_mul(r29305, r29303, r29304, MPFR_RNDN);
        mpfr_sub(r29306, r29302, r29305, MPFR_RNDN);
        return mpfr_get_d(r29306, MPFR_RNDN);
}

static mpfr_t r29307, r29308, r29309, r29310, r29311, r29312, r29313;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29307);
        mpfr_init(r29308);
        mpfr_init(r29309);
        mpfr_init(r29310);
        mpfr_init(r29311);
        mpfr_init(r29312);
        mpfr_init(r29313);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r29307, x, MPFR_RNDN);
        mpfr_set_d(r29308, y, MPFR_RNDN);
        mpfr_mul(r29309, r29307, r29308, MPFR_RNDN);
        mpfr_set_d(r29310, z, MPFR_RNDN);
        mpfr_set_d(r29311, t, MPFR_RNDN);
        mpfr_mul(r29312, r29310, r29311, MPFR_RNDN);
        mpfr_sub(r29313, r29309, r29312, MPFR_RNDN);
        return mpfr_get_d(r29313, MPFR_RNDN);
}

static mpfr_t r29314, r29315, r29316, r29317, r29318, r29319, r29320;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29314);
        mpfr_init(r29315);
        mpfr_init(r29316);
        mpfr_init(r29317);
        mpfr_init(r29318);
        mpfr_init(r29319);
        mpfr_init(r29320);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r29314, x, MPFR_RNDN);
        mpfr_set_d(r29315, y, MPFR_RNDN);
        mpfr_mul(r29316, r29314, r29315, MPFR_RNDN);
        mpfr_set_d(r29317, z, MPFR_RNDN);
        mpfr_set_d(r29318, t, MPFR_RNDN);
        mpfr_mul(r29319, r29317, r29318, MPFR_RNDN);
        mpfr_sub(r29320, r29316, r29319, MPFR_RNDN);
        return mpfr_get_d(r29320, MPFR_RNDN);
}

