Here's a SAS function I wrote in C using SAS/TOOLKT that addresses the floating point equality problem previously discussed here.
It is pretty straightforward and uses the algorithm based on this SAS TS Note.
%MACRO FUZZCOMP(X,Y,EPS=1E-12);
(ABS(&X-&Y) LE &EPS*MAX(ABS(&X),ABS(&Y)))
%MEND;
You can find it and a couple other functions I have written here.
As an aside, is there any interest out there in knowing how to write user-written functions in C for the SAS System using SAS/TOOLKT? I know SAS/TOOLKT isn't the *sexiest* SAS product (that would be JMP), but it can be quite useful writing specific functions in a lower-level language like C. If there is any interest I could put something formal together for a paper or even just put a tutorial up on the web.
No comments:
Post a Comment