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

double f_id(double r, double a, double b) {
        double r7637 = r;
        double r7638 = b;
        double r7639 = sin(r7638);
        double r7640 = r7637 * r7639;
        double r7641 = a;
        double r7642 = r7641 + r7638;
        double r7643 = cos(r7642);
        double r7644 = r7640 / r7643;
        return r7644;
}


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

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

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 r7675, r7676, r7677, r7678, r7679, r7680, r7681, r7682;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7675);
        mpfr_init(r7676);
        mpfr_init(r7677);
        mpfr_init(r7678);
        mpfr_init(r7679);
        mpfr_init(r7680);
        mpfr_init(r7681);
        mpfr_init(r7682);
}

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

static mpfr_t r7683, r7684, r7685, r7686, r7687, r7688, r7689, r7690, r7691, r7692, r7693, r7694, r7695, r7696, r7697;

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

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

static mpfr_t r7698, r7699, r7700, r7701, r7702, r7703, r7704, r7705, r7706, r7707, r7708, r7709, r7710, r7711, r7712;

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

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

