double logaritmus(double cislo, double eps){ if(isinf(cislo)) { return INFINITY; } if(cislo <= 0 || isnan(cislo) || isinf(eps) || isnan(eps) || eps <= 0) { return NAN; } if (cislo == 1) { return 0; } int poc = 0; while(cislo > IZP_E){ //deli cislo na 2 casti cislo /= IZP_E; //dalej pocita len zo zvyskom poc++; //pocet nasobkov e v cisle } while(cislo < IZP_E){ cislo *= IZP_E; poc--; } double p_rada = (cislo - 1)/(cislo + 1); //pomocna premenna double sum = 0.0; //sucet rozvoja double i = 1.0; double nove_c=(cislo - 1)/(cislo + 1); //clen rozvoja double citatel = (cislo-1)*(cislo-1); double menovatel = (cislo+1)*(cislo+1); while (fabs(nove_c) >= eps) { i+=2; sum += nove_c; p_rada = p_rada* ((citatel)/(menovatel)); nove_c=p_rada*(1/i); } return (2*sum)+poc;