OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [ada/] [acats/] [support/] [fxa5a00.a] - Diff between revs 294 and 338

Only display areas with differences | Details | Blame | View Log

Rev 294 Rev 338
-- FXA5A00.A
-- FXA5A00.A
--
--
--                             Grant of Unlimited Rights
--                             Grant of Unlimited Rights
--
--
--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
--     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
--     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 in the software and documentation contained herein.
--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
--     this public release, the Government intends to confer upon all
--     this public release, the Government intends to confer upon all
--     recipients unlimited rights  equal to those held by the Government.
--     recipients unlimited rights  equal to those held by the Government.
--     These rights include rights to use, duplicate, release or disclose the
--     These rights include rights to use, duplicate, release or disclose the
--     released technical data and computer software in whole or in part, in
--     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
--     any manner and for any purpose whatsoever, and to have or permit others
--     to do so.
--     to do so.
--
--
--                                    DISCLAIMER
--                                    DISCLAIMER
--
--
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
--     PARTICULAR PURPOSE OF SAID MATERIAL.
--     PARTICULAR PURPOSE OF SAID MATERIAL.
--*
--*
--
--
-- FOUNDATION DESCRIPTION:
-- FOUNDATION DESCRIPTION:
--      This foundation package contains constants and a function used in
--      This foundation package contains constants and a function used in
--      the evaluation of the Generic Elementary Functions.
--      the evaluation of the Generic Elementary Functions.
--
--
-- CHANGE HISTORY:
-- CHANGE HISTORY:
--      06 Mar 95   SAIC    Initial prerelease version.
--      06 Mar 95   SAIC    Initial prerelease version.
--      03 Apr 95   SAIC    Corrected error in context clause.
--      03 Apr 95   SAIC    Corrected error in context clause.
--      12 Jun 95   SAIC    Added procedure Dont_Optimize.  Added New_Float
--      12 Jun 95   SAIC    Added procedure Dont_Optimize.  Added New_Float
--                          type, and overload of function
--                          type, and overload of function
--                          Result_Within_Range.
--                          Result_Within_Range.
--
--
--!
--!
with Ada.Numerics;
with Ada.Numerics;
with Report;
with Report;
package FXA5A00 is
package FXA5A00 is
   -- Constants.
   -- Constants.
   Epsilon               : constant Float := Float'Model_Epsilon;
   Epsilon               : constant Float := Float'Model_Epsilon;
   Small                 : constant Float := Float'Model_Small;
   Small                 : constant Float := Float'Model_Small;
   Large                 : constant Float := Float'Safe_Last;
   Large                 : constant Float := Float'Safe_Last;
   Minus_Large           : constant Float := Float'Safe_First;
   Minus_Large           : constant Float := Float'Safe_First;
   Half_Pi               : constant Float := Ada.Numerics.Pi / 2.0;
   Half_Pi               : constant Float := Ada.Numerics.Pi / 2.0;
   Two_Pi                : constant Float := Ada.Numerics.Pi * 2.0;
   Two_Pi                : constant Float := Ada.Numerics.Pi * 2.0;
   Floating_Delta        : constant Float :=  0.05;
   Floating_Delta        : constant Float :=  0.05;
   One_Plus_Delta        : constant Float :=  1.0 + Floating_Delta;
   One_Plus_Delta        : constant Float :=  1.0 + Floating_Delta;
   One_Minus_Delta       : constant Float :=  1.0 - Floating_Delta;
   One_Minus_Delta       : constant Float :=  1.0 - Floating_Delta;
   Minus_One_Plus_Delta  : constant Float := -1.0 + Floating_Delta;
   Minus_One_Plus_Delta  : constant Float := -1.0 + Floating_Delta;
   Minus_One_Minus_Delta : constant Float := -1.0 - Floating_Delta;
   Minus_One_Minus_Delta : constant Float := -1.0 - Floating_Delta;
   type New_Float is new Float digits 6;
   type New_Float is new Float digits 6;
   function Result_Within_Range (Result          : Float;
   function Result_Within_Range (Result          : Float;
                                 Expected_Result : Float;
                                 Expected_Result : Float;
                                 Relative_Error  : Float) return Boolean;
                                 Relative_Error  : Float) return Boolean;
   function Result_Within_Range (Result          : New_Float;
   function Result_Within_Range (Result          : New_Float;
                                 Expected_Result : Float;
                                 Expected_Result : Float;
                                 Relative_Error  : Float) return Boolean;
                                 Relative_Error  : Float) return Boolean;
   -- This procedure is designed to defeat optimization attempts by an
   -- This procedure is designed to defeat optimization attempts by an
   -- implementation in cases where an exception is specifically raised
   -- implementation in cases where an exception is specifically raised
   -- in a test to test a prescribed exception result condition.
   -- in a test to test a prescribed exception result condition.
   -- The parameter Num is a unique identifier for location purposes within
   -- The parameter Num is a unique identifier for location purposes within
   -- the test.
   -- the test.
   generic
   generic
      type Eval_Type is digits <>;
      type Eval_Type is digits <>;
   procedure Dont_Optimize (Check_Result : Eval_Type;
   procedure Dont_Optimize (Check_Result : Eval_Type;
                            Num          : Integer);
                            Num          : Integer);
