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

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

double f_if(float x, float y, float z) {
        float r50839 = x;
        float r50840 = y;
        float r50841 = cos(r50840);
        float r50842 = r50839 * r50841;
        float r50843 = z;
        float r50844 = sin(r50840);
        float r50845 = r50843 * r50844;
        float r50846 = r50842 + r50845;
        return r50846;
}

double f_id(double x, double y, double z) {
        double r50847 = x;
        double r50848 = y;
        double r50849 = cos(r50848);
        double r50850 = r50847 * r50849;
        double r50851 = z;
        double r50852 = sin(r50848);
        double r50853 = r50851 * r50852;
        double r50854 = r50850 + r50853;
        return r50854;
}


double f_of(float x, float y, float z) {
        float r50855 = x;
        float r50856 = y;
        float r50857 = cos(r50856);
        float r50858 = r50855 * r50857;
        float r50859 = z;
        float r50860 = sin(r50856);
        float r50861 = r50859 * r50860;
        float r50862 = cbrt(r50861);
        float r50863 = r50862 * (r50862 * r50862);
        float r50864 = r50858 + r50863;
        return r50864;
}

double f_od(double x, double y, double z) {
        double r50865 = x;
        double r50866 = y;
        double r50867 = cos(r50866);
        double r50868 = r50865 * r50867;
        double r50869 = z;
        double r50870 = sin(r50866);
        double r50871 = r50869 * r50870;
        double r50872 = cbrt(r50871);
        double r50873 = r50872 * (r50872 * r50872);
        double r50874 = r50868 + r50873;
        return r50874;
}

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 r50875, r50876, r50877, r50878, r50879, r50880, r50881, r50882;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r50875);
        mpfr_init(r50876);
        mpfr_init(r50877);
        mpfr_init(r50878);
        mpfr_init(r50879);
        mpfr_init(r50880);
        mpfr_init(r50881);
        mpfr_init(r50882);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50875, x, MPFR_RNDN);
        mpfr_set_d(r50876, y, MPFR_RNDN);
        mpfr_cos(r50877, r50876, MPFR_RNDN);
        mpfr_mul(r50878, r50875, r50877, MPFR_RNDN);
        mpfr_set_d(r50879, z, MPFR_RNDN);
        mpfr_sin(r50880, r50876, MPFR_RNDN);
        mpfr_mul(r50881, r50879, r50880, MPFR_RNDN);
        mpfr_add(r50882, r50878, r50881, MPFR_RNDN);
        return mpfr_get_d(r50882, MPFR_RNDN);
}

static mpfr_t r50883, r50884, r50885, r50886, r50887, r50888, r50889, r50890, r50891, r50892;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50883);
        mpfr_init(r50884);
        mpfr_init(r50885);
        mpfr_init(r50886);
        mpfr_init(r50887);
        mpfr_init(r50888);
        mpfr_init(r50889);
        mpfr_init(r50890);
        mpfr_init(r50891);
        mpfr_init(r50892);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50883, x, MPFR_RNDN);
        mpfr_set_d(r50884, y, MPFR_RNDN);
        mpfr_cos(r50885, r50884, MPFR_RNDN);
        mpfr_mul(r50886, r50883, r50885, MPFR_RNDN);
        mpfr_set_d(r50887, z, MPFR_RNDN);
        mpfr_sin(r50888, r50884, MPFR_RNDN);
        mpfr_mul(r50889, r50887, r50888, MPFR_RNDN);
        mpfr_cbrt(r50890, r50889, MPFR_RNDN);
        mpfr_mul(r50891, r50890, r50890, MPFR_RNDN); mpfr_mul(r50891, r50891, r50890, MPFR_RNDN);
        mpfr_add(r50892, r50886, r50891, MPFR_RNDN);
        return mpfr_get_d(r50892, MPFR_RNDN);
}

static mpfr_t r50893, r50894, r50895, r50896, r50897, r50898, r50899, r50900, r50901, r50902;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50893);
        mpfr_init(r50894);
        mpfr_init(r50895);
        mpfr_init(r50896);
        mpfr_init(r50897);
        mpfr_init(r50898);
        mpfr_init(r50899);
        mpfr_init(r50900);
        mpfr_init(r50901);
        mpfr_init(r50902);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50893, x, MPFR_RNDN);
        mpfr_set_d(r50894, y, MPFR_RNDN);
        mpfr_cos(r50895, r50894, MPFR_RNDN);
        mpfr_mul(r50896, r50893, r50895, MPFR_RNDN);
        mpfr_set_d(r50897, z, MPFR_RNDN);
        mpfr_sin(r50898, r50894, MPFR_RNDN);
        mpfr_mul(r50899, r50897, r50898, MPFR_RNDN);
        mpfr_cbrt(r50900, r50899, MPFR_RNDN);
        mpfr_mul(r50901, r50900, r50900, MPFR_RNDN); mpfr_mul(r50901, r50901, r50900, MPFR_RNDN);
        mpfr_add(r50902, r50896, r50901, MPFR_RNDN);
        return mpfr_get_d(r50902, MPFR_RNDN);
}

