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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.96
s13jl8
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 2
#1

Ошибка error C3861: erfc: идентификатор не найден - C++

15.03.2013, 09:16. Просмотров 3869. Ответов 7
Метки нет (Все метки)

C++
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
#include<iostream>
#include<fstream>
#include<math.h>
 
using namespace std;
 
int main()
{
    ifstream file;
    file.open("outb.txt");
 
    char t[2];
    int n=0,one=0,V=0,i=0;
    float Sn=0,pi=0,tau;
    while(!file.eof())
    {
        file>>t[0];
        if(t[0]=='1') one++;
        if(t[0]=='-') continue;
        Sn=Sn+2*(t[0]-48)-1;
        n++;
    }
    file.close();
    file.open("outb.txt");
    tau=2/sqrt(n);
    pi=(float)one/n;
    if(fabs(pi-0.5)<tau)
    {
        file>>t[0];
        while(!file.eof())
        {
             file>>t[1];
             if (t[0]!=t[1]) V=V+1;
             t[0]=t[1];
        }
    }
    Sn=fabs(Sn)/sqrt(n);
    cout<<"Frequency Test. p="<<erfc(Sn/sqrt(2))<<endl;
    cout<<"Runs Test. p="<<erfc(fabs(V-2*pi*n*(1-pi))/(2*sqrt(2*n)*pi*(1-pi)))<<endl;
    file.close();
    return 0;
имею на выходе
error C3861: erfc: идентификатор не найден
Подскажите, что делать, из интернета для себя вынес только, что функция входит начиная с версии C99, но мне это не о чем не говорит. Пишу в Visual Studio 2012.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2013, 09:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка error C3861: erfc: идентификатор не найден (C++):

Ошибка error C3861 идентификатор не найден - C++
Делаю проект ATL Project В одном из методов хочу вызвать функцию, которая проверит дату. На вызове функции ошибка error C3861: getsec:...

Ошибка компиляции Error C3861, идентификатор не найден - C++
#include &lt;cstdlib&gt; #include &lt;ctime&gt; const int N = 3; const int M = 3; int main() { int array = {}; ...

Error C3861: _T: идентификатор не найден - C++
Код ниже в картинке. Урок NeHe по инициализации окна Windows

Error C3861: time: идентификатор не найден - C++
#include &lt;list&gt; #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;algorithm&gt; template &lt;class T&gt; T gen() { return rand() %...

Error C3861: _tcsdup: идентификатор не найден - C++
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;iostream&gt; #include...

Error C3861: sqr: идентификатор не найден - C++
Подскажите, что с программой не так то? Ошибка 1 error C3861: sqr: идентификатор не найден 2 IntelliSense: идентификатор «sqr» не...

7
UnsKneD
алкокодер
155 / 151 / 12
Регистрация: 27.12.2012
Сообщений: 550
15.03.2013, 09:59 #2
s13jl8, http://ab-initio.mit.edu/wiki/index.php/Faddeeva_Package
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
15.03.2013, 10:13 #3
MS не стали реализовывать не стандартную, как они считают, функцию.
Судя по http://msdn.microsoft.com/en-us/library/hh308292.aspx функция есть в amp_math.h.

Ну или вот код с какого-то форума.
C++
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
static const double rel_error= 1E-12;        //calculate 12 significant figures
//you can adjust rel_error to trade off between accuracy and speed
//but don't ask for > 15 figures (assuming usual 52 bit mantissa in a double)
 
double erfc(double x)
//erfc(x) = 2/sqrt(pi)*integral(exp(-t^2),t,x,inf)
//        = exp(-x^2)/sqrt(pi) * [1/x+ (1/2)/x+ (2/2)/x+ (3/2)/x+ (4/2)/x+ ...]
//        = 1-erf(x)
//expression inside [] is a continued fraction so '+' means add to denominator only
{
    static const double one_sqrtpi=  0.564189583547756287;        // 1/sqrt(pi)
    if (fabs(x) < 2.2) {
        return 1.0 - erf(x);        //use series when fabs(x) < 2.2
    }
    if (signbit(x)) {               //continued fraction only valid for x>0
        return 2.0 - erfc(-x);
    }
    double a=1, b=x;                //last two convergent numerators
    double c=x, d=x*x+0.5;          //last two convergent denominators
    double q1, q2= b/d;             //last two convergents (a/c and b/d)
    double n= 1.0, t;
    do {
        t= a*n+b*x;
        a= b;
        b= t;
        t= c*n+d*x;
        c= d;
        d= t;
        n+= 0.5;
        q1= q2;
        q2= b/d;
      } while (fabs(q1-q2)/q2 > rel_error);
    return one_sqrtpi*exp(-x*x)*q2;
}
0
UnsKneD
алкокодер
155 / 151 / 12
Регистрация: 27.12.2012
Сообщений: 550
15.03.2013, 10:20 #4
lemegeton, функция есть, но как её заставить работать... у меня так и не получилось, ругалось на AMP
0
s13jl8
0 / 0 / 0
Регистрация: 11.03.2013
Сообщений: 2
15.03.2013, 11:07 #5
UnsKneD, я находил это, но не понял, как воспользоваться, ибо в программировании совсем уж начинающий.
lemegeton, amp_math.h попробовал подключить, ничего не изменилось
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
15.03.2013, 11:37 #6
Цитата Сообщение от UnsKneD Посмотреть сообщение
ругалось на AMP
Видимо, надо слинковать.

Цитата Сообщение от s13jl8 Посмотреть сообщение
amp_math.h попробовал подключить, ничего не изменилось
Видимо, надо воспользоваться упомянутым по ссылке namespace'ом и линковать с AMP. Не заморачивайтесь, воспользуйтесь приведенным мной кодом. Он похож на правильный.
0
UnsKneD
алкокодер
155 / 151 / 12
Регистрация: 27.12.2012
Сообщений: 550
15.03.2013, 17:28 #7
lemegeton, нет не на линкову, на рестрикт, хотя другие функции работают, sin(), cos() и т.д. а erfc(), erf()

error: ни у одной из перегрузок нет правильных спецификаторов restrict
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
15.03.2013, 22:26 #8
Цитата Сообщение от UnsKneD Посмотреть сообщение
lemegeton, нет не на линкову, на рестрикт, хотя другие функции работают, sin(), cos() и т.д. а erfc(), erf()

error: ни у одной из перегрузок нет правильных спецификаторов restrict
Спецификатор restrict это некая специфичная для AMP фича. К сожалению, я с AMP напрочь не знаком. Лучше почитать какие-нибудь туториалы.
0
15.03.2013, 22:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2013, 22:26
Привет! Вот еще темы с ответами:

error C3861: Low: идентификатор не найден - C++
error C3861: Low: идентификатор не найден error C2146: синтаксическая ошибка: отсутствие &quot;;&quot; перед идентификатором error C2065:...

error C3861: puttext: идентификатор не найден - C++
Помогите разобраться: visualStudio 8 выдает сообщение error C3861: puttext: идентификатор не найден, хотя conio.h подключен #include...

Error C3861 delete_list идентификатор не найден - C++
Помогите разобраться с ошибкой, ругается на delete_list(&amp;tail); #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...

Error C3861: back_inserter: идентификатор не найден - C++
Почему ошибка? Все заголовочные файлы подключил. #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;string&gt; #include &lt;vector&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.