]> gitweb.factorcode.org Git - factor.git/commitdiff
Move math.primes from extra to basis
authorSamuel Tardieu <sam@rfc1149.net>
Wed, 7 Jan 2009 20:12:48 +0000 (21:12 +0100)
committerSamuel Tardieu <sam@rfc1149.net>
Wed, 7 Jan 2009 20:12:48 +0000 (21:12 +0100)
20 files changed:
basis/math/primes/authors.txt [new file with mode: 0644]
basis/math/primes/erato/authors.txt [new file with mode: 0644]
basis/math/primes/erato/erato-docs.factor [new file with mode: 0644]
basis/math/primes/erato/erato-tests.factor [new file with mode: 0644]
basis/math/primes/erato/erato.factor [new file with mode: 0644]
basis/math/primes/erato/summary.txt [new file with mode: 0644]
basis/math/primes/primes-docs.factor [new file with mode: 0644]
basis/math/primes/primes-tests.factor [new file with mode: 0644]
basis/math/primes/primes.factor [new file with mode: 0644]
basis/math/primes/summary.txt [new file with mode: 0644]
extra/math/primes/authors.txt [deleted file]
extra/math/primes/erato/authors.txt [deleted file]
extra/math/primes/erato/erato-docs.factor [deleted file]
extra/math/primes/erato/erato-tests.factor [deleted file]
extra/math/primes/erato/erato.factor [deleted file]
extra/math/primes/erato/summary.txt [deleted file]
extra/math/primes/primes-docs.factor [deleted file]
extra/math/primes/primes-tests.factor [deleted file]
extra/math/primes/primes.factor [deleted file]
extra/math/primes/summary.txt [deleted file]

