Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Расчет значения многочленов и их степень - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Деление длинных чисел нацело http://www.cyberforum.ru/cpp-beginners/thread606780.html
Возникла проблема. Завтра сдавать курсовик (арифметика длинных чисел), а у меня не готово деление, так как не знаю, как сделать. Курсовик делал в ретро стиле: без классов, без структур, все просто и...
C++ Ошибка в коде. #include <stdio.h> #include <iostream.h> int main(int nNumberofArgs, char* pszArgs) { int nNCelsius; cout << "Enter TC"; cin >> nCelsius; int nFactor; http://www.cyberforum.ru/cpp-beginners/thread606761.html
C++ Зачем нужны header-файлы
Здравствуйте хотелось бы узнать ,в чем заключается смысл этих самых header файлов ?
Рисование в Win32 C++
Делаю небольшую утилитку и столкнулся с большой проблемой. Короче в окне много GDI+ графики с двойным буферизацией, и лиш несколько дочерних окон класа "edit" - однострочные. Текст содержащейся в эти...
C++ Вывод png изображения на экран http://www.cyberforum.ru/cpp-beginners/thread606730.html
Здравствуйте уважаемые программисты! Подскажите как вывести png изображение на экран. Потом еще нужно будет вращать его на произвольный угол относительно произвольной точки. Нужны ли для этого...
C++ По системе двусторонних дорог определить, можно ли, закрыв какие-нибудь три дороги, добиться того, чтобы из города A нельзя было попасть в город B Подкиньте пожалуйста идей как решать подробнее

Показать сообщение отдельно
Александер1
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 68
18.06.2012, 14:39  [ТС]
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include "FIX.h"
#include <Windows.h>
 
#include <intrin.h>
#pragma intrinsic(__rdtsc)
 
#define f(x) (logf((1 + x) / (1 - x)))
 
//Коэффициэнты f6
float f6koef[] = {0.420000f, 0.391429f, 0.200000f, 0.048387f, 0.009695f, 0.011065f, 0.001784f};
 
//Коэффициенты f6 для фикс точки
FIX f6koefFx[] = {FLTOFIX(0.420000f), FLTOFIX(0.391429f), FLTOFIX(0.200000f), FLTOFIX(0.048387f), FLTOFIX(0.009695f), FLTOFIX(0.011065f), FLTOFIX(0.001784f)};
typedef float (*MPFLOAT)(float);
 
//Степень ряда
#define SOMEDEGREE 19
#define NITER ((SOMEDEGREE - 1) / 2)
 
//Степень ряда с фиксированной точкой
#define SOMEDEGREEFIX 19
#define NITERFIX ((SOMEDEGREEFIX - 1) / 2)
 
//Погрешность
float dres;
 
//Количество точек для оценки времени
const int countPoint = 10;
 
//Количество циклов для оценки времени
const int countCycle = 100000;
 
//Количество функций для оценки
const int countFunc = 7;
 
//Количество функций с фиксированной точкой
const int countFuncFix = 4;
 
// Размер таблицы
const int sizeTable = 2 << 12;
// Кол-во младших разрядов у фиксированной точки
const int YONGPOINTFIX = CPINT - 13;
// &#152;*Шаг таблица
const float h = 1.0f / sizeTable;
// Таблица
float table[sizeTable][2];
FIX tableFix[sizeTable][2];
 
 
//Реализация с помощью стандартной библиотеки
float etalon(float x)
{
    float res = f(x);
    float powx = x;
    for(int i = 0; i < 7; i++)
    {
        res += f6koef[i] * powx;
        powx *= x;
    }
    return res;
}
 
//Пустая функция для измерения времени вызова
float emptyFunc(float x)
{
    return 1;
}
 
//Пустая функция для измерения времени с фикс точкой
FIX emptyFunc(FIX x)
{
    return 1;
}
//Измерение времени с фикс точкой
FIX metrTimeFix(double timer[countFuncFix][countPoint + 1], __int64 timerT[countFuncFix][countPoint + 1])
{
    FIX ret = 0;
    PFIX pfix[] =  {gornerCycleFix, gornerNoCycleFix, tableAlgoFix, emptyFunc};
 
    FIX args[10];
    int n = 0;
    for(float x = 0; x < 1; x += 0.1f)
    {
        args[n++] = FLTOFIX(x);
    }
 
    for(int n = 0; n < countFuncFix; n++)
    {
        PFIX p = pfix[n];
        double total = 0;
        __int64 totalT = 0;
        for(int i = 0; i < countPoint; i++)
        {
            DWORD start = GetTickCount();
            __int64 startT = __rdtsc();
            for(int k = 0; k < countCycle; k++)
            {
                for(int a = 0; a < 10; a++)
                {
                    ret = p(args[a]);
                }
            }
            __int64 endT = __rdtsc();
            DWORD finish = GetTickCount();
            timer[n][i] = (double)(finish - start) / 10 / countCycle;
            timerT[n][i] = (endT - startT) / 10 / countCycle;
            total += finish - start;
            totalT += endT - startT;
        }
        timer[n][countPoint] = total / countPoint  / 10 / countCycle;
        timerT[n][countPoint] = totalT / countPoint  / 10 / countCycle;
    }
 
    return ret;
}
 
//Вывод информации о времени вычесления функции 
void outMetrTime(char* descript[], int size, double timer[][countPoint + 1], __int64 timerT[][countPoint + 1])
{
    printf("Method\tTime\n");
    for(int i = 0; i < size; i++)
    {
        printf("%s\t%I64d(%d nc)\n", descript[i], timerT[i][countPoint], (int)(timer[i][countPoint] * 1000000));    
    }
 
    printf("\n\n");
 
    printf("n");
    for(int i = 0; i < size; i++)
        printf("\t%s", descript[i]);
    printf("\n");
 
    for(int i = 0; i < countPoint; i++)
    {
        printf("%d", i + 1);
        for(int n = 0; n < size; n++)
            printf("\t%I64d(%d nc)", timerT[n][countPoint], (int)(timer[n][countPoint] * 1000000)); 
        printf("\n");
    }
}
void main()
{
    initTable();
    
    
    char* descriptFix[] =  {"Empty Func Fix"};
    double timerFix[countFuncFix][countPoint + 1];
    __int64 timerTFix[countFuncFix][countPoint + 1];
    metrTimeFix(timerFix, timerTFix);
    printf("\n\nFIX\n");
    outMetrTime(descriptFix, countFuncFix, timerFix, timerTFix);
    getch ();
 
}
Добавить процедуру нахождения Хграничного, и его max степень.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru