14#include <OpenMEEGConfigure.h>
21 struct OPENMEEGMATHS_EXPORT MathsIO;
27 const BLAS_INT num_out =
static_cast<BLAS_INT
>(num);
28 om_assert(num_out>=0);
38 typedef maths::MathsIO*
IO;
40 typedef enum { FULL, SYMMETRIC,
BLOCK, BLOCK_SYMMETRIC, SPARSE } StorageType;
44 num_lines(m),num_cols(n),storage(st),dim(d) { }
68 IO DefaultIO =
nullptr;
80 virtual size_t size()
const = 0;
81 virtual void info()
const = 0;
86 struct OPENMEEGMATHS_EXPORT
LinOpValue:
public std::shared_ptr<double[]> {
87 typedef std::shared_ptr<double[]>
base;
91 LinOpValue(
const size_t n,
const double* initval):
LinOpValue(n) { std::copy(initval,initval+n,&(*
this)[0]); }
96 bool empty()
const {
return static_cast<bool>(*this); }
unsigned dimension() const
StorageType storageType() const
virtual Dimension ncol() const
LinOpInfo(const Dimension m, const Dimension n, const StorageType st, const unsigned d)
StorageType & storageType()
LinOp(const Dimension m, const Dimension n, const StorageType st, const unsigned d)
virtual size_t size() const =0
virtual void info() const =0
BLAS_INT sizet_to_int(const unsigned &num)
std::shared_ptr< double[]> base
LinOpValue(const size_t n, const LinOpValue &v)
LinOpValue(const size_t n)
LinOpValue(const size_t n, const double *initval)