#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 r29196 = x;
        float r29197 = y;
        float r29198 = r29196 * r29197;
        float r29199 = z;
        float r29200 = t;
        float r29201 = r29199 * r29200;
        float r29202 = r29198 - r29201;
        return r29202;
}

double f_id(double x, double y, double z, double t) {
        double r29203 = x;
        double r29204 = y;
        double r29205 = r29203 * r29204;
        double r29206 = z;
        double r29207 = t;
        double r29208 = r29206 * r29207;
        double r29209 = r29205 - r29208;
        return r29209;
}


double f_of(float x, float y, float z, float t) {
        float r29210 = x;
        float r29211 = y;
        float r29212 = r29210 * r29211;
        float r29213 = z;
        float r29214 = t;
        float r29215 = r29213 * r29214;
        float r29216 = r29212 - r29215;
        return r29216;
}

double f_od(double x, double y, double z, double t) {
        double r29217 = x;
        double r29218 = y;
        double r29219 = r29217 * r29218;
        double r29220 = z;
        double r29221 = t;
        double r29222 = r29220 * r29221;
        double r29223 = r29219 - r29222;
        return r29223;
}

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 r29224, r29225, r29226, r29227, r29228, r29229, r29230;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r29224);
        mpfr_init(r29225);
        mpfr_init(r29226);
        mpfr_init(r29227);
        mpfr_init(r29228);
        mpfr_init(r29229);
        mpfr_init(r29230);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r29224, x, MPFR_RNDN);
        mpfr_set_d(r29225, y, MPFR_RNDN);
        mpfr_mul(r29226, r29224, r29225, MPFR_RNDN);
        mpfr_set_d(r29227, z, MPFR_RNDN);
        mpfr_set_d(r29228, t, MPFR_RNDN);
        mpfr_mul(r29229, r29227, r29228, MPFR_RNDN);
        mpfr_sub(r29230, r29226, r29229, MPFR_RNDN);
        return mpfr_get_d(r29230, MPFR_RNDN);
}

static mpfr_t r29231, r29232, r29233, r29234, r29235, r29236, r29237;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29231);
        mpfr_init(r29232);
        mpfr_init(r29233);
        mpfr_init(r29234);
        mpfr_init(r29235);
        mpfr_init(r29236);
        mpfr_init(r29237);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r29231, x, MPFR_RNDN);
        mpfr_set_d(r29232, y, MPFR_RNDN);
        mpfr_mul(r29233, r29231, r29232, MPFR_RNDN);
        mpfr_set_d(r29234, z, MPFR_RNDN);
        mpfr_set_d(r29235, t, MPFR_RNDN);
        mpfr_mul(r29236, r29234, r29235, MPFR_RNDN);
        mpfr_sub(r29237, r29233, r29236, MPFR_RNDN);
        return mpfr_get_d(r29237, MPFR_RNDN);
}

static mpfr_t r29238, r29239, r29240, r29241, r29242, r29243, r29244;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r29238);
        mpfr_init(r29239);
        mpfr_init(r29240);
        mpfr_init(r29241);
        mpfr_init(r29242);
        mpfr_init(r29243);
        mpfr_init(r29244);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r29238, x, MPFR_RNDN);
        mpfr_set_d(r29239, y, MPFR_RNDN);
        mpfr_mul(r29240, r29238, r29239, MPFR_RNDN);
        mpfr_set_d(r29241, z, MPFR_RNDN);
        mpfr_set_d(r29242, t, MPFR_RNDN);
        mpfr_mul(r29243, r29241, r29242, MPFR_RNDN);
        mpfr_sub(r29244, r29240, r29243, MPFR_RNDN);
        return mpfr_get_d(r29244, MPFR_RNDN);
}

