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

char *name = "Spherical law of cosines";

double f_if(float R, float lambda1, float lambda2, float phi1, float phi2) {
        float r7694 = phi1;
        float r7695 = sin(r7694);
        float r7696 = phi2;
        float r7697 = sin(r7696);
        float r7698 = r7695 * r7697;
        float r7699 = cos(r7694);
        float r7700 = cos(r7696);
        float r7701 = r7699 * r7700;
        float r7702 = lambda1;
        float r7703 = lambda2;
        float r7704 = r7702 - r7703;
        float r7705 = cos(r7704);
        float r7706 = r7701 * r7705;
        float r7707 = r7698 + r7706;
        float r7708 = acos(r7707);
        float r7709 = R;
        float r7710 = r7708 * r7709;
        return r7710;
}

double f_id(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r7711 = phi1;
        double r7712 = sin(r7711);
        double r7713 = phi2;
        double r7714 = sin(r7713);
        double r7715 = r7712 * r7714;
        double r7716 = cos(r7711);
        double r7717 = cos(r7713);
        double r7718 = r7716 * r7717;
        double r7719 = lambda1;
        double r7720 = lambda2;
        double r7721 = r7719 - r7720;
        double r7722 = cos(r7721);
        double r7723 = r7718 * r7722;
        double r7724 = r7715 + r7723;
        double r7725 = acos(r7724);
        double r7726 = R;
        double r7727 = r7725 * r7726;
        return r7727;
}


double f_of(float R, float lambda1, float lambda2, float phi1, float phi2) {
        float r7728 = R;
        float r7729 = atan2(1.0, 0.0);
        float r7730 = 2.0f;
        float r7731 = r7729 / r7730;
        float r7732 = lambda2;
        float r7733 = sin(r7732);
        float r7734 = lambda1;
        float r7735 = sin(r7734);
        float r7736 = cos(r7734);
        float r7737 = cos(r7732);
        float r7738 = r7736 * r7737;
        float r7739 = fma(r7733, r7735, r7738);
        float r7740 = phi2;
        float r7741 = cos(r7740);
        float r7742 = phi1;
        float r7743 = cos(r7742);
        float r7744 = r7741 * r7743;
        float r7745 = sin(r7740);
        float r7746 = sin(r7742);
        float r7747 = r7745 * r7746;
        float r7748 = fma(r7739, r7744, r7747);
        float r7749 = asin(r7748);
        float r7750 = r7731 - r7749;
        float r7751 = r7728 * r7750;
        return r7751;
}

double f_od(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r7752 = R;
        double r7753 = atan2(1.0, 0.0);
        double r7754 = 2.0;
        double r7755 = r7753 / r7754;
        double r7756 = lambda2;
        double r7757 = sin(r7756);
        double r7758 = lambda1;
        double r7759 = sin(r7758);
        double r7760 = cos(r7758);
        double r7761 = cos(r7756);
        double r7762 = r7760 * r7761;
        double r7763 = fma(r7757, r7759, r7762);
        double r7764 = phi2;
        double r7765 = cos(r7764);
        double r7766 = phi1;
        double r7767 = cos(r7766);
        double r7768 = r7765 * r7767;
        double r7769 = sin(r7764);
        double r7770 = sin(r7766);
        double r7771 = r7769 * r7770;
        double r7772 = fma(r7763, r7768, r7771);
        double r7773 = asin(r7772);
        double r7774 = r7755 - r7773;
        double r7775 = r7752 * r7774;
        return r7775;
}

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 r7776, r7777, r7778, r7779, r7780, r7781, r7782, r7783, r7784, r7785, r7786, r7787, r7788, r7789, r7790, r7791, r7792;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1872);
        mpfr_init(r7776);
        mpfr_init(r7777);
        mpfr_init(r7778);
        mpfr_init(r7779);
        mpfr_init(r7780);
        mpfr_init(r7781);
        mpfr_init(r7782);
        mpfr_init(r7783);
        mpfr_init(r7784);
        mpfr_init(r7785);
        mpfr_init(r7786);
        mpfr_init(r7787);
        mpfr_init(r7788);
        mpfr_init(r7789);
        mpfr_init(r7790);
        mpfr_init(r7791);
        mpfr_init(r7792);
}

