#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 r46998 = x;
        float r46999 = cosh(r46998);
        float r47000 = y;
        float r47001 = r47000 / r46998;
        float r47002 = r46999 * r47001;
        float r47003 = z;
        float r47004 = r47002 / r47003;
        return r47004;
}

double f_id(double x, double y, double z) {
        double r47005 = x;
        double r47006 = cosh(r47005);
        double r47007 = y;
        double r47008 = r47007 / r47005;
        double r47009 = r47006 * r47008;
        double r47010 = z;
        double r47011 = r47009 / r47010;
        return r47011;
}


double f_of(float x, float y, float z) {
        float r47012 = x;
        float r47013 = cosh(r47012);
        float r47014 = y;
        float r47015 = r47014 / r47012;
        float r47016 = r47013 * r47015;
        float r47017 = -4.010803076035026e+232;
        bool r47018 = r47016 <= r47017;
        float r47019 = 1/2;
        float r47020 = r47014 * r47012;
        float r47021 = z;
        float r47022 = r47020 / r47021;
        float r47023 = r47019 * r47022;
        float r47024 = r47021 * r47012;
        float r47025 = r47014 / r47024;
        float r47026 = r47023 + r47025;
        float r47027 = 1.0747284663836783e+250;
        bool r47028 = r47016 <= r47027;
        float r47029 = 1;
        float r47030 = r47029 / r47021;
        float r47031 = r47016 * r47030;
        float r47032 = cbrt(r47013);
        float r47033 = exp(r47012);
        float r47034 = -r47012;
        float r47035 = exp(r47034);
        float r47036 = r47033 + r47035;
        float r47037 = cbrt(r47036);
        float r47038 = r47032 * r47037;
        float r47039 = r47032 * r47014;
        float r47040 = r47038 * r47039;
        float r47041 = 2;
        float r47042 = cbrt(r47041);
        float r47043 = r47042 * r47012;
        float r47044 = r47021 * r47043;
        float r47045 = r47040 / r47044;
        float r47046 = r47028 ? r47031 : r47045;
        float r47047 = r47018 ? r47026 : r47046;
        return r47047;
}

double f_od(double x, double y, double z) {
        double r47048 = x;
        double r47049 = cosh(r47048);
        double r47050 = y;
        double r47051 = r47050 / r47048;
        double r47052 = r47049 * r47051;
        double r47053 = -4.010803076035026e+232;
        bool r47054 = r47052 <= r47053;
        double r47055 = 1/2;
        double r47056 = r47050 * r47048;
        double r47057 = z;
        double r47058 = r47056 / r47057;
        double r47059 = r47055 * r47058;
        double r47060 = r47057 * r47048;
        double r47061 = r47050 / r47060;
        double r47062 = r47059 + r47061;
        double r47063 = 1.0747284663836783e+250;
        bool r47064 = r47052 <= r47063;
        double r47065 = 1;
        double r47066 = r47065 / r47057;
        double r47067 = r47052 * r47066;
        double r47068 = cbrt(r47049);
        double r47069 = exp(r47048);
        double r47070 = -r47048;
        double r47071 = exp(r47070);
        double r47072 = r47069 + r47071;
        double r47073 = cbrt(r47072);
        double r47074 = r47068 * r47073;
        double r47075 = r47068 * r47050;
        double r47076 = r47074 * r47075;
        double r47077 = 2;
        double r47078 = cbrt(r47077);
        double r47079 = r47078 * r47048;
        double r47080 = r47057 * r47079;
        double r47081 = r47076 / r47080;
        double r47082 = r47064 ? r47067 : r47081;
        double r47083 = r47054 ? r47062 : r47082;
        return r47083;
}

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 r47084, r47085, r47086, r47087, r47088, r47089, r47090;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r47084);
        mpfr_init(r47085);
        mpfr_init(r47086);
        mpfr_init(r47087);
        mpfr_init(r47088);
        mpfr_init(r47089);
        mpfr_init(r47090);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r47084, x, MPFR_RNDN);
        mpfr_cosh(r47085, r47084, MPFR_RNDN);
        mpfr_set_d(r47086, y, MPFR_RNDN);
        mpfr_div(r47087, r47086, r47084, MPFR_RNDN);
        mpfr_mul(r47088, r47085, r47087, MPFR_RNDN);
        mpfr_set_d(r47089, z, MPFR_RNDN);
        mpfr_div(r47090, r47088, r47089, MPFR_RNDN);
        return mpfr_get_d(r47090, MPFR_RNDN);
}

