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

char *name = "Diagrams.ThreeD.Transform:aboutX from diagrams-lib-1.3.0.3, A";

double f_if(float x, float y, float z) {
        float r34283 = x;
        float r34284 = y;
        float r34285 = cos(r34284);
        float r34286 = r34283 * r34285;
        float r34287 = z;
        float r34288 = sin(r34284);
        float r34289 = r34287 * r34288;
        float r34290 = r34286 - r34289;
        return r34290;
}

double f_id(double x, double y, double z) {
        double r34291 = x;
        double r34292 = y;
        double r34293 = cos(r34292);
        double r34294 = r34291 * r34293;
        double r34295 = z;
        double r34296 = sin(r34292);
        double r34297 = r34295 * r34296;
        double r34298 = r34294 - r34297;
        return r34298;
}


double f_of(float x, float y, float z) {
        float r34299 = x;
        float r34300 = y;
        float r34301 = cos(r34300);
        float r34302 = r34299 * r34301;
        float r34303 = z;
        float r34304 = sin(r34300);
        float r34305 = r34303 * r34304;
        float r34306 = r34302 - r34305;
        return r34306;
}

double f_od(double x, double y, double z) {
        double r34307 = x;
        double r34308 = y;
        double r34309 = cos(r34308);
        double r34310 = r34307 * r34309;
        double r34311 = z;
        double r34312 = sin(r34308);
        double r34313 = r34311 * r34312;
        double r34314 = r34310 - r34313;
        return r34314;
}

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 r34315, r34316, r34317, r34318, r34319, r34320, r34321, r34322;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34315);
        mpfr_init(r34316);
        mpfr_init(r34317);
        mpfr_init(r34318);
        mpfr_init(r34319);
        mpfr_init(r34320);
        mpfr_init(r34321);
        mpfr_init(r34322);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r34315, x, MPFR_RNDN);
        mpfr_set_d(r34316, y, MPFR_RNDN);
        mpfr_cos(r34317, r34316, MPFR_RNDN);
        mpfr_mul(r34318, r34315, r34317, MPFR_RNDN);
        mpfr_set_d(r34319, z, MPFR_RNDN);
        mpfr_sin(r34320, r34316, MPFR_RNDN);
        mpfr_mul(r34321, r34319, r34320, MPFR_RNDN);
        mpfr_sub(r34322, r34318, r34321, MPFR_RNDN);
        return mpfr_get_d(r34322, MPFR_RNDN);
}

static mpfr_t r34323, r34324, r34325, r34326, r34327, r34328, r34329, r34330;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34323);
        mpfr_init(r34324);
        mpfr_init(r34325);
        mpfr_init(r34326);
        mpfr_init(r34327);
        mpfr_init(r34328);
        mpfr_init(r34329);
        mpfr_init(r34330);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34323, x, MPFR_RNDN);
        mpfr_set_d(r34324, y, MPFR_RNDN);
        mpfr_cos(r34325, r34324, MPFR_RNDN);
        mpfr_mul(r34326, r34323, r34325, MPFR_RNDN);
        mpfr_set_d(r34327, z, MPFR_RNDN);
        mpfr_sin(r34328, r34324, MPFR_RNDN);
        mpfr_mul(r34329, r34327, r34328, MPFR_RNDN);
        mpfr_sub(r34330, r34326, r34329, MPFR_RNDN);
        return mpfr_get_d(r34330, MPFR_RNDN);
}

static mpfr_t r34331, r34332, r34333, r34334, r34335, r34336, r34337, r34338;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34331);
        mpfr_init(r34332);
        mpfr_init(r34333);
        mpfr_init(r34334);
        mpfr_init(r34335);
        mpfr_init(r34336);
        mpfr_init(r34337);
        mpfr_init(r34338);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34331, x, MPFR_RNDN);
        mpfr_set_d(r34332, y, MPFR_RNDN);
        mpfr_cos(r34333, r34332, MPFR_RNDN);
        mpfr_mul(r34334, r34331, r34333, MPFR_RNDN);
        mpfr_set_d(r34335, z, MPFR_RNDN);
        mpfr_sin(r34336, r34332, MPFR_RNDN);
        mpfr_mul(r34337, r34335, r34336, MPFR_RNDN);
        mpfr_sub(r34338, r34334, r34337, MPFR_RNDN);
        return mpfr_get_d(r34338, MPFR_RNDN);
}