double f_im(double R, double lambda1, double lambda2, double phi1, double phi2) {
        mpfr_set_d(r7776, phi1, MPFR_RNDN);
        mpfr_sin(r7777, r7776, MPFR_RNDN);
        mpfr_set_d(r7778, phi2, MPFR_RNDN);
        mpfr_sin(r7779, r7778, MPFR_RNDN);
        mpfr_mul(r7780, r7777, r7779, MPFR_RNDN);
        mpfr_cos(r7781, r7776, MPFR_RNDN);
        mpfr_cos(r7782, r7778, MPFR_RNDN);
        mpfr_mul(r7783, r7781, r7782, MPFR_RNDN);
        mpfr_set_d(r7784, lambda1, MPFR_RNDN);
        mpfr_set_d(r7785, lambda2, MPFR_RNDN);
        mpfr_sub(r7786, r7784, r7785, MPFR_RNDN);
        mpfr_cos(r7787, r7786, MPFR_RNDN);
        mpfr_mul(r7788, r7783, r7787, MPFR_RNDN);
        mpfr_add(r7789, r7780, r7788, MPFR_RNDN);
        mpfr_acos(r7790, r7789, MPFR_RNDN);
        mpfr_set_d(r7791, R, MPFR_RNDN);
        mpfr_mul(r7792, r7790, r7791, MPFR_RNDN);
        return mpfr_get_d(r7792, MPFR_RNDN);
}

static mpfr_t r7793, r7794, r7795, r7796, r7797, r7798, r7799, r7800, r7801, r7802, r7803, r7804, r7805, r7806, r7807, r7808, r7809, r7810, r7811, r7812, r7813, r7814, r7815, r7816;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1872);
        mpfr_init(r7793);
        mpfr_init(r7794);
        mpfr_init_set_str(r7795, "2", 10, MPFR_RNDN);
        mpfr_init(r7796);
        mpfr_init(r7797);
        mpfr_init(r7798);
        mpfr_init(r7799);
        mpfr_init(r7800);
        mpfr_init(r7801);
        mpfr_init(r7802);
        mpfr_init(r7803);
        mpfr_init(r7804);
        mpfr_init(r7805);
        mpfr_init(r7806);
        mpfr_init(r7807);
        mpfr_init(r7808);
        mpfr_init(r7809);
        mpfr_init(r7810);
        mpfr_init(r7811);
        mpfr_init(r7812);
        mpfr_init(r7813);
        mpfr_init(r7814);
        mpfr_init(r7815);
        mpfr_init(r7816);
}

double f_fm(double R, double lambda1, double lambda2, double phi1, double phi2) {
        mpfr_set_d(r7793, R, MPFR_RNDN);
        mpfr_const_pi(r7794, MPFR_RNDN);
        ;
        mpfr_div(r7796, r7794, r7795, MPFR_RNDN);
        mpfr_set_d(r7797, lambda2, MPFR_RNDN);
        mpfr_sin(r7798, r7797, MPFR_RNDN);
        mpfr_set_d(r7799, lambda1, MPFR_RNDN);
        mpfr_sin(r7800, r7799, MPFR_RNDN);
        mpfr_cos(r7801, r7799, MPFR_RNDN);
        mpfr_cos(r7802, r7797, MPFR_RNDN);
        mpfr_mul(r7803, r7801, r7802, MPFR_RNDN);
        mpfr_fma(r7804, r7798, r7800, r7803, MPFR_RNDN);
        mpfr_set_d(r7805, phi2, MPFR_RNDN);
        mpfr_cos(r7806, r7805, MPFR_RNDN);
        mpfr_set_d(r7807, phi1, MPFR_RNDN);
        mpfr_cos(r7808, r7807, MPFR_RNDN);
        mpfr_mul(r7809, r7806, r7808, MPFR_RNDN);
        mpfr_sin(r7810, r7805, MPFR_RNDN);
        mpfr_sin(r7811, r7807, MPFR_RNDN);
        mpfr_mul(r7812, r7810, r7811, MPFR_RNDN);
        mpfr_fma(r7813, r7804, r7809, r7812, MPFR_RNDN);
        mpfr_asin(r7814, r7813, MPFR_RNDN);
        mpfr_sub(r7815, r7796, r7814, MPFR_RNDN);
        mpfr_mul(r7816, r7793, r7815, MPFR_RNDN);
        return mpfr_get_d(r7816, MPFR_RNDN);
}

