%%HP: T(1)A(R)F(.);
  A B IA IB M
   `INPUT("TOLLERANZA 
Continua finche 
il mom.residuo 
non supera:","1")TOL`
; `OBJ(TOL)TOL` ;
0.  III
     `(GET(M,1.)-SUM
(IA))*AII` ; `GET(II
,1.)/2.III` ; `ROW(
IA,1.)RisA` ; `ROW+(
RisA,II,2.)RisA` ; `
IA+IITotA` ; `RDM(
[III],{GET(SIZE(B),1.
)})II` ; `ROW(IB,1.
)RisB` ; `ROW+(RisB,
II,2.)RisB` ; `IB+II
TotB` ; `(GET(M,2.)-
SUM(IB)-III)*BII` ;
`ROW+(RisB,II,3.)
RisB` ; `II+TotBTotB
` ;
      DO `GET(II,1.)/
2.III` ; `RDM([III],
{GET(SIZE(A),1.)})II
` ; `ROW+(RisA,II,GET
(SIZE(RisA),1.)+1.)
RisA` ; `TotA+IITotA
` ; `-III*AII` ; `
ROW+(RisA,II,GET(SIZE
(RisA),1.)+1.)RisA`
; `TotA+IITotA` ; `
GET(II,1.)/2.III` ;
`RDM([III],{GET(SIZE(
B),1.)})II` ; `ROW+(
RisB,II,GET(SIZE(RisB
),1.)+1.)RisB` ; `
TotB+IITotB` ; `-III
*BII` ; `ROW+(RisB,
II,GET(SIZE(RisB),1.)
+1.)RisB` ; `TotB+II
TotB` ;
      UNTIL `ABS(GET(
II,1.))<TOL`
      END ; `PURGE('
TOL')` ; `PURGE('II')
` ; `ROW+(RisA,TotA,
GET(SIZE(RisA),1.)+1.
)RisA` ; `ROW+(RisB,
TotB,GET(SIZE(RisB),
1.)+1.)RisB`
    
  
