#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 r46244 = x;
        float r46245 = cosh(r46244);
        float r46246 = y;
        float r46247 = r46246 / r46244;
        float r46248 = r46245 * r46247;
        float r46249 = z;
        float r46250 = r46248 / r46249;
        return r46250;
}

double f_id(double x, double y, double z) {
        double r46251 = x;
        double r46252 = cosh(r46251);
        double r46253 = y;
        double r46254 = r46253 / r46251;
        double r46255 = r46252 * r46254;
        double r46256 = z;
        double r46257 = r46255 / r46256;
        return r46257;
}


double f_of(float x, float y, float z) {
        float r46258 = x;
        float r46259 = cosh(r46258);
        float r46260 = y;
        float r46261 = r46260 / r46258;
        float r46262 = r46259 * r46261;
        float r46263 = -4.010803076035026e+232;
        bool r46264 = r46262 <= r46263;
        float r46265 = 1/2;
        float r46266 = r46260 * r46258;
        float r46267 = z;
        float r46268 = r46266 / r46267;
        float r46269 = r46265 * r46268;
        float r46270 = r46267 * r46258;
        float r46271 = r46260 / r46270;
        float r46272 = r46269 + r46271;
        float r46273 = 1.0747284663836783e+250;
        bool r46274 = r46262 <= r46273;
        float r46275 = 1;
        float r46276 = r46275 / r46267;
        float r46277 = r46262 * r46276;
        float r46278 = cbrt(r46259);
        float r46279 = exp(r46258);
        float r46280 = -r46258;
        float r46281 = exp(r46280);
        float r46282 = r46279 + r46281;
        float r46283 = cbrt(r46282);
        float r46284 = r46278 * r46283;
        float r46285 = r46278 * r46260;
        float r46286 = r46284 * r46285;
        float r46287 = 2;
        float r46288 = cbrt(r46287);
        float r46289 = r46288 * r46258;
        float r46290 = r46267 * r46289;
        float r46291 = r46286 / r46290;
        float r46292 = r46274 ? r46277 : r46291;
        float r46293 = r46264 ? r46272 : r46292;
        return r46293;
}

double f_od(double x, double y, double z) {
        double r46294 = x;
        double r46295 = cosh(r46294);
        double r46296 = y;
        double r46297 = r46296 / r46294;
        double r46298 = r46295 * r46297;
        double r46299 = -4.010803076035026e+232;
        bool r46300 = r46298 <= r46299;
        double r46301 = 1/2;
        double r46302 = r46296 * r46294;
        double r46303 = z;
        double r46304 = r46302 / r46303;
        double r46305 = r46301 * r46304;
        double r46306 = r46303 * r46294;
        double r46307 = r46296 / r46306;
        double r46308 = r46305 + r46307;
        double r46309 = 1.0747284663836783e+250;
        bool r46310 = r46298 <= r46309;
        double r46311 = 1;
        double r46312 = r46311 / r46303;
        double r46313 = r46298 * r46312;
        double r46314 = cbrt(r46295);
        double r46315 = exp(r46294);
        double r46316 = -r46294;
        double r46317 = exp(r46316);
        double r46318 = r46315 + r46317;
        double r46319 = cbrt(r46318);
        double r46320 = r46314 * r46319;
        double r46321 = r46314 * r46296;
        double r46322 = r46320 * r46321;
        double r46323 = 2;
        double r46324 = cbrt(r46323);
        double r46325 = r46324 * r46294;
        double r46326 = r46303 * r46325;
        double r46327 = r46322 / r46326;
        double r46328 = r46310 ? r46313 : r46327;
        double r46329 = r46300 ? r46308 : r46328;
        return r46329;
}

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 r46330, r46331, r46332, r46333, r46334, r46335, r46336;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46330);
        mpfr_init(r46331);
        mpfr_init(r46332);
        mpfr_init(r46333);
        mpfr_init(r46334);
        mpfr_init(r46335);
        mpfr_init(r46336);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r46330, x, MPFR_RNDN);
        mpfr_cosh(r46331, r46330, MPFR_RNDN);
        mpfr_set_d(r46332, y, MPFR_RNDN);
        mpfr_div(r46333, r46332, r46330, MPFR_RNDN);
        mpfr_mul(r46334, r46331, r46333, MPFR_RNDN);
        mpfr_set_d(r46335, z, MPFR_RNDN);
        mpfr_div(r46336, r46334, r46335, MPFR_RNDN);
        return mpfr_get_d(r46336, MPFR_RNDN);
}

