Reading NaN & Inf in mex files

gOS bkirklin at quantapoint.com
Tue Aug 5 14:56:34 CDT 2008


I forgot you guys usually like to have an example of code.

#include "mex.h"
#include <iostream>

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
	long double nan = std::numeric_limits<long double>::quiet_NaN(); //
produces 1.#QNAN
	long double inf = std::numeric_limits<long double>::infinity(); // produces
1.#INF

	plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL); // Works
	long double* output = mxGetPr(plhs[0]);
	output[0] = nan;

	plhs[1] = mxCreateDoubleMatrix(1,1,mxREAL); // Does not work
	long double* output2 = mxGetPr(plhs[1]);
	output2[0] = inf;
}



gOS wrote:
> 
> I've got a function which reads in text files formatted in a specific way.
> Thanks to windows, these files can sometimes contain values like 1.#INF or
> 1.#IND or even 1.#QNAN. As you can see these are window's own versions of
> Inf and NaN. These can also be negative.
> 
> I was able to produce an NaN value which Octave recognized as NaN with:
> double nan = std::numeric_limits<long double>::quiet_NaN();
> 
> However, double inf = std::numeric_limits<long double>::infinity(); was
> interpreted somewhere as meaning NaN as well instead of inf.
> 
> Does anyone have any suggestions as to how to correct this?
> 

-- 
View this message in context: http://www.nabble.com/Reading-NaN---Inf-in-mex-files-tp18838647p18838720.html
Sent from the Octave - General mailing list archive at Nabble.com.



More information about the Help-octave mailing list