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

char *name = "Distance on a great circle";

double f_if(float R, float lambda1, float lambda2, float phi1, float phi2) {
        float r9079 = R;
        float r9080 = 2.0f;
        float r9081 = phi1;
        float r9082 = phi2;
        float r9083 = r9081 - r9082;
        float r9084 = r9083 / r9080;
        float r9085 = sin(r9084);
        float r9086 = pow(r9085, r9080);
        float r9087 = cos(r9081);
        float r9088 = cos(r9082);
        float r9089 = r9087 * r9088;
        float r9090 = lambda1;
        float r9091 = lambda2;
        float r9092 = r9090 - r9091;
        float r9093 = r9092 / r9080;
        float r9094 = sin(r9093);
        float r9095 = r9089 * r9094;
        float r9096 = r9095 * r9094;
        float r9097 = r9086 + r9096;
        float r9098 = sqrt(r9097);
        float r9099 = 1.0f;
        float r9100 = r9099 - r9097;
        float r9101 = sqrt(r9100);
        float r9102 = atan2(r9098, r9101);
        float r9103 = r9080 * r9102;
        float r9104 = r9079 * r9103;
        return r9104;
}

double f_id(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r9105 = R;
        double r9106 = 2.0;
        double r9107 = phi1;
        double r9108 = phi2;
        double r9109 = r9107 - r9108;
        double r9110 = r9109 / r9106;
        double r9111 = sin(r9110);
        double r9112 = pow(r9111, r9106);
        double r9113 = cos(r9107);
        double r9114 = cos(r9108);
        double r9115 = r9113 * r9114;
        double r9116 = lambda1;
        double r9117 = lambda2;
        double r9118 = r9116 - r9117;
        double r9119 = r9118 / r9106;
        double r9120 = sin(r9119);
        double r9121 = r9115 * r9120;
        double r9122 = r9121 * r9120;
        double r9123 = r9112 + r9122;
        double r9124 = sqrt(r9123);
        double r9125 = 1.0;
        double r9126 = r9125 - r9123;
        double r9127 = sqrt(r9126);
        double r9128 = atan2(r9124, r9127);
        double r9129 = r9106 * r9128;
        double r9130 = r9105 * r9129;
        return r9130;
}


double f_of(float R, float lambda1, float lambda2, float phi1, float phi2) {
        float r9131 = 2.0f;
        float r9132 = R;
        float r9133 = r9131 * r9132;
        float r9134 = lambda1;
        float r9135 = lambda2;
        float r9136 = r9134 - r9135;
        float r9137 = r9136 / r9131;
        float r9138 = sin(r9137);
        float r9139 = phi1;
        float r9140 = cos(r9139);
        float r9141 = phi2;
        float r9142 = cos(r9141);
        float r9143 = r9140 * r9142;
        float r9144 = r9138 * r9143;
        float r9145 = r9139 - r9141;
        float r9146 = r9145 / r9131;
        float r9147 = sin(r9146);
        float r9148 = r9147 * r9147;
        float r9149 = fma(r9138, r9144, r9148);
        float r9150 = sqrt(r9149);
        float r9151 = exp(r9138);
        float r9152 = sqrt(r9151);
        float r9153 = log(r9152);
        float r9154 = r9135 / r9131;
        float r9155 = cos(r9154);
        float r9156 = r9134 / r9131;
        float r9157 = sin(r9156);
        float r9158 = r9155 * r9157;
        float r9159 = exp(r9158);
        float r9160 = sqrt(r9159);
        float r9161 = log(r9160);
        float r9162 = cos(r9156);
        float r9163 = sin(r9154);
        float r9164 = r9162 * r9163;
        float r9165 = exp(r9164);
        float r9166 = sqrt(r9165);
        float r9167 = log(r9166);
        float r9168 = r9161 - r9167;
        float r9169 = r9153 + r9168;
        float r9170 = -r9142;
        float r9171 = r9140 * r9170;
        float r9172 = r9169 * r9171;
        float r9173 = cos(r9146);
        float r9174 = r9173 * r9173;
        float r9175 = fma(r9138, r9172, r9174);
        float r9176 = sqrt(r9175);
        float r9177 = atan2(r9150, r9176);
        float r9178 = r9133 * r9177;
        return r9178;
}

