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

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

double f_if(float r, float a, float b) {
        float r8063 = r;
        float r8064 = b;
        float r8065 = sin(r8064);
        float r8066 = a;
        float r8067 = r8066 + r8064;
        float r8068 = cos(r8067);
        float r8069 = r8065 / r8068;
        float r8070 = r8063 * r8069;
        return r8070;
}

double f_id(double r, double a, double b) {
        double r8071 = r;
        double r8072 = b;
        double r8073 = sin(r8072);
        double r8074 = a;
        double r8075 = r8074 + r8072;
        double r8076 = cos(r8075);
        double r8077 = r8073 / r8076;
        double r8078 = r8071 * r8077;
        return r8078;
}


double f_of(float r, float a, float b) {
        float r8079 = r;
        float r8080 = b;
        float r8081 = sin(r8080);
        float r8082 = a;
        float r8083 = cos(r8082);
        float r8084 = cos(r8080);
        float r8085 = r8083 * r8084;
        float r8086 = sin(r8082);
        float r8087 = r8081 * r8086;
        float r8088 = 3;
        float r8089 = pow(r8087, r8088);
        float r8090 = cbrt(r8089);
        float r8091 = r8085 - r8090;
        float r8092 = r8081 / r8091;
        float r8093 = r8079 * r8092;
        return r8093;
}

double f_od(double r, double a, double b) {
        double r8094 = r;
        double r8095 = b;
        double r8096 = sin(r8095);
        double r8097 = a;
        double r8098 = cos(r8097);
        double r8099 = cos(r8095);
        double r8100 = r8098 * r8099;
        double r8101 = sin(r8097);
        double r8102 = r8096 * r8101;
        double r8103 = 3;
        double r8104 = pow(r8102, r8103);
        double r8105 = cbrt(r8104);
        double r8106 = r8100 - r8105;
        double r8107 = r8096 / r8106;
        double r8108 = r8094 * r8107;
        return r8108;
}

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 r8109, r8110, r8111, r8112, r8113, r8114, r8115, r8116;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8109);
        mpfr_init(r8110);
        mpfr_init(r8111);
        mpfr_init(r8112);
        mpfr_init(r8113);
        mpfr_init(r8114);
        mpfr_init(r8115);
        mpfr_init(r8116);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r8109, r, MPFR_RNDN);
        mpfr_set_d(r8110, b, MPFR_RNDN);
        mpfr_sin(r8111, r8110, MPFR_RNDN);
        mpfr_set_d(r8112, a, MPFR_RNDN);
        mpfr_add(r8113, r8112, r8110, MPFR_RNDN);
        mpfr_cos(r8114, r8113, MPFR_RNDN);
        mpfr_div(r8115, r8111, r8114, MPFR_RNDN);
        mpfr_mul(r8116, r8109, r8115, MPFR_RNDN);
        return mpfr_get_d(r8116, MPFR_RNDN);
}

static mpfr_t r8117, r8118, r8119, r8120, r8121, r8122, r8123, r8124, r8125, r8126, r8127, r8128, r8129, r8130, r8131;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8117);
        mpfr_init(r8118);
        mpfr_init(r8119);
        mpfr_init(r8120);
        mpfr_init(r8121);
        mpfr_init(r8122);
        mpfr_init(r8123);
        mpfr_init(r8124);
        mpfr_init(r8125);
        mpfr_init_set_str(r8126, "3", 10, MPFR_RNDN);
        mpfr_init(r8127);
        mpfr_init(r8128);
        mpfr_init(r8129);
        mpfr_init(r8130);
        mpfr_init(r8131);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r8117, r, MPFR_RNDN);
        mpfr_set_d(r8118, b, MPFR_RNDN);
        mpfr_sin(r8119, r8118, MPFR_RNDN);
        mpfr_set_d(r8120, a, MPFR_RNDN);
        mpfr_cos(r8121, r8120, MPFR_RNDN);
        mpfr_cos(r8122, r8118, MPFR_RNDN);
        mpfr_mul(r8123, r8121, r8122, MPFR_RNDN);
        mpfr_sin(r8124, r8120, MPFR_RNDN);
        mpfr_mul(r8125, r8119, r8124, MPFR_RNDN);
        ;
        mpfr_pow(r8127, r8125, r8126, MPFR_RNDN);
        mpfr_cbrt(r8128, r8127, MPFR_RNDN);
        mpfr_sub(r8129, r8123, r8128, MPFR_RNDN);
        mpfr_div(r8130, r8119, r8129, MPFR_RNDN);
        mpfr_mul(r8131, r8117, r8130, MPFR_RNDN);
        return mpfr_get_d(r8131, MPFR_RNDN);
}

static mpfr_t r8132, r8133, r8134, r8135, r8136, r8137, r8138, r8139, r8140, r8141, r8142, r8143, r8144, r8145, r8146;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8132);
        mpfr_init(r8133);
        mpfr_init(r8134);
        mpfr_init(r8135);
        mpfr_init(r8136);
        mpfr_init(r8137);
        mpfr_init(r8138);
        mpfr_init(r8139);
        mpfr_init(r8140);
        mpfr_init_set_str(r8141, "3", 10, MPFR_RNDN);
        mpfr_init(r8142);
        mpfr_init(r8143);
        mpfr_init(r8144);
        mpfr_init(r8145);
        mpfr_init(r8146);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r8132, r, MPFR_RNDN);
        mpfr_set_d(r8133, b, MPFR_RNDN);
        mpfr_sin(r8134, r8133, MPFR_RNDN);
        mpfr_set_d(r8135, a, MPFR_RNDN);
        mpfr_cos(r8136, r8135, MPFR_RNDN);
        mpfr_cos(r8137, r8133, MPFR_RNDN);
        mpfr_mul(r8138, r8136, r8137, MPFR_RNDN);
        mpfr_sin(r8139, r8135, MPFR_RNDN);
        mpfr_mul(r8140, r8134, r8139, MPFR_RNDN);
        ;
        mpfr_pow(r8142, r8140, r8141, MPFR_RNDN);
        mpfr_cbrt(r8143, r8142, MPFR_RNDN);
        mpfr_sub(r8144, r8138, r8143, MPFR_RNDN);
        mpfr_div(r8145, r8134, r8144, MPFR_RNDN);
        mpfr_mul(r8146, r8132, r8145, MPFR_RNDN);
        return mpfr_get_d(r8146, MPFR_RNDN);
}

