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

char *name = "Compound Interest";

double f_if(float i, float n) {
        float r57750 = 100;
        float r57751 = 1;
        float r57752 = i;
        float r57753 = n;
        float r57754 = r57752 / r57753;
        float r57755 = r57751 + r57754;
        float r57756 = pow(r57755, r57753);
        float r57757 = r57756 - r57751;
        float r57758 = r57757 / r57754;
        float r57759 = r57750 * r57758;
        return r57759;
}

double f_id(double i, double n) {
        double r57760 = 100;
        double r57761 = 1;
        double r57762 = i;
        double r57763 = n;
        double r57764 = r57762 / r57763;
        double r57765 = r57761 + r57764;
        double r57766 = pow(r57765, r57763);
        double r57767 = r57766 - r57761;
        double r57768 = r57767 / r57764;
        double r57769 = r57760 * r57768;
        return r57769;
}


double f_of(float i, float n) {
        float r57770 = i;
        float r57771 = -2.849201036281836e-09;
        bool r57772 = r57770 <= r57771;
        float r57773 = 100;
        float r57774 = 1;
        float r57775 = n;
        float r57776 = r57770 / r57775;
        float r57777 = r57774 + r57776;
        float r57778 = pow(r57777, r57775);
        float r57779 = r57778 - r57774;
        float r57780 = cbrt(r57779);
        float r57781 = r57780 * r57780;
        float r57782 = r57781 * r57780;
        float r57783 = r57782 / r57776;
        float r57784 = r57773 * r57783;
        float r57785 = 1.1570910217973246e-07;
        bool r57786 = r57770 <= r57785;
        float r57787 = 1/6;
        float r57788 = 2;
        float r57789 = pow(r57770, r57788);
        float r57790 = r57775 * r57789;
        float r57791 = r57787 * r57790;
        float r57792 = 1/2;
        float r57793 = r57775 * r57770;
        float r57794 = r57792 * r57793;
        float r57795 = r57791 + r57794;
        float r57796 = r57775 + r57795;
        float r57797 = r57773 * r57796;
        float r57798 = 6.896033226216904e+172;
        bool r57799 = r57770 <= r57798;
        float r57800 = log(r57775);
        float r57801 = log(r57770);
        float r57802 = r57800 - r57801;
        float r57803 = r57802 / r57775;
        float r57804 = exp(r57803);
        float r57805 = r57804 - r57774;
        float r57806 = r57805 / r57776;
        float r57807 = r57773 * r57806;
        float r57808 = r57799 ? r57784 : r57807;
        float r57809 = r57786 ? r57797 : r57808;
        float r57810 = r57772 ? r57784 : r57809;
        return r57810;
}

double f_od(double i, double n) {
        double r57811 = i;
        double r57812 = -2.849201036281836e-09;
        bool r57813 = r57811 <= r57812;
        double r57814 = 100;
        double r57815 = 1;
        double r57816 = n;
        double r57817 = r57811 / r57816;
        double r57818 = r57815 + r57817;
        double r57819 = pow(r57818, r57816);
        double r57820 = r57819 - r57815;
        double r57821 = cbrt(r57820);
        double r57822 = r57821 * r57821;
        double r57823 = r57822 * r57821;
        double r57824 = r57823 / r57817;
        double r57825 = r57814 * r57824;
        double r57826 = 1.1570910217973246e-07;
        bool r57827 = r57811 <= r57826;
        double r57828 = 1/6;
        double r57829 = 2;
        double r57830 = pow(r57811, r57829);
        double r57831 = r57816 * r57830;
        double r57832 = r57828 * r57831;
        double r57833 = 1/2;
        double r57834 = r57816 * r57811;
        double r57835 = r57833 * r57834;
        double r57836 = r57832 + r57835;
        double r57837 = r57816 + r57836;
        double r57838 = r57814 * r57837;
        double r57839 = 6.896033226216904e+172;
        bool r57840 = r57811 <= r57839;
        double r57841 = log(r57816);
        double r57842 = log(r57811);
        double r57843 = r57841 - r57842;
        double r57844 = r57843 / r57816;
        double r57845 = exp(r57844);
        double r57846 = r57845 - r57815;
        double r57847 = r57846 / r57817;
        double r57848 = r57814 * r57847;
        double r57849 = r57840 ? r57825 : r57848;
        double r57850 = r57827 ? r57838 : r57849;
        double r57851 = r57813 ? r57825 : r57850;
        return r57851;
}

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 r57852, r57853, r57854, r57855, r57856, r57857, r57858, r57859, r57860, r57861;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init_set_str(r57852, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57853, "1", 10, MPFR_RNDN);
        mpfr_init(r57854);
        mpfr_init(r57855);
        mpfr_init(r57856);
        mpfr_init(r57857);
        mpfr_init(r57858);
        mpfr_init(r57859);
        mpfr_init(r57860);
        mpfr_init(r57861);
}

