CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4
  1. #1
    Join Date
    Feb 2003
    Posts
    1

    Power Function with no math libraries

    I need a power function that will work without including any math libraries. It has to support non-integer exponents. Anyone got any ideas?

  2. #2
    Join Date
    Sep 2002
    Posts
    1,747
    The simplest way would be to use the taylor expansions for the exponential function and natural logarithm:

    e^x = 1 + x + x^2/2 + x^3/3! + ... (be sure to use proper numeric types!)
    ln(1+x) = x - x^2/2 + x^2/3 - ... (-1<x<=1)

    and then transform the power as:

    a^b = e^(b*ln(a)).

    You just must be sure to transform the logarithmic term to the bounds (most easily by dividing repeatedly by Euler's constant and at the same time adding one repeatedly to the result). There are some very interesting methods using recursions that might give better performance, but they would need a little more explanation...
    */*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/

    "It's hard to believe in something you don't understand." -- the sidhi X-files episode

    galathaea: prankster, fablist, magician, liar

  3. #3
    Join Date
    Feb 2003
    Location
    Greece-Athens
    Posts
    57
    I hope I really understood...!

    The function is really simple:

    int Power(int a, int p)
    {
    long result;
    result=1;

    for (int i=1; i<=p; i++)
    {
    result=result*a;
    }

    return result;
    }

    ready to use it.
    You may need some overloadings for other data types.

    I hope I helped...
    HardCoDed

  4. #4
    Join Date
    Oct 2001
    Location
    lake of fire and brimstone
    Posts
    1,628
    Originally posted by A_Stavros
    I hope I really understood...!
    I'm afraid not:
    Originally posted by smat42
    It has to support non-integer exponents.
    Galathaea's post is good and simple.
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞
    ۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞۞

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured