Aladdin - Scala Bugtracking
[#1015] project: compiler priority: low category: bug
submitter assigned to status date submitted
Iulian _ fixed 2007-03-23 18:29:15.0
subject [contrib #392] value unary_- is not a member of scala.BigInt
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
pidigits.scala:55: error: value unary_- is not a member of scala.BigInt
      Z = compose(Array(10, (-y) * 10, 0, 1), Z)

See http://shootout.alioth.debian.org/gp4/benchmark.php?test=pidigits&lang=scala&id=0#log
what expected Expected it to work as in previous versions, like it says in the library source /** Returns a BigInt whose value is the negation of this BigInt */ def - : BigInt = new BigInt(this.bigInteger.negate()) see 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 18:29:29.0