#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 r46746 = x;
        float r46747 = cosh(r46746);
        float r46748 = y;
        float r46749 = r46748 / r46746;
        float r46750 = r46747 * r46749;
        float r46751 = z;
        float r46752 = r46750 / r46751;
        return r46752;
}

double f_id(double x, double y, double z) {
        double r46753 = x;
        double r46754 = cosh(r46753);
        double r46755 = y;
        double r46756 = r46755 / r46753;
        double r46757 = r46754 * r46756;
        double r46758 = z;
        double r46759 = r46757 / r46758;
        return r46759;
}


double f_of(float x, float y, float z) {
        float r46760 = z;
        float r46761 = -4.325937455082745e+35;
        bool r46762 = r46760 <= r46761;
        float r46763 = x;
        float r46764 = cosh(r46763);
        float r46765 = cbrt(r46764);
        float r46766 = exp(r46763);
        float r46767 = -r46763;
        float r46768 = exp(r46767);
        float r46769 = r46766 + r46768;
        float r46770 = cbrt(r46769);
        float r46771 = r46765 * r46770;
        float r46772 = y;
        float r46773 = r46765 * r46772;
        float r46774 = r46771 * r46773;
        float r46775 = 2;
        float r46776 = cbrt(r46775);
        float r46777 = r46776 * r46763;
        float r46778 = r46760 * r46777;
        float r46779 = r46774 / r46778;
        float r46780 = 1474036971039.3018;
        bool r46781 = r46760 <= r46780;
        float r46782 = r46772 / r46763;
        float r46783 = r46764 * r46782;
        float r46784 = 1;
        float r46785 = r46784 / r46760;
        float r46786 = r46783 * r46785;
        float r46787 = r46781 ? r46786 : r46779;
        float r46788 = r46762 ? r46779 : r46787;
        return r46788;
}

double f_od(double x, double y, double z) {
        double r46789 = z;
        double r46790 = -4.325937455082745e+35;
        bool r46791 = r46789 <= r46790;
        double r46792 = x;
        double r46793 = cosh(r46792);
        double r46794 = cbrt(r46793);
        double r46795 = exp(r46792);
        double r46796 = -r46792;
        double r46797 = exp(r46796);
        double r46798 = r46795 + r46797;
        double r46799 = cbrt(r46798);
        double r46800 = r46794 * r46799;
        double r46801 = y;
        double r46802 = r46794 * r46801;
        double r46803 = r46800 * r46802;
        double r46804 = 2;
        double r46805 = cbrt(r46804);
        double r46806 = r46805 * r46792;
        double r46807 = r46789 * r46806;
        double r46808 = r46803 / r46807;
        double r46809 = 1474036971039.3018;
        bool r46810 = r46789 <= r46809;
        double r46811 = r46801 / r46792;
        double r46812 = r46793 * r46811;
        double r46813 = 1;
        double r46814 = r46813 / r46789;
        double r46815 = r46812 * r46814;
        double r46816 = r46810 ? r46815 : r46808;
        double r46817 = r46791 ? r46808 : r46816;
        return r46817;
}

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 r46818, r46819, r46820, r46821, r46822, r46823, r46824;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46818);
        mpfr_init(r46819);
        mpfr_init(r46820);
        mpfr_init(r46821);
        mpfr_init(r46822);
        mpfr_init(r46823);
        mpfr_init(r46824);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r46818, x, MPFR_RNDN);
        mpfr_cosh(r46819, r46818, MPFR_RNDN);
        mpfr_set_d(r46820, y, MPFR_RNDN);
        mpfr_div(r46821, r46820, r46818, MPFR_RNDN);
        mpfr_mul(r46822, r46819, r46821, MPFR_RNDN);
        mpfr_set_d(r46823, z, MPFR_RNDN);
        mpfr_div(r46824, r46822, r46823, MPFR_RNDN);
        return mpfr_get_d(r46824, MPFR_RNDN);
}

