#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "r*sin(b)/cos(a+b), B";

double f_if(float r, float a, float b) {
        float r19787 = r;
        float r19788 = b;
        float r19789 = sin(r19788);
        float r19790 = a;
        float r19791 = r19790 + r19788;
        float r19792 = cos(r19791);
        float r19793 = r19789 / r19792;
        float r19794 = r19787 * r19793;
        return r19794;
}

double f_id(double r, double a, double b) {
        double r19795 = r;
        double r19796 = b;
        double r19797 = sin(r19796);
        double r19798 = a;
        double r19799 = r19798 + r19796;
        double r19800 = cos(r19799);
        double r19801 = r19797 / r19800;
        double r19802 = r19795 * r19801;
        return r19802;
}


double f_of(float r, float a, float b) {
        float r19803 = r;
        float r19804 = b;
        float r19805 = sin(r19804);
        float r19806 = r19803 * r19805;
        float r19807 = 1;
        float r19808 = a;
        float r19809 = cos(r19808);
        float r19810 = cos(r19804);
        float r19811 = r19809 * r19810;
        float r19812 = sin(r19808);
        float r19813 = r19812 * r19805;
        float r19814 = r19811 - r19813;
        float r19815 = r19807 / r19814;
        float r19816 = r19806 * r19815;
        return r19816;
}

double f_od(double r, double a, double b) {
        double r19817 = r;
        double r19818 = b;
        double r19819 = sin(r19818);
        double r19820 = r19817 * r19819;
        double r19821 = 1;
        double r19822 = a;
        double r19823 = cos(r19822);
        double r19824 = cos(r19818);
        double r19825 = r19823 * r19824;
        double r19826 = sin(r19822);
        double r19827 = r19826 * r19819;
        double r19828 = r19825 - r19827;
        double r19829 = r19821 / r19828;
        double r19830 = r19820 * r19829;
        return r19830;
}

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 r19831, r19832, r19833, r19834, r19835, r19836, r19837, r19838;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19831);
        mpfr_init(r19832);
        mpfr_init(r19833);
        mpfr_init(r19834);
        mpfr_init(r19835);
        mpfr_init(r19836);
        mpfr_init(r19837);
        mpfr_init(r19838);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r19831, r, MPFR_RNDN);
        mpfr_set_d(r19832, b, MPFR_RNDN);
        mpfr_sin(r19833, r19832, MPFR_RNDN);
        mpfr_set_d(r19834, a, MPFR_RNDN);
        mpfr_add(r19835, r19834, r19832, MPFR_RNDN);
        mpfr_cos(r19836, r19835, MPFR_RNDN);
        mpfr_div(r19837, r19833, r19836, MPFR_RNDN);
        mpfr_mul(r19838, r19831, r19837, MPFR_RNDN);
        return mpfr_get_d(r19838, MPFR_RNDN);
}

static mpfr_t r19839, r19840, r19841, r19842, r19843, r19844, r19845, r19846, r19847, r19848, r19849, r19850, r19851, r19852;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19839);
        mpfr_init(r19840);
        mpfr_init(r19841);
        mpfr_init(r19842);
        mpfr_init_set_str(r19843, "1", 10, MPFR_RNDN);
        mpfr_init(r19844);
        mpfr_init(r19845);
        mpfr_init(r19846);
        mpfr_init(r19847);
        mpfr_init(r19848);
        mpfr_init(r19849);
        mpfr_init(r19850);
        mpfr_init(r19851);
        mpfr_init(r19852);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r19839, r, MPFR_RNDN);
        mpfr_set_d(r19840, b, MPFR_RNDN);
        mpfr_sin(r19841, r19840, MPFR_RNDN);
        mpfr_mul(r19842, r19839, r19841, MPFR_RNDN);
        ;
        mpfr_set_d(r19844, a, MPFR_RNDN);
        mpfr_cos(r19845, r19844, MPFR_RNDN);
        mpfr_cos(r19846, r19840, MPFR_RNDN);
        mpfr_mul(r19847, r19845, r19846, MPFR_RNDN);
        mpfr_sin(r19848, r19844, MPFR_RNDN);
        mpfr_mul(r19849, r19848, r19841, MPFR_RNDN);
        mpfr_sub(r19850, r19847, r19849, MPFR_RNDN);
        mpfr_div(r19851, r19843, r19850, MPFR_RNDN);
        mpfr_mul(r19852, r19842, r19851, MPFR_RNDN);
        return mpfr_get_d(r19852, MPFR_RNDN);
}

static mpfr_t r19853, r19854, r19855, r19856, r19857, r19858, r19859, r19860, r19861, r19862, r19863, r19864, r19865, r19866;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r19853);
        mpfr_init(r19854);
        mpfr_init(r19855);
        mpfr_init(r19856);
        mpfr_init_set_str(r19857, "1", 10, MPFR_RNDN);
        mpfr_init(r19858);
        mpfr_init(r19859);
        mpfr_init(r19860);
        mpfr_init(r19861);
        mpfr_init(r19862);
        mpfr_init(r19863);
        mpfr_init(r19864);
        mpfr_init(r19865);
        mpfr_init(r19866);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r19853, r, MPFR_RNDN);
        mpfr_set_d(r19854, b, MPFR_RNDN);
        mpfr_sin(r19855, r19854, MPFR_RNDN);
        mpfr_mul(r19856, r19853, r19855, MPFR_RNDN);
        ;
        mpfr_set_d(r19858, a, MPFR_RNDN);
        mpfr_cos(r19859, r19858, MPFR_RNDN);
        mpfr_cos(r19860, r19854, MPFR_RNDN);
        mpfr_mul(r19861, r19859, r19860, MPFR_RNDN);
        mpfr_sin(r19862, r19858, MPFR_RNDN);
        mpfr_mul(r19863, r19862, r19855, MPFR_RNDN);
        mpfr_sub(r19864, r19861, r19863, MPFR_RNDN);
        mpfr_div(r19865, r19857, r19864, MPFR_RNDN);
        mpfr_mul(r19866, r19856, r19865, MPFR_RNDN);
        return mpfr_get_d(r19866, MPFR_RNDN);
}

