Comments
Patch
===================================================================
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
+-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -914,9 +914,6 @@
begin
if abs X < Sqrt_Epsilon then
return X;
-
- elsif abs X = Pi / 2.0 then
- raise Constraint_Error;
end if;
return Float_Type'Base (Aux.Tan (Double (X)));
The check that raises Constraint_Error for arguments that equal the machine number nearest Pi / 2.0 must be removed, as the tangent of this machine number is well-defined and does not overflow. -- Test case, should compile and execute quietly with Ada.Numerics.Long_Long_Elementary_Functions; use Ada.Numerics.Long_Long_Elementary_Functions; procedure Testtan is subtype Double is Long_Long_Float; X : Double := Ada.Numerics.Pi / 2.0; Y : Double; begin Y := Tan (X); if not Y'Valid then raise Program_Error; end if; end Testtan; Tested on x86_64-pc-linux-gnu, committed on trunk 2011-08-29 Geert Bosch <bosch@adacore.com> * a-ngelfu.adb (Tan): Do not raise Constraint_Error if the argument is the closest machine number to Pi / 2.0.