mxlib
c++ tools for analyzing astronomical data and other tasks by Jared R. Males. [git repo]
Loading...
Searching...
No Matches
mx::math::syevrMem< floatT > Struct Template Reference

template<typename floatT>
struct mx::math::syevrMem< floatT >

A struct to hold the working memory for eigenSYEVR and maintain it between calls if desired.

Todo
this should have the working memory for the first exploratory call to ?syevr as well.

Definition at line 254 of file eigenLapack.hpp.

#include <math/eigenLapack.hpp>

Public Member Functions

 syevrMem ()
 Construct an empty reusable SYEVR workspace.
 syevrMem (const syevrMem &other)=delete
 Copying an owning SYEVR workspace is prohibited.
syevrMemoperator= (const syevrMem &other)=delete
 Copy assignment of an owning SYEVR workspace is prohibited.
 ~syevrMem ()
 Release every allocation owned by this workspace.
void free ()
 Release all workspace allocations and reset the cached LAPACK configuration.

Public Attributes

char UPLO { 'L' }
 Triangle selection associated with the cached workspace query.
MXLAPACK_INT n { 0 }
 Matrix order associated with the cached workspace query.
char RANGE { 'A' }
 Eigenvalue-range selection associated with the cached workspace query.
MXLAPACK_INT numeig { 0 }
 Number of eigenvalues reported by the most recent workspace query.
MXLAPACK_INT IL { 0 }
 One-based lower eigenvalue index associated with the cached workspace query.
MXLAPACK_INT IU { 0 }
 One-based upper eigenvalue index associated with the cached workspace query.
MXLAPACK_INT sizeISuppZ { 0 }
 Capacity of the eigenvector-support workspace.
MXLAPACK_INT sizeMinWork { 0 }
 Capacity of the minimum floating-point query workspace.
MXLAPACK_INT sizeWork { 0 }
 Capacity of the optimized floating-point workspace.
MXLAPACK_INT sizeMinIWork { 0 }
 Capacity of the minimum integer query workspace.
MXLAPACK_INT sizeIWork { 0 }
 Capacity of the optimized integer workspace.
MXLAPACK_INT * iSuppZ { nullptr }
 LAPACK eigenvector-support workspace owned by this object.
floatT * minWork { nullptr }
 Minimum floating-point workspace used for LAPACK size queries.
floatT * work { nullptr }
 Optimized floating-point LAPACK workspace owned by this object.
MXLAPACK_INT * minIWork { nullptr }
 Minimum integer workspace used for LAPACK size queries.
MXLAPACK_INT * iWork { nullptr }
 Optimized integer LAPACK workspace owned by this object.
Eigen::Array< floatT, Eigen::Dynamic, Eigen::Dynamic > cvd
 Calculation-type covariance storage used by higher-level eigensolver helpers.
Eigen::Array< floatT, Eigen::Dynamic, Eigen::Dynamic > evecsd
 Calculation-type eigenvector storage used by higher-level eigensolver helpers.
Eigen::Array< floatT, Eigen::Dynamic, Eigen::Dynamic > evalsd
 Calculation-type eigenvalue storage used by higher-level eigensolver helpers.

Constructor & Destructor Documentation

◆ syevrMem() [1/2]

template<typename floatT>
mx::math::syevrMem< floatT >::syevrMem ( )
inline

Construct an empty reusable SYEVR workspace.

Definition at line 314 of file eigenLapack.hpp.

Referenced by syevrMem(), and operator=().

◆ syevrMem() [2/2]

template<typename floatT>
mx::math::syevrMem< floatT >::syevrMem ( const syevrMem< floatT > & other)
delete

Copying an owning SYEVR workspace is prohibited.

Parameters
[in]otherworkspace that cannot be copied

References syevrMem().

◆ ~syevrMem()

template<typename floatT>
mx::math::syevrMem< floatT >::~syevrMem ( )
inline

Release every allocation owned by this workspace.

Definition at line 325 of file eigenLapack.hpp.

References free().

Member Function Documentation

◆ free()

template<typename floatT>
void mx::math::syevrMem< floatT >::free ( )
inline

Release all workspace allocations and reset the cached LAPACK configuration.

Definition at line 331 of file eigenLapack.hpp.

References IL, iSuppZ, IU, iWork, minIWork, minWork, n, numeig, RANGE, sizeISuppZ, sizeIWork, sizeMinIWork, sizeMinWork, sizeWork, UPLO, and work.

