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

char *name = "Linear.Quaternion:$ctan from linear-1.19.1.3";

double f_if(float x, float y, float z) {
        float r46926 = x;
        float r46927 = cosh(r46926);
        float r46928 = y;
        float r46929 = r46928 / r46926;
        float r46930 = r46927 * r46929;
        float r46931 = z;
        float r46932 = r46930 / r46931;
        return r46932;
}

double f_id(double x, double y, double z) {
        double r46933 = x;
        double r46934 = cosh(r46933);
        double r46935 = y;
        double r46936 = r46935 / r46933;
        double r46937 = r46934 * r46936;
        double r46938 = z;
        double r46939 = r46937 / r46938;
        return r46939;
}


double f_of(float x, float y, float z) {
        float r46940 = z;
        float r46941 = -4.325937455082745e+35;
        bool r46942 = r46940 <= r46941;
        float r46943 = x;
        float r46944 = cosh(r46943);
        float r46945 = cbrt(r46944);
        float r46946 = exp(r46943);
        float r46947 = -r46943;
        float r46948 = exp(r46947);
        float r46949 = r46946 + r46948;
        float r46950 = cbrt(r46949);
        float r46951 = r46945 * r46950;
        float r46952 = y;
        float r46953 = r46945 * r46952;
        float r46954 = r46951 * r46953;
        float r46955 = 2;
        float r46956 = cbrt(r46955);
        float r46957 = r46956 * r46943;
        float r46958 = r46940 * r46957;
        float r46959 = r46954 / r46958;
        float r46960 = 1474036971039.3018;
        bool r46961 = r46940 <= r46960;
        float r46962 = r46952 / r46943;
        float r46963 = r46944 * r46962;
        float r46964 = 1;
        float r46965 = r46964 / r46940;
        float r46966 = r46963 * r46965;
        float r46967 = r46961 ? r46966 : r46959;
        float r46968 = r46942 ? r46959 : r46967;
        return r46968;
}

double f_od(double x, double y, double z) {
        double r46969 = z;
        double r46970 = -4.325937455082745e+35;
        bool r46971 = r46969 <= r46970;
        double r46972 = x;
        double r46973 = cosh(r46972);
        double r46974 = cbrt(r46973);
        double r46975 = exp(r46972);
        double r46976 = -r46972;
        double r46977 = exp(r46976);
        double r46978 = r46975 + r46977;
        double r46979 = cbrt(r46978);
        double r46980 = r46974 * r46979;
        double r46981 = y;
        double r46982 = r46974 * r46981;
        double r46983 = r46980 * r46982;
        double r46984 = 2;
        double r46985 = cbrt(r46984);
        double r46986 = r46985 * r46972;
        double r46987 = r46969 * r46986;
        double r46988 = r46983 / r46987;
        double r46989 = 1474036971039.3018;
        bool r46990 = r46969 <= r46989;
        double r46991 = r46981 / r46972;
        double r46992 = r46973 * r46991;
        double r46993 = 1;
        double r46994 = r46993 / r46969;
        double r46995 = r46992 * r46994;
        double r46996 = r46990 ? r46995 : r46988;
        double r46997 = r46971 ? r46988 : r46996;
        return r46997;
}

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 r46998, r46999, r47000, r47001, r47002, r47003, r47004;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46998);
        mpfr_init(r46999);
        mpfr_init(r47000);
        mpfr_init(r47001);
        mpfr_init(r47002);
        mpfr_init(r47003);
        mpfr_init(r47004);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r46998, x, MPFR_RNDN);
        mpfr_cosh(r46999, r46998, MPFR_RNDN);
        mpfr_set_d(r47000, y, MPFR_RNDN);
        mpfr_div(r47001, r47000, r46998, MPFR_RNDN);
        mpfr_mul(r47002, r46999, r47001, MPFR_RNDN);
        mpfr_set_d(r47003, z, MPFR_RNDN);
        mpfr_div(r47004, r47002, r47003, MPFR_RNDN);
        return mpfr_get_d(r47004, MPFR_RNDN);
}