double f_od(double R, double lambda1, double lambda2, double phi1, double phi2) {
        double r9179 = 2.0;
        double r9180 = R;
        double r9181 = r9179 * r9180;
        double r9182 = lambda1;
        double r9183 = lambda2;
        double r9184 = r9182 - r9183;
        double r9185 = r9184 / r9179;
        double r9186 = sin(r9185);
        double r9187 = phi1;
        double r9188 = cos(r9187);
        double r9189 = phi2;
        double r9190 = cos(r9189);
        double r9191 = r9188 * r9190;
        double r9192 = r9186 * r9191;
        double r9193 = r9187 - r9189;
        double r9194 = r9193 / r9179;
        double r9195 = sin(r9194);
        double r9196 = r9195 * r9195;
        double r9197 = fma(r9186, r9192, r9196);
        double r9198 = sqrt(r9197);
        double r9199 = exp(r9186);
        double r9200 = sqrt(r9199);
        double r9201 = log(r9200);
        double r9202 = r9183 / r9179;
        double r9203 = cos(r9202);
        double r9204 = r9182 / r9179;
        double r9205 = sin(r9204);
        double r9206 = r9203 * r9205;
        double r9207 = exp(r9206);
        double r9208 = sqrt(r9207);
        double r9209 = log(r9208);
        double r9210 = cos(r9204);
        double r9211 = sin(r9202);
        double r9212 = r9210 * r9211;
        double r9213 = exp(r9212);
        double r9214 = sqrt(r9213);
        double r9215 = log(r9214);
        double r9216 = r9209 - r9215;
        double r9217 = r9201 + r9216;
        double r9218 = -r9190;
        double r9219 = r9188 * r9218;
        double r9220 = r9217 * r9219;
        double r9221 = cos(r9194);
        double r9222 = r9221 * r9221;
        double r9223 = fma(r9186, r9220, r9222);
        double r9224 = sqrt(r9223);
        double r9225 = atan2(r9198, r9224);
        double r9226 = r9181 * r9225;
        return r9226;
}

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 r9227, r9228, r9229, r9230, r9231, r9232, r9233, r9234, r9235, r9236, r9237, r9238, r9239, r9240, r9241, r9242, r9243, r9244, r9245, r9246, r9247, r9248, r9249, r9250, r9251, r9252;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init(r9227);
        mpfr_init_set_str(r9228, "2", 10, MPFR_RNDN);
        mpfr_init(r9229);
        mpfr_init(r9230);
        mpfr_init(r9231);
        mpfr_init(r9232);
        mpfr_init(r9233);
        mpfr_init(r9234);
        mpfr_init(r9235);
        mpfr_init(r9236);
        mpfr_init(r9237);
        mpfr_init(r9238);
        mpfr_init(r9239);
        mpfr_init(r9240);
        mpfr_init(r9241);
        mpfr_init(r9242);
        mpfr_init(r9243);
        mpfr_init(r9244);
        mpfr_init(r9245);
        mpfr_init(r9246);
        mpfr_init_set_str(r9247, "1", 10, MPFR_RNDN);
        mpfr_init(r9248);
        mpfr_init(r9249);
        mpfr_init(r9250);
        mpfr_init(r9251);
        mpfr_init(r9252);
}

