version 1.2, 2007/08/21 09:22:28

version 1.5, 2007/08/28 19:26:11

Line 7

Line 7

\ VERSION 1.1 
\ VERSION 1.1 


\ for the FNEARLY= stuff: 
\ for the FNEARLY= stuff: 
\ from ftester.fs written by David N. Williams, based on the 
\ from ftester.fs written by David N. Williams, based on the idea of 
\ approximate equality in Dirk Zoller's float.4th 
\ approximate equality in Dirk Zoller's float.4th 

\ public domain 
\ This library is free software; you can redistribute it and/or 

\ modify it under the terms of the GNU Lesser General Public 

\ License as published by the Free Software Foundation; either 

\ version 2.1 of the License, or at your option any later version. 



\ This library is distributed in the hope that it will be useful, 

\ but WITHOUT ANY WARRANTY; without even the implied warranty of 

\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 

\ Lesser General Public License for more details. 



\ You should have received a copy of the GNU Lesser General Public 

\ License along with this library; if not, write to the Free 

\ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 

\ MA 021111307 USA. 



\ for the rest: 
\ for the rest: 
\ revised by Anton Ertl 20070812, 20070819 
\ revised by Anton Ertl 20070812, 20070819, 20070828 
\ public domain 
\ public domain 


\ The original has the following shortcomings: 
\ The original has the following shortcomings: 
Line 44

Line 30

\ http://www.forth200x.org/tests/ttester.fs 
\ http://www.forth200x.org/tests/ttester.fs 


\ tester.fs is intended to be a dropin replacement of the original. 
\ tester.fs is intended to be a dropin replacement of the original. 
\ ttester.fs is a version that uses T{ and }T instead of { and }. 


\ ttester.fs is a version that uses T{ and }T instead of { and } and 

\ keeps the BASE as it was before loading ttester.fs 


\ In spirit of the original, I have strived to avoid any potential 
\ In spirit of the original, I have strived to avoid any potential 
\ nonportabilities and stayed as much within the CORE words as 
\ nonportabilities and stayed as much within the CORE words as 
Line 53

Line 41



\ There are a few things to be noted: 
\ There are a few things to be noted: 


\  Following the despicable practice of the original, this version 
\  Loading ttester.fs does not change BASE. Loading tester.fs 
\ sets the base to HEX for everything that gets loaded later. 
\ changes BASE to HEX (like the original tester). Floatingpoint 
\ Floatingpoint input is ambiguous when the base is not decimal, so 
\ input is ambiguous when the base is not decimal, so you have to set 
\ you have to set it to decimal yourself when you want to deal with 
\ it to decimal yourself when you want to deal with decimal numbers. 
\ decimal numbers. 



\  For FP it is often useful to use approximate equality for checking 
\  For FP it is often useful to use approximate equality for checking 
\ the results. You can turn on approximate matching with SETNEAR 
\ the results. You can turn on approximate matching with SETNEAR 
Line 72

Line 59

\ system or if you need only exact matching, you can use the plain }T 
\ system or if you need only exact matching, you can use the plain }T 
\ instead. 
\ instead. 



BASE @ 
HEX 
HEX 


\ SET THE FOLLOWING FLAG TO TRUE FOR MORE VERBOSE OUTPUT; THIS MAY 
\ SET THE FOLLOWING FLAG TO TRUE FOR MORE VERBOSE OUTPUT; THIS MAY 
Line 112 HASFLOATING [IF]

Line 100 HASFLOATING [IF]

\ SET THE FOLLOWING TO THE RELATIVE AND ABSOLUTE TOLERANCES YOU 
\ SET THE FOLLOWING TO THE RELATIVE AND ABSOLUTE TOLERANCES YOU 
\ WANT FOR APPROXIMATE FLOAT EQUALITY, TO BE USED WITH F~ IN 
\ WANT FOR APPROXIMATE FLOAT EQUALITY, TO BE USED WITH F~ IN 
\ FNEARLY=. KEEP THE SIGNS, BECAUSE F~ NEEDS THEM. 
\ FNEARLY=. KEEP THE SIGNS, BECAUSE F~ NEEDS THEM. 
FVARIABLE FSENSITIVITY DECIMAL 1E12 HEX FSENSITIVITY F! 
FVARIABLE RELNEAR DECIMAL 1E12 HEX RELNEAR F! 
: RELNEAR FSENSITIVITY ; 

FVARIABLE ABSNEAR DECIMAL 0E HEX ABSNEAR F! 
FVARIABLE ABSNEAR DECIMAL 0E HEX ABSNEAR F! 


\ WHEN EXACT? IS TRUE, }F USES FEXACTLY=, OTHERWISE FNEARLY=. 
\ WHEN EXACT? IS TRUE, }F USES FEXACTLY=, OTHERWISE FNEARLY=. 
Line 227 HASFLOATINGSTACK [IF]

Line 214 HASFLOATINGSTACK [IF]

: F} ; 
: F} ; 
: F...}T ; 
: F...}T ; 



DECIMAL 
: COMPUTECELLSPERFP (  U ) 
: COMPUTECELLSPERFP (  U ) 
DEPTH 0E DEPTH >R FDROP R> SWAP  ; 
DEPTH 0E DEPTH 1 >R FDROP R> SWAP  ; 

HEX 


COMPUTECELLSPERFP CONSTANT CELLSPERFP 
COMPUTECELLSPERFP CONSTANT CELLSPERFP 


Line 260 HASFLOATINGSTACK [IF]

Line 249 HASFLOATINGSTACK [IF]

' ERROR1 ERRORXT ! 
' ERROR1 ERRORXT ! 


: T{ \ (  ) SYNTACTIC SUGAR. 
: T{ \ (  ) SYNTACTIC SUGAR. 
DEPTH STARTDEPTH ! F{ ; 
DEPTH STARTDEPTH ! 0 XCURSOR ! F{ ; 


: > \ ( ...  ) RECORD DEPTH AND CONTENT OF STACK. 
: > \ ( ...  ) RECORD DEPTH AND CONTENT OF STACK. 
DEPTH DUP ACTUALDEPTH ! \ RECORD DEPTH 
DEPTH DUP ACTUALDEPTH ! \ RECORD DEPTH 
Line 337 HASFLOATINGSTACK [IF]

Line 326 HASFLOATINGSTACK [IF]

IF DUP >R TYPE CR R> >IN ! 
IF DUP >R TYPE CR R> >IN ! 
ELSE >IN ! DROP 
ELSE >IN ! DROP 
THEN ; 
THEN ; 



BASE ! 