static mpfr_t r47005, r47006, r47007, r47008, r47009, r47010, r47011, r47012, r47013, r47014, r47015, r47016, r47017, r47018, r47019, r47020, r47021, r47022, r47023, r47024, r47025, r47026, r47027, r47028, r47029, r47030, r47031, r47032, r47033;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47005);
        mpfr_init_set_str(r47006, "-4.325937455082745e+35", 10, MPFR_RNDN);
        mpfr_init(r47007);
        mpfr_init(r47008);
        mpfr_init(r47009);
        mpfr_init(r47010);
        mpfr_init(r47011);
        mpfr_init(r47012);
        mpfr_init(r47013);
        mpfr_init(r47014);
        mpfr_init(r47015);
        mpfr_init(r47016);
        mpfr_init(r47017);
        mpfr_init(r47018);
        mpfr_init(r47019);
        mpfr_init_set_str(r47020, "2", 10, MPFR_RNDN);
        mpfr_init(r47021);
        mpfr_init(r47022);
        mpfr_init(r47023);
        mpfr_init(r47024);
        mpfr_init_set_str(r47025, "1474036971039.3018", 10, MPFR_RNDN);
        mpfr_init(r47026);
        mpfr_init(r47027);
        mpfr_init(r47028);
        mpfr_init_set_str(r47029, "1", 10, MPFR_RNDN);
        mpfr_init(r47030);
        mpfr_init(r47031);
        mpfr_init(r47032);
        mpfr_init(r47033);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r47005, z, MPFR_RNDN);
        ;
        mpfr_set_si(r47007, mpfr_cmp(r47005, r47006) <= 0, MPFR_RNDN);
        mpfr_set_d(r47008, x, MPFR_RNDN);
        mpfr_cosh(r47009, r47008, MPFR_RNDN);
        mpfr_cbrt(r47010, r47009, MPFR_RNDN);
        mpfr_exp(r47011, r47008, MPFR_RNDN);
        mpfr_neg(r47012, r47008, MPFR_RNDN);
        mpfr_exp(r47013, r47012, MPFR_RNDN);
        mpfr_add(r47014, r47011, r47013, MPFR_RNDN);
        mpfr_cbrt(r47015, r47014, MPFR_RNDN);
        mpfr_mul(r47016, r47010, r47015, MPFR_RNDN);
        mpfr_set_d(r47017, y, MPFR_RNDN);
        mpfr_mul(r47018, r47010, r47017, MPFR_RNDN);
        mpfr_mul(r47019, r47016, r47018, MPFR_RNDN);
        ;
        mpfr_cbrt(r47021, r47020, MPFR_RNDN);
        mpfr_mul(r47022, r47021, r47008, MPFR_RNDN);
        mpfr_mul(r47023, r47005, r47022, MPFR_RNDN);
        mpfr_div(r47024, r47019, r47023, MPFR_RNDN);
        ;
        mpfr_set_si(r47026, mpfr_cmp(r47005, r47025) <= 0, MPFR_RNDN);
        mpfr_div(r47027, r47017, r47008, MPFR_RNDN);
        mpfr_mul(r47028, r47009, r47027, MPFR_RNDN);
        ;
        mpfr_div(r47030, r47029, r47005, MPFR_RNDN);
        mpfr_mul(r47031, r47028, r47030, MPFR_RNDN);
        if (mpfr_get_si(r47026, MPFR_RNDN)) { mpfr_set(r47032, r47031, MPFR_RNDN); } else { mpfr_set(r47032, r47024, MPFR_RNDN); };
        if (mpfr_get_si(r47007, MPFR_RNDN)) { mpfr_set(r47033, r47024, MPFR_RNDN); } else { mpfr_set(r47033, r47032, MPFR_RNDN); };
        return mpfr_get_d(r47033, MPFR_RNDN);
}

