#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 r34131 = x;
        float r34132 = y;
        float r34133 = cos(r34132);
        float r34134 = r34131 * r34133;
        float r34135 = z;
        float r34136 = sin(r34132);
        float r34137 = r34135 * r34136;
        float r34138 = r34134 + r34137;
        return r34138;
}

double f_id(double x, double y, double z) {
        double r34139 = x;
        double r34140 = y;
        double r34141 = cos(r34140);
        double r34142 = r34139 * r34141;
        double r34143 = z;
        double r34144 = sin(r34140);
        double r34145 = r34143 * r34144;
        double r34146 = r34142 + r34145;
        return r34146;
}


double f_of(float x, float y, float z) {
        float r34147 = x;
        float r34148 = y;
        float r34149 = cos(r34148);
        float r34150 = r34149 * r34149;
        float r34151 = 1/3;
        float r34152 = pow(r34150, r34151);
        float r34153 = r34147 * r34152;
        float r34154 = cbrt(r34149);
        float r34155 = r34153 * r34154;
        float r34156 = z;
        float r34157 = sin(r34148);
        float r34158 = r34156 * r34157;
        float r34159 = r34155 + r34158;
        return r34159;
}

double f_od(double x, double y, double z) {
        double r34160 = x;
        double r34161 = y;
        double r34162 = cos(r34161);
        double r34163 = r34162 * r34162;
        double r34164 = 1/3;
        double r34165 = pow(r34163, r34164);
        double r34166 = r34160 * r34165;
        double r34167 = cbrt(r34162);
        double r34168 = r34166 * r34167;
        double r34169 = z;
        double r34170 = sin(r34161);
        double r34171 = r34169 * r34170;
        double r34172 = r34168 + r34171;
        return r34172;
}

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 r34173, r34174, r34175, r34176, r34177, r34178, r34179, r34180;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34173);
        mpfr_init(r34174);
        mpfr_init(r34175);
        mpfr_init(r34176);
        mpfr_init(r34177);
        mpfr_init(r34178);
        mpfr_init(r34179);
        mpfr_init(r34180);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r34173, x, MPFR_RNDN);
        mpfr_set_d(r34174, y, MPFR_RNDN);
        mpfr_cos(r34175, r34174, MPFR_RNDN);
        mpfr_mul(r34176, r34173, r34175, MPFR_RNDN);
        mpfr_set_d(r34177, z, MPFR_RNDN);
        mpfr_sin(r34178, r34174, MPFR_RNDN);
        mpfr_mul(r34179, r34177, r34178, MPFR_RNDN);
        mpfr_add(r34180, r34176, r34179, MPFR_RNDN);
        return mpfr_get_d(r34180, MPFR_RNDN);
}

static mpfr_t r34181, r34182, r34183, r34184, r34185, r34186, r34187, r34188, r34189, r34190, r34191, r34192, r34193;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34181);
        mpfr_init(r34182);
        mpfr_init(r34183);
        mpfr_init(r34184);
        mpfr_init_set_str(r34185, "1/3", 10, MPFR_RNDN);
        mpfr_init(r34186);
        mpfr_init(r34187);
        mpfr_init(r34188);
        mpfr_init(r34189);
        mpfr_init(r34190);
        mpfr_init(r34191);
        mpfr_init(r34192);
        mpfr_init(r34193);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34181, x, MPFR_RNDN);
        mpfr_set_d(r34182, y, MPFR_RNDN);
        mpfr_cos(r34183, r34182, MPFR_RNDN);
        mpfr_mul(r34184, r34183, r34183, MPFR_RNDN);
        ;
        mpfr_pow(r34186, r34184, r34185, MPFR_RNDN);
        mpfr_mul(r34187, r34181, r34186, MPFR_RNDN);
        mpfr_cbrt(r34188, r34183, MPFR_RNDN);
        mpfr_mul(r34189, r34187, r34188, MPFR_RNDN);
        mpfr_set_d(r34190, z, MPFR_RNDN);
        mpfr_sin(r34191, r34182, MPFR_RNDN);
        mpfr_mul(r34192, r34190, r34191, MPFR_RNDN);
        mpfr_add(r34193, r34189, r34192, MPFR_RNDN);
        return mpfr_get_d(r34193, MPFR_RNDN);
}

static mpfr_t r34194, r34195, r34196, r34197, r34198, r34199, r34200, r34201, r34202, r34203, r34204, r34205, r34206;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34194);
        mpfr_init(r34195);
        mpfr_init(r34196);
        mpfr_init(r34197);
        mpfr_init_set_str(r34198, "1/3", 10, MPFR_RNDN);
        mpfr_init(r34199);
        mpfr_init(r34200);
        mpfr_init(r34201);
        mpfr_init(r34202);
        mpfr_init(r34203);
        mpfr_init(r34204);
        mpfr_init(r34205);
        mpfr_init(r34206);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34194, x, MPFR_RNDN);
        mpfr_set_d(r34195, y, MPFR_RNDN);
        mpfr_cos(r34196, r34195, MPFR_RNDN);
        mpfr_mul(r34197, r34196, r34196, MPFR_RNDN);
        ;
        mpfr_pow(r34199, r34197, r34198, MPFR_RNDN);
        mpfr_mul(r34200, r34194, r34199, MPFR_RNDN);
        mpfr_cbrt(r34201, r34196, MPFR_RNDN);
        mpfr_mul(r34202, r34200, r34201, MPFR_RNDN);
        mpfr_set_d(r34203, z, MPFR_RNDN);
        mpfr_sin(r34204, r34195, MPFR_RNDN);
        mpfr_mul(r34205, r34203, r34204, MPFR_RNDN);
        mpfr_add(r34206, r34202, r34205, MPFR_RNDN);
        return mpfr_get_d(r34206, MPFR_RNDN);
}

