#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Linear.Quaternion:$ctanh from linear-1.19.1.3";

double f_if(float x, float y, float z) {
        float r46905 = x;
        float r46906 = y;
        float r46907 = sin(r46906);
        float r46908 = r46907 / r46906;
        float r46909 = r46905 * r46908;
        float r46910 = z;
        float r46911 = r46909 / r46910;
        return r46911;
}

double f_id(double x, double y, double z) {
        double r46912 = x;
        double r46913 = y;
        double r46914 = sin(r46913);
        double r46915 = r46914 / r46913;
        double r46916 = r46912 * r46915;
        double r46917 = z;
        double r46918 = r46916 / r46917;
        return r46918;
}


double f_of(float x, float y, float z) {
        float r46919 = z;
        float r46920 = -5.1313603789682587e+95;
        bool r46921 = r46919 <= r46920;
        float r46922 = x;
        float r46923 = y;
        float r46924 = sin(r46923);
        float r46925 = 1;
        float r46926 = r46925 / r46923;
        float r46927 = r46924 * r46926;
        float r46928 = r46922 * r46927;
        float r46929 = r46928 / r46919;
        float r46930 = 1.0755974781905118e-83;
        bool r46931 = r46919 <= r46930;
        float r46932 = r46924 / r46923;
        float r46933 = r46919 / r46932;
        float r46934 = r46922 / r46933;
        float r46935 = r46931 ? r46934 : r46929;
        float r46936 = r46921 ? r46929 : r46935;
        return r46936;
}

double f_od(double x, double y, double z) {
        double r46937 = z;
        double r46938 = -5.1313603789682587e+95;
        bool r46939 = r46937 <= r46938;
        double r46940 = x;
        double r46941 = y;
        double r46942 = sin(r46941);
        double r46943 = 1;
        double r46944 = r46943 / r46941;
        double r46945 = r46942 * r46944;
        double r46946 = r46940 * r46945;
        double r46947 = r46946 / r46937;
        double r46948 = 1.0755974781905118e-83;
        bool r46949 = r46937 <= r46948;
        double r46950 = r46942 / r46941;
        double r46951 = r46937 / r46950;
        double r46952 = r46940 / r46951;
        double r46953 = r46949 ? r46952 : r46947;
        double r46954 = r46939 ? r46947 : r46953;
        return r46954;
}

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 r46955, r46956, r46957, r46958, r46959, r46960, r46961;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r46955);
        mpfr_init(r46956);
        mpfr_init(r46957);
        mpfr_init(r46958);
        mpfr_init(r46959);
        mpfr_init(r46960);
        mpfr_init(r46961);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r46955, x, MPFR_RNDN);
        mpfr_set_d(r46956, y, MPFR_RNDN);
        mpfr_sin(r46957, r46956, MPFR_RNDN);
        mpfr_div(r46958, r46957, r46956, MPFR_RNDN);
        mpfr_mul(r46959, r46955, r46958, MPFR_RNDN);
        mpfr_set_d(r46960, z, MPFR_RNDN);
        mpfr_div(r46961, r46959, r46960, MPFR_RNDN);
        return mpfr_get_d(r46961, MPFR_RNDN);
}

static mpfr_t r46962, r46963, r46964, r46965, r46966, r46967, r46968, r46969, r46970, r46971, r46972, r46973, r46974, r46975, r46976, r46977, r46978, r46979;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46962);
        mpfr_init_set_str(r46963, "-5.1313603789682587e+95", 10, MPFR_RNDN);
        mpfr_init(r46964);
        mpfr_init(r46965);
        mpfr_init(r46966);
        mpfr_init(r46967);
        mpfr_init_set_str(r46968, "1", 10, MPFR_RNDN);
        mpfr_init(r46969);
        mpfr_init(r46970);
        mpfr_init(r46971);
        mpfr_init(r46972);
        mpfr_init_set_str(r46973, "1.0755974781905118e-83", 10, MPFR_RNDN);
        mpfr_init(r46974);
        mpfr_init(r46975);
        mpfr_init(r46976);
        mpfr_init(r46977);
        mpfr_init(r46978);
        mpfr_init(r46979);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r46962, z, MPFR_RNDN);
        ;
        mpfr_set_si(r46964, mpfr_cmp(r46962, r46963) <= 0, MPFR_RNDN);
        mpfr_set_d(r46965, x, MPFR_RNDN);
        mpfr_set_d(r46966, y, MPFR_RNDN);
        mpfr_sin(r46967, r46966, MPFR_RNDN);
        ;
        mpfr_div(r46969, r46968, r46966, MPFR_RNDN);
        mpfr_mul(r46970, r46967, r46969, MPFR_RNDN);
        mpfr_mul(r46971, r46965, r46970, MPFR_RNDN);
        mpfr_div(r46972, r46971, r46962, MPFR_RNDN);
        ;
        mpfr_set_si(r46974, mpfr_cmp(r46962, r46973) <= 0, MPFR_RNDN);
        mpfr_div(r46975, r46967, r46966, MPFR_RNDN);
        mpfr_div(r46976, r46962, r46975, MPFR_RNDN);
        mpfr_div(r46977, r46965, r46976, MPFR_RNDN);
        if (mpfr_get_si(r46974, MPFR_RNDN)) { mpfr_set(r46978, r46977, MPFR_RNDN); } else { mpfr_set(r46978, r46972, MPFR_RNDN); };
        if (mpfr_get_si(r46964, MPFR_RNDN)) { mpfr_set(r46979, r46972, MPFR_RNDN); } else { mpfr_set(r46979, r46978, MPFR_RNDN); };
        return mpfr_get_d(r46979, MPFR_RNDN);
}

static mpfr_t r46980, r46981, r46982, r46983, r46984, r46985, r46986, r46987, r46988, r46989, r46990, r46991, r46992, r46993, r46994, r46995, r46996, r46997;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r46980);
        mpfr_init_set_str(r46981, "-5.1313603789682587e+95", 10, MPFR_RNDN);
        mpfr_init(r46982);
        mpfr_init(r46983);
        mpfr_init(r46984);
        mpfr_init(r46985);
        mpfr_init_set_str(r46986, "1", 10, MPFR_RNDN);
        mpfr_init(r46987);
        mpfr_init(r46988);
        mpfr_init(r46989);
        mpfr_init(r46990);
        mpfr_init_set_str(r46991, "1.0755974781905118e-83", 10, MPFR_RNDN);
        mpfr_init(r46992);
        mpfr_init(r46993);
        mpfr_init(r46994);
        mpfr_init(r46995);
        mpfr_init(r46996);
        mpfr_init(r46997);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r46980, z, MPFR_RNDN);
        ;
        mpfr_set_si(r46982, mpfr_cmp(r46980, r46981) <= 0, MPFR_RNDN);
        mpfr_set_d(r46983, x, MPFR_RNDN);
        mpfr_set_d(r46984, y, MPFR_RNDN);
        mpfr_sin(r46985, r46984, MPFR_RNDN);
        ;
        mpfr_div(r46987, r46986, r46984, MPFR_RNDN);
        mpfr_mul(r46988, r46985, r46987, MPFR_RNDN);
        mpfr_mul(r46989, r46983, r46988, MPFR_RNDN);
        mpfr_div(r46990, r46989, r46980, MPFR_RNDN);
        ;
        mpfr_set_si(r46992, mpfr_cmp(r46980, r46991) <= 0, MPFR_RNDN);
        mpfr_div(r46993, r46985, r46984, MPFR_RNDN);
        mpfr_div(r46994, r46980, r46993, MPFR_RNDN);
        mpfr_div(r46995, r46983, r46994, MPFR_RNDN);
        if (mpfr_get_si(r46992, MPFR_RNDN)) { mpfr_set(r46996, r46995, MPFR_RNDN); } else { mpfr_set(r46996, r46990, MPFR_RNDN); };
        if (mpfr_get_si(r46982, MPFR_RNDN)) { mpfr_set(r46997, r46990, MPFR_RNDN); } else { mpfr_set(r46997, r46996, MPFR_RNDN); };
        return mpfr_get_d(r46997, MPFR_RNDN);
}

