core
vil
vil_na.h
Go to the documentation of this file.
1
// This is core/vil/vil_na.h
2
#ifndef vil_na_h_
3
#define vil_na_h_
4
5
//:
6
// \file
7
// \brief NA (Not Available) is a particular double NaN to represent missing data.
8
// For example, where a vnl_vector<double> represents a series of samples from an image,
9
// NA could be used to represent places where the measurement was taken outside the image.
10
//
11
// NA is distinct for the two other standard meanings of NaN - Indeterminate and Error.
12
// It is entirely up to each algorithm to treat NA values meaningfully. Unless
13
// a function's interpretation of NA is explicitly documented, you should assume that
14
// it will be treated similarly to every other NaN.
15
// The IEEE754 bit value used to represent NA in double-precision is 0x7ff00000000007a2, the
16
// same as used by Octave and R. Initial values of NA are stored as signalling NaNs, but
17
// many uses will convert this to the non-signalling variant 0x7ff80000000007a2. vil_na_isna()
18
// will accept either variant.
19
//
20
// The single precision NA is stored as 0x7f8007a2. I cannot find any external support for
21
// this or any other value for single precision NA. There is no automatic conversion between
22
// the NA values during casting, promotion, etc. If you want to convert a float to double,
23
// whilst preserving the NA-ness of the value, you will have to test for and set the new NA
24
// value explicitly.
25
//
26
// This file is a cut-and-paste of the essential sections of vnl_na, since vil is not
27
// allowed to depend upon vnl
28
29
30
31
32
//: qNaN to indicate value Not Available.
33
// Don't assume that any VXL functions will do something sensible in the face of NA, unless
34
// explicitly documented.
35
double
vil_na
(
double
dummy);
36
37
//: qNaN to indicate value Not Available.
38
// Don't assume that any VXL functions will do something sensible in the face of NA, unless
39
// explicitly documented.
40
float
vil_na
(
float
dummy);
41
42
//: True if parameter is specific NA qNaN.
43
// Tests for bit pattern 0x7ff00000000007a2, as used by Octave and R
44
bool
vil_na_isna
(
double
);
45
46
//: True if parameter is specific NA qNaN.
47
// Tests for bit pattern 0x7f8007a2
48
bool
vil_na_isna
(
float
);
49
50
51
#endif // vil_na_h_
vil_na
double vil_na(double dummy)
qNaN to indicate value Not Available.
Definition:
vil_na.cxx:18
vil_na_isna
bool vil_na_isna(double)
True if parameter is specific NA qNaN.
Definition:
vil_na.cxx:57
Generated by
1.8.15