static mpfr_t r47091, r47092, r47093, r47094, r47095, r47096, r47097, r47098, r47099, r47100, r47101, r47102, r47103, r47104, r47105, r47106, r47107, r47108, r47109, r47110, r47111, r47112, r47113, r47114, r47115, r47116, r47117, r47118, r47119, r47120, r47121, r47122, r47123, r47124, r47125, r47126;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47091);
        mpfr_init(r47092);
        mpfr_init(r47093);
        mpfr_init(r47094);
        mpfr_init(r47095);
        mpfr_init_set_str(r47096, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r47097);
        mpfr_init_set_str(r47098, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47099);
        mpfr_init(r47100);
        mpfr_init(r47101);
        mpfr_init(r47102);
        mpfr_init(r47103);
        mpfr_init(r47104);
        mpfr_init(r47105);
        mpfr_init_set_str(r47106, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r47107);
        mpfr_init_set_str(r47108, "1", 10, MPFR_RNDN);
        mpfr_init(r47109);
        mpfr_init(r47110);
        mpfr_init(r47111);
        mpfr_init(r47112);
        mpfr_init(r47113);
        mpfr_init(r47114);
        mpfr_init(r47115);
        mpfr_init(r47116);
        mpfr_init(r47117);
        mpfr_init(r47118);
        mpfr_init(r47119);
        mpfr_init_set_str(r47120, "2", 10, MPFR_RNDN);
        mpfr_init(r47121);
        mpfr_init(r47122);
        mpfr_init(r47123);
        mpfr_init(r47124);
        mpfr_init(r47125);
        mpfr_init(r47126);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r47091, x, MPFR_RNDN);
        mpfr_cosh(r47092, r47091, MPFR_RNDN);
        mpfr_set_d(r47093, y, MPFR_RNDN);
        mpfr_div(r47094, r47093, r47091, MPFR_RNDN);
        mpfr_mul(r47095, r47092, r47094, MPFR_RNDN);
        ;
        mpfr_set_si(r47097, mpfr_cmp(r47095, r47096) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r47099, r47093, r47091, MPFR_RNDN);
        mpfr_set_d(r47100, z, MPFR_RNDN);
        mpfr_div(r47101, r47099, r47100, MPFR_RNDN);
        mpfr_mul(r47102, r47098, r47101, MPFR_RNDN);
        mpfr_mul(r47103, r47100, r47091, MPFR_RNDN);
        mpfr_div(r47104, r47093, r47103, MPFR_RNDN);
        mpfr_add(r47105, r47102, r47104, MPFR_RNDN);
        ;
        mpfr_set_si(r47107, mpfr_cmp(r47095, r47106) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r47109, r47108, r47100, MPFR_RNDN);
        mpfr_mul(r47110, r47095, r47109, MPFR_RNDN);
        mpfr_cbrt(r47111, r47092, MPFR_RNDN);
        mpfr_exp(r47112, r47091, MPFR_RNDN);
        mpfr_neg(r47113, r47091, MPFR_RNDN);
        mpfr_exp(r47114, r47113, MPFR_RNDN);
        mpfr_add(r47115, r47112, r47114, MPFR_RNDN);
        mpfr_cbrt(r47116, r47115, MPFR_RNDN);
        mpfr_mul(r47117, r47111, r47116, MPFR_RNDN);
        mpfr_mul(r47118, r47111, r47093, MPFR_RNDN);
        mpfr_mul(r47119, r47117, r47118, MPFR_RNDN);
        ;
        mpfr_cbrt(r47121, r47120, MPFR_RNDN);
        mpfr_mul(r47122, r47121, r47091, MPFR_RNDN);
        mpfr_mul(r47123, r47100, r47122, MPFR_RNDN);
        mpfr_div(r47124, r47119, r47123, MPFR_RNDN);
        if (mpfr_get_si(r47107, MPFR_RNDN)) { mpfr_set(r47125, r47110, MPFR_RNDN); } else { mpfr_set(r47125, r47124, MPFR_RNDN); };
        if (mpfr_get_si(r47097, MPFR_RNDN)) { mpfr_set(r47126, r47105, MPFR_RNDN); } else { mpfr_set(r47126, r47125, MPFR_RNDN); };
        return mpfr_get_d(r47126, MPFR_RNDN);
}

static mpfr_t r47127, r47128, r47129, r47130, r47131, r47132, r47133, r47134, r47135, r47136, r47137, r47138, r47139, r47140, r47141, r47142, r47143, r47144, r47145, r47146, r47147, r47148, r47149, r47150, r47151, r47152, r47153, r47154, r47155, r47156, r47157, r47158, r47159, r47160, r47161, r47162;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r47127);
        mpfr_init(r47128);
        mpfr_init(r47129);
        mpfr_init(r47130);
        mpfr_init(r47131);
        mpfr_init_set_str(r47132, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r47133);
        mpfr_init_set_str(r47134, "1/2", 10, MPFR_RNDN);
        mpfr_init(r47135);
        mpfr_init(r47136);
        mpfr_init(r47137);
        mpfr_init(r47138);
        mpfr_init(r47139);
        mpfr_init(r47140);
        mpfr_init(r47141);
        mpfr_init_set_str(r47142, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r47143);
        mpfr_init_set_str(r47144, "1", 10, MPFR_RNDN);
        mpfr_init(r47145);
        mpfr_init(r47146);
        mpfr_init(r47147);
        mpfr_init(r47148);
        mpfr_init(r47149);
        mpfr_init(r47150);
        mpfr_init(r47151);
        mpfr_init(r47152);
        mpfr_init(r47153);
        mpfr_init(r47154);
        mpfr_init(r47155);
        mpfr_init_set_str(r47156, "2", 10, MPFR_RNDN);
        mpfr_init(r47157);
        mpfr_init(r47158);
        mpfr_init(r47159);
        mpfr_init(r47160);
        mpfr_init(r47161);
        mpfr_init(r47162);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r47127, x, MPFR_RNDN);
        mpfr_cosh(r47128, r47127, MPFR_RNDN);
        mpfr_set_d(r47129, y, MPFR_RNDN);
        mpfr_div(r47130, r47129, r47127, MPFR_RNDN);
        mpfr_mul(r47131, r47128, r47130, MPFR_RNDN);
        ;
        mpfr_set_si(r47133, mpfr_cmp(r47131, r47132) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r47135, r47129, r47127, MPFR_RNDN);
        mpfr_set_d(r47136, z, MPFR_RNDN);
        mpfr_div(r47137, r47135, r47136, MPFR_RNDN);
        mpfr_mul(r47138, r47134, r47137, MPFR_RNDN);
        mpfr_mul(r47139, r47136, r47127, MPFR_RNDN);
        mpfr_div(r47140, r47129, r47139, MPFR_RNDN);
        mpfr_add(r47141, r47138, r47140, MPFR_RNDN);
        ;
        mpfr_set_si(r47143, mpfr_cmp(r47131, r47142) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r47145, r47144, r47136, MPFR_RNDN);
        mpfr_mul(r47146, r47131, r47145, MPFR_RNDN);
        mpfr_cbrt(r47147, r47128, MPFR_RNDN);
        mpfr_exp(r47148, r47127, MPFR_RNDN);
        mpfr_neg(r47149, r47127, MPFR_RNDN);
        mpfr_exp(r47150, r47149, MPFR_RNDN);
        mpfr_add(r47151, r47148, r47150, MPFR_RNDN);
        mpfr_cbrt(r47152, r47151, MPFR_RNDN);
        mpfr_mul(r47153, r47147, r47152, MPFR_RNDN);
        mpfr_mul(r47154, r47147, r47129, MPFR_RNDN);
        mpfr_mul(r47155, r47153, r47154, MPFR_RNDN);
        ;
        mpfr_cbrt(r47157, r47156, MPFR_RNDN);
        mpfr_mul(r47158, r47157, r47127, MPFR_RNDN);
        mpfr_mul(r47159, r47136, r47158, MPFR_RNDN);
        mpfr_div(r47160, r47155, r47159, MPFR_RNDN);
        if (mpfr_get_si(r47143, MPFR_RNDN)) { mpfr_set(r47161, r47146, MPFR_RNDN); } else { mpfr_set(r47161, r47160, MPFR_RNDN); };
        if (mpfr_get_si(r47133, MPFR_RNDN)) { mpfr_set(r47162, r47141, MPFR_RNDN); } else { mpfr_set(r47162, r47161, MPFR_RNDN); };
        return mpfr_get_d(r47162, MPFR_RNDN);
}

