Arithmetic-geometric mean: Difference between revisions

Using Real Math module
(Added solution for Action!)
(Using Real Math module)
Line 154:
=={{header|Action!}}==
{{libheader|Action! Tool Kit}}
{{libheader|Action! Real Math}}
<lang Action!>INCLUDE "D2H6:REALREALMATH.ACT" ;from the Action! Tool Kit
 
BYTE FUNC Equal(REAL POINTER a,b)
BYTE ARRAY x,y
 
x=a y=b
IF x(0)=y(0) AND x(1)=y(1) AND x(2)=y(2) THEN
RETURN (1)
FI
RETURN (0)
 
BYTE FUNC GreaterOrEqual(REAL POINTER left,right)
REAL diff
BYTE ARRAY x
 
RealSub(left,right,diff)
x=diff
 
IF (x(0)&$80)=$00 THEN
RETURN (1)
FI
RETURN (0)
 
PROC Sqrt(REAL POINTER a,b)
REAL z,half
 
IntToReal(0,z)
ValR("0.5",half)
IF Equal(a,z) THEN
RealAssign(z,b)
ELSE
Power(a,half,b)
FI
RETURN
 
PROC Agm(REAL POINTER a0,g0,result)
Line 202 ⟶ 169:
RealMult(prevA,g,tmp)
Sqrt(tmp,g)
IF GreaterOrEqualRealGreaterOrEqual(a,prevA) THEN
EXIT
FI
Line 214 ⟶ 181:
Put(125) PutE() ;clear screen
 
MathInit()
IntToReal(1,r1)
IntToReal(2,r2)
Anonymous user