3 Replies Latest reply: Feb 10, 2007 8:04 PM by 800308 RSS

    doing math on arbitrarly large numbers

    3004
      Hello,
      I'm making an app which requires doing math on some arbitrary large numbers. Since math is usually my achilles heal, I have no idea how to do this.

      Specifically, i have a byte[] number and I'm trying to implement these two functions:

      byte[] root(byte[] number,int radix)
      byte[] pow(byte[] base,int power)

      can someone give me a clue on how to do this?
        • 1. Re: doing math on arbitrarly large numbers
          JoachimSauer
          That depends on how the arbitrarly large numbers are represented in that byte-arrays of yours, we'd need more information to help here.

          Usually you use the existing BigInteger and/or BigDecimal classes for that kind of stuff.
          • 2. Re: doing math on arbitrarly large numbers
            796254
            Hello,
            I'm making an app which requires doing math on some
            arbitrary large numbers. Since math is usually my
            achilles heal, I have no idea how to do this.
            You mean Achilles heel? Apparently spelling isn't a strong suit, either.
            Specifically, i have a byte[] number and I'm trying
            to implement these two functions:
            Who told you that a byte array would be a good way to go?

            Ever thought about starting with arithmetic and working your way up?

            What happened to abstraction? Shouldn't you create a class that hides the fact that you're using a byte array or something else?
            byte[] root(byte[] number,int radix)
            Newton Raphson iteration is a good place to start for roots:

            http://mathworld.wolfram.com/search/
            byte[] pow(byte[] base,int power)
            If it's really an integer power, just loop "power" times and multiply the number by itself each time. Not too difficult.

            %
            • 3. Re: doing math on arbitrarly large numbers
              800308
              alphabet,

              for chrisake google it... there are open source "libraries" in java to perform both these functions. it shouldn't take you more than 10 minutes to find both of them.

              why does everyone want to reinvent the square wheel all the time? sheesh!

              keith.