#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 r18190 = r;
        float r18191 = b;
        float r18192 = sin(r18191);
        float r18193 = r18190 * r18192;
        float r18194 = a;
        float r18195 = r18194 + r18191;
        float r18196 = cos(r18195);
        float r18197 = r18193 / r18196;
        return r18197;
}

double f_id(double r, double a, double b) {
        double r18198 = r;
        double r18199 = b;
        double r18200 = sin(r18199);
        double r18201 = r18198 * r18200;
        double r18202 = a;
        double r18203 = r18202 + r18199;
        double r18204 = cos(r18203);
        double r18205 = r18201 / r18204;
        return r18205;
}


double f_of(float r, float a, float b) {
        float r18206 = r;
        float r18207 = b;
        float r18208 = sin(r18207);
        float r18209 = r18206 * r18208;
        float r18210 = 1.0f;
        float r18211 = a;
        float r18212 = cos(r18211);
        float r18213 = cos(r18207);
        float r18214 = r18212 * r18213;
        float r18215 = sin(r18211);
        float r18216 = r18215 * r18208;
        float r18217 = r18214 - r18216;
        float r18218 = r18210 / r18217;
        float r18219 = r18209 * r18218;
        return r18219;
}

double f_od(double r, double a, double b) {
        double r18220 = r;
        double r18221 = b;
        double r18222 = sin(r18221);
        double r18223 = r18220 * r18222;
        double r18224 = 1.0;
        double r18225 = a;
        double r18226 = cos(r18225);
        double r18227 = cos(r18221);
        double r18228 = r18226 * r18227;
        double r18229 = sin(r18225);
        double r18230 = r18229 * r18222;
        double r18231 = r18228 - r18230;
        double r18232 = r18224 / r18231;
        double r18233 = r18223 * r18232;
        return r18233;
}

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 r18234, r18235, r18236, r18237, r18238, r18239, r18240, r18241;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r18234);
        mpfr_init(r18235);
        mpfr_init(r18236);
        mpfr_init(r18237);
        mpfr_init(r18238);
        mpfr_init(r18239);
        mpfr_init(r18240);
        mpfr_init(r18241);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r18234, r, MPFR_RNDN);
        mpfr_set_d(r18235, b, MPFR_RNDN);
        mpfr_sin(r18236, r18235, MPFR_RNDN);
        mpfr_mul(r18237, r18234, r18236, MPFR_RNDN);
        mpfr_set_d(r18238, a, MPFR_RNDN);
        mpfr_add(r18239, r18238, r18235, MPFR_RNDN);
        mpfr_cos(r18240, r18239, MPFR_RNDN);
        mpfr_div(r18241, r18237, r18240, MPFR_RNDN);
        return mpfr_get_d(r18241, MPFR_RNDN);
}

static mpfr_t r18242, r18243, r18244, r18245, r18246, r18247, r18248, r18249, r18250, r18251, r18252, r18253, r18254, r18255;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r18242);
        mpfr_init(r18243);
        mpfr_init(r18244);
        mpfr_init(r18245);
        mpfr_init_set_str(r18246, "1", 10, MPFR_RNDN);
        mpfr_init(r18247);
        mpfr_init(r18248);
        mpfr_init(r18249);
        mpfr_init(r18250);
        mpfr_init(r18251);
        mpfr_init(r18252);
        mpfr_init(r18253);
        mpfr_init(r18254);
        mpfr_init(r18255);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r18242, r, MPFR_RNDN);
        mpfr_set_d(r18243, b, MPFR_RNDN);
        mpfr_sin(r18244, r18243, MPFR_RNDN);
        mpfr_mul(r18245, r18242, r18244, MPFR_RNDN);
        ;
        mpfr_set_d(r18247, a, MPFR_RNDN);
        mpfr_cos(r18248, r18247, MPFR_RNDN);
        mpfr_cos(r18249, r18243, MPFR_RNDN);
        mpfr_mul(r18250, r18248, r18249, MPFR_RNDN);
        mpfr_sin(r18251, r18247, MPFR_RNDN);
        mpfr_mul(r18252, r18251, r18244, MPFR_RNDN);
        mpfr_sub(r18253, r18250, r18252, MPFR_RNDN);
        mpfr_div(r18254, r18246, r18253, MPFR_RNDN);
        mpfr_mul(r18255, r18245, r18254, MPFR_RNDN);
        return mpfr_get_d(r18255, MPFR_RNDN);
}

static mpfr_t r18256, r18257, r18258, r18259, r18260, r18261, r18262, r18263, r18264, r18265, r18266, r18267, r18268, r18269;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r18256);
        mpfr_init(r18257);
        mpfr_init(r18258);
        mpfr_init(r18259);
        mpfr_init_set_str(r18260, "1", 10, MPFR_RNDN);
        mpfr_init(r18261);
        mpfr_init(r18262);
        mpfr_init(r18263);
        mpfr_init(r18264);
        mpfr_init(r18265);
        mpfr_init(r18266);
        mpfr_init(r18267);
        mpfr_init(r18268);
        mpfr_init(r18269);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r18256, r, MPFR_RNDN);
        mpfr_set_d(r18257, b, MPFR_RNDN);
        mpfr_sin(r18258, r18257, MPFR_RNDN);
        mpfr_mul(r18259, r18256, r18258, MPFR_RNDN);
        ;
        mpfr_set_d(r18261, a, MPFR_RNDN);
        mpfr_cos(r18262, r18261, MPFR_RNDN);
        mpfr_cos(r18263, r18257, MPFR_RNDN);
        mpfr_mul(r18264, r18262, r18263, MPFR_RNDN);
        mpfr_sin(r18265, r18261, MPFR_RNDN);
        mpfr_mul(r18266, r18265, r18258, MPFR_RNDN);
        mpfr_sub(r18267, r18264, r18266, MPFR_RNDN);
        mpfr_div(r18268, r18260, r18267, MPFR_RNDN);
        mpfr_mul(r18269, r18259, r18268, MPFR_RNDN);
        return mpfr_get_d(r18269, MPFR_RNDN);
}

