29 LinSolver(
const LinSolver&);
34 bool ready()
const {
return ready_; }
35 int size()
const {
return n_; }
37 void apply(
const T* b,T* x)
const;
61 ? tr(
"Generating linear model")
65 {
return tr(
"Nr points processed"); }
82 :
Executor(
"Generating linear model")
84 , totalnr_(A.info().getSize(0))
88 , croutsidx_(croutsidx)
96 for (
int idx=0; idx<
totalnr_; idx++ )
99 for (
int idy=0; idy<
totalnr_; idy++ )
112 vv_[idx] = 1.0f/maxval;
128 for (
int idx=0; idx<
curidx_; idx++ )
131 for (
int idz=0; idz<idx; idz++ )
138 for (
int idx=curidx_; idx<
totalnr_; idx++ )
141 for (
int idz=0; idz<
curidx_; idz++ )
148 T dum =
vv_[idx]*fabs(sum);
157 if ( curidx_ !=
imax_ )
159 for (
int idz=0; idz<
totalnr_; idz++ )
174 if ( curidx_ != totalnr_-1 )
177 for (
int idx=curidx_+1; idx<
totalnr_; idx++ )
187 template <
class T>
inline 191 , n_(A.info().getSize(0))
197 template <
class T>
inline 206 template <
class T>
inline 216 for (
int idx=0; idx<s.
n_; idx++ )
222 template <
class T>
inline 229 template <
class T>
inline 234 pErrMsg(
"Cannot apply. Did you forget to call LinSolver::init()?");
238 for (
int idx=0; idx<
n_; idx++ )
243 for (
int i=0; i<
n_; i++ )
251 for (
int j=ii; j<=i-1; j++ )
262 for (
int i=n_-1; i>=0; i-- )
265 for (
int j=i+1; j<
n_; j++ )
int * croutsidx_
Definition: linsolv.h:73
const Array2DInfo & info() const
Definition: arrayndimpl.h:123
int imax_
Definition: linsolv.h:72
Array2DImpl< T > & croutsmatrix_
Definition: linsolv.h:75
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
static int ErrorOccurred()
Definition: task.h:164
bool init(TaskRunner *=0)
Definition: linsolv.h:198
LinSolverTask(Array2DImpl< T > &, int *)
Definition: linsolv.h:81
#define mIsZero(x, eps)
Definition: commondefs.h:55
~LinSolverTask()
Definition: linsolv.h:53
int * croutsidx_
Definition: linsolv.h:41
#define od_int64
Definition: plftypes.h:34
Implementation of Array2D.
Definition: arrayndimpl.h:101
int n_
Definition: linsolv.h:42
static bool execute(TaskRunner *tskr, Task &)
Taskrunner may be zero.
#define TINY
Definition: linsolv.h:117
Definition: uistring.h:88
static int MoreToDo()
Definition: task.h:166
uiString message() const
Definition: linsolv.h:58
virtual int getSize(int dim) const =0
int curidx_
Definition: linsolv.h:70
static int Finished()
Definition: task.h:165
Set of (small) copyable elements.
Definition: commontypes.h:26
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:127
Class that can execute a task.
Definition: task.h:193
LinSolver - Solves linear systems of equations on the form A*x=B. A is a matrix of the size N*N...
Definition: gridder2d.h:22
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
od_int64 nrDone() const
Definition: linsolv.h:67
od_int64 totalNr() const
Definition: linsolv.h:68
#define mDefEps
Definition: commondefs.h:60
TypeSet< T > vv_
Definition: linsolv.h:74
int totalnr_
Definition: linsolv.h:71
bool isEmpty() const
Definition: odstring.h:49
BufferString errmsg_
Definition: horizontracker.h:117
int size() const
Definition: linsolv.h:35
bool ready_
Definition: linsolv.h:43
static uiString phrInvalid(const uiString &string)
"Invalid <string>"
bool ready() const
Definition: linsolv.h:34
#define mClass(module)
Definition: commondefs.h:161
#define pErrMsg(msg)
Usual access point for programmer error messages.
Definition: errmsg.h:34
uiString nrDoneText() const
Definition: linsolv.h:64
LinSolver(const Array2D< T > &A)
Definition: linsolv.h:188
Array2DImpl< T > croutsmatrix_
Definition: linsolv.h:40
Specification to enable chunkwise execution of a process.
Definition: executor.h:38
~LinSolver()
Definition: linsolv.h:223
void apply(const T *b, T *x) const
Definition: linsolv.h:230
uiString errmsg_
Definition: linsolv.h:76
int nextStep()
Definition: linsolv.h:120