How can I label a solution as NaN in a MEX code?

I am using solvers of LAPACK libraries in a MATLAB MEX file for solving linear system of equations. For some of the cases, the system that I solve is singular. For example, the system is as follows for one of my cases:
A =
0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 0.00000000
0.00000000 0.00000000 77.31867171
b:
-0.00000000 -0.00000000 -0.00000000
What would be the best approach to label this solution as NaN similar to MATLAB?

 Accepted Answer

Use the API function mxGetNaN:
E.g., to put a NaN value into a double for returning to the MATLAB workspace:
double d = mxGetNaN( );

More Answers (1)

if (some_condition)
some_value = 0.0/0.0; %This will produce a NaN
end

4 Comments

I understand this. I wanted to label some_value as NaN.
I am afraid I don't understand the problem. To test for singularity you could use:
rank(some_matrix)
And if you find out some_matrix is singular then set some_value as NaN.
AP
AP on 24 Jun 2014
Edited: AP on 24 Jun 2014
Since I am writing a c++ code in MATLAB, I am trying to find a way to label the solution of a singular matrix to NaN in the c++ code. I am using LAPACK solvers to solve a linear system of equation. At some point the solution to this system fail and I want to be able to label this as NaN in my c++ code. Hope this clarifies my question.
double myNaN = 0.0/0.0;
will produce a NaN in C++. Alternatively, you could set it to some other value
double flag = numeric_limits<double>::max();
that you then change into NaN in Matlab.

Sign in to comment.

Categories

Find more on Linear Algebra in Help Center and File Exchange

Tags

Asked:

AP
on 24 Jun 2014

Edited:

on 24 Jun 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!