double f_im(double i, double n) {
        ;
        ;
        mpfr_set_d(r57854, i, MPFR_RNDN);
        mpfr_set_d(r57855, n, MPFR_RNDN);
        mpfr_div(r57856, r57854, r57855, MPFR_RNDN);
        mpfr_add(r57857, r57853, r57856, MPFR_RNDN);
        mpfr_pow(r57858, r57857, r57855, MPFR_RNDN);
        mpfr_sub(r57859, r57858, r57853, MPFR_RNDN);
        mpfr_div(r57860, r57859, r57856, MPFR_RNDN);
        mpfr_mul(r57861, r57852, r57860, MPFR_RNDN);
        return mpfr_get_d(r57861, MPFR_RNDN);
}

static mpfr_t r57862, r57863, r57864, r57865, r57866, r57867, r57868, r57869, r57870, r57871, r57872, r57873, r57874, r57875, r57876, r57877, r57878, r57879, r57880, r57881, r57882, r57883, r57884, r57885, r57886, r57887, r57888, r57889, r57890, r57891, r57892, r57893, r57894, r57895, r57896, r57897, r57898, r57899, r57900, r57901, r57902;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r57862);
        mpfr_init_set_str(r57863, "-2.849201036281836e-09", 10, MPFR_RNDN);
        mpfr_init(r57864);
        mpfr_init_set_str(r57865, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57866, "1", 10, MPFR_RNDN);
        mpfr_init(r57867);
        mpfr_init(r57868);
        mpfr_init(r57869);
        mpfr_init(r57870);
        mpfr_init(r57871);
        mpfr_init(r57872);
        mpfr_init(r57873);
        mpfr_init(r57874);
        mpfr_init(r57875);
        mpfr_init(r57876);
        mpfr_init_set_str(r57877, "1.1570910217973246e-07", 10, MPFR_RNDN);
        mpfr_init(r57878);
        mpfr_init_set_str(r57879, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r57880, "2", 10, MPFR_RNDN);
        mpfr_init(r57881);
        mpfr_init(r57882);
        mpfr_init(r57883);
        mpfr_init_set_str(r57884, "1/2", 10, MPFR_RNDN);
        mpfr_init(r57885);
        mpfr_init(r57886);
        mpfr_init(r57887);
        mpfr_init(r57888);
        mpfr_init(r57889);
        mpfr_init_set_str(r57890, "6.896033226216904e+172", 10, MPFR_RNDN);
        mpfr_init(r57891);
        mpfr_init(r57892);
        mpfr_init(r57893);
        mpfr_init(r57894);
        mpfr_init(r57895);
        mpfr_init(r57896);
        mpfr_init(r57897);
        mpfr_init(r57898);
        mpfr_init(r57899);
        mpfr_init(r57900);
        mpfr_init(r57901);
        mpfr_init(r57902);
}

