/* gcc kompleksnost.c -pedantic -Wall -Wextra -g -okompleksnost -lm -O0 */ #include #include #include #include #define KOLIKOKRAT 10000001 #define nrx(x, y) powl((x), 1.0 / (y)) /* nti koren izpeljemo iz potence na 1/eks */ int main (void) { /* za kvadratne in kubicne korene uporabimo sqrt in cbrt */ long double rezultat = 0; /* da prevajalnik ne bi optimiziral */ long double rezultat2 = 0; clock_t cas_zacetek, cas_konec, cas2_konec; cas_zacetek = clock(); for (unsigned long long int x = 2; x <= KOLIKOKRAT; x++) rezultat += cbrtl(powl(x, 2)/(x-1))*sqrtl(powl(x-1, 2)/powl(x, 5))*nrx(powl(x, 20)/powl(x+1, 3), 6)*sqrtl((x+1)/powl(x, 3)); cas_konec = clock(); for (unsigned long long int x = 2; x <= KOLIKOKRAT; x++) rezultat2 += nrx(pow(x-1, 2), 3); cas2_konec = clock(); fprintf(stdout, "neoptimizirana enacba je za 10e6 iteracij porabila %lf sekund, optimizirana pa %lf\n" "rezultat = %Lf, rezultat2 = %Lf\n", ((double) (cas_konec-cas_zacetek))/CLOCKS_PER_SEC, ((double) (cas2_konec-cas_konec))/CLOCKS_PER_SEC, rezultat, rezultat2 ); return 0; }