#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 r7634 = r;
        float r7635 = b;
        float r7636 = sin(r7635);
        float r7637 = r7634 * r7636;
        float r7638 = a;
        float r7639 = r7638 + r7635;
        float r7640 = cos(r7639);
        float r7641 = r7637 / r7640;
        return r7641;
}

double f_id(double r, double a, double b) {
        double r7642 = r;
        double r7643 = b;
        double r7644 = sin(r7643);
        double r7645 = r7642 * r7644;
        double r7646 = a;
        double r7647 = r7646 + r7643;
        double r7648 = cos(r7647);
        double r7649 = r7645 / r7648;
        return r7649;
}


double f_of(float r, float a, float b) {
        float r7650 = r;
        float r7651 = b;
        float r7652 = sin(r7651);
        float r7653 = a;
        float r7654 = cos(r7653);
        float r7655 = cos(r7651);
        float r7656 = r7654 * r7655;
        float r7657 = sin(r7653);
        float r7658 = r7657 * r7652;
        float r7659 = r7656 - r7658;
        float r7660 = r7652 / r7659;
        float r7661 = r7650 * r7660;
        return r7661;
}

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

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

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

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

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

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        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(r7690);
        mpfr_init(r7691);
        mpfr_init(r7692);
        mpfr_init(r7693);
}

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

static mpfr_t r7694, r7695, r7696, r7697, r7698, r7699, r7700, r7701, r7702, r7703, r7704, r7705;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7694);
        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(r7705);
}

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

