#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 r33841 = x;
        float r33842 = y;
        float r33843 = cos(r33842);
        float r33844 = r33841 * r33843;
        float r33845 = z;
        float r33846 = sin(r33842);
        float r33847 = r33845 * r33846;
        float r33848 = r33844 - r33847;
        return r33848;
}

double f_id(double x, double y, double z) {
        double r33849 = x;
        double r33850 = y;
        double r33851 = cos(r33850);
        double r33852 = r33849 * r33851;
        double r33853 = z;
        double r33854 = sin(r33850);
        double r33855 = r33853 * r33854;
        double r33856 = r33852 - r33855;
        return r33856;
}


double f_of(float x, float y, float z) {
        float r33857 = x;
        float r33858 = y;
        float r33859 = cos(r33858);
        float r33860 = r33857 * r33859;
        float r33861 = z;
        float r33862 = sin(r33858);
        float r33863 = r33861 * r33862;
        float r33864 = r33860 - r33863;
        return r33864;
}

double f_od(double x, double y, double z) {
        double r33865 = x;
        double r33866 = y;
        double r33867 = cos(r33866);
        double r33868 = r33865 * r33867;
        double r33869 = z;
        double r33870 = sin(r33866);
        double r33871 = r33869 * r33870;
        double r33872 = r33868 - r33871;
        return r33872;
}

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 r33873, r33874, r33875, r33876, r33877, r33878, r33879, r33880;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r33873);
        mpfr_init(r33874);
        mpfr_init(r33875);
        mpfr_init(r33876);
        mpfr_init(r33877);
        mpfr_init(r33878);
        mpfr_init(r33879);
        mpfr_init(r33880);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r33873, x, MPFR_RNDN);
        mpfr_set_d(r33874, y, MPFR_RNDN);
        mpfr_cos(r33875, r33874, MPFR_RNDN);
        mpfr_mul(r33876, r33873, r33875, MPFR_RNDN);
        mpfr_set_d(r33877, z, MPFR_RNDN);
        mpfr_sin(r33878, r33874, MPFR_RNDN);
        mpfr_mul(r33879, r33877, r33878, MPFR_RNDN);
        mpfr_sub(r33880, r33876, r33879, MPFR_RNDN);
        return mpfr_get_d(r33880, MPFR_RNDN);
}

static mpfr_t r33881, r33882, r33883, r33884, r33885, r33886, r33887, r33888;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33881);
        mpfr_init(r33882);
        mpfr_init(r33883);
        mpfr_init(r33884);
        mpfr_init(r33885);
        mpfr_init(r33886);
        mpfr_init(r33887);
        mpfr_init(r33888);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r33881, x, MPFR_RNDN);
        mpfr_set_d(r33882, y, MPFR_RNDN);
        mpfr_cos(r33883, r33882, MPFR_RNDN);
        mpfr_mul(r33884, r33881, r33883, MPFR_RNDN);
        mpfr_set_d(r33885, z, MPFR_RNDN);
        mpfr_sin(r33886, r33882, MPFR_RNDN);
        mpfr_mul(r33887, r33885, r33886, MPFR_RNDN);
        mpfr_sub(r33888, r33884, r33887, MPFR_RNDN);
        return mpfr_get_d(r33888, MPFR_RNDN);
}

static mpfr_t r33889, r33890, r33891, r33892, r33893, r33894, r33895, r33896;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33889);
        mpfr_init(r33890);
        mpfr_init(r33891);
        mpfr_init(r33892);
        mpfr_init(r33893);
        mpfr_init(r33894);
        mpfr_init(r33895);
        mpfr_init(r33896);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r33889, x, MPFR_RNDN);
        mpfr_set_d(r33890, y, MPFR_RNDN);
        mpfr_cos(r33891, r33890, MPFR_RNDN);
        mpfr_mul(r33892, r33889, r33891, MPFR_RNDN);
        mpfr_set_d(r33893, z, MPFR_RNDN);
        mpfr_sin(r33894, r33890, MPFR_RNDN);
        mpfr_mul(r33895, r33893, r33894, MPFR_RNDN);
        mpfr_sub(r33896, r33892, r33895, MPFR_RNDN);
        return mpfr_get_d(r33896, MPFR_RNDN);
}

