core
vnl
vnl_fastops.h
Go to the documentation of this file.
1
// This is core/vnl/vnl_fastops.h
2
#ifndef vnl_fastops_h_
3
#define vnl_fastops_h_
4
//:
5
// \file
6
// \brief Collection of C-style matrix functions
7
// \author Andrew W. Fitzgibbon, Oxford RRG
8
// \date 09 Dec 96
9
//
10
// \verbatim
11
// Modifications
12
// Feb.2002 -Peter Vanroose- brief doxygen comment placed on single line
13
// Jun.2004 -Peter Vanroose- Added inc_X_by_ABt dec_X_by_AtB {inc,dec}_X_by_AB
14
// Jun.2004 -Peter Vanroose- First step to migrate towards non-pointer args
15
// Mar.2007 -Peter Vanroose- Commented deprecated versions of the functions
16
// \endverbatim
17
18
#include <
vnl/vnl_vector.h
>
19
#include <
vnl/vnl_matrix.h
>
20
#include "vnl/vnl_export.h"
21
22
//: Collection of C-style matrix functions for the most time-critical applications.
23
// In general, however one should consider using the vnl_transpose envelope-letter
24
// class to achieve the same results with about a 10% speed penalty.
25
class
VNL_EXPORT
vnl_fastops
26
{
27
public
:
28
static
void
AtA(
vnl_matrix<double>
& out,
const
vnl_matrix<double>
& A);
29
static
void
AB (
vnl_matrix<double>
& out,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
30
static
void
AtB(
vnl_matrix<double>
& out,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
31
static
void
AtB(
vnl_vector<double>
& out,
const
vnl_matrix<double>
& A,
const
vnl_vector<double>
& b);
32
static
void
Ab (
vnl_vector<double>
& out,
const
vnl_matrix<double>
& A,
const
vnl_vector<double>
& b);
33
static
void
ABt(
vnl_matrix<double>
& out,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
34
35
static
double
btAb (
const
vnl_matrix<double>
& A,
const
vnl_vector<double>
& b);
36
37
static
void
ABAt(
vnl_matrix<double>
& out,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
38
39
static
void
inc_X_by_AtA(
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A);
40
static
void
inc_X_by_AB (
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
41
static
void
inc_X_by_AtB(
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
42
static
void
inc_X_by_AtB(
vnl_vector<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_vector<double>
& b);
43
static
void
inc_X_by_ABt(
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
44
static
void
inc_X_by_ABAt(
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
45
46
static
void
dec_X_by_AtA(
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A);
47
static
void
dec_X_by_AB (
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
48
static
void
dec_X_by_AtB(
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
49
static
void
dec_X_by_AtB(
vnl_vector<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_vector<double>
& b);
50
static
void
dec_X_by_ABt(
vnl_matrix<double>
& X,
const
vnl_matrix<double>
& A,
const
vnl_matrix<double>
& B);
51
52
private
:
53
// BLAS-like operations
54
static
double
dot
(
const
double
* a,
const
double
* b,
unsigned
int
n);
55
};
56
57
#endif // vnl_fastops_h_
vnl_matrix.h
An ordinary mathematical matrix.
vnl_vector.h
dot
double dot(const double *v1, const double *v2, unsigned n)
Sum of v1[i]*v2i.
Definition:
vnl_ldl_cholesky.cxx:72
vnl_matrix< double >
vnl_vector< double >
vnl_fastops
Collection of C-style matrix functions for the most time-critical applications.
Definition:
vnl_fastops.h:25
Generated by
1.8.15