Hello @sarrabeny,
@sarrabeny wrote:
do until ( x[j,i]-x[j,i-1] = 1e-7);
........
The aim ... is ... to stop the loop when this difference is close to 0.
Apart from the issue with the array subscripts: Shouldn't the check for the difference being "close to 0" rather use "... < 1e-7" or "... <= 1e-7" than exact equality? And also possibly an absolute value: 0 <= abs(...-...) < 1e-7, unless negative differences can be ruled out? Even if exact equality was the intended criterion, it would often fail due to numeric representation errors.
Example (log from Windows SAS 9.4M5):
124 data _null_;
125 x=0.1234561;
126 y=0.123456;
127 if round(x-y,1e-10)=1e-7 then put 'equal';
128 if x-y=1e-7 then put 'exactly equal';
129 d=x-y-1e-7;
130 put d=;
131 run;
equal
d=2.875571E-18
... View more