static mpfr_t r7817, r7818, r7819, r7820, r7821, r7822, r7823, r7824, r7825, r7826, r7827, r7828, r7829, r7830, r7831, r7832, r7833, r7834, r7835, r7836, r7837, r7838, r7839, r7840;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1872);
        mpfr_init(r7817);
        mpfr_init(r7818);
        mpfr_init_set_str(r7819, "2", 10, MPFR_RNDN);
        mpfr_init(r7820);
        mpfr_init(r7821);
        mpfr_init(r7822);
        mpfr_init(r7823);
        mpfr_init(r7824);
        mpfr_init(r7825);
        mpfr_init(r7826);
        mpfr_init(r7827);
        mpfr_init(r7828);
        mpfr_init(r7829);
        mpfr_init(r7830);
        mpfr_init(r7831);
        mpfr_init(r7832);
        mpfr_init(r7833);
        mpfr_init(r7834);
        mpfr_init(r7835);
        mpfr_init(r7836);
        mpfr_init(r7837);
        mpfr_init(r7838);
        mpfr_init(r7839);
        mpfr_init(r7840);
}

double f_dm(double R, double lambda1, double lambda2, double phi1, double phi2) {
        mpfr_set_d(r7817, R, MPFR_RNDN);
        mpfr_const_pi(r7818, MPFR_RNDN);
        ;
        mpfr_div(r7820, r7818, r7819, MPFR_RNDN);
        mpfr_set_d(r7821, lambda2, MPFR_RNDN);
        mpfr_sin(r7822, r7821, MPFR_RNDN);
        mpfr_set_d(r7823, lambda1, MPFR_RNDN);
        mpfr_sin(r7824, r7823, MPFR_RNDN);
        mpfr_cos(r7825, r7823, MPFR_RNDN);
        mpfr_cos(r7826, r7821, MPFR_RNDN);
        mpfr_mul(r7827, r7825, r7826, MPFR_RNDN);
        mpfr_fma(r7828, r7822, r7824, r7827, MPFR_RNDN);
        mpfr_set_d(r7829, phi2, MPFR_RNDN);
        mpfr_cos(r7830, r7829, MPFR_RNDN);
        mpfr_set_d(r7831, phi1, MPFR_RNDN);
        mpfr_cos(r7832, r7831, MPFR_RNDN);
        mpfr_mul(r7833, r7830, r7832, MPFR_RNDN);
        mpfr_sin(r7834, r7829, MPFR_RNDN);
        mpfr_sin(r7835, r7831, MPFR_RNDN);
        mpfr_mul(r7836, r7834, r7835, MPFR_RNDN);
        mpfr_fma(r7837, r7828, r7833, r7836, MPFR_RNDN);
        mpfr_asin(r7838, r7837, MPFR_RNDN);
        mpfr_sub(r7839, r7820, r7838, MPFR_RNDN);
        mpfr_mul(r7840, r7817, r7839, MPFR_RNDN);
        return mpfr_get_d(r7840, MPFR_RNDN);
}

