#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 r7626 = r;
        float r7627 = b;
        float r7628 = sin(r7627);
        float r7629 = r7626 * r7628;
        float r7630 = a;
        float r7631 = r7630 + r7627;
        float r7632 = cos(r7631);
        float r7633 = r7629 / r7632;
        return r7633;
}

double f_id(double r, double a, double b) {
        double r7634 = r;
        double r7635 = b;
        double r7636 = sin(r7635);
        double r7637 = r7634 * r7636;
        double r7638 = a;
        double r7639 = r7638 + r7635;
        double r7640 = cos(r7639);
        double r7641 = r7637 / r7640;
        return r7641;
}


double f_of(float r, float a, float b) {
        float r7642 = r;
        float r7643 = b;
        float r7644 = sin(r7643);
        float r7645 = r7642 * r7644;
        float r7646 = a;
        float r7647 = cos(r7646);
        float r7648 = cos(r7643);
        float r7649 = r7647 * r7648;
        float r7650 = sin(r7646);
        float r7651 = r7644 * r7650;
        float r7652 = 3.0f;
        float r7653 = pow(r7651, r7652);
        float r7654 = cbrt(r7653);
        float r7655 = r7649 - r7654;
        float r7656 = r7645 / r7655;
        return r7656;
}

double f_od(double r, double a, double b) {
        double r7657 = r;
        double r7658 = b;
        double r7659 = sin(r7658);
        double r7660 = r7657 * r7659;
        double r7661 = a;
        double r7662 = cos(r7661);
        double r7663 = cos(r7658);
        double r7664 = r7662 * r7663;
        double r7665 = sin(r7661);
        double r7666 = r7659 * r7665;
        double r7667 = 3.0;
        double r7668 = pow(r7666, r7667);
        double r7669 = cbrt(r7668);
        double r7670 = r7664 - r7669;
        double r7671 = r7660 / r7670;
        return r7671;
}

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 r7672, r7673, r7674, r7675, r7676, r7677, r7678, r7679;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7672);
        mpfr_init(r7673);
        mpfr_init(r7674);
        mpfr_init(r7675);
        mpfr_init(r7676);
        mpfr_init(r7677);
        mpfr_init(r7678);
        mpfr_init(r7679);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r7672, r, MPFR_RNDN);
        mpfr_set_d(r7673, b, MPFR_RNDN);
        mpfr_sin(r7674, r7673, MPFR_RNDN);
        mpfr_mul(r7675, r7672, r7674, MPFR_RNDN);
        mpfr_set_d(r7676, a, MPFR_RNDN);
        mpfr_add(r7677, r7676, r7673, MPFR_RNDN);
        mpfr_cos(r7678, r7677, MPFR_RNDN);
        mpfr_div(r7679, r7675, r7678, MPFR_RNDN);
        return mpfr_get_d(r7679, MPFR_RNDN);
}

static mpfr_t r7680, r7681, r7682, r7683, r7684, r7685, r7686, r7687, r7688, r7689, r7690, r7691, r7692, r7693, r7694;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7680);
        mpfr_init(r7681);
        mpfr_init(r7682);
        mpfr_init(r7683);
        mpfr_init(r7684);
        mpfr_init(r7685);
        mpfr_init(r7686);
        mpfr_init(r7687);
        mpfr_init(r7688);
        mpfr_init(r7689);
        mpfr_init_set_str(r7690, "3", 10, MPFR_RNDN);
        mpfr_init(r7691);
        mpfr_init(r7692);
        mpfr_init(r7693);
        mpfr_init(r7694);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r7680, r, MPFR_RNDN);
        mpfr_set_d(r7681, b, MPFR_RNDN);
        mpfr_sin(r7682, r7681, MPFR_RNDN);
        mpfr_mul(r7683, r7680, r7682, MPFR_RNDN);
        mpfr_set_d(r7684, a, MPFR_RNDN);
        mpfr_cos(r7685, r7684, MPFR_RNDN);
        mpfr_cos(r7686, r7681, MPFR_RNDN);
        mpfr_mul(r7687, r7685, r7686, MPFR_RNDN);
        mpfr_sin(r7688, r7684, MPFR_RNDN);
        mpfr_mul(r7689, r7682, r7688, MPFR_RNDN);
        ;
        mpfr_pow(r7691, r7689, r7690, MPFR_RNDN);
        mpfr_cbrt(r7692, r7691, MPFR_RNDN);
        mpfr_sub(r7693, r7687, r7692, MPFR_RNDN);
        mpfr_div(r7694, r7683, r7693, MPFR_RNDN);
        return mpfr_get_d(r7694, MPFR_RNDN);
}

static mpfr_t r7695, r7696, r7697, r7698, r7699, r7700, r7701, r7702, r7703, r7704, r7705, r7706, r7707, r7708, r7709;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7695);
        mpfr_init(r7696);
        mpfr_init(r7697);
        mpfr_init(r7698);
        mpfr_init(r7699);
        mpfr_init(r7700);
        mpfr_init(r7701);
        mpfr_init(r7702);
        mpfr_init(r7703);
        mpfr_init(r7704);
        mpfr_init_set_str(r7705, "3", 10, MPFR_RNDN);
        mpfr_init(r7706);
        mpfr_init(r7707);
        mpfr_init(r7708);
        mpfr_init(r7709);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r7695, r, MPFR_RNDN);
        mpfr_set_d(r7696, b, MPFR_RNDN);
        mpfr_sin(r7697, r7696, MPFR_RNDN);
        mpfr_mul(r7698, r7695, r7697, MPFR_RNDN);
        mpfr_set_d(r7699, a, MPFR_RNDN);
        mpfr_cos(r7700, r7699, MPFR_RNDN);
        mpfr_cos(r7701, r7696, MPFR_RNDN);
        mpfr_mul(r7702, r7700, r7701, MPFR_RNDN);
        mpfr_sin(r7703, r7699, MPFR_RNDN);
        mpfr_mul(r7704, r7697, r7703, MPFR_RNDN);
        ;
        mpfr_pow(r7706, r7704, r7705, MPFR_RNDN);
        mpfr_cbrt(r7707, r7706, MPFR_RNDN);
        mpfr_sub(r7708, r7702, r7707, MPFR_RNDN);
        mpfr_div(r7709, r7698, r7708, MPFR_RNDN);
        return mpfr_get_d(r7709, MPFR_RNDN);
}

