Aladdin - Scala Bugtracking
[#1016] project: compiler priority: low category: bug
submitter assigned to status date submitted
Iulian _ fixed 2007-03-23 19:02:11.0
subject [contrib #394] scala.BigInt ArrayIndexOutOfBoundsException
code
object pidigits
{
  def main(args: Array[String]): unit =
  {
    val N: int = Integer.parseInt(args(0)); var i: int = 10

    while (i <= N)
    {
      System.out.println(pi_digits(10) + "\t:" + i)
      i = i + 10
    }

    i = i - 10

    if (i < N)
    {
      System.out.println(pi_digits(N - i) + "\t:" + N)
    }
  }

  def compose(a: Array[BigInt], b: Array[BigInt]): Array[BigInt] =
  {
    return Array(a(0) * b(0),
                 a(0) * b(1) + a(1) * b(3),
                 a(2) * b(0) + a(3) * b(2),
                 a(2) * b(1) + a(3) * b(3))
  }

  def extract(a: Array[BigInt], j: int): BigInt =
  {
    return (a(0) * j + a(1)) / (a(2) * j + a(3))
  }

  def pi_digits(c: int): String =
  {
    val r: StringBuffer = new StringBuffer(); var i: int = 0

    while (i < c)
    {
      var y: BigInt = extract(Z, 3)

      while (y != extract(Z, 4))
      {
        K = K + 1; Z = compose(Z, Array(K, 4 * K + 2, 0, 2 * K + 1))
        y = extract(Z, 3)
      }

      Z = compose(Array(10, y * -10, 0, 1), Z)

      r.append(y); i = i + 1; 
    }

    return r.toString()
  }

  var K: int = 0

  var Z: Array[BigInt] = Array(1, 0, 0, 1)
}
what happened
 JAVACMD="/opt/sun-jdk-1.6.0/bin/java $JDKFLAGS -server" /opt/scala-2.4.0/bin/scala -classpath pidigits.scala_ru\
n pidigits %A
java.lang.ArrayIndexOutOfBoundsException: -10
	at scala.BigInt$.apply(BigInt.scala:34)
	at scala.BigInt$.int2bigInt(BigInt.scala:98)
	at pidigits$.pi_digits(pidigits.scala:55)
	at pidigits$.main(pidigits.scala:16)
	at pidigits.main(pidigits.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:76)
	at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:106)
	at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
what expected http://shootout.alioth.debian.org/debian/benchmark.php?test=pidigits&lang=scala&id=0#log
[back to overview]
Changes of this bug report
Iulian  edited on  2007-03-23 19:02:23.0