static mpfr_t r46337, r46338, r46339, r46340, r46341, r46342, r46343, r46344, r46345, r46346, r46347, r46348, r46349, r46350, r46351, r46352, r46353, r46354, r46355, r46356, r46357, r46358, r46359, r46360, r46361, r46362, r46363, r46364, r46365, r46366, r46367, r46368, r46369, r46370, r46371, r46372;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46337);
        mpfr_init(r46338);
        mpfr_init(r46339);
        mpfr_init(r46340);
        mpfr_init(r46341);
        mpfr_init_set_str(r46342, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r46343);
        mpfr_init_set_str(r46344, "1/2", 10, MPFR_RNDN);
        mpfr_init(r46345);
        mpfr_init(r46346);
        mpfr_init(r46347);
        mpfr_init(r46348);
        mpfr_init(r46349);
        mpfr_init(r46350);
        mpfr_init(r46351);
        mpfr_init_set_str(r46352, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r46353);
        mpfr_init_set_str(r46354, "1", 10, MPFR_RNDN);
        mpfr_init(r46355);
        mpfr_init(r46356);
        mpfr_init(r46357);
        mpfr_init(r46358);
        mpfr_init(r46359);
        mpfr_init(r46360);
        mpfr_init(r46361);
        mpfr_init(r46362);
        mpfr_init(r46363);
        mpfr_init(r46364);
        mpfr_init(r46365);
        mpfr_init_set_str(r46366, "2", 10, MPFR_RNDN);
        mpfr_init(r46367);
        mpfr_init(r46368);
        mpfr_init(r46369);
        mpfr_init(r46370);
        mpfr_init(r46371);
        mpfr_init(r46372);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r46337, x, MPFR_RNDN);
        mpfr_cosh(r46338, r46337, MPFR_RNDN);
        mpfr_set_d(r46339, y, MPFR_RNDN);
        mpfr_div(r46340, r46339, r46337, MPFR_RNDN);
        mpfr_mul(r46341, r46338, r46340, MPFR_RNDN);
        ;
        mpfr_set_si(r46343, mpfr_cmp(r46341, r46342) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46345, r46339, r46337, MPFR_RNDN);
        mpfr_set_d(r46346, z, MPFR_RNDN);
        mpfr_div(r46347, r46345, r46346, MPFR_RNDN);
        mpfr_mul(r46348, r46344, r46347, MPFR_RNDN);
        mpfr_mul(r46349, r46346, r46337, MPFR_RNDN);
        mpfr_div(r46350, r46339, r46349, MPFR_RNDN);
        mpfr_add(r46351, r46348, r46350, MPFR_RNDN);
        ;
        mpfr_set_si(r46353, mpfr_cmp(r46341, r46352) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r46355, r46354, r46346, MPFR_RNDN);
        mpfr_mul(r46356, r46341, r46355, MPFR_RNDN);
        mpfr_cbrt(r46357, r46338, MPFR_RNDN);
        mpfr_exp(r46358, r46337, MPFR_RNDN);
        mpfr_neg(r46359, r46337, MPFR_RNDN);
        mpfr_exp(r46360, r46359, MPFR_RNDN);
        mpfr_add(r46361, r46358, r46360, MPFR_RNDN);
        mpfr_cbrt(r46362, r46361, MPFR_RNDN);
        mpfr_mul(r46363, r46357, r46362, MPFR_RNDN);
        mpfr_mul(r46364, r46357, r46339, MPFR_RNDN);
        mpfr_mul(r46365, r46363, r46364, MPFR_RNDN);
        ;
        mpfr_cbrt(r46367, r46366, MPFR_RNDN);
        mpfr_mul(r46368, r46367, r46337, MPFR_RNDN);
        mpfr_mul(r46369, r46346, r46368, MPFR_RNDN);
        mpfr_div(r46370, r46365, r46369, MPFR_RNDN);
        if (mpfr_get_si(r46353, MPFR_RNDN)) { mpfr_set(r46371, r46356, MPFR_RNDN); } else { mpfr_set(r46371, r46370, MPFR_RNDN); };
        if (mpfr_get_si(r46343, MPFR_RNDN)) { mpfr_set(r46372, r46351, MPFR_RNDN); } else { mpfr_set(r46372, r46371, MPFR_RNDN); };
        return mpfr_get_d(r46372, MPFR_RNDN);
}