diff --git a/basis/math/primes/authors.txt b/basis/math/primes/authors.txt
new file mode 100644 (file)
index 0000000..f3b0233
--- /dev/null
@@ -0,0 +1 @@
+Samuel Tardieu
diff --git a/basis/math/primes/erato/authors.txt b/basis/math/primes/erato/authors.txt
new file mode 100644 (file)
index 0000000..f3b0233
--- /dev/null
@@ -0,0 +1 @@
+Samuel Tardieu
diff --git a/basis/math/primes/erato/erato-docs.factor b/basis/math/primes/erato/erato-docs.factor
new file mode 100644 (file)
index 0000000..b12ea45
--- /dev/null
@@ -0,0 +1,12 @@
+USING: help.markup help.syntax ;
+IN: math.primes.erato
+
+HELP: sieve
+{ $values { "n" "the greatest odd number to consider" } { "arr" "a bit array" } }
+{ $description "Return a bit array containing a primality bit for every odd number between 3 and " { $snippet "n" } " (inclusive). " { $snippet ">index" } " can be used to retrieve the index of an odd number to be tested." } ;
+
+HELP: >index
+{ $values { "n" "an odd number" } { "i" "the corresponding index" } }
+{ $description "Retrieve the index corresponding to the odd number on the stack." } ;
+
+{ sieve >index } related-words
diff --git a/basis/math/primes/erato/erato-tests.factor b/basis/math/primes/erato/erato-tests.factor
new file mode 100644 (file)
index 0000000..917824c
--- /dev/null
@@ -0,0 +1,3 @@
+USING: bit-arrays math.primes.erato tools.test ;
+
+[ ?{ t t t f t t f t t f t f f t } ] [ 29 sieve ] unit-test
diff --git a/basis/math/primes/erato/erato.factor b/basis/math/primes/erato/erato.factor
new file mode 100644 (file)
index 0000000..70a9c10
--- /dev/null
@@ -0,0 +1,25 @@
+! Copyright (C) 2009 Samuel Tardieu.
+! See http://factorcode.org/license.txt for BSD license.
+USING: bit-arrays kernel math math.functions math.ranges sequences ;
+IN: math.primes.erato
+
+: >index ( n -- i )
+    3 - 2 /i ; inline
+
+: index> ( i -- n )
+    2 * 3 + ; inline
+
+: mark-multiples ( i arr -- )
+    [ index> [ sq >index ] keep ] dip
+    [ length 1 - swap <range> f swap ] keep
+    [ set-nth ] curry with each ;
+
+: maybe-mark-multiples ( i arr -- )
+    2dup nth [ mark-multiples ] [ 2drop ] if ;
+
+: init-sieve ( n -- arr )
+    >index 1 + <bit-array> dup set-bits ;
+
+: sieve ( n -- arr )
+    [ init-sieve ] [ sqrt >index [0,b] ] bi
+    over [ maybe-mark-multiples ] curry each ; foldable
diff --git a/basis/math/primes/erato/summary.txt b/basis/math/primes/erato/summary.txt
new file mode 100644 (file)
index 0000000..6ecb893
--- /dev/null
@@ -0,0 +1 @@
+Eratosthene sieve
diff --git a/basis/math/primes/primes-docs.factor b/basis/math/primes/primes-docs.factor
new file mode 100644 (file)
index 0000000..c7dbc95
--- /dev/null
@@ -0,0 +1,22 @@
+USING: help.markup help.syntax ;
+IN: math.primes
+
+{ next-prime prime? } related-words
+
+HELP: next-prime
+{ $values { "n" "an integer not smaller than 2" } { "p" "a prime number" } }
+{ $description "Return the next prime number greater than " { $snippet "n" } "." } ;
+
+HELP: prime?
+{ $values { "n" "an integer" } { "?" "a boolean" } }
+{ $description "Test if an integer is a prime number." } ;
+
+{ primes-upto primes-between } related-words
+
+HELP: primes-upto
+{ $values { "n" "an integer" } { "seq" "a sequence" } }
+{ $description "Return a sequence containing all the prime numbers smaller or equal to " { $snippet "n" } "." } ;
+
+HELP: primes-between
+{ $values { "low" "an integer" } { "high" "an integer" } { "seq" "a sequence" } }
+{ $description "Return a sequence containing all the prime numbers between " { $snippet "low" } " and " { $snippet "high" } "." } ;
diff --git a/basis/math/primes/primes-tests.factor b/basis/math/primes/primes-tests.factor
new file mode 100644 (file)
index 0000000..db73839
--- /dev/null
@@ -0,0 +1,9 @@
+USING: arrays math.primes tools.test ;
+
+{ 1237 } [ 1234 next-prime ] unit-test
+{ f t } [ 1234 prime? 1237 prime? ] unit-test
+{ { 2 3 5 7 } } [ 10 primes-upto >array ] unit-test
+{ { 999983 1000003 } } [ 999982 1000010 primes-between >array ] unit-test
+
+{ { 4999963 4999999 5000011 5000077 5000081 } }
+[ 4999962 5000082 primes-between >array ] unit-test
diff --git a/basis/math/primes/primes.factor b/basis/math/primes/primes.factor
new file mode 100644 (file)
index 0000000..807ebf0
--- /dev/null
@@ -0,0 +1,33 @@
+! Copyright (C) 2007-2009 Samuel Tardieu.
+! See http://factorcode.org/license.txt for BSD license.
+USING: combinators kernel math math.functions math.miller-rabin
+math.order math.primes.erato math.ranges sequences ;
+IN: math.primes
+
+<PRIVATE
+
+: look-in-bitmap ( n -- ? ) >index 4999999 sieve nth ;
+
+: really-prime? ( n -- ? )
+    dup 5000000 < [ look-in-bitmap ] [ miller-rabin ] if ; foldable
+
+PRIVATE>
+
+: prime? ( n -- ? )
+    {
+        { [ dup 2 < ] [ drop f ] }
+        { [ dup even? ] [ 2 = ] }
+        [ really-prime? ]
+    } cond ; foldable
+
+: next-prime ( n -- p )
+    next-odd [ dup really-prime? ] [ 2 + ] [ ] until ; foldable
+
+: primes-between ( low high -- seq )
+    [ dup 3 max dup even? [ 1 + ] when ] dip
+    2 <range> [ prime? ] filter
+    swap 3 < [ 2 prefix ] when ;
+
+: primes-upto ( n -- seq ) 2 swap primes-between ;
+
+: coprime? ( a b -- ? ) gcd nip 1 = ; foldable
diff --git a/basis/math/primes/summary.txt b/basis/math/primes/summary.txt
new file mode 100644 (file)
index 0000000..41b4197
--- /dev/null
@@ -0,0 +1,2 @@
+Prime numbers test and generation
+
diff --git a/extra/math/primes/authors.txt b/extra/math/primes/authors.txt
deleted file mode 100644 (file)
index f3b0233..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Samuel Tardieu
diff --git a/extra/math/primes/erato/authors.txt b/extra/math/primes/erato/authors.txt
deleted file mode 100644 (file)
index f3b0233..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Samuel Tardieu
diff --git a/extra/math/primes/erato/erato-docs.factor b/extra/math/primes/erato/erato-docs.factor
deleted file mode 100644 (file)
index b12ea45..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-USING: help.markup help.syntax ;
-IN: math.primes.erato
-
-HELP: sieve
-{ $values { "n" "the greatest odd number to consider" } { "arr" "a bit array" } }
-{ $description "Return a bit array containing a primality bit for every odd number between 3 and " { $snippet "n" } " (inclusive). " { $snippet ">index" } " can be used to retrieve the index of an odd number to be tested." } ;
-
-HELP: >index
-{ $values { "n" "an odd number" } { "i" "the corresponding index" } }
-{ $description "Retrieve the index corresponding to the odd number on the stack." } ;
-
-{ sieve >index } related-words
diff --git a/extra/math/primes/erato/erato-tests.factor b/extra/math/primes/erato/erato-tests.factor
deleted file mode 100644 (file)
index 917824c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-USING: bit-arrays math.primes.erato tools.test ;
-
-[ ?{ t t t f t t f t t f t f f t } ] [ 29 sieve ] unit-test
diff --git a/extra/math/primes/erato/erato.factor b/extra/math/primes/erato/erato.factor
deleted file mode 100644 (file)
index 70a9c10..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-! Copyright (C) 2009 Samuel Tardieu.
-! See http://factorcode.org/license.txt for BSD license.
-USING: bit-arrays kernel math math.functions math.ranges sequences ;
-IN: math.primes.erato
-
-: >index ( n -- i )
-    3 - 2 /i ; inline
-
-: index> ( i -- n )
-    2 * 3 + ; inline
-
-: mark-multiples ( i arr -- )
-    [ index> [ sq >index ] keep ] dip
-    [ length 1 - swap <range> f swap ] keep
-    [ set-nth ] curry with each ;
-
-: maybe-mark-multiples ( i arr -- )
-    2dup nth [ mark-multiples ] [ 2drop ] if ;
-
-: init-sieve ( n -- arr )
-    >index 1 + <bit-array> dup set-bits ;
-
-: sieve ( n -- arr )
-    [ init-sieve ] [ sqrt >index [0,b] ] bi
-    over [ maybe-mark-multiples ] curry each ; foldable
diff --git a/extra/math/primes/erato/summary.txt b/extra/math/primes/erato/summary.txt
deleted file mode 100644 (file)
index 6ecb893..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Eratosthene sieve
diff --git a/extra/math/primes/primes-docs.factor b/extra/math/primes/primes-docs.factor
deleted file mode 100644 (file)
index c7dbc95..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-USING: help.markup help.syntax ;
-IN: math.primes
-
-{ next-prime prime? } related-words
-
-HELP: next-prime
-{ $values { "n" "an integer not smaller than 2" } { "p" "a prime number" } }
-{ $description "Return the next prime number greater than " { $snippet "n" } "." } ;
-
-HELP: prime?
-{ $values { "n" "an integer" } { "?" "a boolean" } }
-{ $description "Test if an integer is a prime number." } ;
-
-{ primes-upto primes-between } related-words
-
-HELP: primes-upto
-{ $values { "n" "an integer" } { "seq" "a sequence" } }
-{ $description "Return a sequence containing all the prime numbers smaller or equal to " { $snippet "n" } "." } ;
-
-HELP: primes-between
-{ $values { "low" "an integer" } { "high" "an integer" } { "seq" "a sequence" } }
-{ $description "Return a sequence containing all the prime numbers between " { $snippet "low" } " and " { $snippet "high" } "." } ;
diff --git a/extra/math/primes/primes-tests.factor b/extra/math/primes/primes-tests.factor
deleted file mode 100644 (file)
index db73839..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-USING: arrays math.primes tools.test ;
-
-{ 1237 } [ 1234 next-prime ] unit-test
-{ f t } [ 1234 prime? 1237 prime? ] unit-test
-{ { 2 3 5 7 } } [ 10 primes-upto >array ] unit-test
-{ { 999983 1000003 } } [ 999982 1000010 primes-between >array ] unit-test
-
-{ { 4999963 4999999 5000011 5000077 5000081 } }
-[ 4999962 5000082 primes-between >array ] unit-test
diff --git a/extra/math/primes/primes.factor b/extra/math/primes/primes.factor
deleted file mode 100644 (file)
index 807ebf0..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-! Copyright (C) 2007-2009 Samuel Tardieu.
-! See http://factorcode.org/license.txt for BSD license.
-USING: combinators kernel math math.functions math.miller-rabin
-math.order math.primes.erato math.ranges sequences ;
-IN: math.primes
-
-<PRIVATE
-
-: look-in-bitmap ( n -- ? ) >index 4999999 sieve nth ;
-
-: really-prime? ( n -- ? )
-    dup 5000000 < [ look-in-bitmap ] [ miller-rabin ] if ; foldable
-
-PRIVATE>
-
-: prime? ( n -- ? )
-    {
-        { [ dup 2 < ] [ drop f ] }
-        { [ dup even? ] [ 2 = ] }
-        [ really-prime? ]
-    } cond ; foldable
-
-: next-prime ( n -- p )
-    next-odd [ dup really-prime? ] [ 2 + ] [ ] until ; foldable
-
-: primes-between ( low high -- seq )
-    [ dup 3 max dup even? [ 1 + ] when ] dip
-    2 <range> [ prime? ] filter
-    swap 3 < [ 2 prefix ] when ;
-
-: primes-upto ( n -- seq ) 2 swap primes-between ;
-
-: coprime? ( a b -- ? ) gcd nip 1 = ; foldable
diff --git a/extra/math/primes/summary.txt b/extra/math/primes/summary.txt
deleted file mode 100644 (file)
index 41b4197..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Prime numbers test and generation
-