double f_im(double R, double lambda1, double lambda2, double phi1, double phi2) {
        mpfr_set_d(r9227, R, MPFR_RNDN);
        ;
        mpfr_set_d(r9229, phi1, MPFR_RNDN);
        mpfr_set_d(r9230, phi2, MPFR_RNDN);
        mpfr_sub(r9231, r9229, r9230, MPFR_RNDN);
        mpfr_div(r9232, r9231, r9228, MPFR_RNDN);
        mpfr_sin(r9233, r9232, MPFR_RNDN);
        mpfr_pow(r9234, r9233, r9228, MPFR_RNDN);
        mpfr_cos(r9235, r9229, MPFR_RNDN);
        mpfr_cos(r9236, r9230, MPFR_RNDN);
        mpfr_mul(r9237, r9235, r9236, MPFR_RNDN);
        mpfr_set_d(r9238, lambda1, MPFR_RNDN);
        mpfr_set_d(r9239, lambda2, MPFR_RNDN);
        mpfr_sub(r9240, r9238, r9239, MPFR_RNDN);
        mpfr_div(r9241, r9240, r9228, MPFR_RNDN);
        mpfr_sin(r9242, r9241, MPFR_RNDN);
        mpfr_mul(r9243, r9237, r9242, MPFR_RNDN);
        mpfr_mul(r9244, r9243, r9242, MPFR_RNDN);
        mpfr_add(r9245, r9234, r9244, MPFR_RNDN);
        mpfr_sqrt(r9246, r9245, MPFR_RNDN);
        ;
        mpfr_sub(r9248, r9247, r9245, MPFR_RNDN);
        mpfr_sqrt(r9249, r9248, MPFR_RNDN);
        mpfr_atan2(r9250, r9246, r9249, MPFR_RNDN);
        mpfr_mul(r9251, r9228, r9250, MPFR_RNDN);
        mpfr_mul(r9252, r9227, r9251, MPFR_RNDN);
        return mpfr_get_d(r9252, MPFR_RNDN);
}

static mpfr_t r9253, r9254, r9255, r9256, r9257, r9258, r9259, r9260, r9261, r9262, r9263, r9264, r9265, r9266, r9267, r9268, r9269, r9270, r9271, r9272, r9273, r9274, r9275, r9276, r9277, r9278, r9279, r9280, r9281, r9282, r9283, r9284, r9285, r9286, r9287, r9288, r9289, r9290, r9291, r9292, r9293, r9294, r9295, r9296, r9297, r9298, r9299, r9300;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9253, "2", 10, MPFR_RNDN);
        mpfr_init(r9254);
        mpfr_init(r9255);
        mpfr_init(r9256);
        mpfr_init(r9257);
        mpfr_init(r9258);
        mpfr_init(r9259);
        mpfr_init(r9260);
        mpfr_init(r9261);
        mpfr_init(r9262);
        mpfr_init(r9263);
        mpfr_init(r9264);
        mpfr_init(r9265);
        mpfr_init(r9266);
        mpfr_init(r9267);
        mpfr_init(r9268);
        mpfr_init(r9269);
        mpfr_init(r9270);
        mpfr_init(r9271);
        mpfr_init(r9272);
        mpfr_init(r9273);
        mpfr_init(r9274);
        mpfr_init(r9275);
        mpfr_init(r9276);
        mpfr_init(r9277);
        mpfr_init(r9278);
        mpfr_init(r9279);
        mpfr_init(r9280);
        mpfr_init(r9281);
        mpfr_init(r9282);
        mpfr_init(r9283);
        mpfr_init(r9284);
        mpfr_init(r9285);
        mpfr_init(r9286);
        mpfr_init(r9287);
        mpfr_init(r9288);
        mpfr_init(r9289);
        mpfr_init(r9290);
        mpfr_init(r9291);
        mpfr_init(r9292);
        mpfr_init(r9293);
        mpfr_init(r9294);
        mpfr_init(r9295);
        mpfr_init(r9296);
        mpfr_init(r9297);
        mpfr_init(r9298);
        mpfr_init(r9299);
        mpfr_init(r9300);
}

double f_fm(double R, double lambda1, double lambda2, double phi1, double phi2) {
        ;
        mpfr_set_d(r9254, R, MPFR_RNDN);
        mpfr_mul(r9255, r9253, r9254, MPFR_RNDN);
        mpfr_set_d(r9256, lambda1, MPFR_RNDN);
        mpfr_set_d(r9257, lambda2, MPFR_RNDN);
        mpfr_sub(r9258, r9256, r9257, MPFR_RNDN);
        mpfr_div(r9259, r9258, r9253, MPFR_RNDN);
        mpfr_sin(r9260, r9259, MPFR_RNDN);
        mpfr_set_d(r9261, phi1, MPFR_RNDN);
        mpfr_cos(r9262, r9261, MPFR_RNDN);
        mpfr_set_d(r9263, phi2, MPFR_RNDN);
        mpfr_cos(r9264, r9263, MPFR_RNDN);
        mpfr_mul(r9265, r9262, r9264, MPFR_RNDN);
        mpfr_mul(r9266, r9260, r9265, MPFR_RNDN);
        mpfr_sub(r9267, r9261, r9263, MPFR_RNDN);
        mpfr_div(r9268, r9267, r9253, MPFR_RNDN);
        mpfr_sin(r9269, r9268, MPFR_RNDN);
        mpfr_mul(r9270, r9269, r9269, MPFR_RNDN);
        mpfr_fma(r9271, r9260, r9266, r9270, MPFR_RNDN);
        mpfr_sqrt(r9272, r9271, MPFR_RNDN);
        mpfr_exp(r9273, r9260, MPFR_RNDN);
        mpfr_sqrt(r9274, r9273, MPFR_RNDN);
        mpfr_log(r9275, r9274, MPFR_RNDN);
        mpfr_div(r9276, r9257, r9253, MPFR_RNDN);
        mpfr_cos(r9277, r9276, MPFR_RNDN);
        mpfr_div(r9278, r9256, r9253, MPFR_RNDN);
        mpfr_sin(r9279, r9278, MPFR_RNDN);
        mpfr_mul(r9280, r9277, r9279, MPFR_RNDN);
        mpfr_exp(r9281, r9280, MPFR_RNDN);
        mpfr_sqrt(r9282, r9281, MPFR_RNDN);
        mpfr_log(r9283, r9282, MPFR_RNDN);
        mpfr_cos(r9284, r9278, MPFR_RNDN);
        mpfr_sin(r9285, r9276, MPFR_RNDN);
        mpfr_mul(r9286, r9284, r9285, MPFR_RNDN);
        mpfr_exp(r9287, r9286, MPFR_RNDN);
        mpfr_sqrt(r9288, r9287, MPFR_RNDN);
        mpfr_log(r9289, r9288, MPFR_RNDN);
        mpfr_sub(r9290, r9283, r9289, MPFR_RNDN);
        mpfr_add(r9291, r9275, r9290, MPFR_RNDN);
        mpfr_neg(r9292, r9264, MPFR_RNDN);
        mpfr_mul(r9293, r9262, r9292, MPFR_RNDN);
        mpfr_mul(r9294, r9291, r9293, MPFR_RNDN);
        mpfr_cos(r9295, r9268, MPFR_RNDN);
        mpfr_mul(r9296, r9295, r9295, MPFR_RNDN);
        mpfr_fma(r9297, r9260, r9294, r9296, MPFR_RNDN);
        mpfr_sqrt(r9298, r9297, MPFR_RNDN);
        mpfr_atan2(r9299, r9272, r9298, MPFR_RNDN);
        mpfr_mul(r9300, r9255, r9299, MPFR_RNDN);
        return mpfr_get_d(r9300, MPFR_RNDN);
}

static mpfr_t r9301, r9302, r9303, r9304, r9305, r9306, r9307, r9308, r9309, r9310, r9311, r9312, r9313, r9314, r9315, r9316, r9317, r9318, r9319, r9320, r9321, r9322, r9323, r9324, r9325, r9326, r9327, r9328, r9329, r9330, r9331, r9332, r9333, r9334, r9335, r9336, r9337, r9338, r9339, r9340, r9341, r9342, r9343, r9344, r9345, r9346, r9347, r9348;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r9301, "2", 10, MPFR_RNDN);
        mpfr_init(r9302);
        mpfr_init(r9303);
        mpfr_init(r9304);
        mpfr_init(r9305);
        mpfr_init(r9306);
        mpfr_init(r9307);
        mpfr_init(r9308);
        mpfr_init(r9309);
        mpfr_init(r9310);
        mpfr_init(r9311);
        mpfr_init(r9312);
        mpfr_init(r9313);
        mpfr_init(r9314);
        mpfr_init(r9315);
        mpfr_init(r9316);
        mpfr_init(r9317);
        mpfr_init(r9318);
        mpfr_init(r9319);
        mpfr_init(r9320);
        mpfr_init(r9321);
        mpfr_init(r9322);
        mpfr_init(r9323);
        mpfr_init(r9324);
        mpfr_init(r9325);
        mpfr_init(r9326);
        mpfr_init(r9327);
        mpfr_init(r9328);
        mpfr_init(r9329);
        mpfr_init(r9330);
        mpfr_init(r9331);
        mpfr_init(r9332);
        mpfr_init(r9333);
        mpfr_init(r9334);
        mpfr_init(r9335);
        mpfr_init(r9336);
        mpfr_init(r9337);
        mpfr_init(r9338);
        mpfr_init(r9339);
        mpfr_init(r9340);
        mpfr_init(r9341);
        mpfr_init(r9342);
        mpfr_init(r9343);
        mpfr_init(r9344);
        mpfr_init(r9345);
        mpfr_init(r9346);
        mpfr_init(r9347);
        mpfr_init(r9348);
}

