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

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

double f_if(float x, float y) {
        float r44337 = x;
        float r44338 = sin(r44337);
        float r44339 = y;
        float r44340 = sinh(r44339);
        float r44341 = r44340 / r44339;
        float r44342 = r44338 * r44341;
        return r44342;
}

double f_id(double x, double y) {
        double r44343 = x;
        double r44344 = sin(r44343);
        double r44345 = y;
        double r44346 = sinh(r44345);
        double r44347 = r44346 / r44345;
        double r44348 = r44344 * r44347;
        return r44348;
}


double f_of(float x, float y) {
        float r44349 = x;
        float r44350 = sin(r44349);
        float r44351 = 0.16666666666666666f;
        float r44352 = y;
        float r44353 = r44352 * r44352;
        float r44354 = r44351 * r44353;
        float r44355 = 1.0f;
        float r44356 = 0.008333333333333333f;
        float r44357 = 4.0f;
        float r44358 = pow(r44352, r44357);
        float r44359 = r44356 * r44358;
        float r44360 = r44355 + r44359;
        float r44361 = r44354 + r44360;
        float r44362 = r44350 * r44361;
        return r44362;
}

double f_od(double x, double y) {
        double r44363 = x;
        double r44364 = sin(r44363);
        double r44365 = 0.16666666666666666;
        double r44366 = y;
        double r44367 = r44366 * r44366;
        double r44368 = r44365 * r44367;
        double r44369 = 1.0;
        double r44370 = 0.008333333333333333;
        double r44371 = 4.0;
        double r44372 = pow(r44366, r44371);
        double r44373 = r44370 * r44372;
        double r44374 = r44369 + r44373;
        double r44375 = r44368 + r44374;
        double r44376 = r44364 * r44375;
        return r44376;
}

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 r44377, r44378, r44379, r44380, r44381, r44382;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r44377);
        mpfr_init(r44378);
        mpfr_init(r44379);
        mpfr_init(r44380);
        mpfr_init(r44381);
        mpfr_init(r44382);
}

double f_im(double x, double y) {
        mpfr_set_d(r44377, x, MPFR_RNDN);
        mpfr_sin(r44378, r44377, MPFR_RNDN);
        mpfr_set_d(r44379, y, MPFR_RNDN);
        mpfr_sinh(r44380, r44379, MPFR_RNDN);
        mpfr_div(r44381, r44380, r44379, MPFR_RNDN);
        mpfr_mul(r44382, r44378, r44381, MPFR_RNDN);
        return mpfr_get_d(r44382, MPFR_RNDN);
}

static mpfr_t r44383, r44384, r44385, r44386, r44387, r44388, r44389, r44390, r44391, r44392, r44393, r44394, r44395, r44396;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44383);
        mpfr_init(r44384);
        mpfr_init_set_str(r44385, "1/6", 10, MPFR_RNDN);
        mpfr_init(r44386);
        mpfr_init(r44387);
        mpfr_init(r44388);
        mpfr_init_set_str(r44389, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44390, "1/120", 10, MPFR_RNDN);
        mpfr_init_set_str(r44391, "4", 10, MPFR_RNDN);
        mpfr_init(r44392);
        mpfr_init(r44393);
        mpfr_init(r44394);
        mpfr_init(r44395);
        mpfr_init(r44396);
}

double f_fm(double x, double y) {
        mpfr_set_d(r44383, x, MPFR_RNDN);
        mpfr_sin(r44384, r44383, MPFR_RNDN);
        ;
        mpfr_set_d(r44386, y, MPFR_RNDN);
        mpfr_sqr(r44387, r44386, MPFR_RNDN);
        mpfr_mul(r44388, r44385, r44387, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r44392, r44386, r44391, MPFR_RNDN);
        mpfr_mul(r44393, r44390, r44392, MPFR_RNDN);
        mpfr_add(r44394, r44389, r44393, MPFR_RNDN);
        mpfr_add(r44395, r44388, r44394, MPFR_RNDN);
        mpfr_mul(r44396, r44384, r44395, MPFR_RNDN);
        return mpfr_get_d(r44396, MPFR_RNDN);
}

static mpfr_t r44397, r44398, r44399, r44400, r44401, r44402, r44403, r44404, r44405, r44406, r44407, r44408, r44409, r44410;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r44397);
        mpfr_init(r44398);
        mpfr_init_set_str(r44399, "1/6", 10, MPFR_RNDN);
        mpfr_init(r44400);
        mpfr_init(r44401);
        mpfr_init(r44402);
        mpfr_init_set_str(r44403, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r44404, "1/120", 10, MPFR_RNDN);
        mpfr_init_set_str(r44405, "4", 10, MPFR_RNDN);
        mpfr_init(r44406);
        mpfr_init(r44407);
        mpfr_init(r44408);
        mpfr_init(r44409);
        mpfr_init(r44410);
}

double f_dm(double x, double y) {
        mpfr_set_d(r44397, x, MPFR_RNDN);
        mpfr_sin(r44398, r44397, MPFR_RNDN);
        ;
        mpfr_set_d(r44400, y, MPFR_RNDN);
        mpfr_sqr(r44401, r44400, MPFR_RNDN);
        mpfr_mul(r44402, r44399, r44401, MPFR_RNDN);
        ;
        ;
        ;
        mpfr_pow(r44406, r44400, r44405, MPFR_RNDN);
        mpfr_mul(r44407, r44404, r44406, MPFR_RNDN);
        mpfr_add(r44408, r44403, r44407, MPFR_RNDN);
        mpfr_add(r44409, r44402, r44408, MPFR_RNDN);
        mpfr_mul(r44410, r44398, r44409, MPFR_RNDN);
        return mpfr_get_d(r44410, MPFR_RNDN);
}

