summaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/cxf/cxf2001.a
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/ada/acats/tests/cxf/cxf2001.a
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/cxf/cxf2001.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/cxf/cxf2001.a755
1 files changed, 755 insertions, 0 deletions
diff --git a/gcc/testsuite/ada/acats/tests/cxf/cxf2001.a b/gcc/testsuite/ada/acats/tests/cxf/cxf2001.a
new file mode 100644
index 000000000..96d0a0a17
--- /dev/null
+++ b/gcc/testsuite/ada/acats/tests/cxf/cxf2001.a
@@ -0,0 +1,755 @@
+-- CXF2001.A
+--
+-- 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 the Divide procedure provides the following results:
+-- Quotient = Dividend divided by Divisor and
+-- Remainder = Dividend - (Divisor * Quotient)
+-- Check that the Remainder is calculated exactly.
+--
+-- TEST DESCRIPTION:
+-- This test is designed to test the generic procedure Divide found in
+-- package Ada.Decimal.
+--
+-- The table below attempts to portray the design approach used in this
+-- test. There are three "dimensions" of concern:
+-- 1) the delta value of the Quotient and Remainder types, shown as
+-- column headers,
+-- 2) specific choices for the Dividend and Divisor numerical values
+-- (i.e., whether they yielded a repeating/non-terminating result,
+-- or a terminating result ["exact"]), displayed on the left side
+-- of the tables, and
+-- 3) the delta for the Dividend and Divisor.
+--
+-- Each row in the tables indicates a specific test case, showing the
+-- specific quotient and remainder (under the appropriate Delta column)
+-- for each combination of dividend and divisor values. Test cases
+-- follow the top-to-bottom sequence shown in the tables.
+--
+-- Most of the test case sets (same dividend/divisor combinations -
+-- indicated by dashed horizontal lines in the tables) vary the
+-- delta of the quotient and remainder types between test cases. This
+-- allows for an examination of how different deltas for a quotient
+-- and/or remainder type can influence the results of a division with
+-- identical dividend and divisor.
+--
+-- Note: Test cases are performed for both Radix 10 and Radix 2 types.
+--
+--
+-- Divid Divis Delta Delta Delta Delta Delta
+-- (Delta)(Delta)| .1 | .01 | .001 | .0001 | .00001 |Test
+-- |---|---|-----|-----|-----|-----|-----|-----|-----|-----|Case
+-- quotient | Q | R | Q | R | Q | R | Q | R | Q | R | No.
+-- ---------------------------------------------------------------------------
+-- .05 .3 |.1 .02 1,21
+-- (.01) (.1) |.1 0 2,22
+-- | .16 .002 3,23
+-- 0.166666.. | .16 .00 4,24
+-- | .166 .0002 5,25
+-- ---------------------------------------------------------------------------
+-- .15 20 | .00 .1500 6,26
+-- (.01) (1) | .00 .150 7,27
+-- | .00 .15 8,28
+-- 0.0075 | .01 .007 9,29
+-- | .007 .010 10,30
+-- | .0075 .0000 11,31
+-- ---------------------------------------------------------------------------
+-- .03125 .5 | .0625 .0000 12,32
+-- (.00001) (.1) | .062 .00025 13,33
+-- | .062 .0002 14,34
+-- 0.0625 | .062 .000 15,35
+-- | .00 .062 16,36
+-- | .06 .00125 17,37
+-- | .06 .0012 18,38
+-- | .06 .001 19,39
+-- | .06 .00 20,40
+-- ---------------------------------------------------------------------------
+-- Divide by Zero| Raise Constraint_Error 41
+-- ---------------------------------------------------------------------------
+--
+--
+-- CHANGE HISTORY:
+-- 06 Dec 94 SAIC ACVC 2.0
+-- 29 Dec 94 SAIC Modified Radix 2 cases to match Radix 10 cases.
+-- 03 Oct 95 RBKD Modified to fix incorrect remainder results
+-- 15 Nov 95 SAIC Incorporated reviewer fixes for ACVC 2.0.1.
+--
+--!
+
+with Report;
+with Ada.Decimal;
+
+procedure CXF2001 is
+
+ TC_Verbose : Boolean := False;
+
+begin
+
+ Report.Test ("CXF2001", "Check that the Divide procedure provides " &
+ "correct results. Check that the Remainder " &
+ "is calculated exactly");
+ Radix_10_Block:
+ declare
+
+
+ -- Declare all types and variables used in the various blocks below
+ -- for all Radix 10 evaluations.
+
+ type DT_1 is delta 1.0 digits 5;
+ type DT_0_1 is delta 0.1 digits 10;
+ type DT_0_01 is delta 0.01 digits 10;
+ type DT_0_001 is delta 0.001 digits 10;
+ type DT_0_0001 is delta 0.0001 digits 10;
+ type DT_0_00001 is delta 0.00001 digits 10;
+
+ for DT_1'Machine_Radix use 10;
+ for DT_0_1'Machine_Radix use 10;
+ for DT_0_01'Machine_Radix use 10;
+ for DT_0_001'Machine_Radix use 10;
+ for DT_0_0001'Machine_Radix use 10;
+ for DT_0_00001'Machine_Radix use 10;
+
+ Dd_1, Dv_1, Quot_1, Rem_1 : DT_1 := 0.0;
+ Dd_0_1, Dv_0_1, Quot_0_1, Rem_0_1 : DT_0_1 := 0.0;
+ Dd_0_01, Dv_0_01, Quot_0_01, Rem_0_01 : DT_0_01 := 0.0;
+ Dd_0_001, Dv_0_001, Quot_0_001, Rem_0_001 : DT_0_001 := 0.0;
+ Dd_0_0001, Dv_0_0001, Quot_0_0001, Rem_0_0001 : DT_0_0001 := 0.0;
+ Dd_0_00001, Dv_0_00001, Quot_0_00001, Rem_0_00001 : DT_0_00001 := 0.0;
+
+ begin
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(Dividend_Type => DT_0_01,
+ Divisor_Type => DT_0_1,
+ Quotient_Type => DT_0_1,
+ Remainder_Type => DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 1"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_1, Rem_0_01);
+ if Quot_0_1 /= DT_0_1(0.1) or Rem_0_01 /= DT_0_01(0.02) then
+ Report.Failed("Incorrect values returned, Case 1");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_1, DT_0_1);
+ begin
+ if TC_Verbose then Report.Comment("Case 2"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_1, Rem_0_1);
+ if Quot_0_1 /= DT_0_1(0.1) or Rem_0_1 /= DT_0_1(0.0) then
+ Report.Failed("Incorrect values returned, Case 2");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_01, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 3"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_01, Rem_0_001);
+ if Quot_0_01 /= DT_0_01(0.16) or Rem_0_001 /= DT_0_001(0.002) then
+ Report.Failed("Incorrect values returned, Case 3");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_01, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 4"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_01, Rem_0_01);
+ if Quot_0_01 /= DT_0_01(0.16) or Rem_0_01 /= DT_0_01(0.0) then
+ Report.Failed("Incorrect values returned, Case 4");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 5"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_001, Rem_0_0001);
+ if Quot_0_001 /= DT_0_001(0.166) or
+ Rem_0_0001 /= DT_0_0001(0.0002)
+ then
+ Report.Failed("Incorrect values returned, Case 5");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_01, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 6"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_01, Rem_0_0001);
+ if Quot_0_01 /= DT_0_01(0.0) or Rem_0_0001 /= DT_0_0001(0.1500) then
+ Report.Failed("Incorrect values returned, Case 6");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_01, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 7"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_01, Rem_0_001);
+ if Quot_0_01 /= DT_0_01(0.0) or Rem_0_001 /= DT_0_001(0.150) then
+ Report.Failed("Incorrect values returned, Case 7");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_01, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 8"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_01, Rem_0_01);
+ if Quot_0_01 /= DT_0_01(0.0) or Rem_0_01 /= DT_0_01(0.15) then
+ Report.Failed("Incorrect values returned, Case 8");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_001, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 9"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_001, Rem_0_001);
+ if Quot_0_001 /= DT_0_001(0.007) or Rem_0_001 /= DT_0_001(0.01) then
+ Report.Failed("Incorrect values returned, Case 9");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_001, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 10"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_001, Rem_0_01);
+ if Quot_0_001 /= DT_0_001(0.007) or Rem_0_01 /= DT_0_01(0.01) then
+ Report.Failed("Incorrect values returned, Case 10");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_0001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 11"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_0001, Rem_0_0001);
+ if Quot_0_0001 /= DT_0_0001(0.0075) or
+ Rem_0_0001 /= DT_0_0001(0.0)
+ then
+ Report.Failed("Incorrect values returned, Case 11");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_0001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 12"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_0001, Rem_0_0001);
+ if Quot_0_0001 /= DT_0_0001(0.0625) or
+ Rem_0_0001 /= DT_0_0001(0.0)
+ then
+ Report.Failed("Incorrect values returned, Case 12");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_00001);
+ begin
+ if TC_Verbose then Report.Comment("Case 13"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_00001);
+ if Quot_0_001 /= DT_0_001(0.062) or
+ Rem_0_00001 /= DT_0_00001(0.00025)
+ then
+ Report.Failed("Incorrect values returned, Case 13");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 14"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_0001);
+ if Quot_0_001 /= DT_0_001(0.062) or
+ Rem_0_0001 /= DT_0_0001(0.0002)
+ then
+ Report.Failed("Incorrect values returned, Case 14");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 15"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_001);
+ if Quot_0_001 /= DT_0_001(0.062) or Rem_0_001 /= DT_0_001(0.000)
+ then
+ Report.Failed("Incorrect values returned, Case 15");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 16"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_01);
+ if Quot_0_001 /= DT_0_001(0.062) or Rem_0_01 /= DT_0_01(0.00) then
+ Report.Failed("Incorrect values returned, Case 16");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_00001);
+ begin
+ if TC_Verbose then Report.Comment("Case 17"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_00001);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_00001 /= DT_0_00001(0.00125)
+ then
+ Report.Failed("Incorrect values returned, Case 17");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 18"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_0001);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_0001 /= DT_0_0001(0.0012)
+ then
+ Report.Failed("Incorrect values returned, Case 18");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 19"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_001);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_001 /= DT_0_001(0.001) then
+ Report.Failed("Incorrect values returned, Case 19");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 20"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_01);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_01 /= DT_0_01(0.0) then
+ Report.Failed("Incorrect values returned, Case 20");
+ end if;
+ end;
+
+
+ exception
+ when others => Report.Failed("Exception raised in Radix_10_Block");
+ end Radix_10_Block;
+
+
+
+ Radix_2_Block:
+ declare
+
+ -- Declare all types and variables used in the various blocks below
+ -- for all Radix 2 evaluations.
+
+ type DT_1 is delta 1.0 digits 5;
+ type DT_0_1 is delta 0.1 digits 10;
+ type DT_0_01 is delta 0.01 digits 10;
+ type DT_0_001 is delta 0.001 digits 10;
+ type DT_0_0001 is delta 0.0001 digits 10;
+ type DT_0_00001 is delta 0.00001 digits 10;
+
+ for DT_1'Machine_Radix use 2;
+ for DT_0_1'Machine_Radix use 2;
+ for DT_0_01'Machine_Radix use 2;
+ for DT_0_001'Machine_Radix use 2;
+ for DT_0_0001'Machine_Radix use 2;
+ for DT_0_00001'Machine_Radix use 2;
+
+ Dd_1, Dv_1, Quot_1, Rem_1 : DT_1 := 0.0;
+ Dd_0_1, Dv_0_1, Quot_0_1, Rem_0_1 : DT_0_1 := 0.0;
+ Dd_0_01, Dv_0_01, Quot_0_01, Rem_0_01 : DT_0_01 := 0.0;
+ Dd_0_001, Dv_0_001, Quot_0_001, Rem_0_001 : DT_0_001 := 0.0;
+ Dd_0_0001, Dv_0_0001, Quot_0_0001, Rem_0_0001 : DT_0_0001 := 0.0;
+ Dd_0_00001, Dv_0_00001, Quot_0_00001, Rem_0_00001 : DT_0_00001 := 0.0;
+
+ begin
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(Dividend_Type => DT_0_01,
+ Divisor_Type => DT_0_1,
+ Quotient_Type => DT_0_1,
+ Remainder_Type => DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 21"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_1, Rem_0_01);
+ if Quot_0_1 /= DT_0_1(0.1) or Rem_0_01 /= DT_0_01(0.02) then
+ Report.Failed("Incorrect values returned, Case 21");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_1, DT_0_1);
+ begin
+ if TC_Verbose then Report.Comment("Case 22"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_1, Rem_0_1);
+ if Quot_0_1 /= DT_0_1(0.1) or Rem_0_1 /= DT_0_1(0.0) then
+ Report.Failed("Incorrect values returned, Case 22");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_01, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 23"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_01, Rem_0_001);
+ if Quot_0_01 /= DT_0_01(0.16) or Rem_0_001 /= DT_0_001(0.002) then
+ Report.Failed("Incorrect values returned, Case 23");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_01, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 24"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_01, Rem_0_01);
+ if Quot_0_01 /= DT_0_01(0.16) or Rem_0_01 /= DT_0_01(0.0) then
+ Report.Failed("Incorrect values returned, Case 24");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_0_1, DT_0_001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 25"); end if;
+ Dd_0_01 := DT_0_01(0.05); Dv_0_1 := DT_0_1(0.3);
+ Div(Dd_0_01, Dv_0_1, Quot_0_001, Rem_0_0001);
+ if Quot_0_001 /= DT_0_001(0.166) or
+ Rem_0_0001 /= DT_0_0001(0.0002)
+ then
+ Report.Failed("Incorrect values returned, Case 25");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_01, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 26"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_01, Rem_0_0001);
+ if Quot_0_01 /= DT_0_01(0.0) or Rem_0_0001 /= DT_0_0001(0.1500) then
+ Report.Failed("Incorrect values returned, Case 26");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_01, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 27"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_01, Rem_0_001);
+ if Quot_0_01 /= DT_0_01(0.0) or Rem_0_001 /= DT_0_001(0.150) then
+ Report.Failed("Incorrect values returned, Case 27");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_01, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 28"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_01, Rem_0_01);
+ if Quot_0_01 /= DT_0_01(0.0) or Rem_0_01 /= DT_0_01(0.15) then
+ Report.Failed("Incorrect values returned, Case 28");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_001, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 29"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_001, Rem_0_001);
+ if Quot_0_001 /= DT_0_001(0.007) or Rem_0_001 /= DT_0_001(0.01) then
+ Report.Failed("Incorrect values returned, Case 29");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_001, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 30"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_001, Rem_0_01);
+ if Quot_0_001 /= DT_0_001(0.007) or Rem_0_01 /= DT_0_01(0.01) then
+ Report.Failed("Incorrect values returned, Case 30");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_01, DT_1, DT_0_0001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 31"); end if;
+ Dd_0_01 := DT_0_01(0.15); Dv_1 := DT_1(20);
+ Div(Dd_0_01, Dv_1, Quot_0_0001, Rem_0_0001);
+ if Quot_0_0001 /= DT_0_0001(0.0075) or
+ Rem_0_0001 /= DT_0_0001(0.0)
+ then
+ Report.Failed("Incorrect values returned, Case 31");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_0001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 32"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_0001, Rem_0_0001);
+ if Quot_0_0001 /= DT_0_0001(0.0625) or
+ Rem_0_0001 /= DT_0_0001(0.0)
+ then
+ Report.Failed("Incorrect values returned, Case 32");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_00001);
+ begin
+ if TC_Verbose then Report.Comment("Case 33"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_00001);
+ if Quot_0_001 /= DT_0_001(0.062) or
+ Rem_0_00001 /= DT_0_00001(0.00025)
+ then
+ Report.Failed("Incorrect values returned, Case 33");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 34"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_0001);
+ if Quot_0_001 /= DT_0_001(0.062) or
+ Rem_0_0001 /= DT_0_0001(0.0002)
+ then
+ Report.Failed("Incorrect values returned, Case 34");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 35"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_001);
+ if Quot_0_001 /= DT_0_001(0.062) or Rem_0_001 /= DT_0_001(0.000)
+ then
+ Report.Failed("Incorrect values returned, Case 35");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_001, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 36"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_001, Rem_0_01);
+ if Quot_0_001 /= DT_0_001(0.062) or Rem_0_01 /= DT_0_01(0.00) then
+ Report.Failed("Incorrect values returned, Case 36");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_00001);
+ begin
+ if TC_Verbose then Report.Comment("Case 37"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_00001);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_00001 /= DT_0_00001(0.00125)
+ then
+ Report.Failed("Incorrect values returned, Case 37");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 38"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_0001);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_0001 /= DT_0_0001(0.0012)
+ then
+ Report.Failed("Incorrect values returned, Case 38");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_001);
+ begin
+ if TC_Verbose then Report.Comment("Case 39"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_001);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_001 /= DT_0_001(0.001) then
+ Report.Failed("Incorrect values returned, Case 39");
+ end if;
+ end;
+
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_00001, DT_0_1, DT_0_01, DT_0_01);
+ begin
+ if TC_Verbose then Report.Comment("Case 40"); end if;
+ Dd_0_00001 := DT_0_00001(0.03125); Dv_0_1 := DT_0_1(0.5);
+ Div(Dd_0_00001, Dv_0_1, Quot_0_01, Rem_0_01);
+ if Quot_0_01 /= DT_0_01(0.06) or Rem_0_01 /= DT_0_01(0.0) then
+ Report.Failed("Incorrect values returned, Case 40");
+ end if;
+ end;
+
+ declare
+ procedure Div is
+ new Ada.Decimal.Divide(DT_0_0001, DT_1, DT_0_0001, DT_0_0001);
+ begin
+ if TC_Verbose then Report.Comment("Case 41"); end if;
+ Dd_0_0001 := (DT_0_0001(6062.0) / DT_0_0001(16384.0));
+ Dv_1 := DT_1(0.0);
+ Div(Dd_0_0001, Dv_1, Quot_0_0001, Rem_0_0001);
+ Report.Failed("Divide by Zero didn't raise Constraint_Error, " &
+ "Case 41");
+ exception
+ when Constraint_Error => null; -- OK, expected exception.
+ when others =>
+ Report.Failed("Unexpected exception raised by Divide by Zero," &
+ "Case 41");
+ end;
+
+ exception
+ when others => Report.Failed("Exception raised in Radix_10_Block");
+ end Radix_2_Block;
+
+
+ Report.Result;
+
+end CXF2001;