static mpfr_t r46373, r46374, r46375, r46376, r46377, r46378, r46379, r46380, r46381, r46382, r46383, r46384, r46385, r46386, r46387, r46388, r46389, r46390, r46391, r46392, r46393, r46394, r46395, r46396, r46397, r46398, r46399, r46400, r46401, r46402, r46403, r46404, r46405, r46406, r46407, r46408;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46373);
        mpfr_init(r46374);
        mpfr_init(r46375);
        mpfr_init(r46376);
        mpfr_init(r46377);
        mpfr_init_set_str(r46378, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r46379);
        mpfr_init_set_str(r46380, "1/2", 10, MPFR_RNDN);
        mpfr_init(r46381);
        mpfr_init(r46382);
        mpfr_init(r46383);
        mpfr_init(r46384);
        mpfr_init(r46385);
        mpfr_init(r46386);
        mpfr_init(r46387);
        mpfr_init_set_str(r46388, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r46389);
        mpfr_init_set_str(r46390, "1", 10, MPFR_RNDN);
        mpfr_init(r46391);
        mpfr_init(r46392);
        mpfr_init(r46393);
        mpfr_init(r46394);
        mpfr_init(r46395);
        mpfr_init(r46396);
        mpfr_init(r46397);
        mpfr_init(r46398);
        mpfr_init(r46399);
        mpfr_init(r46400);
        mpfr_init(r46401);
        mpfr_init_set_str(r46402, "2", 10, MPFR_RNDN);
        mpfr_init(r46403);
        mpfr_init(r46404);
        mpfr_init(r46405);
        mpfr_init(r46406);
        mpfr_init(r46407);
        mpfr_init(r46408);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r46373, x, MPFR_RNDN);
        mpfr_cosh(r46374, r46373, MPFR_RNDN);
        mpfr_set_d(r46375, y, MPFR_RNDN);
        mpfr_div(r46376, r46375, r46373, MPFR_RNDN);
        mpfr_mul(r46377, r46374, r46376, MPFR_RNDN);
        ;
        mpfr_set_si(r46379, mpfr_cmp(r46377, r46378) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46381, r46375, r46373, MPFR_RNDN);
        mpfr_set_d(r46382, z, MPFR_RNDN);
        mpfr_div(r46383, r46381, r46382, MPFR_RNDN);
        mpfr_mul(r46384, r46380, r46383, MPFR_RNDN);
        mpfr_mul(r46385, r46382, r46373, MPFR_RNDN);
        mpfr_div(r46386, r46375, r46385, MPFR_RNDN);
        mpfr_add(r46387, r46384, r46386, MPFR_RNDN);
        ;
        mpfr_set_si(r46389, mpfr_cmp(r46377, r46388) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r46391, r46390, r46382, MPFR_RNDN);
        mpfr_mul(r46392, r46377, r46391, MPFR_RNDN);
        mpfr_cbrt(r46393, r46374, MPFR_RNDN);
        mpfr_exp(r46394, r46373, MPFR_RNDN);
        mpfr_neg(r46395, r46373, MPFR_RNDN);
        mpfr_exp(r46396, r46395, MPFR_RNDN);
        mpfr_add(r46397, r46394, r46396, MPFR_RNDN);
        mpfr_cbrt(r46398, r46397, MPFR_RNDN);
        mpfr_mul(r46399, r46393, r46398, MPFR_RNDN);
        mpfr_mul(r46400, r46393, r46375, MPFR_RNDN);
        mpfr_mul(r46401, r46399, r46400, MPFR_RNDN);
        ;
        mpfr_cbrt(r46403, r46402, MPFR_RNDN);
        mpfr_mul(r46404, r46403, r46373, MPFR_RNDN);
        mpfr_mul(r46405, r46382, r46404, MPFR_RNDN);
        mpfr_div(r46406, r46401, r46405, MPFR_RNDN);
        if (mpfr_get_si(r46389, MPFR_RNDN)) { mpfr_set(r46407, r46392, MPFR_RNDN); } else { mpfr_set(r46407, r46406, MPFR_RNDN); };
        if (mpfr_get_si(r46379, MPFR_RNDN)) { mpfr_set(r46408, r46387, MPFR_RNDN); } else { mpfr_set(r46408, r46407, MPFR_RNDN); };
        return mpfr_get_d(r46408, MPFR_RNDN);
}

