It is mentioned in the documentation that the condition R > 0 must be satisfied for the A-B system to be stabilizable. If R > 0, i.e. symmetric positive definite, then R cannot be singular since all its eigen values are strictly positive. Hence the conditions R > 0 and R is non-singular are equivalent. It is isn't explicitly mentioned in the documentation but they mean the same thing and hence the check for singularity in the code is an expected behavior.
To solve the case where R is singular and yet the solution to the Ricatti equation exists, please refer to the GCARE function. The CARE function is only meant for the more usual case of non-singular R where as GCARE can handle the exception cases.
Best Answer