double f_fm(double i, double n) {
        mpfr_set_d(r57862, i, MPFR_RNDN);
        ;
        mpfr_set_si(r57864, mpfr_cmp(r57862, r57863) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r57867, n, MPFR_RNDN);
        mpfr_div(r57868, r57862, r57867, MPFR_RNDN);
        mpfr_add(r57869, r57866, r57868, MPFR_RNDN);
        mpfr_pow(r57870, r57869, r57867, MPFR_RNDN);
        mpfr_sub(r57871, r57870, r57866, MPFR_RNDN);
        mpfr_cbrt(r57872, r57871, MPFR_RNDN);
        mpfr_mul(r57873, r57872, r57872, MPFR_RNDN);
        mpfr_mul(r57874, r57873, r57872, MPFR_RNDN);
        mpfr_div(r57875, r57874, r57868, MPFR_RNDN);
        mpfr_mul(r57876, r57865, r57875, MPFR_RNDN);
        ;
        mpfr_set_si(r57878, mpfr_cmp(r57862, r57877) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r57881, r57862, r57880, MPFR_RNDN);
        mpfr_mul(r57882, r57867, r57881, MPFR_RNDN);
        mpfr_mul(r57883, r57879, r57882, MPFR_RNDN);
        ;
        mpfr_mul(r57885, r57867, r57862, MPFR_RNDN);
        mpfr_mul(r57886, r57884, r57885, MPFR_RNDN);
        mpfr_add(r57887, r57883, r57886, MPFR_RNDN);
        mpfr_add(r57888, r57867, r57887, MPFR_RNDN);
        mpfr_mul(r57889, r57865, r57888, MPFR_RNDN);
        ;
        mpfr_set_si(r57891, mpfr_cmp(r57862, r57890) <= 0, MPFR_RNDN);
        mpfr_log(r57892, r57867, MPFR_RNDN);
        mpfr_log(r57893, r57862, MPFR_RNDN);
        mpfr_sub(r57894, r57892, r57893, MPFR_RNDN);
        mpfr_div(r57895, r57894, r57867, MPFR_RNDN);
        mpfr_exp(r57896, r57895, MPFR_RNDN);
        mpfr_sub(r57897, r57896, r57866, MPFR_RNDN);
        mpfr_div(r57898, r57897, r57868, MPFR_RNDN);
        mpfr_mul(r57899, r57865, r57898, MPFR_RNDN);
        if (mpfr_get_si(r57891, MPFR_RNDN)) { mpfr_set(r57900, r57876, MPFR_RNDN); } else { mpfr_set(r57900, r57899, MPFR_RNDN); };
        if (mpfr_get_si(r57878, MPFR_RNDN)) { mpfr_set(r57901, r57889, MPFR_RNDN); } else { mpfr_set(r57901, r57900, MPFR_RNDN); };
        if (mpfr_get_si(r57864, MPFR_RNDN)) { mpfr_set(r57902, r57876, MPFR_RNDN); } else { mpfr_set(r57902, r57901, MPFR_RNDN); };
        return mpfr_get_d(r57902, MPFR_RNDN);
}

static mpfr_t r57903, r57904, r57905, r57906, r57907, r57908, r57909, r57910, r57911, r57912, r57913, r57914, r57915, r57916, r57917, r57918, r57919, r57920, r57921, r57922, r57923, r57924, r57925, r57926, r57927, r57928, r57929, r57930, r57931, r57932, r57933, r57934, r57935, r57936, r57937, r57938, r57939, r57940, r57941, r57942, r57943;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r57903);
        mpfr_init_set_str(r57904, "-2.849201036281836e-09", 10, MPFR_RNDN);
        mpfr_init(r57905);
        mpfr_init_set_str(r57906, "100", 10, MPFR_RNDN);
        mpfr_init_set_str(r57907, "1", 10, MPFR_RNDN);
        mpfr_init(r57908);
        mpfr_init(r57909);
        mpfr_init(r57910);
        mpfr_init(r57911);
        mpfr_init(r57912);
        mpfr_init(r57913);
        mpfr_init(r57914);
        mpfr_init(r57915);
        mpfr_init(r57916);
        mpfr_init(r57917);
        mpfr_init_set_str(r57918, "1.1570910217973246e-07", 10, MPFR_RNDN);
        mpfr_init(r57919);
        mpfr_init_set_str(r57920, "1/6", 10, MPFR_RNDN);
        mpfr_init_set_str(r57921, "2", 10, MPFR_RNDN);
        mpfr_init(r57922);
        mpfr_init(r57923);
        mpfr_init(r57924);
        mpfr_init_set_str(r57925, "1/2", 10, MPFR_RNDN);
        mpfr_init(r57926);
        mpfr_init(r57927);
        mpfr_init(r57928);
        mpfr_init(r57929);
        mpfr_init(r57930);
        mpfr_init_set_str(r57931, "6.896033226216904e+172", 10, MPFR_RNDN);
        mpfr_init(r57932);
        mpfr_init(r57933);
        mpfr_init(r57934);
        mpfr_init(r57935);
        mpfr_init(r57936);
        mpfr_init(r57937);
        mpfr_init(r57938);
        mpfr_init(r57939);
        mpfr_init(r57940);
        mpfr_init(r57941);
        mpfr_init(r57942);
        mpfr_init(r57943);
}

