# scextrapmat.h

    00001 //
    00002 // scextrapmat.h
    00003 //
    00004 // Copyright (C) 1996 Limit Point Systems, Inc.
    00005 //
    00006 // Author: Curtis Janssen <cljanss@limitpt.com>
    00007 // Maintainer: LPS
    00008 //
    00009 // This file is part of the SC Toolkit.
    00010 //
    00011 // The SC Toolkit is free software; you can redistribute it and/or modify
    00012 // it under the terms of the GNU Library General Public License as published by
    00013 // the Free Software Foundation; either version 2, or (at your option)
    00014 // any later version.
    00015 //
    00016 // The SC Toolkit is distributed in the hope that it will be useful,
    00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00019 // GNU Library General Public License for more details.
    00020 //
    00021 // You should have received a copy of the GNU Library General Public License
    00022 // along with the SC Toolkit; see the file COPYING.LIB.  If not, write to
    00023 // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
    00024 //
    00025 // The U.S. Government is granted a limited license as per AL 91-7.
    00026 //
    00027
    00028 #ifndef _math_optimize_scextrapmat_h
    00029 #define _math_optimize_scextrapmat_h
    00030
    00031 #include <math/optimize/scextrap.h>
    00032 #include <math/scmat/matrix.h>
    00033
    00034 namespace sc {
    00035
    00036 class SymmSCMatrixSCExtrapData: public SCExtrapData {
    00037   private:
    00038     RefSymmSCMatrix m;
    00039   public:
    00040     SymmSCMatrixSCExtrapData(StateIn&);
    00041     SymmSCMatrixSCExtrapData(const RefSymmSCMatrix&);
    00042
    00043     void save_data_state(StateOut&);
    00044
    00045     SCExtrapData* copy();
    00046     void zero();
    00047     void accumulate_scaled(double, const Ref<SCExtrapData>&);
    00048 };
    00049
    00050 class SymmSCMatrix2SCExtrapData: public SCExtrapData {
    00051   private:
    00052     RefSymmSCMatrix m1;
    00053     RefSymmSCMatrix m2;
    00054   public:
    00055     SymmSCMatrix2SCExtrapData(StateIn&);
    00056     SymmSCMatrix2SCExtrapData(const RefSymmSCMatrix&, const RefSymmSCMatrix&);
    00057
    00058     void save_data_state(StateOut&);
    00059
    00060     SCExtrapData* copy();
    00061     void zero();
    00062     void accumulate_scaled(double, const Ref<SCExtrapData>&);
    00063 };
    00064
    00065 class SymmSCMatrix4SCExtrapData: public SCExtrapData {
    00066   private:
    00067     RefSymmSCMatrix m1;
    00068     RefSymmSCMatrix m2;
    00069     RefSymmSCMatrix m3;
    00070     RefSymmSCMatrix m4;
    00071   public:
    00072     SymmSCMatrix4SCExtrapData(StateIn&);
    00073     SymmSCMatrix4SCExtrapData(const RefSymmSCMatrix&, const RefSymmSCMatrix&,
    00074                               const RefSymmSCMatrix&, const RefSymmSCMatrix&);
    00075
    00076     void save_data_state(StateOut&);
    00077
    00078     SCExtrapData* copy();
    00079     void zero();
    00080     void accumulate_scaled(double, const Ref<SCExtrapData>&);
    00081 };
    00082
    00083 class SymmSCMatrixNSCExtrapData: public SCExtrapData {
    00084   private:
    00085     int n_;
    00086     RefSymmSCMatrix *m;
    00087   public:
    00088     SymmSCMatrixNSCExtrapData(StateIn&);
    00089     SymmSCMatrixNSCExtrapData(int n, RefSymmSCMatrix*);
    00090
    00091     void save_data_state(StateOut&);
    00092
    00093     SCExtrapData* copy();
    00094     void zero();
    00095     void accumulate_scaled(double, const Ref<SCExtrapData>&);
    00096 };
    00097
    00098 class SymmSCMatrixSCExtrapError: public SCExtrapError {
    00099   private:
    00100     RefSymmSCMatrix m;
    00101   public:
    00102     SymmSCMatrixSCExtrapError(StateIn&);
    00103     SymmSCMatrixSCExtrapError(const RefSymmSCMatrix&);
    00104
    00105     void save_data_state(StateOut&);
    00106
    00107     double error();
    00108     double scalar_product(const Ref<SCExtrapError>&);
    00109 };
    00110
    00111 }
    00112
    00113 #endif
    00114
    00115 // Local Variables:
    00116 // mode: c++
    00117 // c-file-style: "CLJ"
    00118 // End: