#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 r46742 = x;
        float r46743 = cosh(r46742);
        float r46744 = y;
        float r46745 = r46744 / r46742;
        float r46746 = r46743 * r46745;
        float r46747 = z;
        float r46748 = r46746 / r46747;
        return r46748;
}

double f_id(double x, double y, double z) {
        double r46749 = x;
        double r46750 = cosh(r46749);
        double r46751 = y;
        double r46752 = r46751 / r46749;
        double r46753 = r46750 * r46752;
        double r46754 = z;
        double r46755 = r46753 / r46754;
        return r46755;
}


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

double f_od(double x, double y, double z) {
        double r46792 = x;
        double r46793 = cosh(r46792);
        double r46794 = y;
        double r46795 = r46794 / r46792;
        double r46796 = r46793 * r46795;
        double r46797 = -4.010803076035026e+232;
        bool r46798 = r46796 <= r46797;
        double r46799 = 1/2;
        double r46800 = r46794 * r46792;
        double r46801 = z;
        double r46802 = r46800 / r46801;
        double r46803 = r46799 * r46802;
        double r46804 = r46801 * r46792;
        double r46805 = r46794 / r46804;
        double r46806 = r46803 + r46805;
        double r46807 = 1.0747284663836783e+250;
        bool r46808 = r46796 <= r46807;
        double r46809 = 1;
        double r46810 = r46809 / r46801;
        double r46811 = r46796 * r46810;
        double r46812 = cbrt(r46793);
        double r46813 = exp(r46792);
        double r46814 = -r46792;
        double r46815 = exp(r46814);
        double r46816 = r46813 + r46815;
        double r46817 = cbrt(r46816);
        double r46818 = r46812 * r46817;
        double r46819 = r46812 * r46794;
        double r46820 = r46818 * r46819;
        double r46821 = 2;
        double r46822 = cbrt(r46821);
        double r46823 = r46822 * r46792;
        double r46824 = r46801 * r46823;
        double r46825 = r46820 / r46824;
        double r46826 = r46808 ? r46811 : r46825;
        double r46827 = r46798 ? r46806 : r46826;
        return r46827;
}

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 r46828, r46829, r46830, r46831, r46832, r46833, r46834;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46828);
        mpfr_init(r46829);
        mpfr_init(r46830);
        mpfr_init(r46831);
        mpfr_init(r46832);
        mpfr_init(r46833);
        mpfr_init(r46834);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r46828, x, MPFR_RNDN);
        mpfr_cosh(r46829, r46828, MPFR_RNDN);
        mpfr_set_d(r46830, y, MPFR_RNDN);
        mpfr_div(r46831, r46830, r46828, MPFR_RNDN);
        mpfr_mul(r46832, r46829, r46831, MPFR_RNDN);
        mpfr_set_d(r46833, z, MPFR_RNDN);
        mpfr_div(r46834, r46832, r46833, MPFR_RNDN);
        return mpfr_get_d(r46834, MPFR_RNDN);
}

static mpfr_t r46835, r46836, r46837, r46838, r46839, r46840, r46841, r46842, r46843, r46844, r46845, r46846, r46847, r46848, r46849, r46850, r46851, r46852, r46853, r46854, r46855, r46856, r46857, r46858, r46859, r46860, r46861, r46862, r46863, r46864, r46865, r46866, r46867, r46868, r46869, r46870;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46835);
        mpfr_init(r46836);
        mpfr_init(r46837);
        mpfr_init(r46838);
        mpfr_init(r46839);
        mpfr_init_set_str(r46840, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r46841);
        mpfr_init_set_str(r46842, "1/2", 10, MPFR_RNDN);
        mpfr_init(r46843);
        mpfr_init(r46844);
        mpfr_init(r46845);
        mpfr_init(r46846);
        mpfr_init(r46847);
        mpfr_init(r46848);
        mpfr_init(r46849);
        mpfr_init_set_str(r46850, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r46851);
        mpfr_init_set_str(r46852, "1", 10, MPFR_RNDN);
        mpfr_init(r46853);
        mpfr_init(r46854);
        mpfr_init(r46855);
        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_set_str(r46864, "2", 10, MPFR_RNDN);
        mpfr_init(r46865);
        mpfr_init(r46866);
        mpfr_init(r46867);
        mpfr_init(r46868);
        mpfr_init(r46869);
        mpfr_init(r46870);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r46835, x, MPFR_RNDN);
        mpfr_cosh(r46836, r46835, MPFR_RNDN);
        mpfr_set_d(r46837, y, MPFR_RNDN);
        mpfr_div(r46838, r46837, r46835, MPFR_RNDN);
        mpfr_mul(r46839, r46836, r46838, MPFR_RNDN);
        ;
        mpfr_set_si(r46841, mpfr_cmp(r46839, r46840) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46843, r46837, r46835, MPFR_RNDN);
        mpfr_set_d(r46844, z, MPFR_RNDN);
        mpfr_div(r46845, r46843, r46844, MPFR_RNDN);
        mpfr_mul(r46846, r46842, r46845, MPFR_RNDN);
        mpfr_mul(r46847, r46844, r46835, MPFR_RNDN);
        mpfr_div(r46848, r46837, r46847, MPFR_RNDN);
        mpfr_add(r46849, r46846, r46848, MPFR_RNDN);
        ;
        mpfr_set_si(r46851, mpfr_cmp(r46839, r46850) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r46853, r46852, r46844, MPFR_RNDN);
        mpfr_mul(r46854, r46839, r46853, MPFR_RNDN);
        mpfr_cbrt(r46855, r46836, MPFR_RNDN);
        mpfr_exp(r46856, r46835, MPFR_RNDN);
        mpfr_neg(r46857, r46835, MPFR_RNDN);
        mpfr_exp(r46858, r46857, MPFR_RNDN);
        mpfr_add(r46859, r46856, r46858, MPFR_RNDN);
        mpfr_cbrt(r46860, r46859, MPFR_RNDN);
        mpfr_mul(r46861, r46855, r46860, MPFR_RNDN);
        mpfr_mul(r46862, r46855, r46837, MPFR_RNDN);
        mpfr_mul(r46863, r46861, r46862, MPFR_RNDN);
        ;
        mpfr_cbrt(r46865, r46864, MPFR_RNDN);
        mpfr_mul(r46866, r46865, r46835, MPFR_RNDN);
        mpfr_mul(r46867, r46844, r46866, MPFR_RNDN);
        mpfr_div(r46868, r46863, r46867, MPFR_RNDN);
        if (mpfr_get_si(r46851, MPFR_RNDN)) { mpfr_set(r46869, r46854, MPFR_RNDN); } else { mpfr_set(r46869, r46868, MPFR_RNDN); };
        if (mpfr_get_si(r46841, MPFR_RNDN)) { mpfr_set(r46870, r46849, MPFR_RNDN); } else { mpfr_set(r46870, r46869, MPFR_RNDN); };
        return mpfr_get_d(r46870, MPFR_RNDN);
}

