//_Header //******************************************************************* // NOVA CONTROL SYSTEM --- Lawrence Livermore Laboratory // // Copyright 1984 by The Regents of the University of California //******************************************************************* // //_Module_Name: MTHCMPTST _File: [VCLIB.TEST.LSI]MTHCMPTST.PRX // //_Description: // Arithmatic comparison test //_Call: //_Remarks: // Test #1 : A = B // Test #2 : A <> B // Test #3 : A < B // Test #4 : A <= B // Test #5 : A > B // Test #6 : A >= B // Condition #1 : A and B zero // Condition #2 : A zero, B min positive // Condition #3 : A zero, B min negitive // Condition #4 : A and B small positive // Condition #5 : A and B large positive // Condition #6 : A and B small negitive // Condition #7 : A and B large negitive // Condition #8 : A min positive, B max positive // Condition #9 : A min negitive, B max negitive // Condition #10 : A max positive, B max negitive // Condition #11 : A and B min positive // Condition #12 : A and B min negitive // Condition #13 : A and B max positive // Condition #14 : A and B max negitive //_Identifier: { none } //******************************************************************* //_Author: T. A. SHERMAN _Creation_Date: 7-OCT-1984 //_Revisions: // 1.000 7-OCT-1984 TAS Initial Key-in. //******************************************************************* //_End Main Module MTHCMPTST Use TEXTIO Declare //Boundary values Zero = 0 Min_pos_integer = 1 Min_neg_integer = -1 Max_pos_4_bit_integer = 7 Max_neg_4_bit_integer = -8 Max_pos_8_bit_integer = 127 Max_neg_8_bit_integer = -128 Max_pos_12_bit_integer = 2047 Max_neg_12_bit_integer = -2048 Max_pos_16_bit_integer = 32767 Max_neg_16_bit_integer = -32768 Max_pos_20_bit_integer = 524287 Max_neg_20_bit_integer = -524288 Max_pos_24_bit_integer = 8388607 Max_neg_24_bit_integer = -8388608 Max_pos_28_bit_integer = 134217727 Max_neg_28_bit_integer = -134217728 Max_pos_32_bit_integer = 16!7FFFFFFF // Max_pos_32_bit_integer = 2147483646 Max_neg_32_bit_integer = -2147483637 //Objects A_4 : static 4 bit integer // Half byte object B_4 : static 4 bit integer A_8 : static 8 bit integer // One byte object B_8 : static 8 bit integer A_12 : static 12 bit integer // One and a half byte object B_12 : static 12 bit integer A_16 : static 16 bit integer // One word object ( two bytes ) B_16 : static 16 bit integer A_20 : static 20 bit integer // Two and a half byte object B_20 : static 20 bit integer A_24 : static 24 bit integer // Three byte object B_24 : static 24 bit integer A_28 : static 28 bit integer // Three and a half byte object B_28 : static 28 bit integer A_32 : static 32 bit integer // Two word object ( four bytes ) B_32 : static 32 bit integer Error_count : static integer initially 0 EndDeclare Procedure Failure ( size: integer, test: integer, cond: integer ) Out_string ( TTY, "Failure -- " ) Out_integer ( TTY, size ) Out_string ( TTY, " Bit Arithmatic comparison test #" ) Out_integer ( TTY, test ) Out_string ( TTY, ", condition #" ) Out_integer ( TTY, cond ) Out_record ( TTY ) Error_count *= +1 EndProcedure TTY_line ( "32 Bit Arithmatic Compasision Tests" ) // 32 bit tests // Condition #5 : A and B large positive A_32 := max_pos_32_bit_integer B_32 := max_pos_32_bit_integer - 1 // Test #5 : A > B If A_32 > B_32 do //Pass Otherwise Failure ( 32,5,5 ) EndIf // Test #6 : A >= B If A_32 >= B_32 do //Pass Otherwise Failure ( 32,6,5 ) EndIf Out_string ( TTY, "Errors detected: " ) Out_integer ( TTY, error_count ) Out_record ( TTY ) EndModule