Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,70 @@
|
|||
MODULE AGM;
|
||||
FROM EXCEPTIONS IMPORT AllocateSource,ExceptionSource,GetMessage,RAISE;
|
||||
FROM LongConv IMPORT ValueReal;
|
||||
FROM LongMath IMPORT sqrt;
|
||||
FROM LongStr IMPORT RealToStr;
|
||||
FROM Terminal IMPORT ReadChar,Write,WriteString,WriteLn;
|
||||
|
||||
VAR
|
||||
TextWinExSrc : ExceptionSource;
|
||||
|
||||
PROCEDURE ReadReal() : LONGREAL;
|
||||
VAR
|
||||
buffer : ARRAY[0..63] OF CHAR;
|
||||
i : CARDINAL;
|
||||
c : CHAR;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
||||
LOOP
|
||||
c := ReadChar();
|
||||
IF ((c >= '0') AND (c <= '9')) OR (c = '.') THEN
|
||||
buffer[i] := c;
|
||||
Write(c);
|
||||
INC(i)
|
||||
ELSE
|
||||
WriteLn;
|
||||
EXIT
|
||||
END
|
||||
END;
|
||||
|
||||
buffer[i] := 0C;
|
||||
RETURN ValueReal(buffer)
|
||||
END ReadReal;
|
||||
|
||||
PROCEDURE WriteReal(r : LONGREAL);
|
||||
VAR
|
||||
buffer : ARRAY[0..63] OF CHAR;
|
||||
BEGIN
|
||||
RealToStr(r, buffer);
|
||||
WriteString(buffer)
|
||||
END WriteReal;
|
||||
|
||||
PROCEDURE AGM(a,g : LONGREAL) : LONGREAL;
|
||||
CONST iota = 1.0E-16;
|
||||
VAR a1, g1 : LONGREAL;
|
||||
BEGIN
|
||||
IF a * g < 0.0 THEN
|
||||
RAISE(TextWinExSrc, 0, "arithmetic-geometric mean undefined when x*y<0")
|
||||
END;
|
||||
|
||||
WHILE ABS(a - g) > iota DO
|
||||
a1 := (a + g) / 2.0;
|
||||
g1 := sqrt(a * g);
|
||||
|
||||
a := a1;
|
||||
g := g1
|
||||
END;
|
||||
|
||||
RETURN a
|
||||
END AGM;
|
||||
|
||||
VAR
|
||||
x, y, z: LONGREAL;
|
||||
BEGIN
|
||||
WriteString("Enter two numbers: ");
|
||||
x := ReadReal();
|
||||
y := ReadReal();
|
||||
WriteReal(AGM(x, y));
|
||||
WriteLn
|
||||
END AGM.
|
||||
Loading…
Add table
Add a link
Reference in a new issue