static mpfr_t r46871, r46872, r46873, r46874, r46875, r46876, r46877, r46878, r46879, r46880, r46881, r46882, r46883, r46884, r46885, r46886, r46887, r46888, r46889, r46890, r46891, r46892, r46893, r46894, r46895, r46896, r46897, r46898, r46899, r46900, r46901, r46902, r46903, r46904, r46905, r46906;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46871);
        mpfr_init(r46872);
        mpfr_init(r46873);
        mpfr_init(r46874);
        mpfr_init(r46875);
        mpfr_init_set_str(r46876, "-4.010803076035026e+232", 10, MPFR_RNDN);
        mpfr_init(r46877);
        mpfr_init_set_str(r46878, "1/2", 10, MPFR_RNDN);
        mpfr_init(r46879);
        mpfr_init(r46880);
        mpfr_init(r46881);
        mpfr_init(r46882);
        mpfr_init(r46883);
        mpfr_init(r46884);
        mpfr_init(r46885);
        mpfr_init_set_str(r46886, "1.0747284663836783e+250", 10, MPFR_RNDN);
        mpfr_init(r46887);
        mpfr_init_set_str(r46888, "1", 10, MPFR_RNDN);
        mpfr_init(r46889);
        mpfr_init(r46890);
        mpfr_init(r46891);
        mpfr_init(r46892);
        mpfr_init(r46893);
        mpfr_init(r46894);
        mpfr_init(r46895);
        mpfr_init(r46896);
        mpfr_init(r46897);
        mpfr_init(r46898);
        mpfr_init(r46899);
        mpfr_init_set_str(r46900, "2", 10, MPFR_RNDN);
        mpfr_init(r46901);
        mpfr_init(r46902);
        mpfr_init(r46903);
        mpfr_init(r46904);
        mpfr_init(r46905);
        mpfr_init(r46906);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r46871, x, MPFR_RNDN);
        mpfr_cosh(r46872, r46871, MPFR_RNDN);
        mpfr_set_d(r46873, y, MPFR_RNDN);
        mpfr_div(r46874, r46873, r46871, MPFR_RNDN);
        mpfr_mul(r46875, r46872, r46874, MPFR_RNDN);
        ;
        mpfr_set_si(r46877, mpfr_cmp(r46875, r46876) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r46879, r46873, r46871, MPFR_RNDN);
        mpfr_set_d(r46880, z, MPFR_RNDN);
        mpfr_div(r46881, r46879, r46880, MPFR_RNDN);
        mpfr_mul(r46882, r46878, r46881, MPFR_RNDN);
        mpfr_mul(r46883, r46880, r46871, MPFR_RNDN);
        mpfr_div(r46884, r46873, r46883, MPFR_RNDN);
        mpfr_add(r46885, r46882, r46884, MPFR_RNDN);
        ;
        mpfr_set_si(r46887, mpfr_cmp(r46875, r46886) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r46889, r46888, r46880, MPFR_RNDN);
        mpfr_mul(r46890, r46875, r46889, MPFR_RNDN);
        mpfr_cbrt(r46891, r46872, MPFR_RNDN);
        mpfr_exp(r46892, r46871, MPFR_RNDN);
        mpfr_neg(r46893, r46871, MPFR_RNDN);
        mpfr_exp(r46894, r46893, MPFR_RNDN);
        mpfr_add(r46895, r46892, r46894, MPFR_RNDN);
        mpfr_cbrt(r46896, r46895, MPFR_RNDN);
        mpfr_mul(r46897, r46891, r46896, MPFR_RNDN);
        mpfr_mul(r46898, r46891, r46873, MPFR_RNDN);
        mpfr_mul(r46899, r46897, r46898, MPFR_RNDN);
        ;
        mpfr_cbrt(r46901, r46900, MPFR_RNDN);
        mpfr_mul(r46902, r46901, r46871, MPFR_RNDN);
        mpfr_mul(r46903, r46880, r46902, MPFR_RNDN);
        mpfr_div(r46904, r46899, r46903, MPFR_RNDN);
        if (mpfr_get_si(r46887, MPFR_RNDN)) { mpfr_set(r46905, r46890, MPFR_RNDN); } else { mpfr_set(r46905, r46904, MPFR_RNDN); };
        if (mpfr_get_si(r46877, MPFR_RNDN)) { mpfr_set(r46906, r46885, MPFR_RNDN); } else { mpfr_set(r46906, r46905, MPFR_RNDN); };
        return mpfr_get_d(r46906, MPFR_RNDN);
}

