C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

matrix.h
1 /* file: matrix.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Implementation of a matrix numeric table.
21 //--
22 */
23 
24 #ifndef __MATRIX_H__
25 #define __MATRIX_H__
26 
27 #include "services/daal_memory.h"
28 #include "data_management/data/numeric_table.h"
29 #include "data_management/data/homogen_numeric_table.h"
30 #include "services/daal_shared_ptr.h"
31 #include "data_management/data/data_serialize.h"
32 
33 namespace daal
34 {
35 namespace data_management
36 {
37 
38 namespace interface1
39 {
49 template<typename DataType = DAAL_DATA_TYPE>
50 class DAAL_EXPORT Matrix : public HomogenNumericTable<DataType>
51 {
52 public:
53  DECLARE_SERIALIZABLE_TAG();
54 
61  Matrix( size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0 ):
62  HomogenNumericTable<DataType>( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows ) { }
63 
72  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0,
73  services::Status *stat = NULL)
74  {
75  return create(DictionaryIface::notEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), stat);
76  }
77 
85  Matrix( size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr):
86  HomogenNumericTable<DataType>( ptr, nColumns, nRows ) { }
87 
96  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, services::SharedPtr<DataType> &ptr,
97  services::Status *stat = NULL)
98  {
99  return create(DictionaryIface::notEqual, nColumns, nRows, ptr, stat);
100  }
101 
109  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0 ):
110  HomogenNumericTable<DataType>( featuresEqual, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows ) { }
111 
121  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
122  size_t nColumns = 0, size_t nRows = 0, DataType *const ptr = 0,
123  services::Status *stat = NULL)
124  {
125  return create(featuresEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), stat);
126  }
127 
135  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr ):
136  HomogenNumericTable<DataType>( featuresEqual, ptr, nColumns, nRows ) { }
137 
147  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
148  size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr,
149  services::Status *stat = NULL)
150  {
151  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, ptr);
152  }
153 
160  Matrix( size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag ):
161  HomogenNumericTable<DataType>( nColumns, nRows, memoryAllocationFlag ) { }
162 
171  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
172  services::Status *stat = NULL)
173  {
174  return create(DictionaryIface::notEqual, nColumns, nRows, memoryAllocationFlag, stat);
175  }
176 
184  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag ):
185  HomogenNumericTable<DataType>( featuresEqual, nColumns, nRows, memoryAllocationFlag ) { }
186 
196  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
197  size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
198  services::Status *stat = NULL)
199  {
200  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, memoryAllocationFlag);
201  }
202 
210  Matrix( size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue ):
211  HomogenNumericTable<DataType>( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows, constValue ) { }
212 
222  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, DataType *const ptr,
223  const DataType &constValue, services::Status *stat = NULL)
224  {
225  return create(DictionaryIface::notEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), constValue, stat);
226  }
227 
235  Matrix( size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr, const DataType &constValue ):
236  HomogenNumericTable<DataType>( ptr, nColumns, nRows, constValue ) { }
237 
247  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr,
248  const DataType &constValue, services::Status *stat = NULL)
249  {
250  return create(DictionaryIface::notEqual, nColumns, nRows, ptr, constValue, stat);
251  }
252 
261  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue ):
262  HomogenNumericTable<DataType>( featuresEqual, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nColumns, nRows, constValue ) { }
263 
274  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
275  size_t nColumns, size_t nRows, DataType *const ptr,
276  const DataType &constValue, services::Status *stat = NULL)
277  {
278  return create(featuresEqual, nColumns, nRows, services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), constValue, stat);
279  }
280 
289  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr, const DataType &constValue ):
290  HomogenNumericTable<DataType>( featuresEqual, ptr, nColumns, nRows, constValue ) { }
291 
302  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
303  size_t nColumns, size_t nRows, const services::SharedPtr<DataType> &ptr,
304  const DataType &constValue, services::Status *stat = NULL)
305  {
306  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, ptr, constValue);
307  }
308 
316  Matrix( size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
317  const DataType &constValue ):
318  HomogenNumericTable<DataType>( nColumns, nRows, memoryAllocationFlag, constValue ) { }
319 
329  static services::SharedPtr<Matrix<DataType> > create(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
330  const DataType &constValue, services::Status *stat = NULL)
331  {
332  return create(DictionaryIface::notEqual, nColumns, nRows, memoryAllocationFlag, constValue, stat);
333  }
334 
343  Matrix( DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
344  NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue ):
345  HomogenNumericTable<DataType>( featuresEqual, nColumns, nRows, memoryAllocationFlag, constValue ) { }
346 
357  static services::SharedPtr<Matrix<DataType> > create(DictionaryIface::FeaturesEqual featuresEqual,
358  size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag,
359  const DataType &constValue, services::Status *stat = NULL)
360  {
361  DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(Matrix, DataType, featuresEqual, nColumns, nRows, memoryAllocationFlag, constValue);
362  }
363 
365  virtual ~Matrix() { }
366 
367 protected:
368 
369  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
370  const services::SharedPtr<DataType> &ptr, services::Status &st):
371  HomogenNumericTable<DataType>(featuresEqual, ptr, nColumns, nRows, st) { }
372 
373  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
374  NumericTable::AllocationFlag memoryAllocationFlag, services::Status &st):
375  HomogenNumericTable<DataType>(featuresEqual, nColumns, nRows, memoryAllocationFlag, st) { }
376 
377  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
378  const services::SharedPtr<DataType> &ptr, const DataType &constValue,
379  services::Status &st):
380  HomogenNumericTable<DataType>(featuresEqual, ptr, nColumns, nRows, constValue, st) { }
381 
382  Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows,
383  NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue, services::Status &st):
384  HomogenNumericTable<DataType>(featuresEqual, nColumns, nRows, memoryAllocationFlag, constValue, st) { }
385 };
387 } // namespace interface1
388 using interface1::Matrix;
389 
390 }
391 } // namespace daal
392 #endif
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:121
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:357
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:343
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:171
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:147
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:96
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:289
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr, const DataType &constValue)
Definition: matrix.h:235
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:274
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, DataType *const ptr, const DataType &constValue)
Definition: matrix.h:210
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:72
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:247
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:109
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:54
daal::data_management::interface1::NumericTableIface::AllocationFlag
AllocationFlag
Enumeration to specify whether the Numeric Table must allocate memory.
Definition: numeric_table.h:285
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:302
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag)
Definition: matrix.h:184
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag)
Definition: matrix.h:160
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns=0, size_t nRows=0, DataType *const ptr=0)
Definition: matrix.h:61
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr)
Definition: matrix.h:85
daal::data_management::interface1::Matrix::Matrix
Matrix(DictionaryIface::FeaturesEqual featuresEqual, size_t nColumns, size_t nRows, const services::SharedPtr< DataType > &ptr)
Definition: matrix.h:135
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:196
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:329
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:261
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:222
daal::data_management::interface1::Matrix::Matrix
Matrix(size_t nColumns, size_t nRows, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: matrix.h:316
daal::data_management::interface1::Matrix
Represents a two-dimensional table of numbers of the same type.
Definition: matrix.h:50

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