#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 r8093 = r;
        float r8094 = b;
        float r8095 = sin(r8094);
        float r8096 = a;
        float r8097 = r8096 + r8094;
        float r8098 = cos(r8097);
        float r8099 = r8095 / r8098;
        float r8100 = r8093 * r8099;
        return r8100;
}

double f_id(double r, double a, double b) {
        double r8101 = r;
        double r8102 = b;
        double r8103 = sin(r8102);
        double r8104 = a;
        double r8105 = r8104 + r8102;
        double r8106 = cos(r8105);
        double r8107 = r8103 / r8106;
        double r8108 = r8101 * r8107;
        return r8108;
}


double f_of(float r, float a, float b) {
        float r8109 = r;
        float r8110 = b;
        float r8111 = sin(r8110);
        float r8112 = a;
        float r8113 = cos(r8112);
        float r8114 = cos(r8110);
        float r8115 = r8113 * r8114;
        float r8116 = sin(r8112);
        float r8117 = r8111 * r8116;
        float r8118 = 3;
        float r8119 = pow(r8117, r8118);
        float r8120 = cbrt(r8119);
        float r8121 = r8115 - r8120;
        float r8122 = r8111 / r8121;
        float r8123 = r8109 * r8122;
        return r8123;
}

double f_od(double r, double a, double b) {
        double r8124 = r;
        double r8125 = b;
        double r8126 = sin(r8125);
        double r8127 = a;
        double r8128 = cos(r8127);
        double r8129 = cos(r8125);
        double r8130 = r8128 * r8129;
        double r8131 = sin(r8127);
        double r8132 = r8126 * r8131;
        double r8133 = 3;
        double r8134 = pow(r8132, r8133);
        double r8135 = cbrt(r8134);
        double r8136 = r8130 - r8135;
        double r8137 = r8126 / r8136;
        double r8138 = r8124 * r8137;
        return r8138;
}

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 r8139, r8140, r8141, r8142, r8143, r8144, r8145, r8146;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8139);
        mpfr_init(r8140);
        mpfr_init(r8141);
        mpfr_init(r8142);
        mpfr_init(r8143);
        mpfr_init(r8144);
        mpfr_init(r8145);
        mpfr_init(r8146);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r8139, r, MPFR_RNDN);
        mpfr_set_d(r8140, b, MPFR_RNDN);
        mpfr_sin(r8141, r8140, MPFR_RNDN);
        mpfr_set_d(r8142, a, MPFR_RNDN);
        mpfr_add(r8143, r8142, r8140, MPFR_RNDN);
        mpfr_cos(r8144, r8143, MPFR_RNDN);
        mpfr_div(r8145, r8141, r8144, MPFR_RNDN);
        mpfr_mul(r8146, r8139, r8145, MPFR_RNDN);
        return mpfr_get_d(r8146, MPFR_RNDN);
}

static mpfr_t r8147, r8148, r8149, r8150, r8151, r8152, r8153, r8154, r8155, r8156, r8157, r8158, r8159, r8160, r8161;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8147);
        mpfr_init(r8148);
        mpfr_init(r8149);
        mpfr_init(r8150);
        mpfr_init(r8151);
        mpfr_init(r8152);
        mpfr_init(r8153);
        mpfr_init(r8154);
        mpfr_init(r8155);
        mpfr_init_set_str(r8156, "3", 10, MPFR_RNDN);
        mpfr_init(r8157);
        mpfr_init(r8158);
        mpfr_init(r8159);
        mpfr_init(r8160);
        mpfr_init(r8161);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r8147, r, MPFR_RNDN);
        mpfr_set_d(r8148, b, MPFR_RNDN);
        mpfr_sin(r8149, r8148, MPFR_RNDN);
        mpfr_set_d(r8150, a, MPFR_RNDN);
        mpfr_cos(r8151, r8150, MPFR_RNDN);
        mpfr_cos(r8152, r8148, MPFR_RNDN);
        mpfr_mul(r8153, r8151, r8152, MPFR_RNDN);
        mpfr_sin(r8154, r8150, MPFR_RNDN);
        mpfr_mul(r8155, r8149, r8154, MPFR_RNDN);
        ;
        mpfr_pow(r8157, r8155, r8156, MPFR_RNDN);
        mpfr_cbrt(r8158, r8157, MPFR_RNDN);
        mpfr_sub(r8159, r8153, r8158, MPFR_RNDN);
        mpfr_div(r8160, r8149, r8159, MPFR_RNDN);
        mpfr_mul(r8161, r8147, r8160, MPFR_RNDN);
        return mpfr_get_d(r8161, MPFR_RNDN);
}

static mpfr_t r8162, r8163, r8164, r8165, r8166, r8167, r8168, r8169, r8170, r8171, r8172, r8173, r8174, r8175, r8176;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8162);
        mpfr_init(r8163);
        mpfr_init(r8164);
        mpfr_init(r8165);
        mpfr_init(r8166);
        mpfr_init(r8167);
        mpfr_init(r8168);
        mpfr_init(r8169);
        mpfr_init(r8170);
        mpfr_init_set_str(r8171, "3", 10, MPFR_RNDN);
        mpfr_init(r8172);
        mpfr_init(r8173);
        mpfr_init(r8174);
        mpfr_init(r8175);
        mpfr_init(r8176);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r8162, r, MPFR_RNDN);
        mpfr_set_d(r8163, b, MPFR_RNDN);
        mpfr_sin(r8164, r8163, MPFR_RNDN);
        mpfr_set_d(r8165, a, MPFR_RNDN);
        mpfr_cos(r8166, r8165, MPFR_RNDN);
        mpfr_cos(r8167, r8163, MPFR_RNDN);
        mpfr_mul(r8168, r8166, r8167, MPFR_RNDN);
        mpfr_sin(r8169, r8165, MPFR_RNDN);
        mpfr_mul(r8170, r8164, r8169, MPFR_RNDN);
        ;
        mpfr_pow(r8172, r8170, r8171, MPFR_RNDN);
        mpfr_cbrt(r8173, r8172, MPFR_RNDN);
        mpfr_sub(r8174, r8168, r8173, MPFR_RNDN);
        mpfr_div(r8175, r8164, r8174, MPFR_RNDN);
        mpfr_mul(r8176, r8162, r8175, MPFR_RNDN);
        return mpfr_get_d(r8176, MPFR_RNDN);
}

