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

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

double f_if(float x, float y, float z) {
        float r33955 = x;
        float r33956 = y;
        float r33957 = sin(r33956);
        float r33958 = r33955 * r33957;
        float r33959 = z;
        float r33960 = cos(r33956);
        float r33961 = r33959 * r33960;
        float r33962 = r33958 + r33961;
        return r33962;
}

double f_id(double x, double y, double z) {
        double r33963 = x;
        double r33964 = y;
        double r33965 = sin(r33964);
        double r33966 = r33963 * r33965;
        double r33967 = z;
        double r33968 = cos(r33964);
        double r33969 = r33967 * r33968;
        double r33970 = r33966 + r33969;
        return r33970;
}


double f_of(float x, float y, float z) {
        float r33971 = x;
        float r33972 = y;
        float r33973 = sin(r33972);
        float r33974 = r33971 * r33973;
        float r33975 = z;
        float r33976 = cos(r33972);
        float r33977 = cbrt(r33976);
        float r33978 = exp(r33977);
        float r33979 = log(r33978);
        float r33980 = r33977 * r33979;
        float r33981 = r33975 * r33980;
        float r33982 = r33981 * r33977;
        float r33983 = r33974 + r33982;
        return r33983;
}

double f_od(double x, double y, double z) {
        double r33984 = x;
        double r33985 = y;
        double r33986 = sin(r33985);
        double r33987 = r33984 * r33986;
        double r33988 = z;
        double r33989 = cos(r33985);
        double r33990 = cbrt(r33989);
        double r33991 = exp(r33990);
        double r33992 = log(r33991);
        double r33993 = r33990 * r33992;
        double r33994 = r33988 * r33993;
        double r33995 = r33994 * r33990;
        double r33996 = r33987 + r33995;
        return r33996;
}

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 r33997, r33998, r33999, r34000, r34001, r34002, r34003, r34004;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r33997);
        mpfr_init(r33998);
        mpfr_init(r33999);
        mpfr_init(r34000);
        mpfr_init(r34001);
        mpfr_init(r34002);
        mpfr_init(r34003);
        mpfr_init(r34004);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r33997, x, MPFR_RNDN);
        mpfr_set_d(r33998, y, MPFR_RNDN);
        mpfr_sin(r33999, r33998, MPFR_RNDN);
        mpfr_mul(r34000, r33997, r33999, MPFR_RNDN);
        mpfr_set_d(r34001, z, MPFR_RNDN);
        mpfr_cos(r34002, r33998, MPFR_RNDN);
        mpfr_mul(r34003, r34001, r34002, MPFR_RNDN);
        mpfr_add(r34004, r34000, r34003, MPFR_RNDN);
        return mpfr_get_d(r34004, MPFR_RNDN);
}

static mpfr_t r34005, r34006, r34007, r34008, r34009, r34010, r34011, r34012, r34013, r34014, r34015, r34016, r34017;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34005);
        mpfr_init(r34006);
        mpfr_init(r34007);
        mpfr_init(r34008);
        mpfr_init(r34009);
        mpfr_init(r34010);
        mpfr_init(r34011);
        mpfr_init(r34012);
        mpfr_init(r34013);
        mpfr_init(r34014);
        mpfr_init(r34015);
        mpfr_init(r34016);
        mpfr_init(r34017);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34005, x, MPFR_RNDN);
        mpfr_set_d(r34006, y, MPFR_RNDN);
        mpfr_sin(r34007, r34006, MPFR_RNDN);
        mpfr_mul(r34008, r34005, r34007, MPFR_RNDN);
        mpfr_set_d(r34009, z, MPFR_RNDN);
        mpfr_cos(r34010, r34006, MPFR_RNDN);
        mpfr_cbrt(r34011, r34010, MPFR_RNDN);
        mpfr_exp(r34012, r34011, MPFR_RNDN);
        mpfr_log(r34013, r34012, MPFR_RNDN);
        mpfr_mul(r34014, r34011, r34013, MPFR_RNDN);
        mpfr_mul(r34015, r34009, r34014, MPFR_RNDN);
        mpfr_mul(r34016, r34015, r34011, MPFR_RNDN);
        mpfr_add(r34017, r34008, r34016, MPFR_RNDN);
        return mpfr_get_d(r34017, MPFR_RNDN);
}

static mpfr_t r34018, r34019, r34020, r34021, r34022, r34023, r34024, r34025, r34026, r34027, r34028, r34029, r34030;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34018);
        mpfr_init(r34019);
        mpfr_init(r34020);
        mpfr_init(r34021);
        mpfr_init(r34022);
        mpfr_init(r34023);
        mpfr_init(r34024);
        mpfr_init(r34025);
        mpfr_init(r34026);
        mpfr_init(r34027);
        mpfr_init(r34028);
        mpfr_init(r34029);
        mpfr_init(r34030);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34018, x, MPFR_RNDN);
        mpfr_set_d(r34019, y, MPFR_RNDN);
        mpfr_sin(r34020, r34019, MPFR_RNDN);
        mpfr_mul(r34021, r34018, r34020, MPFR_RNDN);
        mpfr_set_d(r34022, z, MPFR_RNDN);
        mpfr_cos(r34023, r34019, MPFR_RNDN);
        mpfr_cbrt(r34024, r34023, MPFR_RNDN);
        mpfr_exp(r34025, r34024, MPFR_RNDN);
        mpfr_log(r34026, r34025, MPFR_RNDN);
        mpfr_mul(r34027, r34024, r34026, MPFR_RNDN);
        mpfr_mul(r34028, r34022, r34027, MPFR_RNDN);
        mpfr_mul(r34029, r34028, r34024, MPFR_RNDN);
        mpfr_add(r34030, r34021, r34029, MPFR_RNDN);
        return mpfr_get_d(r34030, MPFR_RNDN);
}

