-- C45502B.DEP -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained -- unlimited rights in the software and documentation contained herein. -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making -- this public release, the Government intends to confer upon all -- recipients unlimited rights equal to those held by the Government. -- These rights include rights to use, duplicate, release or disclose the -- released technical data and computer software in whole or in part, in -- any manner and for any purpose whatsoever, and to have or permit others -- to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- OBJECTIVE: -- CHECK THAT MULTIPLICATION AND DIVISION YIELD CORRECT RESULTS WHEN -- THE OPERANDS ARE OF PREDEFINED TYPE SHORT_INTEGER. -- APPLICABILITY CRITERIA: -- THIS TEST IS APPLICABLE TO THOSE IMPLEMENTATIONS WHICH SUPPORT -- SHORT_INTEGER. -- IF "SHORT_INTEGER" IS NOT SUPPORTED, THEN THE DECLARATION OF -- "CHECK_SHORT" MUST BE REJECTED. -- HISTORY: -- RJW 09/01/86 CREATED ORIGINAL TEST. -- DHH 01/13/88 ADDED APPLICABILITY CRITERIA AND STANDARD HEADER. WITH REPORT; USE REPORT; PROCEDURE C45502B IS CHECK_SHORT : SHORT_INTEGER; -- N/A => ERROR. FUNCTION IDENT (S : SHORT_INTEGER) RETURN SHORT_INTEGER IS BEGIN RETURN SHORT_INTEGER (IDENT_INT (INTEGER (S))); END IDENT; BEGIN TEST ( "C45502B", "CHECK THAT MULTIPLICATION AND DIVISION " & "YIELD CORRECT RESULTS WHEN THE OPERANDS " & "ARE OF PREDEFINED TYPE SHORT_INTEGER" ); DECLARE I0 : SHORT_INTEGER := 0; I1 : SHORT_INTEGER := 1; I2 : SHORT_INTEGER := 2; I3 : SHORT_INTEGER := 3; I5 : SHORT_INTEGER := 5; I10 : SHORT_INTEGER := 10; I11 : SHORT_INTEGER := 11; I12 : SHORT_INTEGER := 12; I13 : SHORT_INTEGER := 13; I14 : SHORT_INTEGER := 14; N1 : SHORT_INTEGER := -1; N2 : SHORT_INTEGER := -2; N5 : SHORT_INTEGER := -5; N10 : SHORT_INTEGER := -10; N11 : SHORT_INTEGER := -11; N12 : SHORT_INTEGER := -12; N13 : SHORT_INTEGER := -13; N14 : SHORT_INTEGER := -14; N50 : SHORT_INTEGER := -50; BEGIN IF I0 * SHORT_INTEGER'FIRST /= 0 THEN FAILED ( "INCORRECT RESULT FOR I0 * " & "SHORT_INTEGER'FIRST" ); END IF; IF I0 * SHORT_INTEGER'LAST /= 0 THEN FAILED ( "INCORRECT RESULT FOR I0 * " & "SHORT_INTEGER'LAST" ); END IF; IF N1 * SHORT_INTEGER'LAST + SHORT_INTEGER'LAST /= 0 THEN FAILED ( "INCORRECT RESULT FOR N1 * " & "SHORT_INTEGER'LAST" ); END IF; IF I3 * I1 /= I3 THEN FAILED ( "INCORRECT RESULT FOR I3 * I1" ); END IF; IF IDENT (I3) * IDENT (I1) /= I3 THEN FAILED ( "INCORRECT RESULT FOR IDENT (I3) * " & "IDENT (I1)" ); END IF; IF I2 * N1 /= N2 THEN FAILED ( "INCORRECT RESULT FOR I2 * N1" ); END IF; IF "*" (LEFT => I2, RIGHT => N1) /= N2 THEN FAILED ( "INCORRECT RESULT FOR ""*"" (LEFT => I2, " & "RIGHT => N1)" ); END IF; IF IDENT (I2) * IDENT (N1) /= N2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (I2) * " & "IDENT (N1)" ); END IF; IF I5 * I2 * N5 /= N50 THEN FAILED ( "INCORRECT RESULT FOR I5 * I2 * N5" ); END IF; IF IDENT (N1) * IDENT (N5) /= I5 THEN FAILED ( "INCORRECT RESULT FOR IDENT (N1) * " & "IDENT (N5)" ); END IF; IF "*" (LEFT => IDENT (N1), RIGHT => IDENT (N5)) /= I5 THEN FAILED ( "INCORRECT RESULT FOR ""*"" (LEFT => " & "IDENT (N1), RIGHT => IDENT (N5))" ); END IF; IF IDENT (N1) * IDENT (I2) * IDENT (N5) /= I10 THEN FAILED ( "INCORRECT RESULT FOR IDENT (N1) * " & "IDENT (I2) * IDENT (N5)" ); END IF; IF (-IDENT (I0)) * IDENT (I10) /= I0 THEN FAILED ( "INCORRECT RESULT FOR (-IDENT (I0)) * " & "IDENT (I10)" ); END IF; IF I0 * I10 /= (-I0) THEN FAILED ( "INCORRECT RESULT FOR I0 * I10" ); END IF; IF "*" (LEFT => I0, RIGHT => I10) /= (-I0) THEN FAILED ( "INCORRECT RESULT FOR ""*"" (LEFT => I0, " & "RIGHT => I10)" ); END IF; IF IDENT (I10) / IDENT (I5) /= I2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (I10) " & "/ IDENT (I5)" ); END IF; IF I11 / I5 /= I2 THEN FAILED ( "INCORRECT RESULT FOR I11 / I5" ); END IF; IF IDENT (I12) / IDENT (I5) /= I2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (I12) " & "/ IDENT (I5)" ); END IF; IF "/" (LEFT => IDENT (I12), RIGHT => IDENT (I5)) /= I2 THEN FAILED ( "INCORRECT RESULT FOR ""/"" (LEFT => " & "IDENT (I12), RIGHT => IDENT (I5))" ); END IF; IF I13 / I5 /= I2 THEN FAILED ( "INCORRECT RESULT FOR I13 / I5" ); END IF; IF IDENT (I14) / IDENT (I5) /= I2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (I14) " & "/ IDENT (I5)" ); END IF; IF I10 / N5 /= N2 THEN FAILED ( "INCORRECT RESULT FOR I10 / N5" ); END IF; IF "/" (LEFT => I10, RIGHT => N5) /= N2 THEN FAILED ( "INCORRECT RESULT FOR ""/"" (LEFT => I10, " & "RIGHT => N5)" ); END IF; IF IDENT (I11) / IDENT (N5) /= N2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (I11) " & "/ IDENT (N5)" ); END IF; IF I12 / N5 /= N2 THEN FAILED ( "INCORRECT RESULT FOR I12 / N5" ); END IF; IF IDENT (I13) / IDENT (N5) /= N2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (I13) " & "/ IDENT (N5)" ); END IF; IF I14 / N5 /= N2 THEN FAILED ( "INCORRECT RESULT FOR I14 / N5" ); END IF; IF IDENT (N10) / IDENT (I5) /= N2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (N10) " & "/ IDENT (I5)" ); END IF; IF "/" (LEFT => IDENT (N10), RIGHT => IDENT (I5)) /= N2 THEN FAILED ( "INCORRECT RESULT FOR ""/"" (LEFT => " & "IDENT (N10), RIGHT => IDENT (I5))" ); END IF; IF N11 / I5 /= N2 THEN FAILED ( "INCORRECT RESULT FOR N11 / I5" ); END IF; IF IDENT (N12) / IDENT (I5) /= N2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (N12) " & "/ IDENT (I5)" ); END IF; IF N13 / I5 /= N2 THEN FAILED ( "INCORRECT RESULT FOR N13 / I5" ); END IF; IF "/" (LEFT => N13, RIGHT => I5) /= N2 THEN FAILED ( "INCORRECT RESULT FOR ""/"" (LEFT => N13, " & "RIGHT => I5)" ); END IF; IF IDENT (N14) / IDENT (I5) /= N2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (N14) " & "/ IDENT (I5)" ); END IF; IF N10 / N5 /= I2 THEN FAILED ( "INCORRECT RESULT FOR N10 / N5" ); END IF; IF IDENT (N11) / IDENT (N5) /= I2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (N11) " & "/ IDENT (N5)" ); END IF; IF "/" (LEFT => IDENT (N11), RIGHT => IDENT (N5)) /= I2 THEN FAILED ( "INCORRECT RESULT FOR ""/"" (LEFT => " & "IDENT (N11), RIGHT => IDENT (N5))" ); END IF; IF N12 / N5 /= I2 THEN FAILED ( "INCORRECT RESULT FOR N12 / N5" ); END IF; IF IDENT (N13) / IDENT (N5) /= I2 THEN FAILED ( "INCORRECT RESULT FOR IDENT (N13) " & "/ IDENT (N5)" ); END IF; IF N14 / N5 /= I2 THEN FAILED ( "INCORRECT RESULT FOR N14 / N5" ); END IF; IF "/" (LEFT => N14, RIGHT => N5) /= I2 THEN FAILED ( "INCORRECT RESULT FOR ""/"" (LEFT => N14, " & "RIGHT => N5)" ); END IF; IF I0 / I5 /= (-I0) THEN FAILED ( "INCORRECT RESULT FOR I0 / I5" ); END IF; IF "/" (LEFT => I0, RIGHT => I5) /= (-I0) THEN FAILED ( "INCORRECT RESULT FOR ""/"" (LEFT => I0, " & "RIGHT => I5)" ); END IF; IF (-IDENT (I0)) / IDENT (I5) /= I0 THEN FAILED ( "INCORRECT RESULT FOR (-IDENT (I0)) / " & "IDENT (I5)" ); END IF; END; RESULT; END C45502B;