summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/matrix/matrix_subexp_abstract.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/matrix/matrix_subexp_abstract.h')
-rw-r--r--ml/dlib/dlib/matrix/matrix_subexp_abstract.h570
1 files changed, 0 insertions, 570 deletions
diff --git a/ml/dlib/dlib/matrix/matrix_subexp_abstract.h b/ml/dlib/dlib/matrix/matrix_subexp_abstract.h
deleted file mode 100644
index 2665d1b99..000000000
--- a/ml/dlib/dlib/matrix/matrix_subexp_abstract.h
+++ /dev/null
@@ -1,570 +0,0 @@
-// Copyright (C) 2006 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#undef DLIB_MATRIx_SUBEXP_ABSTRACT_
-#ifdef DLIB_MATRIx_SUBEXP_ABSTRACT_
-
-#include "matrix_abstract.h"
-#include "../geometry/rectangle.h"
-
-namespace dlib
-{
-
-// ----------------------------------------------------------------------------------------
-
- template <long start, long inc, long end>
- const matrix_exp range (
- );
- /*!
- requires
- - inc > 0
- ensures
- - returns a matrix R such that:
- - R::type == long
- - R.nr() == 1
- - R.nc() == abs(end - start)/inc + 1
- - if (start <= end) then
- - R(i) == start + i*inc
- - else
- - R(i) == start - i*inc
- !*/
-
- template <long start, long end>
- const matrix_exp range (
- ) { return range<start,1,end>(); }
-
- const matrix_exp range (
- long start,
- long inc,
- long end
- );
- /*!
- requires
- - inc > 0
- ensures
- - returns a matrix R such that:
- - R::type == long
- - R.nr() == 1
- - R.nc() == abs(end - start)/inc + 1
- - if (start <= end) then
- - R(i) == start + i*inc
- - else
- - R(i) == start - i*inc
- !*/
-
- const matrix_exp range (
- long start,
- long end
- ) { return range(start,1,end); }
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp subm (
- const matrix_exp& m,
- const matrix_exp& rows,
- const matrix_exp& cols,
- );
- /*!
- requires
- - rows and cols contain integral elements (e.g. int, long)
- - 0 <= min(rows) && max(rows) < m.nr()
- - 0 <= min(cols) && max(cols) < m.nc()
- - rows.nr() == 1 || rows.nc() == 1
- - cols.nr() == 1 || cols.nc() == 1
- (i.e. rows and cols must be vectors)
- ensures
- - returns a matrix R such that:
- - R::type == the same type that was in m
- - R.nr() == rows.size()
- - R.nc() == cols.size()
- - for all valid r and c:
- R(r,c) == m(rows(r),cols(c))
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp subm (
- const matrix_exp& m,
- long row,
- long col,
- long nr,
- long nc
- );
- /*!
- requires
- - row >= 0
- - col >= 0
- - nr >= 0
- - nc >= 0
- - row + nr <= m.nr()
- - col + nc <= m.nc()
- ensures
- - returns a matrix R such that:
- - R.nr() == nr
- - R.nc() == nc
- - for all valid r and c:
- R(r, c) == m(r+row,c+col)
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp subm (
- const matrix_exp& m,
- const rectangle& rect
- );
- /*!
- requires
- - get_rect(m).contains(rect) == true
- (i.e. rect is a region inside the matrix m)
- ensures
- - returns a matrix R such that:
- - R.nr() == rect.height()
- - R.nc() == rect.width()
- - for all valid r and c:
- R(r, c) == m(r+rect.top(), c+rect.left())
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp subm_clipped (
- const matrix_exp& m,
- long row,
- long col,
- long nr,
- long nc
- );
- /*!
- ensures
- - This function is just like subm() except that it will automatically clip the
- indicated sub matrix window so that it does not extend outside m.
- In particular:
- - Let box = rectangle(col,row,col+nc-1,row+nr-1)
- (i.e. the box that contains the indicated sub matrix)
- - Let box_clipped = box.intersect(get_rect(m))
- - Then this function returns a matrix R such that:
- - R.nr() == box_clipped.height()
- - R.nc() == box_clipped.width()
- - for all valid r and c:
- R(r, c) == m(r+box_clipped.top(),c+box_clipped.left())
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp subm_clipped (
- const matrix_exp& m,
- const rectangle& rect
- );
- /*!
- ensures
- - Let box_clipped == rect.intersect(get_rect(m))
- - returns a matrix R such that:
- - R.nr() == box_clipped.height()
- - R.nc() == box_clipped.width()
- - for all valid r and c:
- R(r, c) == m(r+box_clipped.top(), c+box_clipped.left())
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp rowm (
- const matrix_exp& m,
- long row
- );
- /*!
- requires
- - 0 <= row < m.nr()
- ensures
- - returns a matrix R such that:
- - R.nr() == 1
- - R.nc() == m.nc()
- - for all valid i:
- R(i) == m(row,i)
- !*/
-
- template <typename EXP>
- struct rowm_exp
- {
- /*!
- WHAT THIS OBJECT REPRESENTS
- This struct allows you to determine the type of matrix expression
- object returned from the rowm(m,row) function. An example makes its
- use clear:
-
- template <typename EXP>
- void do_something( const matrix_exp<EXP>& mat)
- {
- // r is a matrix expression that aliases mat.
- typename rowm_exp<EXP>::type r = rowm(mat,0);
-
- // Print the first row of mat. So we see that by using
- // rowm_exp we can save the object returned by rowm() in
- // a local variable.
- cout << r << endl;
-
- // Note that you can only save the return value of rowm() to
- // a local variable if the argument to rowm() has a lifetime
- // beyond the rowm() expression. The example shown above is
- // OK but the following would result in undefined behavior:
- typename rowm_exp<EXP>::type bad = rowm(mat + mat,0);
- }
- !*/
- typedef type_of_expression_returned_by_rowm type;
- };
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp rowm (
- const matrix_exp& m,
- long row,
- long length
- );
- /*!
- requires
- - 0 <= row < m.nr()
- - 0 <= length <= m.nc()
- ensures
- - returns a matrix R such that:
- - R.nr() == 1
- - R.nc() == length
- - for all valid i:
- R(i) == m(row,i)
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp rowm (
- const matrix_exp& m,
- const matrix_exp& rows
- );
- /*!
- requires
- - rows contains integral elements (e.g. int, long)
- - 0 <= min(rows) && max(rows) < m.nr()
- - rows.nr() == 1 || rows.nc() == 1
- (i.e. rows must be a vector)
- ensures
- - returns a matrix R such that:
- - R::type == the same type that was in m
- - R.nr() == rows.size()
- - R.nc() == m.nc()
- - for all valid r and c:
- R(r,c) == m(rows(r),c)
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp colm (
- const matrix_exp& m,
- long col
- );
- /*!
- requires
- - 0 <= col < m.nc()
- ensures
- - returns a matrix R such that:
- - R.nr() == m.nr()
- - R.nc() == 1
- - for all valid i:
- R(i) == m(i,col)
- !*/
-
- template <typename EXP>
- struct colm_exp
- {
- /*!
- WHAT THIS OBJECT REPRESENTS
- This struct allows you to determine the type of matrix expression
- object returned from the colm(m,col) function. An example makes its
- use clear:
-
- template <typename EXP>
- void do_something( const matrix_exp<EXP>& mat)
- {
- // c is a matrix expression that aliases mat.
- typename colm_exp<EXP>::type c = colm(mat,0);
-
- // Print the first column of mat. So we see that by using
- // colm_exp we can save the object returned by colm() in
- // a local variable.
- cout << c << endl;
-
- // Note that you can only save the return value of colm() to
- // a local variable if the argument to colm() has a lifetime
- // beyond the colm() expression. The example shown above is
- // OK but the following would result in undefined behavior:
- typename colm_exp<EXP>::type bad = colm(mat + mat,0);
- }
- !*/
- typedef type_of_expression_returned_by_colm type;
- };
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp colm (
- const matrix_exp& m,
- long col,
- long length
- );
- /*!
- requires
- - 0 <= col < m.nc()
- - 0 <= length <= m.nr()
- ensures
- - returns a matrix R such that:
- - R.nr() == length
- - R.nc() == 1
- - for all valid i:
- R(i) == m(i,col)
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- const matrix_exp colm (
- const matrix_exp& m,
- const matrix_exp& cols
- );
- /*!
- requires
- - cols contains integral elements (e.g. int, long)
- - 0 <= min(cols) && max(cols) < m.nc()
- - cols.nr() == 1 || cols.nc() == 1
- (i.e. cols must be a vector)
- ensures
- - returns a matrix R such that:
- - R::type == the same type that was in m
- - R.nr() == m.nr()
- - R.nc() == cols.size()
- - for all valid r and c:
- R(r,c) == m(r,cols(c))
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- template <typename T>
- assignable_matrix_expression set_ptrm (
- T* ptr,
- long nr,
- long nc = 1
- );
- /*!
- requires
- - ptr == a pointer to nr*nc elements of type T
- - nr >= 0
- - nc >= 0
- ensures
- - statements of the following form:
- - set_ptrm(ptr,nr,nc) = some_matrix;
- result in it being the case that:
- - mat(ptr,nr,nc) == some_matrix.
-
- - statements of the following form:
- - set_ptrm(ptr,nr,nc) = scalar_value;
- result in it being the case that:
- - mat(ptr,nr,nc) == uniform_matrix<matrix::type>(nr,nc,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- assignable_matrix_expression set_subm (
- matrix& m,
- long row,
- long col,
- long nr,
- long nc
- );
- /*!
- requires
- - row >= 0
- - col >= 0
- - nr >= 0
- - nc >= 0
- - row + nr <= m.nr()
- - col + nc <= m.nc()
- ensures
- - statements of the following form:
- - set_subm(m,row,col,nr,nc) = some_matrix;
- result in it being the case that:
- - subm(m,row,col,nr,nc) == some_matrix.
-
- - statements of the following form:
- - set_subm(m,row,col,nr,nc) = scalar_value;
- result in it being the case that:
- - subm(m,row,col,nr,nc) == uniform_matrix<matrix::type>(nr,nc,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- assignable_matrix_expression set_subm (
- matrix& m,
- const rectangle& rect
- );
- /*!
- requires
- - get_rect(m).contains(rect) == true
- (i.e. rect is a region inside the matrix m)
- ensures
- - statements of the following form:
- - set_subm(m,rect) = some_matrix;
- result in it being the case that:
- - subm(m,rect) == some_matrix.
-
- - statements of the following form:
- - set_subm(m,rect) = scalar_value;
- result in it being the case that:
- - subm(m,rect) == uniform_matrix<matrix::type>(nr,nc,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- assignable_matrix_expression set_subm (
- matrix& m,
- const matrix_exp& rows,
- const matrix_exp& cols
- );
- /*!
- requires
- - rows and cols contain integral elements (e.g. int, long)
- - 0 <= min(rows) && max(rows) < m.nr()
- - 0 <= min(cols) && max(cols) < m.nc()
- - rows.nr() == 1 || rows.nc() == 1
- - cols.nr() == 1 || cols.nc() == 1
- (i.e. rows and cols must be vectors)
- ensures
- - statements of the following form:
- - set_subm(m,rows,cols) = some_matrix;
- result in it being the case that:
- - subm(m,rows,cols) == some_matrix.
-
- - statements of the following form:
- - set_subm(m,rows,cols) = scalar_value;
- result in it being the case that:
- - subm(m,rows,cols) == uniform_matrix<matrix::type>(nr,nc,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- assignable_matrix_expression set_rowm (
- matrix& m,
- long row
- );
- /*!
- requires
- - 0 <= row < m.nr()
- ensures
- - statements of the following form:
- - set_rowm(m,row) = some_matrix;
- result in it being the case that:
- - rowm(m,row) == some_matrix.
-
- - statements of the following form:
- - set_rowm(m,row) = scalar_value;
- result in it being the case that:
- - rowm(m,row) == uniform_matrix<matrix::type>(1,nc,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- assignable_matrix_expression set_rowm (
- matrix& m,
- const matrix_exp& rows
- );
- /*!
- requires
- - rows contains integral elements (e.g. int, long)
- - 0 <= min(rows) && max(rows) < m.nr()
- - rows.nr() == 1 || rows.nc() == 1
- (i.e. rows must be a vector)
- ensures
- - statements of the following form:
- - set_rowm(m,rows) = some_matrix;
- result in it being the case that:
- - rowm(m,rows) == some_matrix.
-
- - statements of the following form:
- - set_rowm(m,rows) = scalar_value;
- result in it being the case that:
- - rowm(m,rows) == uniform_matrix<matrix::type>(nr,nc,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- assignable_matrix_expression set_colm (
- matrix& m,
- long col
- );
- /*!
- requires
- - 0 <= col < m.nr()
- ensures
- - statements of the following form:
- - set_colm(m,col) = some_matrix;
- result in it being the case that:
- - colm(m,col) == some_matrix.
-
- - statements of the following form:
- - set_colm(m,col) = scalar_value;
- result in it being the case that:
- - colm(m,col) == uniform_matrix<matrix::type>(nr,1,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
- assignable_matrix_expression set_colm (
- matrix& m,
- const matrix_exp& cols
- );
- /*!
- requires
- - cols contains integral elements (e.g. int, long)
- - 0 <= min(cols) && max(cols) < m.nc()
- - cols.nr() == 1 || cols.nc() == 1
- (i.e. cols must be a vector)
- ensures
- - statements of the following form:
- - set_colm(m,cols) = some_matrix;
- result in it being the case that:
- - colm(m,cols) == some_matrix.
-
- - statements of the following form:
- - set_colm(m,cols) = scalar_value;
- result in it being the case that:
- - colm(m,cols) == uniform_matrix<matrix::type>(nr,nc,scalar_value).
-
- - In addition to the normal assignment statements using the = symbol, you may
- also use the usual += and -= versions of the assignment operator. In these
- cases, they have their usual effect.
- !*/
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_MATRIx_SUBEXP_ABSTRACT_
-