double f_dm(double R, double lambda1, double lambda2, double phi1, double phi2) {
        ;
        mpfr_set_d(r9302, R, MPFR_RNDN);
        mpfr_mul(r9303, r9301, r9302, MPFR_RNDN);
        mpfr_set_d(r9304, lambda1, MPFR_RNDN);
        mpfr_set_d(r9305, lambda2, MPFR_RNDN);
        mpfr_sub(r9306, r9304, r9305, MPFR_RNDN);
        mpfr_div(r9307, r9306, r9301, MPFR_RNDN);
        mpfr_sin(r9308, r9307, MPFR_RNDN);
        mpfr_set_d(r9309, phi1, MPFR_RNDN);
        mpfr_cos(r9310, r9309, MPFR_RNDN);
        mpfr_set_d(r9311, phi2, MPFR_RNDN);
        mpfr_cos(r9312, r9311, MPFR_RNDN);
        mpfr_mul(r9313, r9310, r9312, MPFR_RNDN);
        mpfr_mul(r9314, r9308, r9313, MPFR_RNDN);
        mpfr_sub(r9315, r9309, r9311, MPFR_RNDN);
        mpfr_div(r9316, r9315, r9301, MPFR_RNDN);
        mpfr_sin(r9317, r9316, MPFR_RNDN);
        mpfr_mul(r9318, r9317, r9317, MPFR_RNDN);
        mpfr_fma(r9319, r9308, r9314, r9318, MPFR_RNDN);
        mpfr_sqrt(r9320, r9319, MPFR_RNDN);
        mpfr_exp(r9321, r9308, MPFR_RNDN);
        mpfr_sqrt(r9322, r9321, MPFR_RNDN);
        mpfr_log(r9323, r9322, MPFR_RNDN);
        mpfr_div(r9324, r9305, r9301, MPFR_RNDN);
        mpfr_cos(r9325, r9324, MPFR_RNDN);
        mpfr_div(r9326, r9304, r9301, MPFR_RNDN);
        mpfr_sin(r9327, r9326, MPFR_RNDN);
        mpfr_mul(r9328, r9325, r9327, MPFR_RNDN);
        mpfr_exp(r9329, r9328, MPFR_RNDN);
        mpfr_sqrt(r9330, r9329, MPFR_RNDN);
        mpfr_log(r9331, r9330, MPFR_RNDN);
        mpfr_cos(r9332, r9326, MPFR_RNDN);
        mpfr_sin(r9333, r9324, MPFR_RNDN);
        mpfr_mul(r9334, r9332, r9333, MPFR_RNDN);
        mpfr_exp(r9335, r9334, MPFR_RNDN);
        mpfr_sqrt(r9336, r9335, MPFR_RNDN);
        mpfr_log(r9337, r9336, MPFR_RNDN);
        mpfr_sub(r9338, r9331, r9337, MPFR_RNDN);
        mpfr_add(r9339, r9323, r9338, MPFR_RNDN);
        mpfr_neg(r9340, r9312, MPFR_RNDN);
        mpfr_mul(r9341, r9310, r9340, MPFR_RNDN);
        mpfr_mul(r9342, r9339, r9341, MPFR_RNDN);
        mpfr_cos(r9343, r9316, MPFR_RNDN);
        mpfr_mul(r9344, r9343, r9343, MPFR_RNDN);
        mpfr_fma(r9345, r9308, r9342, r9344, MPFR_RNDN);
        mpfr_sqrt(r9346, r9345, MPFR_RNDN);
        mpfr_atan2(r9347, r9320, r9346, MPFR_RNDN);
        mpfr_mul(r9348, r9303, r9347, MPFR_RNDN);
        return mpfr_get_d(r9348, MPFR_RNDN);
}

