00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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
00116
00117
00118