with Ada.Numerics; use Ada.Numerics;
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO;
procedure Test is
subtype Real is Long_Float digits 15;
package Real_Text_IO is new Ada.Text_IO.Float_IO (Real); use Real_Text_IO;
EPS : constant Real := 5.0E-9;
A : Real := 0.0;
N : Natural := 0;
S, R_Pi : Real;
begin
loop
A := (-1.0)**N * (1.0 / (6.0 * Real (N) + 1.0) +
1.0 / (6.0 * Real (N) + 5.0));
S := S + A;
N := N + 1;
exit when abs (A) <= EPS;
end loop;
R_Pi := S * 3.0;
Put ("Eps = "); Put (EPS, 1, 0); New_Line;
Put ("Ист. Pi = "); Put (Pi, 1, 20); New_Line;
Put ("Расч. Pi = "); Put (R_Pi, 1, 20); New_Line;
Put ("N = "); Ada.Integer_Text_IO.Put (N, 0); New_Line;
end Test;
d2l0aCBBZGEuTnVtZXJpY3M7IHVzZSBBZGEuTnVtZXJpY3M7CndpdGggQWRhLlRleHRfSU87IHVzZSBBZGEuVGV4dF9JTzsKd2l0aCBBZGEuSW50ZWdlcl9UZXh0X0lPOwoKcHJvY2VkdXJlIFRlc3QgaXMKICBzdWJ0eXBlIFJlYWwgaXMgTG9uZ19GbG9hdCBkaWdpdHMgMTU7CiAgcGFja2FnZSBSZWFsX1RleHRfSU8gaXMgbmV3IEFkYS5UZXh0X0lPLkZsb2F0X0lPIChSZWFsKTsgdXNlIFJlYWxfVGV4dF9JTzsKICAKICBFUFMgOiBjb25zdGFudCBSZWFsIDo9IDUuMEUtOTsKICBBIDogUmVhbCA6PSAwLjA7CiAgTiA6IE5hdHVyYWwgOj0gMDsKICBTLCBSX1BpIDogUmVhbDsKYmVnaW4KICBsb29wCiAgICBBIDo9ICgtMS4wKSoqTiAqICgxLjAgLyAoNi4wICogUmVhbCAoTikgKyAxLjApICsKICAgICAgICAgICAgICAgICAgICAgIDEuMCAvICg2LjAgKiBSZWFsIChOKSArIDUuMCkpOwogICAgUyA6PSBTICsgQTsKICAgIE4gOj0gTiArIDE7CiAgICBleGl0IHdoZW4gYWJzIChBKSA8PSBFUFM7CiAgZW5kIGxvb3A7CiAgCiAgUl9QaSA6PSBTICogMy4wOwogIFB1dCAoIkVwcyAgICAgID0gIik7IFB1dCAoRVBTLCAxLCAwKTsgTmV3X0xpbmU7CiAgUHV0ICgi0JjRgdGCLiBQaSAgPSAiKTsgUHV0IChQaSwgMSwgMjApOyBOZXdfTGluZTsKICBQdXQgKCLQoNCw0YHRhy4gUGkgPSAiKTsgUHV0IChSX1BpLCAxLCAyMCk7IE5ld19MaW5lOwogIFB1dCAoIk4gICAgICAgID0gIik7IEFkYS5JbnRlZ2VyX1RleHRfSU8uUHV0IChOLCAwKTsgTmV3X0xpbmU7CmVuZCBUZXN0Owo=