#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 r33689 = x;
        float r33690 = y;
        float r33691 = cos(r33690);
        float r33692 = r33689 * r33691;
        float r33693 = z;
        float r33694 = sin(r33690);
        float r33695 = r33693 * r33694;
        float r33696 = r33692 + r33695;
        return r33696;
}

double f_id(double x, double y, double z) {
        double r33697 = x;
        double r33698 = y;
        double r33699 = cos(r33698);
        double r33700 = r33697 * r33699;
        double r33701 = z;
        double r33702 = sin(r33698);
        double r33703 = r33701 * r33702;
        double r33704 = r33700 + r33703;
        return r33704;
}


double f_of(float x, float y, float z) {
        float r33705 = x;
        float r33706 = y;
        float r33707 = cos(r33706);
        float r33708 = r33707 * r33707;
        float r33709 = 1/3;
        float r33710 = pow(r33708, r33709);
        float r33711 = r33705 * r33710;
        float r33712 = cbrt(r33707);
        float r33713 = r33711 * r33712;
        float r33714 = z;
        float r33715 = sin(r33706);
        float r33716 = r33714 * r33715;
        float r33717 = r33713 + r33716;
        return r33717;
}

double f_od(double x, double y, double z) {
        double r33718 = x;
        double r33719 = y;
        double r33720 = cos(r33719);
        double r33721 = r33720 * r33720;
        double r33722 = 1/3;
        double r33723 = pow(r33721, r33722);
        double r33724 = r33718 * r33723;
        double r33725 = cbrt(r33720);
        double r33726 = r33724 * r33725;
        double r33727 = z;
        double r33728 = sin(r33719);
        double r33729 = r33727 * r33728;
        double r33730 = r33726 + r33729;
        return r33730;
}

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 r33731, r33732, r33733, r33734, r33735, r33736, r33737, r33738;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r33731);
        mpfr_init(r33732);
        mpfr_init(r33733);
        mpfr_init(r33734);
        mpfr_init(r33735);
        mpfr_init(r33736);
        mpfr_init(r33737);
        mpfr_init(r33738);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r33731, x, MPFR_RNDN);
        mpfr_set_d(r33732, y, MPFR_RNDN);
        mpfr_cos(r33733, r33732, MPFR_RNDN);
        mpfr_mul(r33734, r33731, r33733, MPFR_RNDN);
        mpfr_set_d(r33735, z, MPFR_RNDN);
        mpfr_sin(r33736, r33732, MPFR_RNDN);
        mpfr_mul(r33737, r33735, r33736, MPFR_RNDN);
        mpfr_add(r33738, r33734, r33737, MPFR_RNDN);
        return mpfr_get_d(r33738, MPFR_RNDN);
}

static mpfr_t r33739, r33740, r33741, r33742, r33743, r33744, r33745, r33746, r33747, r33748, r33749, r33750, r33751;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33739);
        mpfr_init(r33740);
        mpfr_init(r33741);
        mpfr_init(r33742);
        mpfr_init_set_str(r33743, "1/3", 10, MPFR_RNDN);
        mpfr_init(r33744);
        mpfr_init(r33745);
        mpfr_init(r33746);
        mpfr_init(r33747);
        mpfr_init(r33748);
        mpfr_init(r33749);
        mpfr_init(r33750);
        mpfr_init(r33751);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r33739, x, MPFR_RNDN);
        mpfr_set_d(r33740, y, MPFR_RNDN);
        mpfr_cos(r33741, r33740, MPFR_RNDN);
        mpfr_mul(r33742, r33741, r33741, MPFR_RNDN);
        ;
        mpfr_pow(r33744, r33742, r33743, MPFR_RNDN);
        mpfr_mul(r33745, r33739, r33744, MPFR_RNDN);
        mpfr_cbrt(r33746, r33741, MPFR_RNDN);
        mpfr_mul(r33747, r33745, r33746, MPFR_RNDN);
        mpfr_set_d(r33748, z, MPFR_RNDN);
        mpfr_sin(r33749, r33740, MPFR_RNDN);
        mpfr_mul(r33750, r33748, r33749, MPFR_RNDN);
        mpfr_add(r33751, r33747, r33750, MPFR_RNDN);
        return mpfr_get_d(r33751, MPFR_RNDN);
}

static mpfr_t r33752, r33753, r33754, r33755, r33756, r33757, r33758, r33759, r33760, r33761, r33762, r33763, r33764;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33752);
        mpfr_init(r33753);
        mpfr_init(r33754);
        mpfr_init(r33755);
        mpfr_init_set_str(r33756, "1/3", 10, MPFR_RNDN);
        mpfr_init(r33757);
        mpfr_init(r33758);
        mpfr_init(r33759);
        mpfr_init(r33760);
        mpfr_init(r33761);
        mpfr_init(r33762);
        mpfr_init(r33763);
        mpfr_init(r33764);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r33752, x, MPFR_RNDN);
        mpfr_set_d(r33753, y, MPFR_RNDN);
        mpfr_cos(r33754, r33753, MPFR_RNDN);
        mpfr_mul(r33755, r33754, r33754, MPFR_RNDN);
        ;
        mpfr_pow(r33757, r33755, r33756, MPFR_RNDN);
        mpfr_mul(r33758, r33752, r33757, MPFR_RNDN);
        mpfr_cbrt(r33759, r33754, MPFR_RNDN);
        mpfr_mul(r33760, r33758, r33759, MPFR_RNDN);
        mpfr_set_d(r33761, z, MPFR_RNDN);
        mpfr_sin(r33762, r33753, MPFR_RNDN);
        mpfr_mul(r33763, r33761, r33762, MPFR_RNDN);
        mpfr_add(r33764, r33760, r33763, MPFR_RNDN);
        return mpfr_get_d(r33764, MPFR_RNDN);
}

