Retrieve the logarithm of number in a specified base ?

A Person definitely_not at aol.com
Sun Dec 5 17:53:31 CET 2004


To retrieve the logarithm of a number in a specified base, you'll need to make 
a radix change from base 10 to the number base.

Here's an example: (we use base 3 and want the logorithm of 111)

        3^x = 111
        log(3^x) = log(111)
        x*log(3) = log(111)
        x = log(111)/log(3)

log could be either natural log or log10.

        using approximations
        log(111) =  4.709530201312334135763340908
        log(3) = 1.098612288668109691395245237

        x = 4.709530201312334135763340908/1.098612288668109691395245237
        x = 4.286799128218272844528773667

Now you have to convert from base 10 to base 3

        Convert the integer part to base 3
        4 = 11

        Convert the fraction part to base 3 which is done by multiplying
        and keeping track of when the fraction equals or exceeds 1 and
        subtracting this amount (1 <= number < base) and continuing.
        Usually the fraction will not disappear, so we can find this to
        the accuracy of our previous computation.

        However for each step we keep track of the integer part and write
        it down, as this is our fraction in base 3
        
        3*0.286799128218272844528773667 = 0.8603973846548185335863210007
        so 0 is the first fractional part

        3*0.8603973846548185335863210007 = 2.581192153964455600758963002
        so 2 is the next fractional digit
        we subtract 2

        3*0.5811921539644556007589630022 = 1.743576461893366802276889007
        so 1 is the next digit

        and so on, and we gradually obtain

        11.02120200200121100011111021120112022022020012001121012212100 as
	our logarithm in base 3

        This could easily be incorporated in gmp if it doesn't already exist.
        Like you, I've just responded off the top of my head and haven't read
        the {censored_word} manual yet.




More information about the gmp-discuss mailing list