#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 r34151 = x;
        float r34152 = y;
        float r34153 = cos(r34152);
        float r34154 = r34151 * r34153;
        float r34155 = z;
        float r34156 = sin(r34152);
        float r34157 = r34155 * r34156;
        float r34158 = r34154 + r34157;
        return r34158;
}

double f_id(double x, double y, double z) {
        double r34159 = x;
        double r34160 = y;
        double r34161 = cos(r34160);
        double r34162 = r34159 * r34161;
        double r34163 = z;
        double r34164 = sin(r34160);
        double r34165 = r34163 * r34164;
        double r34166 = r34162 + r34165;
        return r34166;
}


double f_of(float x, float y, float z) {
        float r34167 = x;
        float r34168 = y;
        float r34169 = cos(r34168);
        float r34170 = r34169 * r34169;
        float r34171 = 1/3;
        float r34172 = pow(r34170, r34171);
        float r34173 = r34167 * r34172;
        float r34174 = cbrt(r34169);
        float r34175 = r34173 * r34174;
        float r34176 = z;
        float r34177 = sin(r34168);
        float r34178 = r34176 * r34177;
        float r34179 = r34175 + r34178;
        return r34179;
}

double f_od(double x, double y, double z) {
        double r34180 = x;
        double r34181 = y;
        double r34182 = cos(r34181);
        double r34183 = r34182 * r34182;
        double r34184 = 1/3;
        double r34185 = pow(r34183, r34184);
        double r34186 = r34180 * r34185;
        double r34187 = cbrt(r34182);
        double r34188 = r34186 * r34187;
        double r34189 = z;
        double r34190 = sin(r34181);
        double r34191 = r34189 * r34190;
        double r34192 = r34188 + r34191;
        return r34192;
}

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 r34193, r34194, r34195, r34196, r34197, r34198, r34199, r34200;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34193);
        mpfr_init(r34194);
        mpfr_init(r34195);
        mpfr_init(r34196);
        mpfr_init(r34197);
        mpfr_init(r34198);
        mpfr_init(r34199);
        mpfr_init(r34200);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r34193, x, MPFR_RNDN);
        mpfr_set_d(r34194, y, MPFR_RNDN);
        mpfr_cos(r34195, r34194, MPFR_RNDN);
        mpfr_mul(r34196, r34193, r34195, MPFR_RNDN);
        mpfr_set_d(r34197, z, MPFR_RNDN);
        mpfr_sin(r34198, r34194, MPFR_RNDN);
        mpfr_mul(r34199, r34197, r34198, MPFR_RNDN);
        mpfr_add(r34200, r34196, r34199, MPFR_RNDN);
        return mpfr_get_d(r34200, MPFR_RNDN);
}

static mpfr_t r34201, r34202, r34203, r34204, r34205, r34206, r34207, r34208, r34209, r34210, r34211, r34212, r34213;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34201);
        mpfr_init(r34202);
        mpfr_init(r34203);
        mpfr_init(r34204);
        mpfr_init_set_str(r34205, "1/3", 10, MPFR_RNDN);
        mpfr_init(r34206);
        mpfr_init(r34207);
        mpfr_init(r34208);
        mpfr_init(r34209);
        mpfr_init(r34210);
        mpfr_init(r34211);
        mpfr_init(r34212);
        mpfr_init(r34213);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34201, x, MPFR_RNDN);
        mpfr_set_d(r34202, y, MPFR_RNDN);
        mpfr_cos(r34203, r34202, MPFR_RNDN);
        mpfr_mul(r34204, r34203, r34203, MPFR_RNDN);
        ;
        mpfr_pow(r34206, r34204, r34205, MPFR_RNDN);
        mpfr_mul(r34207, r34201, r34206, MPFR_RNDN);
        mpfr_cbrt(r34208, r34203, MPFR_RNDN);
        mpfr_mul(r34209, r34207, r34208, MPFR_RNDN);
        mpfr_set_d(r34210, z, MPFR_RNDN);
        mpfr_sin(r34211, r34202, MPFR_RNDN);
        mpfr_mul(r34212, r34210, r34211, MPFR_RNDN);
        mpfr_add(r34213, r34209, r34212, MPFR_RNDN);
        return mpfr_get_d(r34213, MPFR_RNDN);
}

static mpfr_t r34214, r34215, r34216, r34217, r34218, r34219, r34220, r34221, r34222, r34223, r34224, r34225, r34226;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34214);
        mpfr_init(r34215);
        mpfr_init(r34216);
        mpfr_init(r34217);
        mpfr_init_set_str(r34218, "1/3", 10, MPFR_RNDN);
        mpfr_init(r34219);
        mpfr_init(r34220);
        mpfr_init(r34221);
        mpfr_init(r34222);
        mpfr_init(r34223);
        mpfr_init(r34224);
        mpfr_init(r34225);
        mpfr_init(r34226);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34214, x, MPFR_RNDN);
        mpfr_set_d(r34215, y, MPFR_RNDN);
        mpfr_cos(r34216, r34215, MPFR_RNDN);
        mpfr_mul(r34217, r34216, r34216, MPFR_RNDN);
        ;
        mpfr_pow(r34219, r34217, r34218, MPFR_RNDN);
        mpfr_mul(r34220, r34214, r34219, MPFR_RNDN);
        mpfr_cbrt(r34221, r34216, MPFR_RNDN);
        mpfr_mul(r34222, r34220, r34221, MPFR_RNDN);
        mpfr_set_d(r34223, z, MPFR_RNDN);
        mpfr_sin(r34224, r34215, MPFR_RNDN);
        mpfr_mul(r34225, r34223, r34224, MPFR_RNDN);
        mpfr_add(r34226, r34222, r34225, MPFR_RNDN);
        return mpfr_get_d(r34226, MPFR_RNDN);
}

