#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 r7877 = r;
        float r7878 = b;
        float r7879 = sin(r7878);
        float r7880 = a;
        float r7881 = r7880 + r7878;
        float r7882 = cos(r7881);
        float r7883 = r7879 / r7882;
        float r7884 = r7877 * r7883;
        return r7884;
}

double f_id(double r, double a, double b) {
        double r7885 = r;
        double r7886 = b;
        double r7887 = sin(r7886);
        double r7888 = a;
        double r7889 = r7888 + r7886;
        double r7890 = cos(r7889);
        double r7891 = r7887 / r7890;
        double r7892 = r7885 * r7891;
        return r7892;
}


double f_of(float r, float a, float b) {
        float r7893 = r;
        float r7894 = 1;
        float r7895 = a;
        float r7896 = cos(r7895);
        float r7897 = b;
        float r7898 = sin(r7897);
        float r7899 = r7896 / r7898;
        float r7900 = cos(r7897);
        float r7901 = sin(r7895);
        float r7902 = -r7901;
        float r7903 = fma(r7899, r7900, r7902);
        float r7904 = r7894 / r7903;
        float r7905 = r7893 * r7904;
        return r7905;
}

double f_od(double r, double a, double b) {
        double r7906 = r;
        double r7907 = 1;
        double r7908 = a;
        double r7909 = cos(r7908);
        double r7910 = b;
        double r7911 = sin(r7910);
        double r7912 = r7909 / r7911;
        double r7913 = cos(r7910);
        double r7914 = sin(r7908);
        double r7915 = -r7914;
        double r7916 = fma(r7912, r7913, r7915);
        double r7917 = r7907 / r7916;
        double r7918 = r7906 * r7917;
        return r7918;
}

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 r7919, r7920, r7921, r7922, r7923, r7924, r7925, r7926;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7919);
        mpfr_init(r7920);
        mpfr_init(r7921);
        mpfr_init(r7922);
        mpfr_init(r7923);
        mpfr_init(r7924);
        mpfr_init(r7925);
        mpfr_init(r7926);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r7919, r, MPFR_RNDN);
        mpfr_set_d(r7920, b, MPFR_RNDN);
        mpfr_sin(r7921, r7920, MPFR_RNDN);
        mpfr_set_d(r7922, a, MPFR_RNDN);
        mpfr_add(r7923, r7922, r7920, MPFR_RNDN);
        mpfr_cos(r7924, r7923, MPFR_RNDN);
        mpfr_div(r7925, r7921, r7924, MPFR_RNDN);
        mpfr_mul(r7926, r7919, r7925, MPFR_RNDN);
        return mpfr_get_d(r7926, MPFR_RNDN);
}

static mpfr_t r7927, r7928, r7929, r7930, r7931, r7932, r7933, r7934, r7935, r7936, r7937, r7938, r7939;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7927);
        mpfr_init_set_str(r7928, "1", 10, MPFR_RNDN);
        mpfr_init(r7929);
        mpfr_init(r7930);
        mpfr_init(r7931);
        mpfr_init(r7932);
        mpfr_init(r7933);
        mpfr_init(r7934);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init(r7939);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r7927, r, MPFR_RNDN);
        ;
        mpfr_set_d(r7929, a, MPFR_RNDN);
        mpfr_cos(r7930, r7929, MPFR_RNDN);
        mpfr_set_d(r7931, b, MPFR_RNDN);
        mpfr_sin(r7932, r7931, MPFR_RNDN);
        mpfr_div(r7933, r7930, r7932, MPFR_RNDN);
        mpfr_cos(r7934, r7931, MPFR_RNDN);
        mpfr_sin(r7935, r7929, MPFR_RNDN);
        mpfr_neg(r7936, r7935, MPFR_RNDN);
        mpfr_fma(r7937, r7933, r7934, r7936, MPFR_RNDN);
        mpfr_div(r7938, r7928, r7937, MPFR_RNDN);
        mpfr_mul(r7939, r7927, r7938, MPFR_RNDN);
        return mpfr_get_d(r7939, MPFR_RNDN);
}

static mpfr_t r7940, r7941, r7942, r7943, r7944, r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7940);
        mpfr_init_set_str(r7941, "1", 10, MPFR_RNDN);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r7940, r, MPFR_RNDN);
        ;
        mpfr_set_d(r7942, a, MPFR_RNDN);
        mpfr_cos(r7943, r7942, MPFR_RNDN);
        mpfr_set_d(r7944, b, MPFR_RNDN);
        mpfr_sin(r7945, r7944, MPFR_RNDN);
        mpfr_div(r7946, r7943, r7945, MPFR_RNDN);
        mpfr_cos(r7947, r7944, MPFR_RNDN);
        mpfr_sin(r7948, r7942, MPFR_RNDN);
        mpfr_neg(r7949, r7948, MPFR_RNDN);
        mpfr_fma(r7950, r7946, r7947, r7949, MPFR_RNDN);
        mpfr_div(r7951, r7941, r7950, MPFR_RNDN);
        mpfr_mul(r7952, r7940, r7951, MPFR_RNDN);
        return mpfr_get_d(r7952, MPFR_RNDN);
}

