Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Good multiprecision package?

  1. Mar 17, 2008 #1

    CRGreathouse

    User Avatar
    Science Advisor
    Homework Helper

    I'm looking for a tool to solve a problem I've been working on. In particular, I want something that implements subquadratic trig functions -- actually just the tangent would work for me. :) I've been using Pari, but its tangent routine seems to be [itex]\mathcal{O}(n^2)[/itex] or [itex]\mathcal{O}(n^2\log n)[/itex] based on timing, and for high precision this simply takes too long. 10,000 digits in Pari takes half a second, but 100,000 takes more than a minute, and ten million takes over a week, which isn't feasible.

    Any suggestions? Can anyone test their preferred platform (Math'ca, Maple, etc.) to see how long these take? I was testing tan(1) if you want comparability. I tested Maxima, but it seemed to be inappropriate for the task: in addition to apparently also using a quadratic method, it took ~30 times longer than Pari for similar precisions.
     
    Last edited: Mar 17, 2008
  2. jcsd
  3. Mar 17, 2008 #2
    I could to test Maple (11) for you, if you told me how.

    So what you want is the amount of time (in seconds) that it takes maple to calculate tan(1) to the 10 000th, 100 000th, 1 000 000th, and 10 000 000th digit?
     
  4. Mar 17, 2008 #3

    CRGreathouse

    User Avatar
    Science Advisor
    Homework Helper

    That would be great. I'd just test it to 10 000, 100 000, 200 000, and 300 000 digits, though -- 10 000 000 would probably take a long time.

    The commands should be something like this:
    Code (Text):
    digits := 10000; settime := time(); tan(1): time() − settime;
    digits := 100000; settime := time(); tan(1): time() − settime;
    digits := 200000; settime := time(); tan(1): time() − settime;
    digits := 300000; settime := time(); tan(1): time() − settime;
     
    Last edited: Mar 17, 2008
  5. Mar 17, 2008 #4
    1 000: 0.078s
    10 000: 0.280s
    100 000: 24.031s
    200 000: 97.719s
    300 000: 216.750s
    1 000 000: > 900s.

    It does not seem Maple can be of much help.
     
    Last edited: Mar 17, 2008
  6. Mar 17, 2008 #5
    From Mathematica 6.0 on single core Athlon64 3400+, 2GB RAM, Vista Ultimate OS:

    Code (Text):

    Timing[N[Tan[1], 100000]][[1]]
    2.14
    Timing[N[Tan[1], 200000]][[1]]
    5.422
    Timing[N[Tan[1], 300000]][[1]]
    9.203
    Timing[N[Tan[1], 1000000]][[1]]
    44.531
     
    Times are in seconds. Note that Mathematica cautions that it tables previous results for like calculations, so it probably used the previous tangents as stepping stones for the larger numbers.
     
  7. Mar 17, 2008 #6

    CRGreathouse

    User Avatar
    Science Advisor
    Homework Helper

    Yes, Mathematica seems like the solution for me. It took only (!) 1462 seconds to calculate tan(1) to 10,000,000 places:

    Timing[N[Tan[1], 10000000];]
     
  8. Mar 17, 2008 #7

    CRGreathouse

    User Avatar
    Science Advisor
    Homework Helper

    Thank you for running the tests! I appreciate it. It looks like Maple also uses a quadratic algorithm.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Good multiprecision package?
Loading...