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

char *name = "Octave 3.8, jcobi/4";

double f_if(float alpha, float beta, float i) {
        float r9871 = i;
        float r9872 = alpha;
        float r9873 = beta;
        float r9874 = r9872 + r9873;
        float r9875 = r9874 + r9871;
        float r9876 = r9871 * r9875;
        float r9877 = r9873 * r9872;
        float r9878 = r9877 + r9876;
        float r9879 = r9876 * r9878;
        float r9880 = 2.0f;
        float r9881 = r9880 * r9871;
        float r9882 = r9874 + r9881;
        float r9883 = r9882 * r9882;
        float r9884 = r9879 / r9883;
        float r9885 = 1.0f;
        float r9886 = r9883 - r9885;
        float r9887 = r9884 / r9886;
        return r9887;
}

double f_id(double alpha, double beta, double i) {
        double r9888 = i;
        double r9889 = alpha;
        double r9890 = beta;
        double r9891 = r9889 + r9890;
        double r9892 = r9891 + r9888;
        double r9893 = r9888 * r9892;
        double r9894 = r9890 * r9889;
        double r9895 = r9894 + r9893;
        double r9896 = r9893 * r9895;
        double r9897 = 2.0;
        double r9898 = r9897 * r9888;
        double r9899 = r9891 + r9898;
        double r9900 = r9899 * r9899;
        double r9901 = r9896 / r9900;
        double r9902 = 1.0;
        double r9903 = r9900 - r9902;
        double r9904 = r9901 / r9903;
        return r9904;
}


double f_of(float alpha, float beta, float i) {
        float r9905 = i;
        float r9906 = 2.0f;
        float r9907 = r9906 * r9905;
        float r9908 = beta;
        float r9909 = alpha;
        float r9910 = r9908 + r9909;
        float r9911 = r9907 + r9910;
        float r9912 = r9905 / r9911;
        float r9913 = r9909 + r9905;
        float r9914 = r9913 + r9908;
        float r9915 = r9911 * r9911;
        float r9916 = 1.0f;
        float r9917 = r9915 - r9916;
        float r9918 = r9914 / r9917;
        float r9919 = r9912 * r9918;
        float r9920 = cbrt(r9911);
        float r9921 = r9913 / r9920;
        float r9922 = r9908 + r9905;
        float r9923 = r9920 * r9920;
        float r9924 = r9922 / r9923;
        float r9925 = r9921 * r9924;
        float r9926 = r9919 * r9925;
        return r9926;
}

double f_od(double alpha, double beta, double i) {
        double r9927 = i;
        double r9928 = 2.0;
        double r9929 = r9928 * r9927;
        double r9930 = beta;
        double r9931 = alpha;
        double r9932 = r9930 + r9931;
        double r9933 = r9929 + r9932;
        double r9934 = r9927 / r9933;
        double r9935 = r9931 + r9927;
        double r9936 = r9935 + r9930;
        double r9937 = r9933 * r9933;
        double r9938 = 1.0;
        double r9939 = r9937 - r9938;
        double r9940 = r9936 / r9939;
        double r9941 = r9934 * r9940;
        double r9942 = cbrt(r9933);
        double r9943 = r9935 / r9942;
        double r9944 = r9930 + r9927;
        double r9945 = r9942 * r9942;
        double r9946 = r9944 / r9945;
        double r9947 = r9943 * r9946;
        double r9948 = r9941 * r9947;
        return r9948;
}

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 r9949, r9950, r9951, r9952, r9953, r9954, r9955, r9956, r9957, r9958, r9959, r9960, r9961, r9962, r9963, r9964, r9965;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r9949);
        mpfr_init(r9950);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init(r9955);
        mpfr_init(r9956);
        mpfr_init(r9957);
        mpfr_init_set_str(r9958, "2", 10, MPFR_RNDN);
        mpfr_init(r9959);
        mpfr_init(r9960);
        mpfr_init(r9961);
        mpfr_init(r9962);
        mpfr_init_set_str(r9963, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9964);
        mpfr_init(r9965);
}

double f_im(double alpha, double beta, double i) {
        mpfr_set_d(r9949, i, MPFR_RNDN);
        mpfr_set_d(r9950, alpha, MPFR_RNDN);
        mpfr_set_d(r9951, beta, MPFR_RNDN);
        mpfr_add(r9952, r9950, r9951, MPFR_RNDN);
        mpfr_add(r9953, r9952, r9949, MPFR_RNDN);
        mpfr_mul(r9954, r9949, r9953, MPFR_RNDN);
        mpfr_mul(r9955, r9951, r9950, MPFR_RNDN);
        mpfr_add(r9956, r9955, r9954, MPFR_RNDN);
        mpfr_mul(r9957, r9954, r9956, MPFR_RNDN);
        ;
        mpfr_mul(r9959, r9958, r9949, MPFR_RNDN);
        mpfr_add(r9960, r9952, r9959, MPFR_RNDN);
        mpfr_mul(r9961, r9960, r9960, MPFR_RNDN);
        mpfr_div(r9962, r9957, r9961, MPFR_RNDN);
        ;
        mpfr_sub(r9964, r9961, r9963, MPFR_RNDN);
        mpfr_div(r9965, r9962, r9964, MPFR_RNDN);
        return mpfr_get_d(r9965, MPFR_RNDN);
}

