Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

vnl_fastops.h

Go to the documentation of this file.
00001 #ifndef vnl_fastops_h_
00002 #define vnl_fastops_h_
00003 // This is vxl/vnl/vnl_fastops.h
00004 
00005 //: \file
00006 //  \brief Collection of C-style matrix functions
00007 //  \author Andrew W. Fitzgibbon, Oxford RRG, 09 Dec 96
00008 
00009 
00010 //   Modifications
00011 //   LSB (Manchester) 23/3/01 Tidied documentation
00012 //    
00013 
00014 #include <vnl/vnl_vector.h>
00015 #include <vnl/vnl_matrix.h>
00016 //:    Collection of C-style matrix functions for the most
00017 //    time-critical applications.  In general, however one should consider
00018 //    using the vnl_transpose envelope-letter class to achieve the same results
00019 //    with about a 10% speed penalty.
00020 class vnl_fastops {
00021 public:
00022   static void AtA(const vnl_matrix<double>& A, vnl_matrix<double>* out);
00023 
00024   static void AB(const vnl_matrix<double>& A, const vnl_matrix<double>& B, vnl_matrix<double>* out);
00025   static void AtB(const vnl_matrix<double>& A, const vnl_matrix<double>& B, vnl_matrix<double>* out);
00026   static void AtB(const vnl_matrix<double>& A, const vnl_vector<double>& B, vnl_vector<double>* out);
00027   static void ABt(const vnl_matrix<double>& A, const vnl_matrix<double>& B, vnl_matrix<double>* out);
00028 
00029   static void inc_X_by_AtB(vnl_matrix<double>& X, const vnl_matrix<double>& A, const vnl_matrix<double>& B);
00030   static void inc_X_by_AtB(vnl_vector<double>& X, const vnl_matrix<double>& A, const vnl_vector<double>& B);
00031   static void inc_X_by_AtA(vnl_matrix<double>& X, const vnl_matrix<double>& A);
00032 
00033   static void dec_X_by_AtB(vnl_matrix<double>& X, const vnl_matrix<double>& A, const vnl_matrix<double>& B);
00034   static void dec_X_by_AtA(vnl_matrix<double>& X, const vnl_matrix<double>& A);
00035 
00036   static void dec_X_by_ABt(vnl_matrix<double>& X, const vnl_matrix<double>& A, const vnl_matrix<double>& B);
00037 
00038   // BLAS-like operations
00039   static double dot(const double* a, const double* b, int n);
00040 };
00041 
00042 #endif // vnl_fastops_h_

Generated at Wed Mar 12 01:13:15 2003 for ITK by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2000