C++ API Reference for Intel® Data Analytics Acceleration Library 2019

matrix.h
1 /* file: matrix.h */
2 /*******************************************************************************
3 * Copyright 2014-2018 Intel Corporation.
4 *
5 * This software and the related documents are Intel copyrighted materials, and
6 * your use of them is governed by the express license under which they were
7 * provided to you (License). Unless the License provides otherwise, you may not
8 * use, modify, copy, publish, distribute, disclose or transmit this software or
9 * the related documents without Intel's prior written permission.
10 *
11 * This software and the related documents are provided as is, with no express
12 * or implied warranties, other than those that are expressly stated in the
13 * License.
14 *******************************************************************************/
15 
16 /*
17 //++
18 // Implementation of a matrix numeric table.
19 //--
20 */
21 
22 #ifndef __MATRIX_H__
23 #define __MATRIX_H__
24 
25 #include "services/daal_memory.h"
26 #include "data_management/data/numeric_table.h"
27 #include "data_management/data/homogen_numeric_table.h"
28 #include "services/daal_shared_ptr.h"
29 #include "data_management/data/data_serialize.h"
30 
31 namespace daal
32 {
33 namespace data_management
34 {
35 
36 namespace interface1
37 {
47 template<typename DataType = DAAL_DATA_TYPE>
48 class DAAL_EXPORT Matrix : public HomogenNumericTable<DataType>
49 {
50 public:
51  DECLARE_SERIALIZABLE_TAG();
52 
59  Matrix( size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0 ):
60  HomogenNumericTable<DataType>( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows ) { }
61 
70  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0,
71  services::Status *stat = NULL)
72  {
73  return create(DictionaryIface::notEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), stat);
74  }
75 
83  Matrix( size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr):
84  HomogenNumericTable<DataType>( ptr, nColumns, nRows ) { }
85 
94  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, services::SharedPtr<DataType> &ptr,
95  services::Status *stat = NULL)
96  {
97  return create(DictionaryIface::notEqual, nColumns, nRows, ptr, stat);
98  }
99 
107  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0 ):
108  HomogenNumericTable<DataType>( featuresEqual, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows ) { }
109 
119  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
120  size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0,
121  services::Status *stat = NULL)
122  {
123  return create(featuresEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), stat);
124  }
125 
133  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr ):
134  HomogenNumericTable<DataType>( featuresEqual, ptr, nColumns, nRows ) { }
135 
145  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
146  size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr,
147  services::Status *stat = NULL)
148  {
149  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, ptr);
150  }
151 
158  Matrix( size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag ):
159  HomogenNumericTable<DataType>( nColumns, nRows, memoryAllocationFlag ) { }
160 
169  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
170  services::Status *stat = NULL)
171  {
172  return create(DictionaryIface::notEqual, nColumns, nRows, memoryAllocationFlag, stat);
173  }
174 
182  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag ):
183  HomogenNumericTable<DataType>( featuresEqual, nColumns, nRows, memoryAllocationFlag ) { }
184 
194  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
195  size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
196  services::Status *stat = NULL)
197  {
198  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, memoryAllocationFlag);
199  }
200 
208  Matrix( size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue ):
209  HomogenNumericTable<DataType>( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows, constValue ) { }
210 
220  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, DataType *const ptr,
221  const DataType &constValue, services::Status *stat = NULL)
222  {
223  return create(DictionaryIface::notEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), constValue, stat);
224  }
225 
233  Matrix( size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr, const DataType &constValue ):
234  HomogenNumericTable<DataType>( ptr, nColumns, nRows, constValue ) { }
235 
245  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr,
246  const DataType &constValue, services::Status *stat = NULL)
247  {
248  return create(DictionaryIface::notEqual, nColumns, nRows, ptr, constValue, stat);
249  }
250 
259  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue ):
260  HomogenNumericTable<DataType>( featuresEqual, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows, constValue ) { }
261 
272  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
273  size_t nColumns, size_t nRows, DataType *const ptr,
274  const DataType &constValue, services::Status *stat = NULL)
275  {
276  return create(featuresEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), constValue, stat);
277  }
278 
287  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr, const DataType &constValue ):
288  HomogenNumericTable<DataType>( featuresEqual, ptr, nColumns, nRows, constValue ) { }
289 
300  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
301  size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr,
302  const DataType &constValue, services::Status *stat = NULL)
303  {
304  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, ptr, constValue);
305  }
306 
314  Matrix( size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
315  const DataType &constValue ):
316  HomogenNumericTable<DataType>( nColumns, nRows, memoryAllocationFlag, constValue ) { }
317 
327  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
328  const DataType &constValue, services::Status *stat = NULL)
329  {
330  return create(DictionaryIface::notEqual, nColumns, nRows, memoryAllocationFlag, constValue, stat);
331  }
332 
341  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
342  NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue ):
343  HomogenNumericTable<DataType>( featuresEqual, nColumns, nRows, memoryAllocationFlag, constValue ) { }
344 
355  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
356  size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
357  const DataType &constValue, services::Status *stat = NULL)
358  {
359  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, memoryAllocationFlag, constValue);
360  }
361 
363  virtual ~Matrix() { }
364 
365 protected:
366 
367  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
368  const services::SharedPtr<DataType> &ptr, services::Status &st):
369  HomogenNumericTable<DataType>(featuresEqual, ptr, nColumns, nRows, st) { }
370 
371  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
372  NumericTable::AllocationFlag memoryAllocationFlag, services::Status &st):
373  HomogenNumericTable<DataType>(featuresEqual, nColumns, nRows, memoryAllocationFlag, st) { }
374 
375  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
376  const services::SharedPtr<DataType> &ptr, const DataType &constValue,
377  services::Status &st):
378  HomogenNumericTable<DataType>(featuresEqual, ptr, nColumns, nRows, constValue, st) { }
379 
380  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
381  NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue, services::Status &st):
382  HomogenNumericTable<DataType>(featuresEqual, nColumns, nRows, memoryAllocationFlag, constValue, st) { }
383 };
385 } // namespace interface1
386 using interface1::Matrix;
387 
388 }
389 } // namespace daal
390 #endif
daal::data_management::interface1::NumericTableIface::AllocationFlag
AllocationFlag
Enumeration to specify whether the Numeric Table must allocate memory.
Definition: numeric_table.h:283
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: matrix.h:341
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(size_t nColumns=0, size_t nRows=0, DataType *const ptr=0, services::Status *stat=NULL)
Definition: matrix.h:70
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue)
Definition: matrix.h:259
daal::data_management::interface1::Matrix
Represents a two-dimensional table of numbers of the same type.
Definition: matrix.h:48
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag)
Definition: matrix.h:158
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(size_t nColumns, size_t nRows, services::SharedPtr< DataType > &ptr, services::Status *stat=NULL)
Definition: matrix.h:94
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr, const DataType &constValue)
Definition: matrix.h:287
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns=0, size_t nRows=0, DataType *const ptr=0)
Definition: matrix.h:59
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr, const DataType &constValue, services::Status *stat=NULL)
Definition: matrix.h:300
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag)
Definition: matrix.h:182
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue, services::Status *stat=NULL)
Definition: matrix.h:355
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue, services::Status *stat=NULL)
Definition: matrix.h:220
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: matrix.h:314
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr, const DataType &constValue)
Definition: matrix.h:233
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr)
Definition: matrix.h:83
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue)
Definition: matrix.h:208
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag, services::Status *stat=NULL)
Definition: matrix.h:169
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr, services::Status *stat=NULL)
Definition: matrix.h:145
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns=0, size_t nRows=0, DataType *const ptr=0)
Definition: matrix.h:107
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns=0, size_t nRows=0, DataType *const ptr=0, services::Status *stat=NULL)
Definition: matrix.h:119
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue, services::Status *stat=NULL)
Definition: matrix.h:272
daal::data_management::interface1::DictionaryIface::FeaturesEqual
FeaturesEqual
Enumeration to specify whether the Data Dictionary contains equal features.
Definition: data_dictionary.h:148
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr, const DataType &constValue, services::Status *stat=NULL)
Definition: matrix.h:245
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue, services::Status *stat=NULL)
Definition: matrix.h:327
daal::data_management::interface1::HomogenNumericTable
Class that provides methods to access data stored as a contiguous array of homogeneous feature vector...
Definition: homogen_numeric_table.h:52
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr)
Definition: matrix.h:133
daal::data_management::interface1::Matrix::create
static services::SharedPtr< Matrix< DataType > > create(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag, services::Status *stat=NULL)
Definition: matrix.h:194

For more complete information about compiler optimizations, see our Optimization Notice.