Mark parts of math.miller-rabin as private

db4
Samuel Tardieu 2008-12-26 20:58:46 +01:00
parent 4f42d00769
commit 7716ac276e
1 changed files with 10 additions and 2 deletions

View File

@ -4,9 +4,9 @@ USING: combinators io locals kernel math math.functions
math.ranges namespaces random sequences hashtables sets ;
IN: math.miller-rabin
: >even ( n -- int ) dup even? [ 1- ] unless ; foldable
<PRIVATE
: >odd ( n -- int ) dup even? [ 1+ ] when ; foldable
: next-odd ( m -- n ) dup even? [ 1+ ] [ 2 + ] if ;
TUPLE: positive-even-expected n ;
@ -28,6 +28,10 @@ TUPLE: positive-even-expected n ;
] unless drop
] each prime? ] ;
PRIVATE>
: next-odd ( m -- n ) dup even? [ 1+ ] [ 2 + ] if ;
: miller-rabin* ( n numtrials -- ? )
over {
{ [ dup 1 <= ] [ 3drop f ] }
@ -46,11 +50,15 @@ TUPLE: positive-even-expected n ;
ERROR: no-relative-prime n ;
<PRIVATE
: (find-relative-prime) ( n guess -- p )
over 1 <= [ over no-relative-prime ] when
dup 1 <= [ drop 3 ] when
2dup gcd nip 1 > [ 2 + (find-relative-prime) ] [ nip ] if ;
PRIVATE>
: find-relative-prime* ( n guess -- p )
#! find a prime relative to n with initial guess
>odd (find-relative-prime) ;