| \ Hashed dictionaries 15jul94py |
\ Hashed dictionaries 15jul94py |
| |
|
| \ Copyright (C) 1995,1998,2000 Free Software Foundation, Inc. |
\ Copyright (C) 1995,1998,2000,2003,2006,2007 Free Software Foundation, Inc. |
| |
|
| \ This file is part of Gforth. |
\ This file is part of Gforth. |
| |
|
| \ Gforth is free software; you can redistribute it and/or |
\ Gforth is free software; you can redistribute it and/or |
| \ modify it under the terms of the GNU General Public License |
\ modify it under the terms of the GNU General Public License |
| \ as published by the Free Software Foundation; either version 2 |
\ as published by the Free Software Foundation, either version 3 |
| \ of the License, or (at your option) any later version. |
\ of the License, or (at your option) any later version. |
| |
|
| \ This program is distributed in the hope that it will be useful, |
\ This program is distributed in the hope that it will be useful, |
| \ GNU General Public License for more details. |
\ GNU General Public License for more details. |
| |
|
| \ You should have received a copy of the GNU General Public License |
\ You should have received a copy of the GNU General Public License |
| \ along with this program; if not, write to the Free Software |
\ along with this program. If not, see http://www.gnu.org/licenses/. |
| \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
| |
|
| [IFUNDEF] erase |
[IFUNDEF] erase |
| : erase ( addr len -- ) 0 fill ; |
: erase ( addr len -- ) 0 fill ; |
| \ REPEAT drop |
\ REPEAT drop |
| [ has? ec [IF] ] ." Done" cr [ [THEN] ] ; |
[ has? ec [IF] ] ." Done" cr [ [THEN] ] ; |
| |
|
| ' hash-cold INIT8 chained |
:noname ( -- ) |
| |
defers 'cold |
| |
hash-cold |
| |
; is 'cold |
| |
|
| : .words ( -- ) |
: .words ( -- ) |
| base @ >r hex HashTable Hashlen 0 |
base @ >r hex HashTable Hashlen 0 |
| \ : chisq ( -- n ) |
\ : chisq ( -- n ) |
| \ \ n should have about the same size as Hashlen |
\ \ n should have about the same size as Hashlen |
| \ countwl Hashlen 2 pick */ swap - ; |
\ countwl Hashlen 2 pick */ swap - ; |
| |
|
| |
\ Create hashhist here $100 cells dup allot erase |
| |
|
| |
\ : .hashhist ( -- ) hashhist $100 cells erase |
| |
\ HashTable HashLen cells bounds |
| |
\ DO 0 I BEGIN @ dup WHILE swap 1+ swap REPEAT drop |
| |
\ 1 swap cells hashhist + +! |
| |
\ cell +LOOP |
| |
\ 0 0 $100 0 DO |
| |
\ hashhist I cells + @ dup IF |
| |
\ cr I 0 .r ." : " dup . THEN tuck I * + >r + r> |
| |
\ LOOP cr ." Total: " 0 .r ." /" . cr ; |