Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- timer1_v1.c
- You can find all my C programs at Dragan Milicev's pastebin:
- https://pastebin.com/u/dmilicev
- */
- #include <stdio.h>
- #include <time.h> // clock_t, clock(), CLOCKS_PER_SEC
- int multiply(int n, int m)
- {
- int ans = 0, count = 0;
- while (m)
- {
- if (m % 2 == 1) // check for set bit and left
- ans += n << count; // shift n, count times
- count++; // increment of place value (count)
- m /= 2;
- }
- return ans;
- }
- int main(void)
- {
- clock_t start_time, end_time;
- double elapsed_time;
- int i;
- unsigned sum=1, n=100000000; // n is the number of terms
- start_time = clock(); // start measuring time
- for(i=1; i<=n; i++)
- {
- sum = i*10 + 1;
- }
- end_time = clock(); // end measuring time
- elapsed_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
- printf("\n 1. Classically, by multiplication ");
- printf("\n 1. sum = %u ", sum);
- printf("\n 1. elapsed_time = %lf s \n", elapsed_time);
- start_time = clock(); // start measuring time
- for(i=1; i<=n; i++)
- {
- sum = (i << 3) + i + i + 1;
- }
- end_time = clock(); // end measuring time
- elapsed_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
- printf("\n 2. Using shift operator and addition ");
- printf("\n 2. sum = %u ", sum);
- printf("\n 2. elapsed_time = %lf s \n", elapsed_time);
- start_time = clock(); // start measuring time
- for(i=1; i<=n; i++)
- {
- sum = (i << 3) + (i << 1) + 1;
- }
- end_time = clock(); // end measuring time
- elapsed_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
- printf("\n 3. Using shift operator ");
- printf("\n 3. sum = %u ", sum);
- printf("\n 3. elapsed_time = %lf s \n", elapsed_time);
- start_time = clock(); // start measuring time
- for(i=1; i<=n; i++)
- {
- sum = multiply(i,10) + 1;
- }
- end_time = clock(); // end measuring time
- elapsed_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
- printf("\n 4. By calling the multiplication function ");
- printf("\n 4. sum = %u ", sum);
- printf("\n 4. elapsed_time = %lf s \n", elapsed_time);
- start_time = clock(); // start measuring time
- unsigned ans = 0;
- int count = 0, m=10;
- for(i=1; i<=n; i++)
- {
- while (m)
- {
- if (m % 2 == 1) // check for set bit and left
- ans += n << count; // shift n, count times
- count++; // increment of place value (count)
- m /= 2;
- }
- ans = ans + 1;
- count=0;
- m=10;
- }
- end_time = clock(); // end measuring time
- elapsed_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
- printf("\n 5. With code of multiplication function ");
- printf("\n 5. sum = %u ", sum);
- printf("\n 5. elapsed_time = %lf s \n", elapsed_time);
- return(0);
- }
Add Comment
Please, Sign In to add comment