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

char *name = "r*sin(b)/cos(a+b), A";

double f_if(float r, float a, float b) {
        float r8147 = r;
        float r8148 = b;
        float r8149 = sin(r8148);
        float r8150 = r8147 * r8149;
        float r8151 = a;
        float r8152 = r8151 + r8148;
        float r8153 = cos(r8152);
        float r8154 = r8150 / r8153;
        return r8154;
}

double f_id(double r, double a, double b) {
        double r8155 = r;
        double r8156 = b;
        double r8157 = sin(r8156);
        double r8158 = r8155 * r8157;
        double r8159 = a;
        double r8160 = r8159 + r8156;
        double r8161 = cos(r8160);
        double r8162 = r8158 / r8161;
        return r8162;
}


double f_of(float r, float a, float b) {
        float r8163 = r;
        float r8164 = b;
        float r8165 = sin(r8164);
        float r8166 = r8163 * r8165;
        float r8167 = a;
        float r8168 = cos(r8167);
        float r8169 = cos(r8164);
        float r8170 = r8168 * r8169;
        float r8171 = sin(r8167);
        float r8172 = r8165 * r8171;
        float r8173 = 3;
        float r8174 = pow(r8172, r8173);
        float r8175 = cbrt(r8174);
        float r8176 = r8170 - r8175;
        float r8177 = r8166 / r8176;
        return r8177;
}

double f_od(double r, double a, double b) {
        double r8178 = r;
        double r8179 = b;
        double r8180 = sin(r8179);
        double r8181 = r8178 * r8180;
        double r8182 = a;
        double r8183 = cos(r8182);
        double r8184 = cos(r8179);
        double r8185 = r8183 * r8184;
        double r8186 = sin(r8182);
        double r8187 = r8180 * r8186;
        double r8188 = 3;
        double r8189 = pow(r8187, r8188);
        double r8190 = cbrt(r8189);
        double r8191 = r8185 - r8190;
        double r8192 = r8181 / r8191;
        return r8192;
}

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 r8193, r8194, r8195, r8196, r8197, r8198, r8199, r8200;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8193);
        mpfr_init(r8194);
        mpfr_init(r8195);
        mpfr_init(r8196);
        mpfr_init(r8197);
        mpfr_init(r8198);
        mpfr_init(r8199);
        mpfr_init(r8200);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r8193, r, MPFR_RNDN);
        mpfr_set_d(r8194, b, MPFR_RNDN);
        mpfr_sin(r8195, r8194, MPFR_RNDN);
        mpfr_mul(r8196, r8193, r8195, MPFR_RNDN);
        mpfr_set_d(r8197, a, MPFR_RNDN);
        mpfr_add(r8198, r8197, r8194, MPFR_RNDN);
        mpfr_cos(r8199, r8198, MPFR_RNDN);
        mpfr_div(r8200, r8196, r8199, MPFR_RNDN);
        return mpfr_get_d(r8200, MPFR_RNDN);
}

static mpfr_t r8201, r8202, r8203, r8204, r8205, r8206, r8207, r8208, r8209, r8210, r8211, r8212, r8213, r8214, r8215;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8201);
        mpfr_init(r8202);
        mpfr_init(r8203);
        mpfr_init(r8204);
        mpfr_init(r8205);
        mpfr_init(r8206);
        mpfr_init(r8207);
        mpfr_init(r8208);
        mpfr_init(r8209);
        mpfr_init(r8210);
        mpfr_init_set_str(r8211, "3", 10, MPFR_RNDN);
        mpfr_init(r8212);
        mpfr_init(r8213);
        mpfr_init(r8214);
        mpfr_init(r8215);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r8201, r, MPFR_RNDN);
        mpfr_set_d(r8202, b, MPFR_RNDN);
        mpfr_sin(r8203, r8202, MPFR_RNDN);
        mpfr_mul(r8204, r8201, r8203, MPFR_RNDN);
        mpfr_set_d(r8205, a, MPFR_RNDN);
        mpfr_cos(r8206, r8205, MPFR_RNDN);
        mpfr_cos(r8207, r8202, MPFR_RNDN);
        mpfr_mul(r8208, r8206, r8207, MPFR_RNDN);
        mpfr_sin(r8209, r8205, MPFR_RNDN);
        mpfr_mul(r8210, r8203, r8209, MPFR_RNDN);
        ;
        mpfr_pow(r8212, r8210, r8211, MPFR_RNDN);
        mpfr_cbrt(r8213, r8212, MPFR_RNDN);
        mpfr_sub(r8214, r8208, r8213, MPFR_RNDN);
        mpfr_div(r8215, r8204, r8214, MPFR_RNDN);
        return mpfr_get_d(r8215, MPFR_RNDN);
}

static mpfr_t r8216, r8217, r8218, r8219, r8220, r8221, r8222, r8223, r8224, r8225, r8226, r8227, r8228, r8229, r8230;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8216);
        mpfr_init(r8217);
        mpfr_init(r8218);
        mpfr_init(r8219);
        mpfr_init(r8220);
        mpfr_init(r8221);
        mpfr_init(r8222);
        mpfr_init(r8223);
        mpfr_init(r8224);
        mpfr_init(r8225);
        mpfr_init_set_str(r8226, "3", 10, MPFR_RNDN);
        mpfr_init(r8227);
        mpfr_init(r8228);
        mpfr_init(r8229);
        mpfr_init(r8230);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r8216, r, MPFR_RNDN);
        mpfr_set_d(r8217, b, MPFR_RNDN);
        mpfr_sin(r8218, r8217, MPFR_RNDN);
        mpfr_mul(r8219, r8216, r8218, MPFR_RNDN);
        mpfr_set_d(r8220, a, MPFR_RNDN);
        mpfr_cos(r8221, r8220, MPFR_RNDN);
        mpfr_cos(r8222, r8217, MPFR_RNDN);
        mpfr_mul(r8223, r8221, r8222, MPFR_RNDN);
        mpfr_sin(r8224, r8220, MPFR_RNDN);
        mpfr_mul(r8225, r8218, r8224, MPFR_RNDN);
        ;
        mpfr_pow(r8227, r8225, r8226, MPFR_RNDN);
        mpfr_cbrt(r8228, r8227, MPFR_RNDN);
        mpfr_sub(r8229, r8223, r8228, MPFR_RNDN);
        mpfr_div(r8230, r8219, r8229, MPFR_RNDN);
        return mpfr_get_d(r8230, MPFR_RNDN);
}

