#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 r33950 = x;
        float r33951 = y;
        float r33952 = sin(r33951);
        float r33953 = r33950 * r33952;
        float r33954 = z;
        float r33955 = cos(r33951);
        float r33956 = r33954 * r33955;
        float r33957 = r33953 + r33956;
        return r33957;
}

double f_id(double x, double y, double z) {
        double r33958 = x;
        double r33959 = y;
        double r33960 = sin(r33959);
        double r33961 = r33958 * r33960;
        double r33962 = z;
        double r33963 = cos(r33959);
        double r33964 = r33962 * r33963;
        double r33965 = r33961 + r33964;
        return r33965;
}


double f_of(float x, float y, float z) {
        float r33966 = x;
        float r33967 = y;
        float r33968 = sin(r33967);
        float r33969 = r33966 * r33968;
        float r33970 = z;
        float r33971 = cos(r33967);
        float r33972 = cbrt(r33971);
        float r33973 = exp(r33972);
        float r33974 = log(r33973);
        float r33975 = r33972 * r33974;
        float r33976 = r33970 * r33975;
        float r33977 = r33976 * r33972;
        float r33978 = r33969 + r33977;
        return r33978;
}

double f_od(double x, double y, double z) {
        double r33979 = x;
        double r33980 = y;
        double r33981 = sin(r33980);
        double r33982 = r33979 * r33981;
        double r33983 = z;
        double r33984 = cos(r33980);
        double r33985 = cbrt(r33984);
        double r33986 = exp(r33985);
        double r33987 = log(r33986);
        double r33988 = r33985 * r33987;
        double r33989 = r33983 * r33988;
        double r33990 = r33989 * r33985;
        double r33991 = r33982 + r33990;
        return r33991;
}

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 r33992, r33993, r33994, r33995, r33996, r33997, r33998, r33999;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r33992);
        mpfr_init(r33993);
        mpfr_init(r33994);
        mpfr_init(r33995);
        mpfr_init(r33996);
        mpfr_init(r33997);
        mpfr_init(r33998);
        mpfr_init(r33999);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r33992, x, MPFR_RNDN);
        mpfr_set_d(r33993, y, MPFR_RNDN);
        mpfr_sin(r33994, r33993, MPFR_RNDN);
        mpfr_mul(r33995, r33992, r33994, MPFR_RNDN);
        mpfr_set_d(r33996, z, MPFR_RNDN);
        mpfr_cos(r33997, r33993, MPFR_RNDN);
        mpfr_mul(r33998, r33996, r33997, MPFR_RNDN);
        mpfr_add(r33999, r33995, r33998, MPFR_RNDN);
        return mpfr_get_d(r33999, MPFR_RNDN);
}

static mpfr_t r34000, r34001, r34002, r34003, r34004, r34005, r34006, r34007, r34008, r34009, r34010, r34011, r34012;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34000);
        mpfr_init(r34001);
        mpfr_init(r34002);
        mpfr_init(r34003);
        mpfr_init(r34004);
        mpfr_init(r34005);
        mpfr_init(r34006);
        mpfr_init(r34007);
        mpfr_init(r34008);
        mpfr_init(r34009);
        mpfr_init(r34010);
        mpfr_init(r34011);
        mpfr_init(r34012);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34000, x, MPFR_RNDN);
        mpfr_set_d(r34001, y, MPFR_RNDN);
        mpfr_sin(r34002, r34001, MPFR_RNDN);
        mpfr_mul(r34003, r34000, r34002, MPFR_RNDN);
        mpfr_set_d(r34004, z, MPFR_RNDN);
        mpfr_cos(r34005, r34001, MPFR_RNDN);
        mpfr_cbrt(r34006, r34005, MPFR_RNDN);
        mpfr_exp(r34007, r34006, MPFR_RNDN);
        mpfr_log(r34008, r34007, MPFR_RNDN);
        mpfr_mul(r34009, r34006, r34008, MPFR_RNDN);
        mpfr_mul(r34010, r34004, r34009, MPFR_RNDN);
        mpfr_mul(r34011, r34010, r34006, MPFR_RNDN);
        mpfr_add(r34012, r34003, r34011, MPFR_RNDN);
        return mpfr_get_d(r34012, MPFR_RNDN);
}

static mpfr_t r34013, r34014, r34015, r34016, r34017, r34018, r34019, r34020, r34021, r34022, r34023, r34024, r34025;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34013);
        mpfr_init(r34014);
        mpfr_init(r34015);
        mpfr_init(r34016);
        mpfr_init(r34017);
        mpfr_init(r34018);
        mpfr_init(r34019);
        mpfr_init(r34020);
        mpfr_init(r34021);
        mpfr_init(r34022);
        mpfr_init(r34023);
        mpfr_init(r34024);
        mpfr_init(r34025);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34013, x, MPFR_RNDN);
        mpfr_set_d(r34014, y, MPFR_RNDN);
        mpfr_sin(r34015, r34014, MPFR_RNDN);
        mpfr_mul(r34016, r34013, r34015, MPFR_RNDN);
        mpfr_set_d(r34017, z, MPFR_RNDN);
        mpfr_cos(r34018, r34014, MPFR_RNDN);
        mpfr_cbrt(r34019, r34018, MPFR_RNDN);
        mpfr_exp(r34020, r34019, MPFR_RNDN);
        mpfr_log(r34021, r34020, MPFR_RNDN);
        mpfr_mul(r34022, r34019, r34021, MPFR_RNDN);
        mpfr_mul(r34023, r34017, r34022, MPFR_RNDN);
        mpfr_mul(r34024, r34023, r34019, MPFR_RNDN);
        mpfr_add(r34025, r34016, r34024, MPFR_RNDN);
        return mpfr_get_d(r34025, MPFR_RNDN);
}

