#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 = b;
        float r7895 = sin(r7894);
        float r7896 = a;
        float r7897 = cos(r7896);
        float r7898 = 2;
        float r7899 = pow(r7897, r7898);
        float r7900 = cos(r7894);
        float r7901 = pow(r7900, r7898);
        float r7902 = r7899 * r7901;
        float r7903 = pow(r7895, r7898);
        float r7904 = sin(r7896);
        float r7905 = pow(r7904, r7898);
        float r7906 = r7903 * r7905;
        float r7907 = r7902 - r7906;
        float r7908 = r7895 / r7907;
        float r7909 = r7893 * r7908;
        float r7910 = r7897 * r7900;
        float r7911 = r7904 * r7895;
        float r7912 = r7910 + r7911;
        float r7913 = r7909 * r7912;
        return r7913;
}

double f_od(double r, double a, double b) {
        double r7914 = r;
        double r7915 = b;
        double r7916 = sin(r7915);
        double r7917 = a;
        double r7918 = cos(r7917);
        double r7919 = 2;
        double r7920 = pow(r7918, r7919);
        double r7921 = cos(r7915);
        double r7922 = pow(r7921, r7919);
        double r7923 = r7920 * r7922;
        double r7924 = pow(r7916, r7919);
        double r7925 = sin(r7917);
        double r7926 = pow(r7925, r7919);
        double r7927 = r7924 * r7926;
        double r7928 = r7923 - r7927;
        double r7929 = r7916 / r7928;
        double r7930 = r7914 * r7929;
        double r7931 = r7918 * r7921;
        double r7932 = r7925 * r7916;
        double r7933 = r7931 + r7932;
        double r7934 = r7930 * r7933;
        return r7934;
}

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 r7935, r7936, r7937, r7938, r7939, r7940, r7941, r7942;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init(r7939);
        mpfr_init(r7940);
        mpfr_init(r7941);
        mpfr_init(r7942);
}

double f_im(double r, double a, double b) {
        mpfr_set_d(r7935, r, MPFR_RNDN);
        mpfr_set_d(r7936, b, MPFR_RNDN);
        mpfr_sin(r7937, r7936, MPFR_RNDN);
        mpfr_set_d(r7938, a, MPFR_RNDN);
        mpfr_add(r7939, r7938, r7936, MPFR_RNDN);
        mpfr_cos(r7940, r7939, MPFR_RNDN);
        mpfr_div(r7941, r7937, r7940, MPFR_RNDN);
        mpfr_mul(r7942, r7935, r7941, MPFR_RNDN);
        return mpfr_get_d(r7942, MPFR_RNDN);
}

static mpfr_t r7943, r7944, r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960, r7961, r7962, r7963;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7943);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init_set_str(r7948, "2", 10, MPFR_RNDN);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
        mpfr_init(r7954);
        mpfr_init(r7955);
        mpfr_init(r7956);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init(r7960);
        mpfr_init(r7961);
        mpfr_init(r7962);
        mpfr_init(r7963);
}

double f_fm(double r, double a, double b) {
        mpfr_set_d(r7943, r, MPFR_RNDN);
        mpfr_set_d(r7944, b, MPFR_RNDN);
        mpfr_sin(r7945, r7944, MPFR_RNDN);
        mpfr_set_d(r7946, a, MPFR_RNDN);
        mpfr_cos(r7947, r7946, MPFR_RNDN);
        ;
        mpfr_pow(r7949, r7947, r7948, MPFR_RNDN);
        mpfr_cos(r7950, r7944, MPFR_RNDN);
        mpfr_pow(r7951, r7950, r7948, MPFR_RNDN);
        mpfr_mul(r7952, r7949, r7951, MPFR_RNDN);
        mpfr_pow(r7953, r7945, r7948, MPFR_RNDN);
        mpfr_sin(r7954, r7946, MPFR_RNDN);
        mpfr_pow(r7955, r7954, r7948, MPFR_RNDN);
        mpfr_mul(r7956, r7953, r7955, MPFR_RNDN);
        mpfr_sub(r7957, r7952, r7956, MPFR_RNDN);
        mpfr_div(r7958, r7945, r7957, MPFR_RNDN);
        mpfr_mul(r7959, r7943, r7958, MPFR_RNDN);
        mpfr_mul(r7960, r7947, r7950, MPFR_RNDN);
        mpfr_mul(r7961, r7954, r7945, MPFR_RNDN);
        mpfr_add(r7962, r7960, r7961, MPFR_RNDN);
        mpfr_mul(r7963, r7959, r7962, MPFR_RNDN);
        return mpfr_get_d(r7963, MPFR_RNDN);
}

static mpfr_t r7964, r7965, r7966, r7967, r7968, r7969, r7970, r7971, r7972, r7973, r7974, r7975, r7976, r7977, r7978, r7979, r7980, r7981, r7982, r7983, r7984;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7964);
        mpfr_init(r7965);
        mpfr_init(r7966);
        mpfr_init(r7967);
        mpfr_init(r7968);
        mpfr_init_set_str(r7969, "2", 10, MPFR_RNDN);
        mpfr_init(r7970);
        mpfr_init(r7971);
        mpfr_init(r7972);
        mpfr_init(r7973);
        mpfr_init(r7974);
        mpfr_init(r7975);
        mpfr_init(r7976);
        mpfr_init(r7977);
        mpfr_init(r7978);
        mpfr_init(r7979);
        mpfr_init(r7980);
        mpfr_init(r7981);
        mpfr_init(r7982);
        mpfr_init(r7983);
        mpfr_init(r7984);
}

double f_dm(double r, double a, double b) {
        mpfr_set_d(r7964, r, MPFR_RNDN);
        mpfr_set_d(r7965, b, MPFR_RNDN);
        mpfr_sin(r7966, r7965, MPFR_RNDN);
        mpfr_set_d(r7967, a, MPFR_RNDN);
        mpfr_cos(r7968, r7967, MPFR_RNDN);
        ;
        mpfr_pow(r7970, r7968, r7969, MPFR_RNDN);
        mpfr_cos(r7971, r7965, MPFR_RNDN);
        mpfr_pow(r7972, r7971, r7969, MPFR_RNDN);
        mpfr_mul(r7973, r7970, r7972, MPFR_RNDN);
        mpfr_pow(r7974, r7966, r7969, MPFR_RNDN);
        mpfr_sin(r7975, r7967, MPFR_RNDN);
        mpfr_pow(r7976, r7975, r7969, MPFR_RNDN);
        mpfr_mul(r7977, r7974, r7976, MPFR_RNDN);
        mpfr_sub(r7978, r7973, r7977, MPFR_RNDN);
        mpfr_div(r7979, r7966, r7978, MPFR_RNDN);
        mpfr_mul(r7980, r7964, r7979, MPFR_RNDN);
        mpfr_mul(r7981, r7968, r7971, MPFR_RNDN);
        mpfr_mul(r7982, r7975, r7966, MPFR_RNDN);
        mpfr_add(r7983, r7981, r7982, MPFR_RNDN);
        mpfr_mul(r7984, r7980, r7983, MPFR_RNDN);
        return mpfr_get_d(r7984, MPFR_RNDN);
}