double f_dm(double i, double n) {
        mpfr_set_d(r57903, i, MPFR_RNDN);
        ;
        mpfr_set_si(r57905, mpfr_cmp(r57903, r57904) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r57908, n, MPFR_RNDN);
        mpfr_div(r57909, r57903, r57908, MPFR_RNDN);
        mpfr_add(r57910, r57907, r57909, MPFR_RNDN);
        mpfr_pow(r57911, r57910, r57908, MPFR_RNDN);
        mpfr_sub(r57912, r57911, r57907, MPFR_RNDN);
        mpfr_cbrt(r57913, r57912, MPFR_RNDN);
        mpfr_mul(r57914, r57913, r57913, MPFR_RNDN);
        mpfr_mul(r57915, r57914, r57913, MPFR_RNDN);
        mpfr_div(r57916, r57915, r57909, MPFR_RNDN);
        mpfr_mul(r57917, r57906, r57916, MPFR_RNDN);
        ;
        mpfr_set_si(r57919, mpfr_cmp(r57903, r57918) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_pow(r57922, r57903, r57921, MPFR_RNDN);
        mpfr_mul(r57923, r57908, r57922, MPFR_RNDN);
        mpfr_mul(r57924, r57920, r57923, MPFR_RNDN);
        ;
        mpfr_mul(r57926, r57908, r57903, MPFR_RNDN);
        mpfr_mul(r57927, r57925, r57926, MPFR_RNDN);
        mpfr_add(r57928, r57924, r57927, MPFR_RNDN);
        mpfr_add(r57929, r57908, r57928, MPFR_RNDN);
        mpfr_mul(r57930, r57906, r57929, MPFR_RNDN);
        ;
        mpfr_set_si(r57932, mpfr_cmp(r57903, r57931) <= 0, MPFR_RNDN);
        mpfr_log(r57933, r57908, MPFR_RNDN);
        mpfr_log(r57934, r57903, MPFR_RNDN);
        mpfr_sub(r57935, r57933, r57934, MPFR_RNDN);
        mpfr_div(r57936, r57935, r57908, MPFR_RNDN);
        mpfr_exp(r57937, r57936, MPFR_RNDN);
        mpfr_sub(r57938, r57937, r57907, MPFR_RNDN);
        mpfr_div(r57939, r57938, r57909, MPFR_RNDN);
        mpfr_mul(r57940, r57906, r57939, MPFR_RNDN);
        if (mpfr_get_si(r57932, MPFR_RNDN)) { mpfr_set(r57941, r57917, MPFR_RNDN); } else { mpfr_set(r57941, r57940, MPFR_RNDN); };
        if (mpfr_get_si(r57919, MPFR_RNDN)) { mpfr_set(r57942, r57930, MPFR_RNDN); } else { mpfr_set(r57942, r57941, MPFR_RNDN); };
        if (mpfr_get_si(r57905, MPFR_RNDN)) { mpfr_set(r57943, r57917, MPFR_RNDN); } else { mpfr_set(r57943, r57942, MPFR_RNDN); };
        return mpfr_get_d(r57943, MPFR_RNDN);
}