static mpfr_t r46825, r46826, r46827, r46828, r46829, r46830, r46831, r46832, r46833, r46834, r46835, r46836, r46837, r46838, r46839, r46840, r46841, r46842, r46843, r46844, r46845, r46846, r46847, r46848, r46849, r46850, r46851, r46852, r46853;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46825);
        mpfr_init_set_str(r46826, "-4.325937455082745e+35", 10, MPFR_RNDN);
        mpfr_init(r46827);
        mpfr_init(r46828);
        mpfr_init(r46829);
        mpfr_init(r46830);
        mpfr_init(r46831);
        mpfr_init(r46832);
        mpfr_init(r46833);
        mpfr_init(r46834);
        mpfr_init(r46835);
        mpfr_init(r46836);
        mpfr_init(r46837);
        mpfr_init(r46838);
        mpfr_init(r46839);
        mpfr_init_set_str(r46840, "2", 10, MPFR_RNDN);
        mpfr_init(r46841);
        mpfr_init(r46842);
        mpfr_init(r46843);
        mpfr_init(r46844);
        mpfr_init_set_str(r46845, "1474036971039.3018", 10, MPFR_RNDN);
        mpfr_init(r46846);
        mpfr_init(r46847);
        mpfr_init(r46848);
        mpfr_init_set_str(r46849, "1", 10, MPFR_RNDN);
        mpfr_init(r46850);
        mpfr_init(r46851);
        mpfr_init(r46852);
        mpfr_init(r46853);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r46825, z, MPFR_RNDN);
        ;
        mpfr_set_si(r46827, mpfr_cmp(r46825, r46826) <= 0, MPFR_RNDN);
        mpfr_set_d(r46828, x, MPFR_RNDN);
        mpfr_cosh(r46829, r46828, MPFR_RNDN);
        mpfr_cbrt(r46830, r46829, MPFR_RNDN);
        mpfr_exp(r46831, r46828, MPFR_RNDN);
        mpfr_neg(r46832, r46828, MPFR_RNDN);
        mpfr_exp(r46833, r46832, MPFR_RNDN);
        mpfr_add(r46834, r46831, r46833, MPFR_RNDN);
        mpfr_cbrt(r46835, r46834, MPFR_RNDN);
        mpfr_mul(r46836, r46830, r46835, MPFR_RNDN);
        mpfr_set_d(r46837, y, MPFR_RNDN);
        mpfr_mul(r46838, r46830, r46837, MPFR_RNDN);
        mpfr_mul(r46839, r46836, r46838, MPFR_RNDN);
        ;
        mpfr_cbrt(r46841, r46840, MPFR_RNDN);
        mpfr_mul(r46842, r46841, r46828, MPFR_RNDN);
        mpfr_mul(r46843, r46825, r46842, MPFR_RNDN);
        mpfr_div(r46844, r46839, r46843, MPFR_RNDN);
        ;
        mpfr_set_si(r46846, mpfr_cmp(r46825, r46845) <= 0, MPFR_RNDN);
        mpfr_div(r46847, r46837, r46828, MPFR_RNDN);
        mpfr_mul(r46848, r46829, r46847, MPFR_RNDN);
        ;
        mpfr_div(r46850, r46849, r46825, MPFR_RNDN);
        mpfr_mul(r46851, r46848, r46850, MPFR_RNDN);
        if (mpfr_get_si(r46846, MPFR_RNDN)) { mpfr_set(r46852, r46851, MPFR_RNDN); } else { mpfr_set(r46852, r46844, MPFR_RNDN); };
        if (mpfr_get_si(r46827, MPFR_RNDN)) { mpfr_set(r46853, r46844, MPFR_RNDN); } else { mpfr_set(r46853, r46852, MPFR_RNDN); };
        return mpfr_get_d(r46853, MPFR_RNDN);
}

static mpfr_t r46854, r46855, r46856, r46857, r46858, r46859, r46860, r46861, r46862, r46863, r46864, r46865, r46866, r46867, r46868, r46869, r46870, r46871, r46872, r46873, r46874, r46875, r46876, r46877, r46878, r46879, r46880, r46881, r46882;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46854);
        mpfr_init_set_str(r46855, "-4.325937455082745e+35", 10, MPFR_RNDN);
        mpfr_init(r46856);
        mpfr_init(r46857);
        mpfr_init(r46858);
        mpfr_init(r46859);
        mpfr_init(r46860);
        mpfr_init(r46861);
        mpfr_init(r46862);
        mpfr_init(r46863);
        mpfr_init(r46864);
        mpfr_init(r46865);
        mpfr_init(r46866);
        mpfr_init(r46867);
        mpfr_init(r46868);
        mpfr_init_set_str(r46869, "2", 10, MPFR_RNDN);
        mpfr_init(r46870);
        mpfr_init(r46871);
        mpfr_init(r46872);
        mpfr_init(r46873);
        mpfr_init_set_str(r46874, "1474036971039.3018", 10, MPFR_RNDN);
        mpfr_init(r46875);
        mpfr_init(r46876);
        mpfr_init(r46877);
        mpfr_init_set_str(r46878, "1", 10, MPFR_RNDN);
        mpfr_init(r46879);
        mpfr_init(r46880);
        mpfr_init(r46881);
        mpfr_init(r46882);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r46854, z, MPFR_RNDN);
        ;
        mpfr_set_si(r46856, mpfr_cmp(r46854, r46855) <= 0, MPFR_RNDN);
        mpfr_set_d(r46857, x, MPFR_RNDN);
        mpfr_cosh(r46858, r46857, MPFR_RNDN);
        mpfr_cbrt(r46859, r46858, MPFR_RNDN);
        mpfr_exp(r46860, r46857, MPFR_RNDN);
        mpfr_neg(r46861, r46857, MPFR_RNDN);
        mpfr_exp(r46862, r46861, MPFR_RNDN);
        mpfr_add(r46863, r46860, r46862, MPFR_RNDN);
        mpfr_cbrt(r46864, r46863, MPFR_RNDN);
        mpfr_mul(r46865, r46859, r46864, MPFR_RNDN);
        mpfr_set_d(r46866, y, MPFR_RNDN);
        mpfr_mul(r46867, r46859, r46866, MPFR_RNDN);
        mpfr_mul(r46868, r46865, r46867, MPFR_RNDN);
        ;
        mpfr_cbrt(r46870, r46869, MPFR_RNDN);
        mpfr_mul(r46871, r46870, r46857, MPFR_RNDN);
        mpfr_mul(r46872, r46854, r46871, MPFR_RNDN);
        mpfr_div(r46873, r46868, r46872, MPFR_RNDN);
        ;
        mpfr_set_si(r46875, mpfr_cmp(r46854, r46874) <= 0, MPFR_RNDN);
        mpfr_div(r46876, r46866, r46857, MPFR_RNDN);
        mpfr_mul(r46877, r46858, r46876, MPFR_RNDN);
        ;
        mpfr_div(r46879, r46878, r46854, MPFR_RNDN);
        mpfr_mul(r46880, r46877, r46879, MPFR_RNDN);
        if (mpfr_get_si(r46875, MPFR_RNDN)) { mpfr_set(r46881, r46880, MPFR_RNDN); } else { mpfr_set(r46881, r46873, MPFR_RNDN); };
        if (mpfr_get_si(r46856, MPFR_RNDN)) { mpfr_set(r46882, r46873, MPFR_RNDN); } else { mpfr_set(r46882, r46881, MPFR_RNDN); };
        return mpfr_get_d(r46882, MPFR_RNDN);
}

