#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 r7608 = r;
        float r7609 = b;
        float r7610 = sin(r7609);
        float r7611 = r7608 * r7610;
        float r7612 = a;
        float r7613 = r7612 + r7609;
        float r7614 = cos(r7613);
        float r7615 = r7611 / r7614;
        return r7615;
}

double f_id(double r, double a, double b) {
        double r7616 = r;
        double r7617 = b;
        double r7618 = sin(r7617);
        double r7619 = r7616 * r7618;
        double r7620 = a;
        double r7621 = r7620 + r7617;
        double r7622 = cos(r7621);
        double r7623 = r7619 / r7622;
        return r7623;
}


double f_of(float r, float a, float b) {
        float r7624 = r;
        float r7625 = b;
        float r7626 = sin(r7625);
        float r7627 = a;
        float r7628 = cos(r7627);
        float r7629 = cos(r7625);
        float r7630 = r7628 * r7629;
        float r7631 = sin(r7627);
        float r7632 = r7631 * r7626;
        float r7633 = r7630 - r7632;
        float r7634 = r7626 / r7633;
        float r7635 = r7624 * r7634;
        return r7635;
}

double f_od(double r, double a, double b) {
        double r7636 = r;
        double r7637 = b;
        double r7638 = sin(r7637);
        double r7639 = a;
        double r7640 = cos(r7639);
        double r7641 = cos(r7637);
        double r7642 = r7640 * r7641;
        double r7643 = sin(r7639);
        double r7644 = r7643 * r7638;
        double r7645 = r7642 - r7644;
        double r7646 = r7638 / r7645;
        double r7647 = r7636 * r7646;
        return r7647;
}

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 r7648, r7649, r7650, r7651, r7652, r7653, r7654, r7655;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7648);
        mpfr_init(r7649);
        mpfr_init(r7650);
        mpfr_init(r7651);
        mpfr_init(r7652);
        mpfr_init(r7653);
        mpfr_init(r7654);
        mpfr_init(r7655);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r7648, r, MPFR_RNDN);
        mpfr_set_d(r7649, b, MPFR_RNDN);
        mpfr_sin(r7650, r7649, MPFR_RNDN);
        mpfr_mul(r7651, r7648, r7650, MPFR_RNDN);
        mpfr_set_d(r7652, a, MPFR_RNDN);
        mpfr_add(r7653, r7652, r7649, MPFR_RNDN);
        mpfr_cos(r7654, r7653, MPFR_RNDN);
        mpfr_div(r7655, r7651, r7654, MPFR_RNDN);
        return mpfr_get_d(r7655, MPFR_RNDN);
}

static mpfr_t r7656, r7657, r7658, r7659, r7660, r7661, r7662, r7663, r7664, r7665, r7666, r7667;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7656);
        mpfr_init(r7657);
        mpfr_init(r7658);
        mpfr_init(r7659);
        mpfr_init(r7660);
        mpfr_init(r7661);
        mpfr_init(r7662);
        mpfr_init(r7663);
        mpfr_init(r7664);
        mpfr_init(r7665);
        mpfr_init(r7666);
        mpfr_init(r7667);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r7656, r, MPFR_RNDN);
        mpfr_set_d(r7657, b, MPFR_RNDN);
        mpfr_sin(r7658, r7657, MPFR_RNDN);
        mpfr_set_d(r7659, a, MPFR_RNDN);
        mpfr_cos(r7660, r7659, MPFR_RNDN);
        mpfr_cos(r7661, r7657, MPFR_RNDN);
        mpfr_mul(r7662, r7660, r7661, MPFR_RNDN);
        mpfr_sin(r7663, r7659, MPFR_RNDN);
        mpfr_mul(r7664, r7663, r7658, MPFR_RNDN);
        mpfr_sub(r7665, r7662, r7664, MPFR_RNDN);
        mpfr_div(r7666, r7658, r7665, MPFR_RNDN);
        mpfr_mul(r7667, r7656, r7666, MPFR_RNDN);
        return mpfr_get_d(r7667, MPFR_RNDN);
}

static mpfr_t r7668, r7669, r7670, r7671, r7672, r7673, r7674, r7675, r7676, r7677, r7678, r7679;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7668);
        mpfr_init(r7669);
        mpfr_init(r7670);
        mpfr_init(r7671);
        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_dm(double r, double a, double b) {
        mpfr_set_d(r7668, r, MPFR_RNDN);
        mpfr_set_d(r7669, b, MPFR_RNDN);
        mpfr_sin(r7670, r7669, MPFR_RNDN);
        mpfr_set_d(r7671, a, MPFR_RNDN);
        mpfr_cos(r7672, r7671, MPFR_RNDN);
        mpfr_cos(r7673, r7669, MPFR_RNDN);
        mpfr_mul(r7674, r7672, r7673, MPFR_RNDN);
        mpfr_sin(r7675, r7671, MPFR_RNDN);
        mpfr_mul(r7676, r7675, r7670, MPFR_RNDN);
        mpfr_sub(r7677, r7674, r7676, MPFR_RNDN);
        mpfr_div(r7678, r7670, r7677, MPFR_RNDN);
        mpfr_mul(r7679, r7668, r7678, MPFR_RNDN);
        return mpfr_get_d(r7679, MPFR_RNDN);
}

