core
vnl
vnl_numeric_traits.cxx
Go to the documentation of this file.
1
// This is core/vnl/vnl_numeric_traits.cxx
2
//:
3
// \file
4
// \author Andrew W. Fitzgibbon, Oxford RRG
5
// Created: 12 Feb 98
6
//
7
//-----------------------------------------------------------------------------
8
9
#include <complex>
10
#include "
vnl_numeric_traits.h
"
11
12
constexpr
bool
vnl_numeric_traits<bool>::zero
;
13
constexpr
char
vnl_numeric_traits<char>::zero
;
14
constexpr
unsigned
char
vnl_numeric_traits<unsigned char>::zero
;
15
constexpr
signed
char
vnl_numeric_traits<signed char>::zero
;
16
constexpr
short
vnl_numeric_traits<short>::zero
;
17
constexpr
unsigned
short
vnl_numeric_traits<unsigned short>::zero
;
18
constexpr
int
vnl_numeric_traits<int>::zero
;
19
constexpr
unsigned
int
vnl_numeric_traits<unsigned int>::zero
;
20
constexpr
long
vnl_numeric_traits<long>::zero
;
21
constexpr
unsigned
long
vnl_numeric_traits<unsigned long>::zero
;
22
//long long - target type will have width of at least 64 bits. (since C++11)
23
constexpr
long
long
vnl_numeric_traits<long long>::zero
;
24
constexpr
unsigned
long
long
vnl_numeric_traits<unsigned long long>::zero
;
25
26
27
constexpr
bool
vnl_numeric_traits<bool>::one
;
28
constexpr
char
vnl_numeric_traits<char>::one
;
29
constexpr
unsigned
char
vnl_numeric_traits<unsigned char>::one
;
30
constexpr
signed
char
vnl_numeric_traits<signed char>::one
;
31
constexpr
short
vnl_numeric_traits<short>::one
;
32
constexpr
unsigned
short
vnl_numeric_traits<unsigned short>::one
;
33
constexpr
int
vnl_numeric_traits<int>::one
;
34
constexpr
unsigned
int
vnl_numeric_traits<unsigned int>::one
;
35
constexpr
long
vnl_numeric_traits<long>::one
;
36
constexpr
unsigned
long
vnl_numeric_traits<unsigned long>::one
;
37
38
//long long - target type will have width of at least 64 bits. (since C++11)
39
constexpr
long
long
vnl_numeric_traits<long long>::one
;
40
constexpr
unsigned
long
long
vnl_numeric_traits<unsigned long long>::one
;
41
42
constexpr
bool
vnl_numeric_traits<bool>::maxval
;
43
constexpr
char
vnl_numeric_traits<char>::maxval
;
44
// It is 127 when "char" is signed and 255 when "char" is unsigned.
45
constexpr
unsigned
char
vnl_numeric_traits<unsigned char>::maxval
;
46
constexpr
signed
char
vnl_numeric_traits<signed char>::maxval
;
47
constexpr
short
vnl_numeric_traits<short>::maxval
;
48
constexpr
unsigned
short
vnl_numeric_traits<unsigned short>::maxval
;
49
constexpr
int
vnl_numeric_traits<int>::maxval
;
50
constexpr
unsigned
int
vnl_numeric_traits<unsigned int>::maxval
;
51
constexpr
long
vnl_numeric_traits<long>::maxval
;
52
constexpr
unsigned
long
vnl_numeric_traits<unsigned long>::maxval
;
53
//long long - target type will have width of at least 64 bits. (since C++11)
54
constexpr
long
long
vnl_numeric_traits<long long>::maxval
;
55
constexpr
unsigned
long
long
vnl_numeric_traits<unsigned long long>::maxval
;
56
57
constexpr
float
vnl_numeric_traits<float>::zero
;
58
constexpr
double
vnl_numeric_traits<double>::zero
;
59
constexpr
long
double
vnl_numeric_traits<long double>::zero
;
60
61
constexpr
float
vnl_numeric_traits<float>::one
;
62
constexpr
double
vnl_numeric_traits<double>::one
;
63
constexpr
long
double
vnl_numeric_traits<long double>::one
;
64
65
constexpr
float
vnl_numeric_traits<float>::maxval
;
66
constexpr
double
vnl_numeric_traits<double>::maxval
;
67
constexpr
long
double
vnl_numeric_traits<long double>::maxval
;
68
69
// Must use constructor-call syntax for initialization of complex specializations.
70
// std::complex
71
//
72
// 'complex<float>' is not suitable for being a constexpr because it is not a literal type
73
// because it is not an aggregate and has no constexpr
74
// constructors other than copy or move constructors
75
const
std::complex<float>
vnl_numeric_traits<std::complex<float>
>::zero(0.0F);
76
const
std::complex<double>
vnl_numeric_traits<std::complex<double>
>::zero(0.0);
77
const
std::complex<long double>
vnl_numeric_traits<std::complex<long double>
>::zero(0.0L);
78
79
const
std::complex<float>
vnl_numeric_traits<std::complex<float>
>::one(1.0F);
80
const
std::complex<double>
vnl_numeric_traits<std::complex<double>
>::one(1.0);
81
const
std::complex<long double>
vnl_numeric_traits<std::complex<long double>
>::one(1.0L);
82
83
// Unknown, so undefined. Will cause link errors if someone refers to it.
84
//const std::complex<float> vnl_numeric_traits<std::complex<float> >::maxval;
85
//const std::complex<double> vnl_numeric_traits<std::complex<double> >::maxval;
86
//const std::complex<long double> vnl_numeric_traits<std::complex<long double> >::maxval;
87
88
//--------------------------------------------------------------------------------
vnl_numeric_traits.h
Templated zero/one/precision.
vnl_numeric_traits
Definition:
vnl_fwd.h:13
Generated by
1.8.15