Introduction to SAS/IML Software |
An Introductory SAS/IML Program
This section presents a simple introductory SAS/IML program that implements a numerical algorithm that estimates the square root of a number, accurate to three decimal places. The following statements define a function module named MySqrt that performs the calculations:
proc iml; /* begin IML session */
start MySqrt(x); /* begin module */
y = 1; /* initialize y */
do until(w<1e-3); /* begin DO loop */
z = y; /* set z=y */
y = .5#(z+x/z); /* estimate square root */
w = abs(y-z); /* compute change in estimate */
end; /* end DO loop */
return(y); /* return approximation */
finish; /* end module */
You can call the MySqrt module to estimate the square root of several numbers given in a matrix literal (enclosed in braces) and print the results:
t = MySqrt({3,4,7,9}); /* call function MySqrt */
s = sqrt({3,4,7,9}); /* compare with true values */
diff = t - s; /* compute differences */
print t s diff; /* print matrices */
Figure 2.1
Approximate Square Roots
1.7320508 |
1.7320508 |
0 |
2 |
2 |
2.22E-15 |
2.6457513 |
2.6457513 |
4.678E-11 |
3 |
3 |
1.397E-9 |
Copyright © SAS Institute, Inc. All Rights Reserved.