#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 r33915 = x;
        float r33916 = y;
        float r33917 = cos(r33916);
        float r33918 = r33915 * r33917;
        float r33919 = z;
        float r33920 = sin(r33916);
        float r33921 = r33919 * r33920;
        float r33922 = r33918 - r33921;
        return r33922;
}

double f_id(double x, double y, double z) {
        double r33923 = x;
        double r33924 = y;
        double r33925 = cos(r33924);
        double r33926 = r33923 * r33925;
        double r33927 = z;
        double r33928 = sin(r33924);
        double r33929 = r33927 * r33928;
        double r33930 = r33926 - r33929;
        return r33930;
}


double f_of(float x, float y, float z) {
        float r33931 = x;
        float r33932 = y;
        float r33933 = cos(r33932);
        float r33934 = r33931 * r33933;
        float r33935 = z;
        float r33936 = sin(r33932);
        float r33937 = r33935 * r33936;
        float r33938 = r33934 - r33937;
        return r33938;
}

double f_od(double x, double y, double z) {
        double r33939 = x;
        double r33940 = y;
        double r33941 = cos(r33940);
        double r33942 = r33939 * r33941;
        double r33943 = z;
        double r33944 = sin(r33940);
        double r33945 = r33943 * r33944;
        double r33946 = r33942 - r33945;
        return r33946;
}

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 r33947, r33948, r33949, r33950, r33951, r33952, r33953, r33954;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r33947);
        mpfr_init(r33948);
        mpfr_init(r33949);
        mpfr_init(r33950);
        mpfr_init(r33951);
        mpfr_init(r33952);
        mpfr_init(r33953);
        mpfr_init(r33954);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r33947, x, MPFR_RNDN);
        mpfr_set_d(r33948, y, MPFR_RNDN);
        mpfr_cos(r33949, r33948, MPFR_RNDN);
        mpfr_mul(r33950, r33947, r33949, MPFR_RNDN);
        mpfr_set_d(r33951, z, MPFR_RNDN);
        mpfr_sin(r33952, r33948, MPFR_RNDN);
        mpfr_mul(r33953, r33951, r33952, MPFR_RNDN);
        mpfr_sub(r33954, r33950, r33953, MPFR_RNDN);
        return mpfr_get_d(r33954, MPFR_RNDN);
}

static mpfr_t r33955, r33956, r33957, r33958, r33959, r33960, r33961, r33962;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33955);
        mpfr_init(r33956);
        mpfr_init(r33957);
        mpfr_init(r33958);
        mpfr_init(r33959);
        mpfr_init(r33960);
        mpfr_init(r33961);
        mpfr_init(r33962);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r33955, x, MPFR_RNDN);
        mpfr_set_d(r33956, y, MPFR_RNDN);
        mpfr_cos(r33957, r33956, MPFR_RNDN);
        mpfr_mul(r33958, r33955, r33957, MPFR_RNDN);
        mpfr_set_d(r33959, z, MPFR_RNDN);
        mpfr_sin(r33960, r33956, MPFR_RNDN);
        mpfr_mul(r33961, r33959, r33960, MPFR_RNDN);
        mpfr_sub(r33962, r33958, r33961, MPFR_RNDN);
        return mpfr_get_d(r33962, MPFR_RNDN);
}

static mpfr_t r33963, r33964, r33965, r33966, r33967, r33968, r33969, r33970;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33963);
        mpfr_init(r33964);
        mpfr_init(r33965);
        mpfr_init(r33966);
        mpfr_init(r33967);
        mpfr_init(r33968);
        mpfr_init(r33969);
        mpfr_init(r33970);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r33963, x, MPFR_RNDN);
        mpfr_set_d(r33964, y, MPFR_RNDN);
        mpfr_cos(r33965, r33964, MPFR_RNDN);
        mpfr_mul(r33966, r33963, r33965, MPFR_RNDN);
        mpfr_set_d(r33967, z, MPFR_RNDN);
        mpfr_sin(r33968, r33964, MPFR_RNDN);
        mpfr_mul(r33969, r33967, r33968, MPFR_RNDN);
        mpfr_sub(r33970, r33966, r33969, MPFR_RNDN);
        return mpfr_get_d(r33970, MPFR_RNDN);
}

