Just a side note: It seems that the two functions are implemented differently. In this particular case the results differ in the last bit (i.e. 2^-51) on my Windows machine. (Irrelevant for practical purposes, of course.)
data _null_;
c=cinv(.47, 4);
q=quantile('CHISQ', .47, 4);
if c ne q then do;
put 'Not exactly equal.';
d=c-q;
put 'Difference: ' d;
put (c q) (hex16. /);
end;
run;
So, which one is closer to the "true" result?
Well, it depends ... For the exact argument of 0.47=47/100 c is closer, but for the internal 64-bit floating-point representation of 0.47 (which equals 0.47 - 0.96*2^-55) q is closer, says my computer algebra software.
... View more