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