1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

(A+B+C ) ^ (X + Y + Z ) of arbitrary complexity

  1. Mar 7, 2012 #1
    This question relates mostly to computer sciences (my personal field of expertise),
    I am trying to find the method for breaking down large floating point (non integer) numbers in to a series of integers (so that they can be stored easily), and completing a power operation over them.

    for example

    1.23 ^ 4.56 = ((1E0)+(2E-1)+(2E-2))^((4E0)+(5E-1)+(6E-2))

    I am aware that a program would be able to store quite large floating point numbers (generally up to 16 places of complexity) but, if I were to try and calculate something to 1 million places of accuracy, I will need the above break down)

    Im sure it has something to do with pascals triangle which I am fairly sure is good for (a+b)^c, but I don't know how to do (a+b)^(c+d). I know this formula exists because I'm sure calculators use it every day... just not sure how to do it myself. To be clear, this formula does not need to be 'easy' to use, a computer can do billions of integer calculations a second, just need to write the code.
  2. jcsd
  3. Mar 8, 2012 #2
    No replies? If its a matter of me not explaining myself please just ask what I mean and what confuses you and I'll try to further explain. If its something that would be really hard to explain, just give it a shot... and if you dont know... well ... feel free to tell your friends who might.

    Should we just start with the simple stuff? Purely algebraically how could the following be expressed without the power operation, preferably with a serious of multiplication and addition operations:

  4. Mar 11, 2012 #3
    If you're starting with something like [itex](a+b)^{c+d}[/itex] just break it into [itex](a+b)^{c}(a+b)^{d}[/itex] and use the usual http://en.wikipedia.org/wiki/Binomial_theorem for each part of the product, then multiply them together.
  5. Mar 12, 2012 #4
    This doesn't help for multiprecision arithmetic with more than 2 digits.
    If you want to compute (a+b+c)^n, with n an integer repeated squaring and multiplication
    is the best way.

    a^(2n) = (a^n)^2
    a^(2n+1) = a (a^(2n))

    A number of algorithms exist to do fast multiplication of multiprecision numbers. (karatsuba multiplication, fast fourier transfrom multiplication)

    The latter will be much faster for large numbers, but also quite hard to implement. Using a multiprecision library is always an option.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook