-- -- fp.inc -- -- Macros to produce a large number of LOCAL floating point variables. This -- preprocessing is necessary to insure that the variables are -- scoped properly and to avoid duplicating hundreds of lines -- of code. -- -- -- DEFICIENCIES: -- -- 1. This currently does not address whether or not the CPU -- actually has hardware floating point. It just does the work. -- -- COPYRIGHT (c) 1989-1997. -- On-Line Applications Research Corporation (OAR). -- -- The license and distribution terms for this file may in -- the file LICENSE in this distribution or at -- http://www.rtems.com/license/LICENSE. -- -- $Id$ -- -- private definitions for macro use -- -- macro usage EPSILON() define(`EPSILON',`0.0005') -- macro usage FP_CHECK_ONE( value, base, factor ) define(`FP_CHECK_ONE',` if ( $1 - ( $2 + $3 ) ) > EPSILON or else ( $1 - ( $2 + $3 ) ) < - EPSILON then UNSIGNED32_IO.PUT( TASK_INDEX ); TEXT_IO.PUT( ": $1 wrong -- (" ); FLOAT_IO.PUT( $1 ); TEXT_IO.PUT( " not " ); FLOAT_IO.PUT( $2 + $3 ); TEXT_IO.PUT_LINE( ")" ); end if ' ) -- macro usage FP_DECLARE define(`FP_DECLARE', ` FP01 : FLOAT := 1.0; FP02 : FLOAT := 2.0; FP03 : FLOAT := 3.0; FP04 : FLOAT := 4.0; FP05 : FLOAT := 5.0; FP06 : FLOAT := 6.0; FP07 : FLOAT := 7.0; FP08 : FLOAT := 8.0; FP09 : FLOAT := 9.0; FP10 : FLOAT := 10.0; FP11 : FLOAT := 11.0; FP12 : FLOAT := 12.0; FP13 : FLOAT := 13.0; FP14 : FLOAT := 14.0; FP15 : FLOAT := 15.0; FP16 : FLOAT := 16.0; FP17 : FLOAT := 17.0; FP18 : FLOAT := 18.0; FP19 : FLOAT := 19.0; FP20 : FLOAT := 20.0; FP21 : FLOAT := 21.0; FP22 : FLOAT := 22.0; FP23 : FLOAT := 23.0; FP24 : FLOAT := 24.0; FP25 : FLOAT := 25.0; FP26 : FLOAT := 26.0; FP27 : FLOAT := 27.0; FP28 : FLOAT := 28.0; FP29 : FLOAT := 29.0; FP30 : FLOAT := 30.0; FP31 : FLOAT := 31.0; FP32 : FLOAT := 32.0 ' ) -- macro usage FP_LOAD( factor ) define(`FP_LOAD',` FP01 := FP01 + $1; FP02 := FP02 + $1; FP03 := FP03 + $1; FP04 := FP04 + $1; FP05 := FP05 + $1; FP06 := FP06 + $1; FP07 := FP07 + $1; FP08 := FP08 + $1; FP09 := FP09 + $1; FP10 := FP10 + $1; FP11 := FP11 + $1; FP12 := FP12 + $1; FP13 := FP13 + $1; FP14 := FP14 + $1; FP15 := FP15 + $1; FP16 := FP16 + $1; FP17 := FP17 + $1; FP18 := FP18 + $1; FP19 := FP19 + $1; FP20 := FP20 + $1; FP21 := FP21 + $1; FP22 := FP22 + $1; FP23 := FP23 + $1; FP24 := FP24 + $1; FP25 := FP25 + $1; FP26 := FP26 + $1; FP27 := FP27 + $1; FP28 := FP28 + $1; FP29 := FP29 + $1; FP30 := FP30 + $1; FP31 := FP31 + $1; FP32 := FP32 + $1 ') -- macro usage FP_CHECK( factor ) define(`FP_CHECK',` FP_CHECK_ONE( FP01, 1.0, $1 ); FP_CHECK_ONE( FP02, 2.0, $1 ); FP_CHECK_ONE( FP03, 3.0, $1 ); FP_CHECK_ONE( FP04, 4.0, $1 ); FP_CHECK_ONE( FP05, 5.0, $1 ); FP_CHECK_ONE( FP06, 6.0, $1 ); FP_CHECK_ONE( FP07, 7.0, $1 ); FP_CHECK_ONE( FP08, 8.0, $1 ); FP_CHECK_ONE( FP09, 9.0, $1 ); FP_CHECK_ONE( FP10, 10.0, $1 ); FP_CHECK_ONE( FP11, 11.0, $1 ); FP_CHECK_ONE( FP12, 12.0, $1 ); FP_CHECK_ONE( FP13, 13.0, $1 ); FP_CHECK_ONE( FP14, 14.0, $1 ); FP_CHECK_ONE( FP15, 15.0, $1 ); FP_CHECK_ONE( FP16, 16.0, $1 ); FP_CHECK_ONE( FP17, 17.0, $1 ); FP_CHECK_ONE( FP18, 18.0, $1 ); FP_CHECK_ONE( FP19, 19.0, $1 ); FP_CHECK_ONE( FP20, 20.0, $1 ); FP_CHECK_ONE( FP21, 21.0, $1 ); FP_CHECK_ONE( FP22, 22.0, $1 ); FP_CHECK_ONE( FP23, 23.0, $1 ); FP_CHECK_ONE( FP24, 24.0, $1 ); FP_CHECK_ONE( FP25, 25.0, $1 ); FP_CHECK_ONE( FP26, 26.0, $1 ); FP_CHECK_ONE( FP27, 27.0, $1 ); FP_CHECK_ONE( FP28, 28.0, $1 ); FP_CHECK_ONE( FP29, 29.0, $1 ); FP_CHECK_ONE( FP30, 30.0, $1 ); FP_CHECK_ONE( FP31, 31.0, $1 ); FP_CHECK_ONE( FP32, 32.0, $1 ) ' )