Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <time.h>
- #include <conio.h>
- #include <windows.h>
- #include <stdlib.h>
- #include <stdio.h>
- //sin(x^2 + 5) * 4
- int main()
- {
- double a, b, step, x, f, t , e , k;
- printf("Enter the lower limit\n");
- scanf_s("%lf", &a);
- printf("Enter upper limit\n");
- scanf_s("%lf", &b);
- printf("Enter step\n");
- scanf_s("%lf", &step);
- LARGE_INTEGER frequency, start, finish;
- x = a;
- f = 0;
- e = 5;
- k = 4;
- QueryPerformanceFrequency(&frequency); // частота(тактов в секунду)
- QueryPerformanceCounter(&start); // количество тактов после включения компа
- _asm
- {
- finit
- fld b
- fld x
- loop_start :
- fcom
- fstsw ax; сохраняем слово состояния
- and ah, 01000101b; проверяем значения соответствующих флагов
- jz loop_end; если число в стеке больше, чем число b
- fld x
- fmul x//умножаю ST(0) на x
- fadd e//прибавляю 5
- fsin//беру cинус ST(0)
- fmul k //умножаю ST(0) на 4
- fadd f
- fstp f//достаю из стека сумму
- fadd step//прибавляю шаг
- fst x//достаю x из стека
- jmp loop_start
- loop_end :
- fwait
- }
- QueryPerformanceCounter(&finish); // количество тактов после выполнения вычислений
- t = (double)(finish.QuadPart - start.QuadPart) / (double)frequency.QuadPart; // QuadPart - часть объединения LI для пк, поддерж 64-битку
- printf("Time ASM is %lf seconds.\n", t);
- printf("%lf\n", f);
- // с помощью библиотеки
- QueryPerformanceCounter(&finish);
- t = (double)(finish.QuadPart - start.QuadPart) / (double)frequency.QuadPart;
- printf("Time ASM is %lf seconds.\n", t);
- printf("%lf\n", f);
- x = a;
- f = 0;
- double temp = 0;
- QueryPerformanceFrequency(&frequency);
- QueryPerformanceCounter(&start);
- while (x <= b)
- {
- temp = pow(x, 2) + 5;
- f += sin(temp) * 4;
- x += step;
- }
- QueryPerformanceCounter(&finish);
- t = (double)(finish.QuadPart - start.QuadPart) / (double)frequency.QuadPart;
- printf("Time C is %lf seconds.\n", t);
- printf("%lf\n", f);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement