P, R : Double_T;
begin
+ if Is_Infinity (B) or else Is_Zero (B) then
+ return (A.Hi / B, 0.0);
+ end if;
+ pragma Annotate (CodePeer, Intentional, "test always false",
+ "code deals with infinity");
+
Q1 := A.Hi / B;
-- Compute R = A - B * Q1
R, S : Double_T;
begin
+ if Is_Infinity (B.Hi) or else Is_Zero (B.Hi) then
+ return (A.Hi / B.Hi, 0.0);
+ end if;
+ pragma Annotate (CodePeer, Intentional, "test always false",
+ "code deals with infinity");
+
Q1 := A.Hi / B.Hi;
R := A - B * Q1;
Ptr.all := Index;
Scan_Exponent (Str, Ptr, Max, Expon, Real => True);
- Scale := Scale + Expon;
+
+ -- Handle very large exponents like Scan_Exponent
+
+ if Expon < Integer'First / 10 or else Expon > Integer'Last / 10 then
+ Scale := Expon;
+ else
+ Scale := Scale + Expon;
+ end if;
-- Here is where we check for a bad based number