2011-11-30 3 views
0

저는 최근 몇 가지 수학을 가지고 놀았습니다. 누군가가 C++의 로그 구현을 작성했는지 알고 싶습니다. 마찬가지로 : 분명히로그의 C++ 구현으로 기반을 지정할 수 있습니까?

Mathematical function definition http://i1091.photobucket.com/albums/i383/dannydeth1/forumla.png

I는 인수로 기재주는 선호 : D = 이중 로그 (b을 X);

감사의 말씀 감사합니다. :}

편집 : Taylor Series를 사용하겠습니까?

+5

'log_b (x)'는'x^(1/b)'와 같지 않습니다. – Mankarse

+0

@Erkling : 아래의 두 대답은 모두 정확하며 그 중 하나를 받아 들여야합니다. 신중하게 고려하십시오. – andand

답변

16

log_b_ (x) = log (x)/log (b). 그냥 이렇게 :

double log(double base, double x) 
{ 
    return std::log(x)/std::log(base); 
} 
+0

답변 해 주셔서 감사합니다. :) – Erkling

7

그것은 자신을 구현하는 간단합니다 : 그것은 일반적으로 유용

double 
logb(double n, double b) 
{ 
    return log(n)/log(b); 
} 

인가? 또는 실질적으로 모든 용도가 log, log10log2에 포함되어 있습니까?

+0

'log10'은 편의상 만 존재합니까? 아니면 일반적으로'log (x)/log (10)'보다 정확하기 때문에 존재합니까? 후자의 경우,'logb'를 "적절하게"구현하는 것이 반드시 간단하지는 않습니다 :'b'가 고정되어 있지 않더라도, 이것보다 더 정확한 구현이있을 수 있습니다. –

+0

'log10'은 표준이 그것을 요구하기 때문에 존재합니다 :-). 나는 그것이 더 편리하다고 생각한다. IIRC는 초기 유닉스에 있었기 때문에 많은 수학 함수가 끔찍한 정밀도를 보였습니다. 정밀도에 관해서는 명확한 구현이 필연적으로 (특히 정밀 FP 레지스터가 확장 된 기계에서) 더 나은 정밀도를 제공 할 것이라는 확신이 들지 않습니다. 그러나 그들은 확실히 빠를 수 있습니다. 또한 동기가 될 수 있습니다. (WRT 정밀도, 표준은 정확도에 의해 엄격하게 좌우되는 ** log1p 함수를 요구한다.) –

관련 문제