static mpfr_t r47034, r47035, r47036, r47037, r47038, r47039, r47040, r47041, r47042, r47043, r47044, r47045, r47046, r47047, r47048, r47049, r47050, r47051, r47052, r47053, r47054, r47055, r47056, r47057, r47058, r47059, r47060, r47061, r47062;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47034);
        mpfr_init_set_str(r47035, "-4.325937455082745e+35", 10, MPFR_RNDN);
        mpfr_init(r47036);
        mpfr_init(r47037);
        mpfr_init(r47038);
        mpfr_init(r47039);
        mpfr_init(r47040);
        mpfr_init(r47041);
        mpfr_init(r47042);
        mpfr_init(r47043);
        mpfr_init(r47044);
        mpfr_init(r47045);
        mpfr_init(r47046);
        mpfr_init(r47047);
        mpfr_init(r47048);
        mpfr_init_set_str(r47049, "2", 10, MPFR_RNDN);
        mpfr_init(r47050);
        mpfr_init(r47051);
        mpfr_init(r47052);
        mpfr_init(r47053);
        mpfr_init_set_str(r47054, "1474036971039.3018", 10, MPFR_RNDN);
        mpfr_init(r47055);
        mpfr_init(r47056);
        mpfr_init(r47057);
        mpfr_init_set_str(r47058, "1", 10, MPFR_RNDN);
        mpfr_init(r47059);
        mpfr_init(r47060);
        mpfr_init(r47061);
        mpfr_init(r47062);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r47034, z, MPFR_RNDN);
        ;
        mpfr_set_si(r47036, mpfr_cmp(r47034, r47035) <= 0, MPFR_RNDN);
        mpfr_set_d(r47037, x, MPFR_RNDN);
        mpfr_cosh(r47038, r47037, MPFR_RNDN);
        mpfr_cbrt(r47039, r47038, MPFR_RNDN);
        mpfr_exp(r47040, r47037, MPFR_RNDN);
        mpfr_neg(r47041, r47037, MPFR_RNDN);
        mpfr_exp(r47042, r47041, MPFR_RNDN);
        mpfr_add(r47043, r47040, r47042, MPFR_RNDN);
        mpfr_cbrt(r47044, r47043, MPFR_RNDN);
        mpfr_mul(r47045, r47039, r47044, MPFR_RNDN);
        mpfr_set_d(r47046, y, MPFR_RNDN);
        mpfr_mul(r47047, r47039, r47046, MPFR_RNDN);
        mpfr_mul(r47048, r47045, r47047, MPFR_RNDN);
        ;
        mpfr_cbrt(r47050, r47049, MPFR_RNDN);
        mpfr_mul(r47051, r47050, r47037, MPFR_RNDN);
        mpfr_mul(r47052, r47034, r47051, MPFR_RNDN);
        mpfr_div(r47053, r47048, r47052, MPFR_RNDN);
        ;
        mpfr_set_si(r47055, mpfr_cmp(r47034, r47054) <= 0, MPFR_RNDN);
        mpfr_div(r47056, r47046, r47037, MPFR_RNDN);
        mpfr_mul(r47057, r47038, r47056, MPFR_RNDN);
        ;
        mpfr_div(r47059, r47058, r47034, MPFR_RNDN);
        mpfr_mul(r47060, r47057, r47059, MPFR_RNDN);
        if (mpfr_get_si(r47055, MPFR_RNDN)) { mpfr_set(r47061, r47060, MPFR_RNDN); } else { mpfr_set(r47061, r47053, MPFR_RNDN); };
        if (mpfr_get_si(r47036, MPFR_RNDN)) { mpfr_set(r47062, r47053, MPFR_RNDN); } else { mpfr_set(r47062, r47061, MPFR_RNDN); };
        return mpfr_get_d(r47062, MPFR_RNDN);
}