Referenced by ~syevrMem(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ operator=()

template<typename floatT>
syevrMem & mx::math::syevrMem< floatT >::operator= ( const syevrMem< floatT > & other)
delete

Copy assignment of an owning SYEVR workspace is prohibited.

Parameters
[in]otherworkspace that cannot be copied

References syevrMem().

Member Data Documentation

◆ cvd

template<typename floatT>
Eigen::Array<floatT, Eigen::Dynamic, Eigen::Dynamic> mx::math::syevrMem< floatT >::cvd

Calculation-type covariance storage used by higher-level eigensolver helpers.

Definition at line 305 of file eigenLapack.hpp.

◆ evalsd

template<typename floatT>
Eigen::Array<floatT, Eigen::Dynamic, Eigen::Dynamic> mx::math::syevrMem< floatT >::evalsd

Calculation-type eigenvalue storage used by higher-level eigensolver helpers.

Definition at line 311 of file eigenLapack.hpp.

◆ evecsd

template<typename floatT>
Eigen::Array<floatT, Eigen::Dynamic, Eigen::Dynamic> mx::math::syevrMem< floatT >::evecsd

Calculation-type eigenvector storage used by higher-level eigensolver helpers.

Definition at line 308 of file eigenLapack.hpp.

◆ IL

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::IL { 0 }

One-based lower eigenvalue index associated with the cached workspace query.

Definition at line 269 of file eigenLapack.hpp.

Referenced by free().

◆ iSuppZ

template<typename floatT>
MXLAPACK_INT* mx::math::syevrMem< floatT >::iSuppZ { nullptr }

LAPACK eigenvector-support workspace owned by this object.

Definition at line 290 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ IU

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::IU { 0 }

One-based upper eigenvalue index associated with the cached workspace query.

Definition at line 272 of file eigenLapack.hpp.

Referenced by free().

◆ iWork

template<typename floatT>
MXLAPACK_INT* mx::math::syevrMem< floatT >::iWork { nullptr }

Optimized integer LAPACK workspace owned by this object.

Definition at line 302 of file eigenLapack.hpp.

Referenced by free(), unitTest::math_eigenLapack_test::TEST_CASE(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ minIWork

template<typename floatT>
MXLAPACK_INT* mx::math::syevrMem< floatT >::minIWork { nullptr }

Minimum integer workspace used for LAPACK size queries.

Definition at line 299 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ minWork

template<typename floatT>
floatT* mx::math::syevrMem< floatT >::minWork { nullptr }

Minimum floating-point workspace used for LAPACK size queries.

Definition at line 293 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ n

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::n { 0 }

Matrix order associated with the cached workspace query.

Definition at line 260 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ numeig

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::numeig { 0 }

Number of eigenvalues reported by the most recent workspace query.

Definition at line 266 of file eigenLapack.hpp.

Referenced by free().

◆ RANGE

template<typename floatT>
char mx::math::syevrMem< floatT >::RANGE { 'A' }

Eigenvalue-range selection associated with the cached workspace query.

Definition at line 263 of file eigenLapack.hpp.

Referenced by free().

◆ sizeISuppZ

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::sizeISuppZ { 0 }

Capacity of the eigenvector-support workspace.

Definition at line 275 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ sizeIWork

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::sizeIWork { 0 }

Capacity of the optimized integer workspace.

Definition at line 287 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ sizeMinIWork

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::sizeMinIWork { 0 }

Capacity of the minimum integer query workspace.

Definition at line 284 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ sizeMinWork

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::sizeMinWork { 0 }

Capacity of the minimum floating-point query workspace.

Definition at line 278 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ sizeWork

template<typename floatT>
MXLAPACK_INT mx::math::syevrMem< floatT >::sizeWork { 0 }

Capacity of the optimized floating-point workspace.

Definition at line 281 of file eigenLapack.hpp.

Referenced by free(), and unitTest::math_eigenLapack_test::TEST_CASE().

◆ UPLO

template<typename floatT>
char mx::math::syevrMem< floatT >::UPLO { 'L' }

Triangle selection associated with the cached workspace query.

Definition at line 257 of file eigenLapack.hpp.

Referenced by free().

◆ work

template<typename floatT>
floatT* mx::math::syevrMem< floatT >::work { nullptr }

Optimized floating-point LAPACK workspace owned by this object.

Definition at line 296 of file eigenLapack.hpp.

Referenced by free(), unitTest::math_eigenLapack_test::TEST_CASE(), and unitTest::math_eigenLapack_test::TEST_CASE().


The documentation for this struct was generated from the following file: