#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 r47017 = x;
        float r47018 = cosh(r47017);
        float r47019 = y;
        float r47020 = r47019 / r47017;
        float r47021 = r47018 * r47020;
        float r47022 = z;
        float r47023 = r47021 / r47022;
        return r47023;
}

double f_id(double x, double y, double z) {
        double r47024 = x;
        double r47025 = cosh(r47024);
        double r47026 = y;
        double r47027 = r47026 / r47024;
        double r47028 = r47025 * r47027;
        double r47029 = z;
        double r47030 = r47028 / r47029;
        return r47030;
}


double f_of(float x, float y, float z) {
        float r47031 = x;
        float r47032 = cosh(r47031);
        float r47033 = y;
        float r47034 = r47033 / r47031;
        float r47035 = r47032 * r47034;
        float r47036 = -4.010803076035026e+232;
        bool r47037 = r47035 <= r47036;
        float r47038 = 1/2;
        float r47039 = r47033 * r47031;
        float r47040 = z;
        float r47041 = r47039 / r47040;
        float r47042 = r47038 * r47041;
        float r47043 = r47040 * r47031;
        float r47044 = r47033 / r47043;
        float r47045 = r47042 + r47044;
        float r47046 = 1.0747284663836783e+250;
        bool r47047 = r47035 <= r47046;
        float r47048 = 1;
        float r47049 = r47048 / r47040;
        float r47050 = r47035 * r47049;
        float r47051 = cbrt(r47032);
        float r47052 = exp(r47031);
        float r47053 = -r47031;
        float r47054 = exp(r47053);
        float r47055 = r47052 + r47054;
        float r47056 = cbrt(r47055);
        float r47057 = r47051 * r47056;
        float r47058 = r47051 * r47033;
        float r47059 = r47057 * r47058;
        float r47060 = 2;
        float r47061 = cbrt(r47060);
        float r47062 = r47061 * r47031;
        float r47063 = r47040 * r47062;
        float r47064 = r47059 / r47063;
        float r47065 = r47047 ? r47050 : r47064;
        float r47066 = r47037 ? r47045 : r47065;
        return r47066;
}

double f_od(double x, double y, double z) {
        double r47067 = x;
        double r47068 = cosh(r47067);
        double r47069 = y;
        double r47070 = r47069 / r47067;
        double r47071 = r47068 * r47070;
        double r47072 = -4.010803076035026e+232;
        bool r47073 = r47071 <= r47072;
        double r47074 = 1/2;
        double r47075 = r47069 * r47067;
        double r47076 = z;
        double r47077 = r47075 / r47076;
        double r47078 = r47074 * r47077;
        double r47079 = r47076 * r47067;
        double r47080 = r47069 / r47079;
        double r47081 = r47078 + r47080;
        double r47082 = 1.0747284663836783e+250;
        bool r47083 = r47071 <= r47082;
        double r47084 = 1;
        double r47085 = r47084 / r47076;
        double r47086 = r47071 * r47085;
        double r47087 = cbrt(r47068);
        double r47088 = exp(r47067);
        double r47089 = -r47067;
        double r47090 = exp(r47089);
        double r47091 = r47088 + r47090;
        double r47092 = cbrt(r47091);
        double r47093 = r47087 * r47092;
        double r47094 = r47087 * r47069;
        double r47095 = r47093 * r47094;
        double r47096 = 2;
        double r47097 = cbrt(r47096);
        double r47098 = r47097 * r47067;
        double r47099 = r47076 * r47098;
        double r47100 = r47095 / r47099;
        double r47101 = r47083 ? r47086 : r47100;
        double r47102 = r47073 ? r47081 : r47101;
        return r47102;
}

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 r47103, r47104, r47105, r47106, r47107, r47108, r47109;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47103);
        mpfr_init(r47104);
        mpfr_init(r47105);
        mpfr_init(r47106);
        mpfr_init(r47107);
        mpfr_init(r47108);
        mpfr_init(r47109);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r47103, x, MPFR_RNDN);
        mpfr_cosh(r47104, r47103, MPFR_RNDN);
        mpfr_set_d(r47105, y, MPFR_RNDN);
        mpfr_div(r47106, r47105, r47103, MPFR_RNDN);
        mpfr_mul(r47107, r47104, r47106, MPFR_RNDN);
        mpfr_set_d(r47108, z, MPFR_RNDN);
        mpfr_div(r47109, r47107, r47108, MPFR_RNDN);
        return mpfr_get_d(r47109, MPFR_RNDN);
}

static mpfr_t r47110, r47111, r47112, r47113, r47114, r47115, r47116, r47117, r47118, r47119, r47120, r47121, r47122, r47123, r47124, r47125, r47126, r47127, r47128, r47129, r47130, r47131, r47132, r47133, r47134, r47135, r47136, r47137, r47138, r47139, r47140, r47141, r47142, r47143, r47144, r47145;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47110);
        mpfr_init(r47111);
        mpfr_init(r47112);
        mpfr_init(r47113);
        mpfr_init(r47114);
        mpfr_init_set_str(r47115, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r47116);
        mpfr_init_set_str(r47117, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47118);
        mpfr_init(r47119);
        mpfr_init(r47120);
        mpfr_init(r47121);
        mpfr_init(r47122);
        mpfr_init(r47123);
        mpfr_init(r47124);
        mpfr_init_set_str(r47125, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r47126);
        mpfr_init_set_str(r47127, "1", 10, MPFR_RNDN);
        mpfr_init(r47128);
        mpfr_init(r47129);
        mpfr_init(r47130);
        mpfr_init(r47131);
        mpfr_init(r47132);
        mpfr_init(r47133);
        mpfr_init(r47134);
        mpfr_init(r47135);
        mpfr_init(r47136);
        mpfr_init(r47137);
        mpfr_init(r47138);
        mpfr_init_set_str(r47139, "2", 10, MPFR_RNDN);
        mpfr_init(r47140);
        mpfr_init(r47141);
        mpfr_init(r47142);
        mpfr_init(r47143);
        mpfr_init(r47144);
        mpfr_init(r47145);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r47110, x, MPFR_RNDN);
        mpfr_cosh(r47111, r47110, MPFR_RNDN);
        mpfr_set_d(r47112, y, MPFR_RNDN);
        mpfr_div(r47113, r47112, r47110, MPFR_RNDN);
        mpfr_mul(r47114, r47111, r47113, MPFR_RNDN);
        ;
        mpfr_set_si(r47116, mpfr_cmp(r47114, r47115) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r47118, r47112, r47110, MPFR_RNDN);
        mpfr_set_d(r47119, z, MPFR_RNDN);
        mpfr_div(r47120, r47118, r47119, MPFR_RNDN);
        mpfr_mul(r47121, r47117, r47120, MPFR_RNDN);
        mpfr_mul(r47122, r47119, r47110, MPFR_RNDN);
        mpfr_div(r47123, r47112, r47122, MPFR_RNDN);
        mpfr_add(r47124, r47121, r47123, MPFR_RNDN);
        ;
        mpfr_set_si(r47126, mpfr_cmp(r47114, r47125) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r47128, r47127, r47119, MPFR_RNDN);
        mpfr_mul(r47129, r47114, r47128, MPFR_RNDN);
        mpfr_cbrt(r47130, r47111, MPFR_RNDN);
        mpfr_exp(r47131, r47110, MPFR_RNDN);
        mpfr_neg(r47132, r47110, MPFR_RNDN);
        mpfr_exp(r47133, r47132, MPFR_RNDN);
        mpfr_add(r47134, r47131, r47133, MPFR_RNDN);
        mpfr_cbrt(r47135, r47134, MPFR_RNDN);
        mpfr_mul(r47136, r47130, r47135, MPFR_RNDN);
        mpfr_mul(r47137, r47130, r47112, MPFR_RNDN);
        mpfr_mul(r47138, r47136, r47137, MPFR_RNDN);
        ;
        mpfr_cbrt(r47140, r47139, MPFR_RNDN);
        mpfr_mul(r47141, r47140, r47110, MPFR_RNDN);
        mpfr_mul(r47142, r47119, r47141, MPFR_RNDN);
        mpfr_div(r47143, r47138, r47142, MPFR_RNDN);
        if (mpfr_get_si(r47126, MPFR_RNDN)) { mpfr_set(r47144, r47129, MPFR_RNDN); } else { mpfr_set(r47144, r47143, MPFR_RNDN); };
        if (mpfr_get_si(r47116, MPFR_RNDN)) { mpfr_set(r47145, r47124, MPFR_RNDN); } else { mpfr_set(r47145, r47144, MPFR_RNDN); };
        return mpfr_get_d(r47145, MPFR_RNDN);
}

static mpfr_t r47146, r47147, r47148, r47149, r47150, r47151, r47152, r47153, r47154, r47155, r47156, r47157, r47158, r47159, r47160, r47161, r47162, r47163, r47164, r47165, r47166, r47167, r47168, r47169, r47170, r47171, r47172, r47173, r47174, r47175, r47176, r47177, r47178, r47179, r47180, r47181;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47146);
        mpfr_init(r47147);
        mpfr_init(r47148);
        mpfr_init(r47149);
        mpfr_init(r47150);
        mpfr_init_set_str(r47151, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r47152);
        mpfr_init_set_str(r47153, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47154);
        mpfr_init(r47155);
        mpfr_init(r47156);
        mpfr_init(r47157);
        mpfr_init(r47158);
        mpfr_init(r47159);
        mpfr_init(r47160);
        mpfr_init_set_str(r47161, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r47162);
        mpfr_init_set_str(r47163, "1", 10, MPFR_RNDN);
        mpfr_init(r47164);
        mpfr_init(r47165);
        mpfr_init(r47166);
        mpfr_init(r47167);
        mpfr_init(r47168);
        mpfr_init(r47169);
        mpfr_init(r47170);
        mpfr_init(r47171);
        mpfr_init(r47172);
        mpfr_init(r47173);
        mpfr_init(r47174);
        mpfr_init_set_str(r47175, "2", 10, MPFR_RNDN);
        mpfr_init(r47176);
        mpfr_init(r47177);
        mpfr_init(r47178);
        mpfr_init(r47179);
        mpfr_init(r47180);
        mpfr_init(r47181);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r47146, x, MPFR_RNDN);
        mpfr_cosh(r47147, r47146, MPFR_RNDN);
        mpfr_set_d(r47148, y, MPFR_RNDN);
        mpfr_div(r47149, r47148, r47146, MPFR_RNDN);
        mpfr_mul(r47150, r47147, r47149, MPFR_RNDN);
        ;
        mpfr_set_si(r47152, mpfr_cmp(r47150, r47151) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r47154, r47148, r47146, MPFR_RNDN);
        mpfr_set_d(r47155, z, MPFR_RNDN);
        mpfr_div(r47156, r47154, r47155, MPFR_RNDN);
        mpfr_mul(r47157, r47153, r47156, MPFR_RNDN);
        mpfr_mul(r47158, r47155, r47146, MPFR_RNDN);
        mpfr_div(r47159, r47148, r47158, MPFR_RNDN);
        mpfr_add(r47160, r47157, r47159, MPFR_RNDN);
        ;
        mpfr_set_si(r47162, mpfr_cmp(r47150, r47161) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r47164, r47163, r47155, MPFR_RNDN);
        mpfr_mul(r47165, r47150, r47164, MPFR_RNDN);
        mpfr_cbrt(r47166, r47147, MPFR_RNDN);
        mpfr_exp(r47167, r47146, MPFR_RNDN);
        mpfr_neg(r47168, r47146, MPFR_RNDN);
        mpfr_exp(r47169, r47168, MPFR_RNDN);
        mpfr_add(r47170, r47167, r47169, MPFR_RNDN);
        mpfr_cbrt(r47171, r47170, MPFR_RNDN);
        mpfr_mul(r47172, r47166, r47171, MPFR_RNDN);
        mpfr_mul(r47173, r47166, r47148, MPFR_RNDN);
        mpfr_mul(r47174, r47172, r47173, MPFR_RNDN);
        ;
        mpfr_cbrt(r47176, r47175, MPFR_RNDN);
        mpfr_mul(r47177, r47176, r47146, MPFR_RNDN);
        mpfr_mul(r47178, r47155, r47177, MPFR_RNDN);
        mpfr_div(r47179, r47174, r47178, MPFR_RNDN);
        if (mpfr_get_si(r47162, MPFR_RNDN)) { mpfr_set(r47180, r47165, MPFR_RNDN); } else { mpfr_set(r47180, r47179, MPFR_RNDN); };
        if (mpfr_get_si(r47152, MPFR_RNDN)) { mpfr_set(r47181, r47160, MPFR_RNDN); } else { mpfr_set(r47181, r47180, MPFR_RNDN); };
        return mpfr_get_d(r47181, MPFR_RNDN);
}

