Packages

  • package root
    Definition Classes
    root
  • package spire
    Definition Classes
    root
  • package math
    Definition Classes
    spire
  • package prime

    Basic tools for prime factorization.

    Basic tools for prime factorization.

    This package is intended to provide tools for factoring numbers, checking primality, generating prime numbers, etc. For now, its main contributions are a method for factoring integers (spire.math.prime.factor) and a type for representing prime factors and their exponents (spire.math.prime.Factors).

    The factorization currently happens via an implementation of Pollard-Rho with Brent's optimization. This technique works very well for composites with small prime factors (up to 10 decimal digits or so) and can support semiprimes (products of two similarly-sized primes) of 20-40 digits.

    The implementation does cheat, using BigInteger.isProbablePrime(40) to test basic primality. This has a roughly 1-in-1,000,000,000,000 chance of being wrong.

    Since Pollard-Rho uses random primes, its performance is somewhat non-deterministic. On this machine, factoring 20-digit semiprimes seem to average about 1.5s and factoring 30-digit semiprimes seem to average about 20s. Much larger numbers can be factored provided they are either prime or composites with smallish factors.

    Definition Classes
    math
  • BitSet
  • FactorHeap
  • Factors
  • SieveSegment
  • SieveUtil
  • Siever

case class Siever(chunkSize: Int, cutoff: SafeLong) extends Product with Serializable

The Siever manages the segmented sieve process.

At any given time, it holds onto a single sieve segment. Thus, the siever should be used for a single lookup or traversal.

Sievers are built using 'chunkSize' and 'cutoff' parameters. These are passed along to any sieve segments they create. When possible, it's probably better to use methods on the companion object, which will instantiate a Siever for you with reasonable parameters.

Linear Supertypes
Serializable, Serializable, Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Siever
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Siever(chunkSize: Int, cutoff: SafeLong)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val arr: BitSet
  5. def arrayAt(p: SafeLong, size: Int): Array[SafeLong]
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. val chunkSize: Int
  8. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. val cutoff: SafeLong
  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. val fastq: FastFactors
  12. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  13. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  15. def largestBelow(n: SafeLong): SafeLong
  16. var limit: SafeLong
  17. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. def nextAfter(n: SafeLong): SafeLong
  19. final def notify(): Unit
    Definition Classes
    AnyRef
  20. final def notifyAll(): Unit
    Definition Classes
    AnyRef
  21. def nth(n: Long): SafeLong
  22. var sieve: SieveSegment
  23. val slowq: FactorHeap
  24. var start: SafeLong
  25. def streamAfter(p0: SafeLong): Stream[SafeLong]
  26. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  27. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped