#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 r33763 = x;
        float r33764 = y;
        float r33765 = cos(r33764);
        float r33766 = r33763 * r33765;
        float r33767 = z;
        float r33768 = sin(r33764);
        float r33769 = r33767 * r33768;
        float r33770 = r33766 + r33769;
        return r33770;
}

double f_id(double x, double y, double z) {
        double r33771 = x;
        double r33772 = y;
        double r33773 = cos(r33772);
        double r33774 = r33771 * r33773;
        double r33775 = z;
        double r33776 = sin(r33772);
        double r33777 = r33775 * r33776;
        double r33778 = r33774 + r33777;
        return r33778;
}


double f_of(float x, float y, float z) {
        float r33779 = x;
        float r33780 = y;
        float r33781 = cos(r33780);
        float r33782 = r33781 * r33781;
        float r33783 = 1/3;
        float r33784 = pow(r33782, r33783);
        float r33785 = r33779 * r33784;
        float r33786 = cbrt(r33781);
        float r33787 = r33785 * r33786;
        float r33788 = z;
        float r33789 = sin(r33780);
        float r33790 = r33788 * r33789;
        float r33791 = r33787 + r33790;
        return r33791;
}

double f_od(double x, double y, double z) {
        double r33792 = x;
        double r33793 = y;
        double r33794 = cos(r33793);
        double r33795 = r33794 * r33794;
        double r33796 = 1/3;
        double r33797 = pow(r33795, r33796);
        double r33798 = r33792 * r33797;
        double r33799 = cbrt(r33794);
        double r33800 = r33798 * r33799;
        double r33801 = z;
        double r33802 = sin(r33793);
        double r33803 = r33801 * r33802;
        double r33804 = r33800 + r33803;
        return r33804;
}

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 r33805, r33806, r33807, r33808, r33809, r33810, r33811, r33812;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r33805);
        mpfr_init(r33806);
        mpfr_init(r33807);
        mpfr_init(r33808);
        mpfr_init(r33809);
        mpfr_init(r33810);
        mpfr_init(r33811);
        mpfr_init(r33812);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r33805, x, MPFR_RNDN);
        mpfr_set_d(r33806, y, MPFR_RNDN);
        mpfr_cos(r33807, r33806, MPFR_RNDN);
        mpfr_mul(r33808, r33805, r33807, MPFR_RNDN);
        mpfr_set_d(r33809, z, MPFR_RNDN);
        mpfr_sin(r33810, r33806, MPFR_RNDN);
        mpfr_mul(r33811, r33809, r33810, MPFR_RNDN);
        mpfr_add(r33812, r33808, r33811, MPFR_RNDN);
        return mpfr_get_d(r33812, MPFR_RNDN);
}

static mpfr_t r33813, r33814, r33815, r33816, r33817, r33818, r33819, r33820, r33821, r33822, r33823, r33824, r33825;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33813);
        mpfr_init(r33814);
        mpfr_init(r33815);
        mpfr_init(r33816);
        mpfr_init_set_str(r33817, "1/3", 10, MPFR_RNDN);
        mpfr_init(r33818);
        mpfr_init(r33819);
        mpfr_init(r33820);
        mpfr_init(r33821);
        mpfr_init(r33822);
        mpfr_init(r33823);
        mpfr_init(r33824);
        mpfr_init(r33825);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r33813, x, MPFR_RNDN);
        mpfr_set_d(r33814, y, MPFR_RNDN);
        mpfr_cos(r33815, r33814, MPFR_RNDN);
        mpfr_mul(r33816, r33815, r33815, MPFR_RNDN);
        ;
        mpfr_pow(r33818, r33816, r33817, MPFR_RNDN);
        mpfr_mul(r33819, r33813, r33818, MPFR_RNDN);
        mpfr_cbrt(r33820, r33815, MPFR_RNDN);
        mpfr_mul(r33821, r33819, r33820, MPFR_RNDN);
        mpfr_set_d(r33822, z, MPFR_RNDN);
        mpfr_sin(r33823, r33814, MPFR_RNDN);
        mpfr_mul(r33824, r33822, r33823, MPFR_RNDN);
        mpfr_add(r33825, r33821, r33824, MPFR_RNDN);
        return mpfr_get_d(r33825, MPFR_RNDN);
}

static mpfr_t r33826, r33827, r33828, r33829, r33830, r33831, r33832, r33833, r33834, r33835, r33836, r33837, r33838;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r33826);
        mpfr_init(r33827);
        mpfr_init(r33828);
        mpfr_init(r33829);
        mpfr_init_set_str(r33830, "1/3", 10, MPFR_RNDN);
        mpfr_init(r33831);
        mpfr_init(r33832);
        mpfr_init(r33833);
        mpfr_init(r33834);
        mpfr_init(r33835);
        mpfr_init(r33836);
        mpfr_init(r33837);
        mpfr_init(r33838);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r33826, x, MPFR_RNDN);
        mpfr_set_d(r33827, y, MPFR_RNDN);
        mpfr_cos(r33828, r33827, MPFR_RNDN);
        mpfr_mul(r33829, r33828, r33828, MPFR_RNDN);
        ;
        mpfr_pow(r33831, r33829, r33830, MPFR_RNDN);
        mpfr_mul(r33832, r33826, r33831, MPFR_RNDN);
        mpfr_cbrt(r33833, r33828, MPFR_RNDN);
        mpfr_mul(r33834, r33832, r33833, MPFR_RNDN);
        mpfr_set_d(r33835, z, MPFR_RNDN);
        mpfr_sin(r33836, r33827, MPFR_RNDN);
        mpfr_mul(r33837, r33835, r33836, MPFR_RNDN);
        mpfr_add(r33838, r33834, r33837, MPFR_RNDN);
        return mpfr_get_d(r33838, MPFR_RNDN);
}

