log2가 내 수학에서 발견되지않았습니까?
Visual C++ 2008 Express의 상당히 새로운 설치를 사용하고 있습니다.
Mac에서 Eclipse를 사용하는 것을 포함하여 발견된 log2 함수를 사용하는 프로그램을 컴파일하려고 하는데 이 Windows 컴퓨터에서 함수를 찾을 수 없습니다(오류 C3861: 'log2': identifier not found).
IDE에 고유한 디렉토리를 포함하는 것으로 알고 있습니다. math.h는 Microsoft SDKs\Windows\v6.0에 없습니다.A\Include\ 디렉토리를 찾았지만 이 디렉토리에서 math.h를 찾았습니다. Microsoft Visual Studio 9.0\VC\include.그 디렉토리에 cmath도 있습니다...
log2는 어디에 있습니까?
여기서부터:
프로토타입: double log2(double a number);
헤더 파일: math.h(C) 또는 cmath(C++)
또는 여기와 같이 에뮬레이트합니다.
#include <math.h>
...
// Calculates log2 of number.
double Log2( double n )
{
// log(n)/log(2) is log2.
return log( n ) / log( 2 );
}
안타깝게도 마이크로소프트는 그것을 제공하지 않습니다.
log2()
C90 표준이 아닌 C99 표준에만 정의되어 있습니다.Microsoft Visual C++는 완전한 C99 호환 컴파일러가 없으므로(이런, 완전한 C99 호환 컴파일러는 존재하지 않습니다. GCC도 완전히 지원하지 않습니다.) 제공할 필요가 없습니다.log2()
.
당신이 찾으려 한다면,log2
정확히는 정수 중에, 약간은 상처를 줄 수 없는 사람도 있습니다.
#include <stdio.h>
unsigned int log2( unsigned int x )
{
unsigned int ans = 0 ;
while( x>>=1 ) ans++;
return ans ;
}
int main()
{
// log(7) = 2 here, log(8)=3.
//for( int i = 0 ; i < 32 ; i++ )
// printf( "log_2( %d ) = %d\n", i, log2( i ) ) ;
for( unsigned int i = 1 ; i <= (1<<30) ; i <<= 1 )
printf( "log_2( %d ) = %d\n", i, log2( i ) ) ;
}
Visual Studio 2013을 통해서.log2()
가 추가되었습니다.Visual Studio 2013에서 C99 라이브러리 지원을 참조하십시오.
참고:
log2(x) = log(x) * log(e)
여기서 log(e)는 상수입니다.math.h
정의합니다.M_LOG2E
의 가치까지log(e)
정의한다면_USE_MATH_DEFINES
포함하기 전에math.h
:
#define _USE_MATH_DEFINES // needed to have definition of M_LOG2E
#include <math.h>
static inline double log2(double n)
{
return log(n) * M_LOG2E;
}
비록 보통의 접근방법은 하는 것이지만,log(n)/log(2)
, 특히 이동식 CPU의 경우 분할 속도가 항상 느리기 때문에 대신 곱셈을 사용하는 것이 좋습니다.예를 들어, 현대의 인텔 CPU에서는 muld 대 divsd 하나의 명령어에서 생성된 코드의 차이가 발생하며, 인텔 매뉴얼에 따르면 분할 속도가 5-10배 느릴 것으로 예상할 수 있습니다.모바일 ARM CPU에서는 부동 소수점 분할이 곱셈보다 10-100 정도 느릴 것으로 예상됩니다.
또한, 다음과 같은 컴파일 문제가 있는 경우log2
Android의 경우, log2는 Android-18부터 시작하는 헤더에서 사용할 수 있는 것 같습니다.
#include <android/api-level.h>
#if __ANDROID_API__ < 18
static inline double log2(double n)
{
return log(n) * M_LOG2E;
}
#endif
언급URL : https://stackoverflow.com/questions/758001/log2-not-found-in-my-math-h
'programing' 카테고리의 다른 글
XML 스키마 열거형으로 속성을 제한하는 방법 (0) | 2023.10.10 |
---|---|
파이썬으로 경로 이름만 얻는 방법? (0) | 2023.10.10 |
동적으로 작성된 필드에서 JQuery Datepicker 사용 (0) | 2023.10.10 |
텍스트 문자열을 $first와 $last name(php)으로 나눕니다. (0) | 2023.10.10 |
체크아웃 시 WooCommerce 문자 발송 변경 방법 (0) | 2023.10.10 |