我一直在玩最近的一些數學,我想知道是否有人寫過/看過一個C++實現的日誌,可以指定基地(根..?)?如:一個可以指定基礎的日誌的C++實現?
Mathematical function definition http://i1091.photobucket.com/albums/i383/dannydeth1/forumla.png
很顯然,我寧願賦予基本作爲參數:雙d =日誌(B,X);
謝謝你的時間和任何答案,非常感謝。 :}
編輯:另外,我認爲它會使用泰勒系列?
我一直在玩最近的一些數學,我想知道是否有人寫過/看過一個C++實現的日誌,可以指定基地(根..?)?如:一個可以指定基礎的日誌的C++實現?
Mathematical function definition http://i1091.photobucket.com/albums/i383/dannydeth1/forumla.png
很顯然,我寧願賦予基本作爲參數:雙d =日誌(B,X);
謝謝你的時間和任何答案,非常感謝。 :}
編輯:另外,我認爲它會使用泰勒系列?
log_b_(x)= log(x)/ log(b)。只是這樣做:
double log(double base, double x)
{
return std::log(x)/std::log(base);
}
非常感謝您的回答。 :) – Erkling
這是直接實現自己:
double
logb(double n, double b)
{
return log(n)/log(b);
}
是一般有用嗎?或者幾乎所有的用途歸於log
,log10
和log2
?
'log10'是否只是爲了方便而存在,還是因爲它通常比'log(x)/ log(10)'更準確?如果是後者,那麼它不一定直接實現'logb'「適當地」:即使'b'不是固定的,也可能有比這更準確的實現。 –
'log10'存在,因爲標準要求它存在:-)。我認爲這是更方便; IIRC,它出現在最早的Unix中,而且很多數學函數的準確度都很差。關於精度,我不確定獨特的實現會不會提高精度(特別是在具有擴展精度FP寄存器的機器上);但是,他們當然可以更快。這也可能是一個動機。 (WRT精度,該標準還需要一個'log1p'函數,這**是**嚴格按照精度激發的。) –
'log_b(x)'與'x ^(1/b)'不一樣(正如你的例子所聲稱的那樣)。 – Mankarse
@Erkling:下面的兩個答案都是正確的,你應該接受其中的一個。慎重考慮。 – andand