MyraMath
minmax.h
Go to the documentation of this file.
1 // ========================================================================= //
2 // This file is part of MyraMath, copyright (c) 2014-2019 by Ryan A Chilton //
3 // and distributed by MyraCore, LLC. See LICENSE.txt for license terms. //
4 // ========================================================================= //
5 
6 #ifndef MYRAMATH_DENSE_MINMAX_H
7 #define MYRAMATH_DENSE_MINMAX_H
8 
14 #include <myramath/MYRAMATH_EXPORT.h>
16 
17 namespace myra {
18 
19 // Forward declarations.
20 template<class Number> class CMatrixRange;
21 template<class Number> class CVectorRange;
22 
24 template<class Number> class MYRAMATH_EXPORT MatrixExtrema
25  {
26  public:
27 
28  // Constructs from components.
29  MatrixExtrema(bool in_flag, int in_i, int in_j, Number in_value)
30  {
31  flag = in_flag;
32  i = in_i;
33  j = in_j;
34  value = in_value;
35  }
36 
37  // Data members, all public.
38  bool flag;
39  int i;
40  int j;
41  Number value;
42  };
43 
45 MYRAMATH_EXPORT MatrixExtrema<NumberS> min(const CMatrixRange<NumberS>& A);
47 MYRAMATH_EXPORT MatrixExtrema<NumberD> min(const CMatrixRange<NumberD>& A);
48 MYRAMATH_EXPORT MatrixExtrema<NumberC> min(const CMatrixRange<NumberC>& A);
49 MYRAMATH_EXPORT MatrixExtrema<NumberZ> min(const CMatrixRange<NumberZ>& A);
51 
53 MYRAMATH_EXPORT MatrixExtrema<NumberS> max(const CMatrixRange<NumberS>& A);
55 MYRAMATH_EXPORT MatrixExtrema<NumberD> max(const CMatrixRange<NumberD>& A);
56 MYRAMATH_EXPORT MatrixExtrema<NumberC> max(const CMatrixRange<NumberC>& A);
57 MYRAMATH_EXPORT MatrixExtrema<NumberZ> max(const CMatrixRange<NumberZ>& A);
59 
61 template<class Number> class MYRAMATH_EXPORT VectorExtrema
62  {
63  public:
64 
65  // Constructs from components.
66  VectorExtrema(bool in_flag, int in_n, Number in_value)
67  {
68  flag = in_flag;
69  n = in_n;
70  value = in_value;
71  }
72 
73  // Data members, all public.
74  bool flag;
75  int n;
76  Number value;
77  };
78 
80 MYRAMATH_EXPORT VectorExtrema<NumberS> min(const CVectorRange<NumberS>& a);
82 MYRAMATH_EXPORT VectorExtrema<NumberD> min(const CVectorRange<NumberD>& a);
83 MYRAMATH_EXPORT VectorExtrema<NumberC> min(const CVectorRange<NumberC>& a);
84 MYRAMATH_EXPORT VectorExtrema<NumberZ> min(const CVectorRange<NumberZ>& a);
86 
88 MYRAMATH_EXPORT VectorExtrema<NumberS> max(const CVectorRange<NumberS>& a);
90 MYRAMATH_EXPORT VectorExtrema<NumberD> max(const CVectorRange<NumberD>& a);
91 MYRAMATH_EXPORT VectorExtrema<NumberC> max(const CVectorRange<NumberC>& a);
92 MYRAMATH_EXPORT VectorExtrema<NumberZ> max(const CVectorRange<NumberZ>& a);
94 
95 } // namespace
96 
97 #endif
Expression< 1, NumberS > min(const Expression< 1, NumberS > &A, const Expression< 1, NumberS > &B)
Returns the smaller of two real Expression&#39;s, min(A(i),B(i))
Definition: functions_measure.cpp:60
Expression< 1, NumberS > max(const Expression< 1, NumberS > &A, const Expression< 1, NumberS > &B)
Returns the larger of two real Expression&#39;s, max(A(i),B(i))
Definition: functions_measure.cpp:83
Definition: syntax.dox:1
Represents a const MatrixRange.
Definition: bothcat.h:22
Various utility functions/classes related to scalar Number types.
Return type for min() / max() of a Matrix.
Definition: minmax.h:24
Return type for min() / max() of a Vector.
Definition: minmax.h:61
Represents a const VectorRange.
Definition: axpy.h:20