end FXA5A00;
end FXA5A00;
---
---
package body FXA5A00 is
package body FXA5A00 is
   function Result_Within_Range (Result          : Float;
   function Result_Within_Range (Result          : Float;
                                 Expected_Result : Float;
                                 Expected_Result : Float;
                                 Relative_Error  : Float) return Boolean is
                                 Relative_Error  : Float) return Boolean is
   begin
   begin
      return (Result <= Expected_Result + Relative_Error) and
      return (Result <= Expected_Result + Relative_Error) and
             (Result >= Expected_Result - Relative_Error);
             (Result >= Expected_Result - Relative_Error);
   end Result_Within_Range;
   end Result_Within_Range;
   function Result_Within_Range (Result          : New_Float;
   function Result_Within_Range (Result          : New_Float;
                                 Expected_Result : Float;
                                 Expected_Result : Float;
                                 Relative_Error  : Float) return Boolean is
                                 Relative_Error  : Float) return Boolean is
   begin
   begin
      return (Float(Result) <= Expected_Result + Relative_Error) and
      return (Float(Result) <= Expected_Result + Relative_Error) and
             (Float(Result) >= Expected_Result - Relative_Error);
             (Float(Result) >= Expected_Result - Relative_Error);
   end Result_Within_Range;
   end Result_Within_Range;
   procedure Dont_Optimize (Check_Result : Eval_Type;
   procedure Dont_Optimize (Check_Result : Eval_Type;
                            Num          : Integer) is
                            Num          : Integer) is
   begin
   begin
      -- Note that the use of Minus_Large here is simply as a "dummy" value,
      -- Note that the use of Minus_Large here is simply as a "dummy" value,
      -- designed to indicate use of the Check_Result parameter, and has no
      -- designed to indicate use of the Check_Result parameter, and has no
      -- pass/fail significance to any test using this procedure.
      -- pass/fail significance to any test using this procedure.
      --
      --
      if Float(Check_Result) = Minus_Large then
      if Float(Check_Result) = Minus_Large then
         Report.Comment("Attempted Defeat of Optimization ONLY -- Not " &
         Report.Comment("Attempted Defeat of Optimization ONLY -- Not " &
                        "a cause for test failure! "                    &
                        "a cause for test failure! "                    &
                        "Result = Minus_Large, Case:" & Integer'Image(Num));
                        "Result = Minus_Large, Case:" & Integer'Image(Num));
      end if;
      end if;
   end Dont_Optimize;
   end Dont_Optimize;
end FXA5A00;
end FXA5A00;
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.