#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 r19718 = r;
        float r19719 = b;
        float r19720 = sin(r19719);
        float r19721 = r19718 * r19720;
        float r19722 = a;
        float r19723 = r19722 + r19719;
        float r19724 = cos(r19723);
        float r19725 = r19721 / r19724;
        return r19725;
}

double f_id(double r, double a, double b) {
        double r19726 = r;
        double r19727 = b;
        double r19728 = sin(r19727);
        double r19729 = r19726 * r19728;
        double r19730 = a;
        double r19731 = r19730 + r19727;
        double r19732 = cos(r19731);
        double r19733 = r19729 / r19732;
        return r19733;
}


double f_of(float r, float a, float b) {
        float r19734 = r;
        float r19735 = 1;
        float r19736 = r19734 / r19735;
        float r19737 = b;
        float r19738 = cos(r19737);
        float r19739 = sin(r19737);
        float r19740 = r19738 / r19739;
        float r19741 = a;
        float r19742 = cos(r19741);
        float r19743 = r19740 * r19742;
        float r19744 = sin(r19741);
        float r19745 = r19743 - r19744;
        float r19746 = r19735 / r19745;
        float r19747 = r19736 * r19746;
        return r19747;
}

double f_od(double r, double a, double b) {
        double r19748 = r;
        double r19749 = 1;
        double r19750 = r19748 / r19749;
        double r19751 = b;
        double r19752 = cos(r19751);
        double r19753 = sin(r19751);
        double r19754 = r19752 / r19753;
        double r19755 = a;
        double r19756 = cos(r19755);
        double r19757 = r19754 * r19756;
        double r19758 = sin(r19755);
        double r19759 = r19757 - r19758;
        double r19760 = r19749 / r19759;
        double r19761 = r19750 * r19760;
        return r19761;
}

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 r19762, r19763, r19764, r19765, r19766, r19767, r19768, r19769;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19762);
        mpfr_init(r19763);
        mpfr_init(r19764);
        mpfr_init(r19765);
        mpfr_init(r19766);
        mpfr_init(r19767);
        mpfr_init(r19768);
        mpfr_init(r19769);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r19762, r, MPFR_RNDN);
        mpfr_set_d(r19763, b, MPFR_RNDN);
        mpfr_sin(r19764, r19763, MPFR_RNDN);
        mpfr_mul(r19765, r19762, r19764, MPFR_RNDN);
        mpfr_set_d(r19766, a, MPFR_RNDN);
        mpfr_add(r19767, r19766, r19763, MPFR_RNDN);
        mpfr_cos(r19768, r19767, MPFR_RNDN);
        mpfr_div(r19769, r19765, r19768, MPFR_RNDN);
        return mpfr_get_d(r19769, MPFR_RNDN);
}

static mpfr_t r19770, r19771, r19772, r19773, r19774, r19775, r19776, r19777, r19778, r19779, r19780, r19781, r19782, r19783;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19770);
        mpfr_init_set_str(r19771, "1", 10, MPFR_RNDN);
        mpfr_init(r19772);
        mpfr_init(r19773);
        mpfr_init(r19774);
        mpfr_init(r19775);
        mpfr_init(r19776);
        mpfr_init(r19777);
        mpfr_init(r19778);
        mpfr_init(r19779);
        mpfr_init(r19780);
        mpfr_init(r19781);
        mpfr_init(r19782);
        mpfr_init(r19783);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r19770, r, MPFR_RNDN);
        ;
        mpfr_div(r19772, r19770, r19771, MPFR_RNDN);
        mpfr_set_d(r19773, b, MPFR_RNDN);
        mpfr_cos(r19774, r19773, MPFR_RNDN);
        mpfr_sin(r19775, r19773, MPFR_RNDN);
        mpfr_div(r19776, r19774, r19775, MPFR_RNDN);
        mpfr_set_d(r19777, a, MPFR_RNDN);
        mpfr_cos(r19778, r19777, MPFR_RNDN);
        mpfr_mul(r19779, r19776, r19778, MPFR_RNDN);
        mpfr_sin(r19780, r19777, MPFR_RNDN);
        mpfr_sub(r19781, r19779, r19780, MPFR_RNDN);
        mpfr_div(r19782, r19771, r19781, MPFR_RNDN);
        mpfr_mul(r19783, r19772, r19782, MPFR_RNDN);
        return mpfr_get_d(r19783, MPFR_RNDN);
}

static mpfr_t r19784, r19785, r19786, r19787, r19788, r19789, r19790, r19791, r19792, r19793, r19794, r19795, r19796, r19797;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19784);
        mpfr_init_set_str(r19785, "1", 10, MPFR_RNDN);
        mpfr_init(r19786);
        mpfr_init(r19787);
        mpfr_init(r19788);
        mpfr_init(r19789);
        mpfr_init(r19790);
        mpfr_init(r19791);
        mpfr_init(r19792);
        mpfr_init(r19793);
        mpfr_init(r19794);
        mpfr_init(r19795);
        mpfr_init(r19796);
        mpfr_init(r19797);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r19784, r, MPFR_RNDN);
        ;
        mpfr_div(r19786, r19784, r19785, MPFR_RNDN);
        mpfr_set_d(r19787, b, MPFR_RNDN);
        mpfr_cos(r19788, r19787, MPFR_RNDN);
        mpfr_sin(r19789, r19787, MPFR_RNDN);
        mpfr_div(r19790, r19788, r19789, MPFR_RNDN);
        mpfr_set_d(r19791, a, MPFR_RNDN);
        mpfr_cos(r19792, r19791, MPFR_RNDN);
        mpfr_mul(r19793, r19790, r19792, MPFR_RNDN);
        mpfr_sin(r19794, r19791, MPFR_RNDN);
        mpfr_sub(r19795, r19793, r19794, MPFR_RNDN);
        mpfr_div(r19796, r19785, r19795, MPFR_RNDN);
        mpfr_mul(r19797, r19786, r19796, MPFR_RNDN);
        return mpfr_get_d(r19797, MPFR_RNDN);
}