static mpfr_t r9966, r9967, r9968, r9969, r9970, r9971, r9972, r9973, r9974, r9975, r9976, r9977, r9978, r9979, r9980, r9981, r9982, r9983, r9984, r9985, r9986, r9987;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9966);
        mpfr_init_set_str(r9967, "2", 10, MPFR_RNDN);
        mpfr_init(r9968);
        mpfr_init(r9969);
        mpfr_init(r9970);
        mpfr_init(r9971);
        mpfr_init(r9972);
        mpfr_init(r9973);
        mpfr_init(r9974);
        mpfr_init(r9975);
        mpfr_init(r9976);
        mpfr_init_set_str(r9977, "1.0", 10, MPFR_RNDN);
        mpfr_init(r9978);
        mpfr_init(r9979);
        mpfr_init(r9980);
        mpfr_init(r9981);
        mpfr_init(r9982);
        mpfr_init(r9983);
        mpfr_init(r9984);
        mpfr_init(r9985);
        mpfr_init(r9986);
        mpfr_init(r9987);
}

double f_fm(double alpha, double beta, double i) {
        mpfr_set_d(r9966, i, MPFR_RNDN);
        ;
        mpfr_mul(r9968, r9967, r9966, MPFR_RNDN);
        mpfr_set_d(r9969, beta, MPFR_RNDN);
        mpfr_set_d(r9970, alpha, MPFR_RNDN);
        mpfr_add(r9971, r9969, r9970, MPFR_RNDN);
        mpfr_add(r9972, r9968, r9971, MPFR_RNDN);
        mpfr_div(r9973, r9966, r9972, MPFR_RNDN);
        mpfr_add(r9974, r9970, r9966, MPFR_RNDN);
        mpfr_add(r9975, r9974, r9969, MPFR_RNDN);
        mpfr_mul(r9976, r9972, r9972, MPFR_RNDN);
        ;
        mpfr_sub(r9978, r9976, r9977, MPFR_RNDN);
        mpfr_div(r9979, r9975, r9978, MPFR_RNDN);
        mpfr_mul(r9980, r9973, r9979, MPFR_RNDN);
        mpfr_cbrt(r9981, r9972, MPFR_RNDN);
        mpfr_div(r9982, r9974, r9981, MPFR_RNDN);
        mpfr_add(r9983, r9969, r9966, MPFR_RNDN);
        mpfr_mul(r9984, r9981, r9981, MPFR_RNDN);
        mpfr_div(r9985, r9983, r9984, MPFR_RNDN);
        mpfr_mul(r9986, r9982, r9985, MPFR_RNDN);
        mpfr_mul(r9987, r9980, r9986, MPFR_RNDN);
        return mpfr_get_d(r9987, MPFR_RNDN);
}

static mpfr_t r9988, r9989, r9990, r9991, r9992, r9993, r9994, r9995, r9996, r9997, r9998, r9999, r10000, r10001, r10002, r10003, r10004, r10005, r10006, r10007, r10008, r10009;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r9988);
        mpfr_init_set_str(r9989, "2", 10, MPFR_RNDN);
        mpfr_init(r9990);
        mpfr_init(r9991);
        mpfr_init(r9992);
        mpfr_init(r9993);
        mpfr_init(r9994);
        mpfr_init(r9995);
        mpfr_init(r9996);
        mpfr_init(r9997);
        mpfr_init(r9998);
        mpfr_init_set_str(r9999, "1.0", 10, MPFR_RNDN);
        mpfr_init(r10000);
        mpfr_init(r10001);
        mpfr_init(r10002);
        mpfr_init(r10003);
        mpfr_init(r10004);
        mpfr_init(r10005);
        mpfr_init(r10006);
        mpfr_init(r10007);
        mpfr_init(r10008);
        mpfr_init(r10009);
}

double f_dm(double alpha, double beta, double i) {
        mpfr_set_d(r9988, i, MPFR_RNDN);
        ;
        mpfr_mul(r9990, r9989, r9988, MPFR_RNDN);
        mpfr_set_d(r9991, beta, MPFR_RNDN);
        mpfr_set_d(r9992, alpha, MPFR_RNDN);
        mpfr_add(r9993, r9991, r9992, MPFR_RNDN);
        mpfr_add(r9994, r9990, r9993, MPFR_RNDN);
        mpfr_div(r9995, r9988, r9994, MPFR_RNDN);
        mpfr_add(r9996, r9992, r9988, MPFR_RNDN);
        mpfr_add(r9997, r9996, r9991, MPFR_RNDN);
        mpfr_mul(r9998, r9994, r9994, MPFR_RNDN);
        ;
        mpfr_sub(r10000, r9998, r9999, MPFR_RNDN);
        mpfr_div(r10001, r9997, r10000, MPFR_RNDN);
        mpfr_mul(r10002, r9995, r10001, MPFR_RNDN);
        mpfr_cbrt(r10003, r9994, MPFR_RNDN);
        mpfr_div(r10004, r9996, r10003, MPFR_RNDN);
        mpfr_add(r10005, r9991, r9988, MPFR_RNDN);
        mpfr_mul(r10006, r10003, r10003, MPFR_RNDN);
        mpfr_div(r10007, r10005, r10006, MPFR_RNDN);
        mpfr_mul(r10008, r10004, r10007, MPFR_RNDN);
        mpfr_mul(r10009, r10002, r10008, MPFR_RNDN);
        return mpfr_get_d(r10009, MPFR_RNDN);
}

