tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
4
Task/Safe-addition/Ada/safe-addition-1.ada
Normal file
4
Task/Safe-addition/Ada/safe-addition-1.ada
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
type Interval is record
|
||||
Lower : Float;
|
||||
Upper : Float;
|
||||
end record;
|
||||
19
Task/Safe-addition/Ada/safe-addition-2.ada
Normal file
19
Task/Safe-addition/Ada/safe-addition-2.ada
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
function "+" (A, B : Float) return Interval is
|
||||
Result : constant Float := A + B;
|
||||
begin
|
||||
if Result < 0.0 then
|
||||
if Float'Machine_Rounds then
|
||||
return (Float'Adjacent (Result, Float'First), Float'Adjacent (Result, 0.0));
|
||||
else
|
||||
return (Float'Adjacent (Result, Float'First), Result);
|
||||
end if;
|
||||
elsif Result > 0.0 then
|
||||
if Float'Machine_Rounds then
|
||||
return (Float'Adjacent (Result, 0.0), Float'Adjacent (Result, Float'Last));
|
||||
else
|
||||
return (Result, Float'Adjacent (Result, Float'Last));
|
||||
end if;
|
||||
else -- Underflow
|
||||
return (Float'Adjacent (0.0, Float'First), Float'Adjacent (0.0, Float'Last));
|
||||
end if;
|
||||
end "+";
|
||||
10
Task/Safe-addition/Ada/safe-addition-3.ada
Normal file
10
Task/Safe-addition/Ada/safe-addition-3.ada
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
procedure Test_Interval_Addition is
|
||||
-- Definitions from above
|
||||
procedure Put (I : Interval) is
|
||||
begin
|
||||
Put (Long_Float'Image (Long_Float (I.Lower)) & "," & Long_Float'Image (Long_Float (I.Upper)));
|
||||
end Put;
|
||||
begin
|
||||
Put (1.14 + 2000.0);
|
||||
end Test_Interval_Addition;
|
||||
Loading…
Add table
Add a link
Reference in a new issue