#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 r50903 = x;
        float r50904 = y;
        float r50905 = sin(r50904);
        float r50906 = r50903 * r50905;
        float r50907 = z;
        float r50908 = cos(r50904);
        float r50909 = r50907 * r50908;
        float r50910 = r50906 + r50909;
        return r50910;
}

double f_id(double x, double y, double z) {
        double r50911 = x;
        double r50912 = y;
        double r50913 = sin(r50912);
        double r50914 = r50911 * r50913;
        double r50915 = z;
        double r50916 = cos(r50912);
        double r50917 = r50915 * r50916;
        double r50918 = r50914 + r50917;
        return r50918;
}


double f_of(float x, float y, float z) {
        float r50919 = x;
        float r50920 = cbrt(r50919);
        float r50921 = y;
        float r50922 = sin(r50921);
        float r50923 = cbrt(r50922);
        float r50924 = r50920 * r50923;
        float r50925 = 3.0f;
        float r50926 = pow(r50924, r50925);
        float r50927 = z;
        float r50928 = cos(r50921);
        float r50929 = r50927 * r50928;
        float r50930 = r50926 + r50929;
        return r50930;
}

double f_od(double x, double y, double z) {
        double r50931 = x;
        double r50932 = cbrt(r50931);
        double r50933 = y;
        double r50934 = sin(r50933);
        double r50935 = cbrt(r50934);
        double r50936 = r50932 * r50935;
        double r50937 = 3.0;
        double r50938 = pow(r50936, r50937);
        double r50939 = z;
        double r50940 = cos(r50933);
        double r50941 = r50939 * r50940;
        double r50942 = r50938 + r50941;
        return r50942;
}

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 r50943, r50944, r50945, r50946, r50947, r50948, r50949, r50950;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r50943);
        mpfr_init(r50944);
        mpfr_init(r50945);
        mpfr_init(r50946);
        mpfr_init(r50947);
        mpfr_init(r50948);
        mpfr_init(r50949);
        mpfr_init(r50950);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50943, x, MPFR_RNDN);
        mpfr_set_d(r50944, y, MPFR_RNDN);
        mpfr_sin(r50945, r50944, MPFR_RNDN);
        mpfr_mul(r50946, r50943, r50945, MPFR_RNDN);
        mpfr_set_d(r50947, z, MPFR_RNDN);
        mpfr_cos(r50948, r50944, MPFR_RNDN);
        mpfr_mul(r50949, r50947, r50948, MPFR_RNDN);
        mpfr_add(r50950, r50946, r50949, MPFR_RNDN);
        return mpfr_get_d(r50950, MPFR_RNDN);
}

static mpfr_t r50951, r50952, r50953, r50954, r50955, r50956, r50957, r50958, r50959, r50960, r50961, r50962;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50951);
        mpfr_init(r50952);
        mpfr_init(r50953);
        mpfr_init(r50954);
        mpfr_init(r50955);
        mpfr_init(r50956);
        mpfr_init_set_str(r50957, "3", 10, MPFR_RNDN);
        mpfr_init(r50958);
        mpfr_init(r50959);
        mpfr_init(r50960);
        mpfr_init(r50961);
        mpfr_init(r50962);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50951, x, MPFR_RNDN);
        mpfr_cbrt(r50952, r50951, MPFR_RNDN);
        mpfr_set_d(r50953, y, MPFR_RNDN);
        mpfr_sin(r50954, r50953, MPFR_RNDN);
        mpfr_cbrt(r50955, r50954, MPFR_RNDN);
        mpfr_mul(r50956, r50952, r50955, MPFR_RNDN);
        ;
        mpfr_pow(r50958, r50956, r50957, MPFR_RNDN);
        mpfr_set_d(r50959, z, MPFR_RNDN);
        mpfr_cos(r50960, r50953, MPFR_RNDN);
        mpfr_mul(r50961, r50959, r50960, MPFR_RNDN);
        mpfr_add(r50962, r50958, r50961, MPFR_RNDN);
        return mpfr_get_d(r50962, MPFR_RNDN);
}

static mpfr_t r50963, r50964, r50965, r50966, r50967, r50968, r50969, r50970, r50971, r50972, r50973, r50974;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r50963);
        mpfr_init(r50964);
        mpfr_init(r50965);
        mpfr_init(r50966);
        mpfr_init(r50967);
        mpfr_init(r50968);
        mpfr_init_set_str(r50969, "3", 10, MPFR_RNDN);
        mpfr_init(r50970);
        mpfr_init(r50971);
        mpfr_init(r50972);
        mpfr_init(r50973);
        mpfr_init(r50974);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50963, x, MPFR_RNDN);
        mpfr_cbrt(r50964, r50963, MPFR_RNDN);
        mpfr_set_d(r50965, y, MPFR_RNDN);
        mpfr_sin(r50966, r50965, MPFR_RNDN);
        mpfr_cbrt(r50967, r50966, MPFR_RNDN);
        mpfr_mul(r50968, r50964, r50967, MPFR_RNDN);
        ;
        mpfr_pow(r50970, r50968, r50969, MPFR_RNDN);
        mpfr_set_d(r50971, z, MPFR_RNDN);
        mpfr_cos(r50972, r50965, MPFR_RNDN);
        mpfr_mul(r50973, r50971, r50972, MPFR_RNDN);
        mpfr_add(r50974, r50970, r50973, MPFR_RNDN);
        return mpfr_get_d(r50974, MPFR_RNDN);
}

