mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-01-18 17:31:19 +01:00
Merge branch eigen:master into master
This commit is contained in:
@@ -63,13 +63,8 @@ option(EIGEN_LEAVE_TEST_IN_ALL_TARGET "Leaves tests in the all target, needed by
|
||||
option(EIGEN_BUILD_BLAS "Toggles the building of the Eigen Blas library" ${PROJECT_IS_TOP_LEVEL})
|
||||
option(EIGEN_BUILD_LAPACK "Toggles the building of the included Eigen LAPACK library" ${PROJECT_IS_TOP_LEVEL})
|
||||
if (EIGEN_BUILD_BLAS OR EIGEN_BUILD_LAPACK)
|
||||
# BLAS and LAPACK currently need a fortran compiler.
|
||||
include(CMakeDetermineFortranCompiler)
|
||||
if (NOT CMAKE_Fortran_COMPILER)
|
||||
set(EIGEN_BUILD_BLAS OFF)
|
||||
set(EIGEN_BUILD_LAPACK OFF)
|
||||
else()
|
||||
# Determine if we should build shared libraries for BLAS/LAPACK on this platform.
|
||||
# Determine if we should build shared libraries for BLAS/LAPACK on this platform.
|
||||
if (NOT EIGEN_BUILD_SHARED_LIBS)
|
||||
get_cmake_property(EIGEN_BUILD_SHARED_LIBS TARGET_SUPPORTS_SHARED_LIBS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -65,7 +65,8 @@ struct plain_array {
|
||||
|
||||
template <typename T, int Size, int MatrixOrArrayOptions>
|
||||
struct plain_array<T, Size, MatrixOrArrayOptions, 0> {
|
||||
T array[Size];
|
||||
// on some 32-bit platforms, stack-allocated arrays are aligned to 4 bytes, not the preferred alignment of T
|
||||
EIGEN_ALIGN_TO_BOUNDARY(alignof(T)) T array[Size];
|
||||
#if defined(EIGEN_NO_DEBUG) || defined(EIGEN_TESTING_PLAINOBJECT_CTOR)
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plain_array() = default;
|
||||
#else
|
||||
@@ -73,12 +74,6 @@ struct plain_array<T, Size, MatrixOrArrayOptions, 0> {
|
||||
#endif
|
||||
};
|
||||
|
||||
template <typename T, int MatrixOrArrayOptions, int Alignment>
|
||||
struct plain_array<T, 0, MatrixOrArrayOptions, Alignment> {
|
||||
T array[1];
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr plain_array() = default;
|
||||
};
|
||||
|
||||
template <typename T, int Size, int Options, int Alignment>
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE constexpr void swap_plain_array(plain_array<T, Size, Options, Alignment>& a,
|
||||
plain_array<T, Size, Options, Alignment>& b,
|
||||
|
||||
@@ -211,8 +211,14 @@ struct scalar_inner_product_op {
|
||||
static constexpr bool PacketAccess = false;
|
||||
};
|
||||
|
||||
// Partial specialization for packet access if and only if
|
||||
// LhsScalar == RhsScalar == ScalarBinaryOpTraits<LhsScalar, RhsScalar>::ReturnType.
|
||||
template <typename Scalar, bool Conj>
|
||||
struct scalar_inner_product_op<Scalar, Scalar, Conj> {
|
||||
struct scalar_inner_product_op<
|
||||
Scalar,
|
||||
typename std::enable_if<internal::is_same<typename ScalarBinaryOpTraits<Scalar, Scalar>::ReturnType, Scalar>::value,
|
||||
Scalar>::type,
|
||||
Conj> {
|
||||
using result_type = Scalar;
|
||||
using conj_helper = conditional_conj<Scalar, Conj>;
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar coeff(const Scalar& a, const Scalar& b) const {
|
||||
|
||||
@@ -1004,8 +1004,7 @@ struct madd_impl {
|
||||
}
|
||||
};
|
||||
|
||||
// Use FMA if there is a single CPU instruction.
|
||||
#ifdef EIGEN_VECTORIZE_FMA
|
||||
#if EIGEN_SCALAR_MADD_USE_FMA
|
||||
template <typename Scalar>
|
||||
struct madd_impl<Scalar, std::enable_if_t<has_fma<Scalar>::value>> {
|
||||
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar run(const Scalar& x, const Scalar& y, const Scalar& z) {
|
||||
@@ -1927,7 +1926,6 @@ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar arithmetic_shift_right(const Scalar
|
||||
return bit_cast<Scalar, SignedScalar>(bit_cast<SignedScalar, Scalar>(a) >> n);
|
||||
}
|
||||
|
||||
// Otherwise, rely on template implementation.
|
||||
template <typename Scalar>
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar fma(const Scalar& x, const Scalar& y, const Scalar& z) {
|
||||
return internal::fma_impl<Scalar>::run(x, y, z);
|
||||
|
||||
@@ -240,8 +240,8 @@ EIGEN_STRONG_INLINE Packet4d pcast<Packet4l, Packet4d>(const Packet4l& a) {
|
||||
#if defined(EIGEN_VECTORIZE_AVX512DQ) && defined(EIGEN_VECTORIZE_AVS512VL)
|
||||
return _mm256_cvtepi64_pd(a);
|
||||
#else
|
||||
EIGEN_ALIGN16 int64_t aux[4];
|
||||
pstore(aux, a);
|
||||
int64_t aux[4];
|
||||
pstoreu(aux, a);
|
||||
return _mm256_set_pd(static_cast<double>(aux[3]), static_cast<double>(aux[2]), static_cast<double>(aux[1]),
|
||||
static_cast<double>(aux[0]));
|
||||
#endif
|
||||
|
||||
@@ -1679,9 +1679,9 @@ EIGEN_STRONG_INLINE Packet16b pgather<bool, Packet16b>(const bool* from, Index s
|
||||
template <>
|
||||
EIGEN_STRONG_INLINE void pscatter<float, Packet4f>(float* to, const Packet4f& from, Index stride) {
|
||||
to[stride * 0] = pfirst(from);
|
||||
to[stride * 1] = pfirst(_mm_shuffle_ps(from, from, 1));
|
||||
to[stride * 2] = pfirst(_mm_shuffle_ps(from, from, 2));
|
||||
to[stride * 3] = pfirst(_mm_shuffle_ps(from, from, 3));
|
||||
to[stride * 1] = pfirst(Packet4f(_mm_shuffle_ps(from, from, 1)));
|
||||
to[stride * 2] = pfirst(Packet4f(_mm_shuffle_ps(from, from, 2)));
|
||||
to[stride * 3] = pfirst(Packet4f(_mm_shuffle_ps(from, from, 3)));
|
||||
}
|
||||
template <>
|
||||
EIGEN_STRONG_INLINE void pscatter<double, Packet2d>(double* to, const Packet2d& from, Index stride) {
|
||||
|
||||
@@ -52,6 +52,26 @@
|
||||
#define EIGEN_STACK_ALLOCATION_LIMIT 131072
|
||||
#endif
|
||||
|
||||
/* Specify whether to use std::fma for scalar multiply-add instructions.
|
||||
*
|
||||
* On machines that have FMA as a single instruction, this will generally
|
||||
* improve precision without significant performance implications.
|
||||
*
|
||||
* Without a single instruction, performance has been found to be reduced 2-3x
|
||||
* on Intel CPUs, and up to 30x for WASM.
|
||||
*
|
||||
* If unspecified, defaults to using FMA if hardware support is available.
|
||||
* The default should be used in most cases to ensure consistency between
|
||||
* vectorized and non-vectorized paths.
|
||||
*/
|
||||
#ifndef EIGEN_SCALAR_MADD_USE_FMA
|
||||
#ifdef EIGEN_VECTORIZE_FMA
|
||||
#define EIGEN_SCALAR_MADD_USE_FMA 1
|
||||
#else
|
||||
#define EIGEN_SCALAR_MADD_USE_FMA 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// Compiler identification, EIGEN_COMP_*
|
||||
//------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -325,6 +325,22 @@ class SelfAdjointEigenSolver {
|
||||
return m_eivec * m_eivalues.cwiseSqrt().asDiagonal() * m_eivec.adjoint();
|
||||
}
|
||||
|
||||
/** \brief Computes the matrix exponential the matrix.
|
||||
*
|
||||
* \returns the matrix exponential the matrix.
|
||||
*
|
||||
* \pre The eigenvalues and eigenvectors of a positive-definite matrix
|
||||
* have been computed before.
|
||||
*
|
||||
* \sa operatorInverseSqrt(), operatorSqrt(),
|
||||
* <a href="unsupported/group__MatrixFunctions__Module.html">MatrixFunctions Module</a>
|
||||
*/
|
||||
EIGEN_DEVICE_FUNC MatrixType operatorExp() const {
|
||||
eigen_assert(m_isInitialized && "SelfAdjointEigenSolver is not initialized.");
|
||||
eigen_assert(m_eigenvectorsOk && "The eigenvectors have not been computed together with the eigenvalues.");
|
||||
return m_eivec * m_eivalues.array().exp().matrix().asDiagonal() * m_eivec.adjoint();
|
||||
}
|
||||
|
||||
/** \brief Computes the inverse square root of the matrix.
|
||||
*
|
||||
* \returns the inverse positive-definite square root of the matrix
|
||||
|
||||
@@ -571,6 +571,11 @@ class JacobiSVD : public SVDBase<JacobiSVD<MatrixType_, Options_> > {
|
||||
compute_impl(matrix, internal::get_computation_options(Options));
|
||||
}
|
||||
|
||||
template <typename Derived>
|
||||
explicit JacobiSVD(const TriangularBase<Derived>& matrix) {
|
||||
compute_impl(matrix, internal::get_computation_options(Options));
|
||||
}
|
||||
|
||||
/** \brief Constructor performing the decomposition of given matrix using specified options
|
||||
* for computing unitaries.
|
||||
*
|
||||
@@ -601,6 +606,11 @@ class JacobiSVD : public SVDBase<JacobiSVD<MatrixType_, Options_> > {
|
||||
return compute_impl(matrix, m_computationOptions);
|
||||
}
|
||||
|
||||
template <typename Derived>
|
||||
JacobiSVD& compute(const TriangularBase<Derived>& matrix) {
|
||||
return compute_impl(matrix, m_computationOptions);
|
||||
}
|
||||
|
||||
/** \brief Method performing the decomposition of given matrix, as specified by
|
||||
* the `computationOptions` parameter.
|
||||
*
|
||||
@@ -638,6 +648,8 @@ class JacobiSVD : public SVDBase<JacobiSVD<MatrixType_, Options_> > {
|
||||
}
|
||||
|
||||
private:
|
||||
template <typename Derived>
|
||||
JacobiSVD& compute_impl(const TriangularBase<Derived>& matrix, unsigned int computationOptions);
|
||||
template <typename Derived>
|
||||
JacobiSVD& compute_impl(const MatrixBase<Derived>& matrix, unsigned int computationOptions);
|
||||
|
||||
@@ -676,6 +688,13 @@ class JacobiSVD : public SVDBase<JacobiSVD<MatrixType_, Options_> > {
|
||||
WorkMatrixType m_workMatrix;
|
||||
};
|
||||
|
||||
template <typename MatrixType, int Options>
|
||||
template <typename Derived>
|
||||
JacobiSVD<MatrixType, Options>& JacobiSVD<MatrixType, Options>::compute_impl(const TriangularBase<Derived>& matrix,
|
||||
unsigned int computationOptions) {
|
||||
return compute_impl(matrix.toDenseMatrix(), computationOptions);
|
||||
}
|
||||
|
||||
template <typename MatrixType, int Options>
|
||||
template <typename Derived>
|
||||
JacobiSVD<MatrixType, Options>& JacobiSVD<MatrixType, Options>::compute_impl(const MatrixBase<Derived>& matrix,
|
||||
|
||||
@@ -21,6 +21,7 @@ list(APPEND EIGEN_BLAS_TARGETS eigen_blas_static)
|
||||
if (EIGEN_BUILD_SHARED_LIBS)
|
||||
add_library(eigen_blas SHARED ${EigenBlas_SRCS})
|
||||
list(APPEND EIGEN_BLAS_TARGETS eigen_blas)
|
||||
target_compile_definitions(eigen_blas PUBLIC "EIGEN_BUILD_DLL")
|
||||
endif()
|
||||
|
||||
foreach(target IN LISTS EIGEN_BLAS_TARGETS)
|
||||
|
||||
847
blas/blas.h
847
blas/blas.h
@@ -1,6 +1,18 @@
|
||||
#ifndef BLAS_H
|
||||
#define BLAS_H
|
||||
|
||||
#if defined(_WIN32)
|
||||
#if defined(EIGEN_BUILD_DLL)
|
||||
#define EIGEN_BLAS_API __declspec(dllexport)
|
||||
#elif defined(EIGEN_LINK_DLL)
|
||||
#define EIGEN_BLAS_API __declspec(dllimport)
|
||||
#else
|
||||
#define EIGEN_BLAS_API
|
||||
#endif
|
||||
#else
|
||||
#define EIGEN_BLAS_API
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -15,467 +27,508 @@ typedef long BLASLONG;
|
||||
typedef unsigned long BLASULONG;
|
||||
#endif
|
||||
|
||||
void BLASFUNC(xerbla)(const char *, int *info);
|
||||
EIGEN_BLAS_API void BLASFUNC(xerbla)(const char *, int *info);
|
||||
|
||||
float BLASFUNC(sdot)(int *, float *, int *, float *, int *);
|
||||
float BLASFUNC(sdsdot)(int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(sdot)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(sdsdot)(int *, float *, float *, int *, float *, int *);
|
||||
|
||||
double BLASFUNC(dsdot)(int *, float *, int *, float *, int *);
|
||||
double BLASFUNC(ddot)(int *, double *, int *, double *, int *);
|
||||
double BLASFUNC(qdot)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dsdot)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(ddot)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qdot)(int *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(cdotuw)(int *, float *, int *, float *, int *, float *);
|
||||
void BLASFUNC(cdotcw)(int *, float *, int *, float *, int *, float *);
|
||||
void BLASFUNC(zdotuw)(int *, double *, int *, double *, int *, double *);
|
||||
void BLASFUNC(zdotcw)(int *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cdotuw)(int *, float *, int *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cdotcw)(int *, float *, int *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zdotuw)(int *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zdotcw)(int *, double *, int *, double *, int *, double *);
|
||||
|
||||
void BLASFUNC(saxpy)(const int *, const float *, const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(daxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(qaxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(caxpy)(const int *, const float *, const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(zaxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(xaxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(caxpyc)(const int *, const float *, const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(zaxpyc)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(xaxpyc)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(saxpy)(const int *, const float *, const float *, const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(daxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qaxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(caxpy)(const int *, const float *, const float *, const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zaxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xaxpy)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(caxpyc)(const int *, const float *, const float *, const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zaxpyc)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xaxpyc)(const int *, const double *, const double *, const int *, double *, const int *);
|
||||
|
||||
void BLASFUNC(scopy)(int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dcopy)(int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(qcopy)(int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(ccopy)(int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zcopy)(int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xcopy)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(scopy)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dcopy)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qcopy)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ccopy)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zcopy)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xcopy)(int *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(sswap)(int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dswap)(int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(qswap)(int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(cswap)(int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zswap)(int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xswap)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sswap)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dswap)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qswap)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cswap)(int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zswap)(int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xswap)(int *, double *, int *, double *, int *);
|
||||
|
||||
float BLASFUNC(sasum)(int *, float *, int *);
|
||||
float BLASFUNC(scasum)(int *, float *, int *);
|
||||
double BLASFUNC(dasum)(int *, double *, int *);
|
||||
double BLASFUNC(qasum)(int *, double *, int *);
|
||||
double BLASFUNC(dzasum)(int *, double *, int *);
|
||||
double BLASFUNC(qxasum)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(sasum)(int *, float *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(scasum)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dasum)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qasum)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dzasum)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qxasum)(int *, double *, int *);
|
||||
|
||||
int BLASFUNC(isamax)(int *, float *, int *);
|
||||
int BLASFUNC(idamax)(int *, double *, int *);
|
||||
int BLASFUNC(iqamax)(int *, double *, int *);
|
||||
int BLASFUNC(icamax)(int *, float *, int *);
|
||||
int BLASFUNC(izamax)(int *, double *, int *);
|
||||
int BLASFUNC(ixamax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(isamax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(idamax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(iqamax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(icamax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(izamax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(ixamax)(int *, double *, int *);
|
||||
|
||||
int BLASFUNC(ismax)(int *, float *, int *);
|
||||
int BLASFUNC(idmax)(int *, double *, int *);
|
||||
int BLASFUNC(iqmax)(int *, double *, int *);
|
||||
int BLASFUNC(icmax)(int *, float *, int *);
|
||||
int BLASFUNC(izmax)(int *, double *, int *);
|
||||
int BLASFUNC(ixmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(ismax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(idmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(iqmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(icmax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(izmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(ixmax)(int *, double *, int *);
|
||||
|
||||
int BLASFUNC(isamin)(int *, float *, int *);
|
||||
int BLASFUNC(idamin)(int *, double *, int *);
|
||||
int BLASFUNC(iqamin)(int *, double *, int *);
|
||||
int BLASFUNC(icamin)(int *, float *, int *);
|
||||
int BLASFUNC(izamin)(int *, double *, int *);
|
||||
int BLASFUNC(ixamin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(isamin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(idamin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(iqamin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(icamin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(izamin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(ixamin)(int *, double *, int *);
|
||||
|
||||
int BLASFUNC(ismin)(int *, float *, int *);
|
||||
int BLASFUNC(idmin)(int *, double *, int *);
|
||||
int BLASFUNC(iqmin)(int *, double *, int *);
|
||||
int BLASFUNC(icmin)(int *, float *, int *);
|
||||
int BLASFUNC(izmin)(int *, double *, int *);
|
||||
int BLASFUNC(ixmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(ismin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(idmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(iqmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(icmin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(izmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API int BLASFUNC(ixmin)(int *, double *, int *);
|
||||
|
||||
float BLASFUNC(samax)(int *, float *, int *);
|
||||
double BLASFUNC(damax)(int *, double *, int *);
|
||||
double BLASFUNC(qamax)(int *, double *, int *);
|
||||
float BLASFUNC(scamax)(int *, float *, int *);
|
||||
double BLASFUNC(dzamax)(int *, double *, int *);
|
||||
double BLASFUNC(qxamax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(samax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(damax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qamax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(scamax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dzamax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qxamax)(int *, double *, int *);
|
||||
|
||||
float BLASFUNC(samin)(int *, float *, int *);
|
||||
double BLASFUNC(damin)(int *, double *, int *);
|
||||
double BLASFUNC(qamin)(int *, double *, int *);
|
||||
float BLASFUNC(scamin)(int *, float *, int *);
|
||||
double BLASFUNC(dzamin)(int *, double *, int *);
|
||||
double BLASFUNC(qxamin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(samin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(damin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qamin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(scamin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dzamin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qxamin)(int *, double *, int *);
|
||||
|
||||
float BLASFUNC(smax)(int *, float *, int *);
|
||||
double BLASFUNC(dmax)(int *, double *, int *);
|
||||
double BLASFUNC(qmax)(int *, double *, int *);
|
||||
float BLASFUNC(scmax)(int *, float *, int *);
|
||||
double BLASFUNC(dzmax)(int *, double *, int *);
|
||||
double BLASFUNC(qxmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(smax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(scmax)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dzmax)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qxmax)(int *, double *, int *);
|
||||
|
||||
float BLASFUNC(smin)(int *, float *, int *);
|
||||
double BLASFUNC(dmin)(int *, double *, int *);
|
||||
double BLASFUNC(qmin)(int *, double *, int *);
|
||||
float BLASFUNC(scmin)(int *, float *, int *);
|
||||
double BLASFUNC(dzmin)(int *, double *, int *);
|
||||
double BLASFUNC(qxmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(smin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(scmin)(int *, float *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dzmin)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qxmin)(int *, double *, int *);
|
||||
|
||||
void BLASFUNC(sscal)(int *, float *, float *, int *);
|
||||
void BLASFUNC(dscal)(int *, double *, double *, int *);
|
||||
void BLASFUNC(qscal)(int *, double *, double *, int *);
|
||||
void BLASFUNC(cscal)(int *, float *, float *, int *);
|
||||
void BLASFUNC(zscal)(int *, double *, double *, int *);
|
||||
void BLASFUNC(xscal)(int *, double *, double *, int *);
|
||||
void BLASFUNC(csscal)(int *, float *, float *, int *);
|
||||
void BLASFUNC(zdscal)(int *, double *, double *, int *);
|
||||
void BLASFUNC(xqscal)(int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sscal)(int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dscal)(int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qscal)(int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cscal)(int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zscal)(int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xscal)(int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csscal)(int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zdscal)(int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xqscal)(int *, double *, double *, int *);
|
||||
|
||||
float BLASFUNC(snrm2)(int *, float *, int *);
|
||||
float BLASFUNC(scnrm2)(int *, float *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(snrm2)(int *, float *, int *);
|
||||
EIGEN_BLAS_API float BLASFUNC(scnrm2)(int *, float *, int *);
|
||||
|
||||
double BLASFUNC(dnrm2)(int *, double *, int *);
|
||||
double BLASFUNC(qnrm2)(int *, double *, int *);
|
||||
double BLASFUNC(dznrm2)(int *, double *, int *);
|
||||
double BLASFUNC(qxnrm2)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dnrm2)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qnrm2)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(dznrm2)(int *, double *, int *);
|
||||
EIGEN_BLAS_API double BLASFUNC(qxnrm2)(int *, double *, int *);
|
||||
|
||||
void BLASFUNC(srot)(int *, float *, int *, float *, int *, float *, float *);
|
||||
void BLASFUNC(drot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
void BLASFUNC(qrot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
void BLASFUNC(csrot)(int *, float *, int *, float *, int *, float *, float *);
|
||||
void BLASFUNC(zdrot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
void BLASFUNC(xqrot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(srot)(int *, float *, int *, float *, int *, float *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(drot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qrot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csrot)(int *, float *, int *, float *, int *, float *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zdrot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xqrot)(int *, double *, int *, double *, int *, double *, double *);
|
||||
|
||||
void BLASFUNC(srotg)(float *, float *, float *, float *);
|
||||
void BLASFUNC(drotg)(double *, double *, double *, double *);
|
||||
void BLASFUNC(qrotg)(double *, double *, double *, double *);
|
||||
void BLASFUNC(crotg)(float *, float *, float *, float *);
|
||||
void BLASFUNC(zrotg)(double *, double *, double *, double *);
|
||||
void BLASFUNC(xrotg)(double *, double *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(srotg)(float *, float *, float *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(drotg)(double *, double *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qrotg)(double *, double *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(crotg)(float *, float *, float *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zrotg)(double *, double *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xrotg)(double *, double *, double *, double *);
|
||||
|
||||
void BLASFUNC(srotmg)(float *, float *, float *, float *, float *);
|
||||
void BLASFUNC(drotmg)(double *, double *, double *, double *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(srotmg)(float *, float *, float *, float *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(drotmg)(double *, double *, double *, double *, double *);
|
||||
|
||||
void BLASFUNC(srotm)(int *, float *, int *, float *, int *, float *);
|
||||
void BLASFUNC(drotm)(int *, double *, int *, double *, int *, double *);
|
||||
void BLASFUNC(qrotm)(int *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(srotm)(int *, float *, int *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(drotm)(int *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qrotm)(int *, double *, int *, double *, int *, double *);
|
||||
|
||||
/* Level 2 routines */
|
||||
|
||||
void BLASFUNC(sger)(int *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dger)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(qger)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(cgeru)(int *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(cgerc)(int *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(zgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sger)(int *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dger)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qger)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgeru)(int *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgerc)(int *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgeru)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgerc)(int *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(sgemv)(const char *, const int *, const int *, const float *, const float *, const int *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(dgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(qgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(cgemv)(const char *, const int *, const int *, const float *, const float *, const int *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgemv)(const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgemv)(const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgemv)(const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
|
||||
void BLASFUNC(strsv)(const char *, const char *, const char *, const int *, const float *, const int *, float *,
|
||||
const int *);
|
||||
void BLASFUNC(dtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
void BLASFUNC(qtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
void BLASFUNC(ctrsv)(const char *, const char *, const char *, const int *, const float *, const int *, float *,
|
||||
const int *);
|
||||
void BLASFUNC(ztrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
void BLASFUNC(xtrsv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(strsv)(const char *, const char *, const char *, const int *, const float *, const int *,
|
||||
float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtrsv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtrsv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctrsv)(const char *, const char *, const char *, const int *, const float *, const int *,
|
||||
float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztrsv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtrsv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
|
||||
void BLASFUNC(stpsv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
void BLASFUNC(dtpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
void BLASFUNC(qtpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
void BLASFUNC(ctpsv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
void BLASFUNC(ztpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
void BLASFUNC(xtpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(stpsv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctpsv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtpsv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
|
||||
void BLASFUNC(strmv)(const char *, const char *, const char *, const int *, const float *, const int *, float *,
|
||||
const int *);
|
||||
void BLASFUNC(dtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
void BLASFUNC(qtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
void BLASFUNC(ctrmv)(const char *, const char *, const char *, const int *, const float *, const int *, float *,
|
||||
const int *);
|
||||
void BLASFUNC(ztrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
void BLASFUNC(xtrmv)(const char *, const char *, const char *, const int *, const double *, const int *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(strmv)(const char *, const char *, const char *, const int *, const float *, const int *,
|
||||
float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtrmv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtrmv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctrmv)(const char *, const char *, const char *, const int *, const float *, const int *,
|
||||
float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztrmv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtrmv)(const char *, const char *, const char *, const int *, const double *, const int *,
|
||||
double *, const int *);
|
||||
|
||||
void BLASFUNC(stpmv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
void BLASFUNC(dtpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
void BLASFUNC(qtpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
void BLASFUNC(ctpmv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
void BLASFUNC(ztpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
void BLASFUNC(xtpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(stpmv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctpmv)(char *, char *, char *, int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtpmv)(char *, char *, char *, int *, double *, double *, int *);
|
||||
|
||||
void BLASFUNC(stbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(qtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(ctbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(ztbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(stbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctbmv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtbmv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(stbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(qtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(ctbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(ztbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(stbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctbsv)(char *, char *, char *, int *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtbsv)(char *, char *, char *, int *, int *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(ssymv)(const char *, const int *, const float *, const float *, const int *, const float *, const int *,
|
||||
const float *, float *, const int *);
|
||||
void BLASFUNC(dsymv)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(qsymv)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ssymv)(const char *, const int *, const float *, const float *, const int *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dsymv)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qsymv)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
|
||||
void BLASFUNC(sspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(dspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
void BLASFUNC(qspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
|
||||
void BLASFUNC(ssyr)(const char *, const int *, const float *, const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(dsyr)(const char *, const int *, const double *, const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(qsyr)(const char *, const int *, const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ssyr)(const char *, const int *, const float *, const float *, const int *, float *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dsyr)(const char *, const int *, const double *, const double *, const int *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qsyr)(const char *, const int *, const double *, const double *, const int *, double *,
|
||||
const int *);
|
||||
|
||||
void BLASFUNC(ssyr2)(const char *, const int *, const float *, const float *, const int *, const float *, const int *,
|
||||
float *, const int *);
|
||||
void BLASFUNC(dsyr2)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, double *, const int *);
|
||||
void BLASFUNC(qsyr2)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, double *, const int *);
|
||||
void BLASFUNC(csyr2)(const char *, const int *, const float *, const float *, const int *, const float *, const int *,
|
||||
float *, const int *);
|
||||
void BLASFUNC(zsyr2)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, double *, const int *);
|
||||
void BLASFUNC(xsyr2)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ssyr2)(const char *, const int *, const float *, const float *, const int *, const float *,
|
||||
const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dsyr2)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qsyr2)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csyr2)(const char *, const int *, const float *, const float *, const int *, const float *,
|
||||
const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsyr2)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsyr2)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, double *, const int *);
|
||||
|
||||
void BLASFUNC(sspr)(char *, int *, float *, float *, int *, float *);
|
||||
void BLASFUNC(dspr)(char *, int *, double *, double *, int *, double *);
|
||||
void BLASFUNC(qspr)(char *, int *, double *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sspr)(char *, int *, float *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dspr)(char *, int *, double *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qspr)(char *, int *, double *, double *, int *, double *);
|
||||
|
||||
void BLASFUNC(sspr2)(char *, int *, float *, float *, int *, float *, int *, float *);
|
||||
void BLASFUNC(dspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
void BLASFUNC(qspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
void BLASFUNC(cspr2)(char *, int *, float *, float *, int *, float *, int *, float *);
|
||||
void BLASFUNC(zspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
void BLASFUNC(xspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sspr2)(char *, int *, float *, float *, int *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cspr2)(char *, int *, float *, float *, int *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xspr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
|
||||
void BLASFUNC(cher)(char *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zher)(char *, int *, double *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xher)(char *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cher)(char *, int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zher)(char *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xher)(char *, int *, double *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(chpr)(char *, int *, float *, float *, int *, float *);
|
||||
void BLASFUNC(zhpr)(char *, int *, double *, double *, int *, double *);
|
||||
void BLASFUNC(xhpr)(char *, int *, double *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(chpr)(char *, int *, float *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zhpr)(char *, int *, double *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xhpr)(char *, int *, double *, double *, int *, double *);
|
||||
|
||||
void BLASFUNC(cher2)(char *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cher2)(char *, int *, float *, float *, int *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xher2)(char *, int *, double *, double *, int *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(chpr2)(char *, int *, float *, float *, int *, float *, int *, float *);
|
||||
void BLASFUNC(zhpr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
void BLASFUNC(xhpr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(chpr2)(char *, int *, float *, float *, int *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zhpr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xhpr2)(char *, int *, double *, double *, int *, double *, int *, double *);
|
||||
|
||||
void BLASFUNC(chemv)(const char *, const int *, const float *, const float *, const int *, const float *, const int *,
|
||||
const float *, float *, const int *);
|
||||
void BLASFUNC(zhemv)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xhemv)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(chemv)(const char *, const int *, const float *, const float *, const int *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zhemv)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xhemv)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
|
||||
void BLASFUNC(chpmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(zhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
void BLASFUNC(xhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(chpmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xhpmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
|
||||
void BLASFUNC(snorm)(char *, int *, int *, float *, int *);
|
||||
void BLASFUNC(dnorm)(char *, int *, int *, double *, int *);
|
||||
void BLASFUNC(cnorm)(char *, int *, int *, float *, int *);
|
||||
void BLASFUNC(znorm)(char *, int *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(snorm)(char *, int *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dnorm)(char *, int *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cnorm)(char *, int *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(znorm)(char *, int *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(sgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
void BLASFUNC(dgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
void BLASFUNC(qgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
void BLASFUNC(cgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
void BLASFUNC(zgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
void BLASFUNC(xgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *,
|
||||
float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgbmv)(char *, int *, int *, int *, int *, float *, float *, int *, float *, int *,
|
||||
float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgbmv)(char *, int *, int *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
|
||||
void BLASFUNC(ssbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(dsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
|
||||
void BLASFUNC(qsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
|
||||
void BLASFUNC(csbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(zsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
|
||||
void BLASFUNC(xsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ssbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
|
||||
void BLASFUNC(chbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(zhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
|
||||
void BLASFUNC(xhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(chbmv)(char *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xhbmv)(char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
|
||||
/* Level 3 routines */
|
||||
|
||||
void BLASFUNC(sgemm)(const char *, const char *, const int *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(dgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *,
|
||||
const int *, const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(qgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *,
|
||||
const int *, const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(cgemm)(const char *, const char *, const int *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *,
|
||||
const int *, const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xgemm)(const char *, const char *, const int *, const int *, const int *, const double *, const double *,
|
||||
const int *, const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgemm)(const char *, const char *, const int *, const int *, const int *, const float *,
|
||||
const float *, const int *, const float *, const int *, const float *, float *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgemm)(const char *, const char *, const int *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgemm)(const char *, const char *, const int *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgemm)(const char *, const char *, const int *, const int *, const int *, const float *,
|
||||
const float *, const int *, const float *, const int *, const float *, float *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgemm)(const char *, const char *, const int *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgemm)(const char *, const char *, const int *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
|
||||
void BLASFUNC(cgemm3m)(char *, char *, int *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
void BLASFUNC(zgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
void BLASFUNC(xgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgemm3m)(char *, char *, int *, int *, int *, float *, float *, int *, float *, int *,
|
||||
float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgemm3m)(char *, char *, int *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
|
||||
void BLASFUNC(sge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
void BLASFUNC(dge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
void BLASFUNC(cge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *,
|
||||
int *);
|
||||
void BLASFUNC(zge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *, double *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *,
|
||||
float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cge2mm)(char *, char *, char *, int *, int *, float *, float *, int *, float *, int *,
|
||||
float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zge2mm)(char *, char *, char *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
|
||||
void BLASFUNC(strsm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *,
|
||||
const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(dtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(qtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(ctrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *,
|
||||
const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(ztrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(xtrsm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(strsm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const float *, const float *, const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtrsm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtrsm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctrsm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const float *, const float *, const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztrsm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtrsm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
|
||||
void BLASFUNC(strmm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *,
|
||||
const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(dtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(qtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(ctrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const float *,
|
||||
const float *, const int *, float *, const int *);
|
||||
void BLASFUNC(ztrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
void BLASFUNC(xtrmm)(const char *, const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(strmm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const float *, const float *, const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtrmm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtrmm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctrmm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const float *, const float *, const int *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztrmm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtrmm)(const char *, const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, double *, const int *);
|
||||
|
||||
void BLASFUNC(ssymm)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(dsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(qsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(csymm)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xsymm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ssymm)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dsymm)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qsymm)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csymm)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsymm)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsymm)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
|
||||
void BLASFUNC(csymm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(zsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
void BLASFUNC(xsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csymm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *,
|
||||
float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsymm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
|
||||
void BLASFUNC(ssyrk)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, float *, const int *);
|
||||
void BLASFUNC(dsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
void BLASFUNC(qsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
void BLASFUNC(csyrk)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, float *, const int *);
|
||||
void BLASFUNC(zsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
void BLASFUNC(xsyrk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ssyrk)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dsyrk)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qsyrk)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csyrk)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsyrk)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsyrk)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
|
||||
void BLASFUNC(ssyr2k)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(dsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(qsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(csyr2k)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xsyr2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ssyr2k)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dsyr2k)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qsyr2k)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csyr2k)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsyr2k)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsyr2k)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
|
||||
void BLASFUNC(chemm)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zhemm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xhemm)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(chemm)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zhemm)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xhemm)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
|
||||
void BLASFUNC(chemm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(zhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
void BLASFUNC(xhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *, double *, double *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(chemm3m)(char *, char *, int *, int *, float *, float *, int *, float *, int *, float *,
|
||||
float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xhemm3m)(char *, char *, int *, int *, double *, double *, int *, double *, int *,
|
||||
double *, double *, int *);
|
||||
|
||||
void BLASFUNC(cherk)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, float *, const int *);
|
||||
void BLASFUNC(zherk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
void BLASFUNC(xherk)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cherk)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zherk)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xherk)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
|
||||
void BLASFUNC(cher2k)(const char *, const char *, const int *, const int *, const float *, const float *, const int *,
|
||||
const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zher2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xher2k)(const char *, const char *, const int *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(cher2m)(const char *, const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zher2m)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xher2m)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cher2k)(const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zher2k)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xher2k)(const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cher2m)(const char *, const char *, const char *, const int *, const int *, const float *,
|
||||
const float *, const int *, const float *, const int *, const float *, float *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zher2m)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xher2m)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *,
|
||||
const int *);
|
||||
|
||||
void BLASFUNC(sgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(dgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(qgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(cgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *, const float *,
|
||||
const int *, const float *, const int *, const float *, float *, const int *);
|
||||
void BLASFUNC(zgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xgemmtr)(const char *, const char *, const char *, const int *, const int *, const double *,
|
||||
const double *, const int *, const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *,
|
||||
const float *, const int *, const float *, const int *, const float *, float *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgemmtr)(const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgemmtr)(const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgemmtr)(const char *, const char *, const char *, const int *, const int *, const float *,
|
||||
const float *, const int *, const float *, const int *, const float *, float *,
|
||||
const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgemmtr)(const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgemmtr)(const char *, const char *, const char *, const int *, const int *,
|
||||
const double *, const double *, const int *, const double *, const int *,
|
||||
const double *, double *, const int *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -31,23 +31,20 @@
|
||||
build:windows:x86:msvc-14.29:default:
|
||||
extends: .build:windows
|
||||
variables:
|
||||
EIGEN_CI_MSVC_VER: "14.29"
|
||||
EIGEN_CI_MSVC_ARCH: "x86"
|
||||
EIGEN_CI_MSVC_ARCH: "x64_x86"
|
||||
|
||||
# MSVC 14.29 (VS 2019) 64 bit
|
||||
|
||||
build:windows:x86-64:msvc-14.29:default:
|
||||
extends: .build:windows
|
||||
variables:
|
||||
EIGEN_CI_MSVC_VER: "14.29"
|
||||
|
||||
build:windows:x86-64:msvc-14.29:avx2:
|
||||
extends: build:windows:x86-64:msvc-14.29:default
|
||||
extends: .build:windows
|
||||
variables:
|
||||
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX2=on"
|
||||
|
||||
build:windows:x86-64:msvc-14.29:avx512dq:
|
||||
extends: build:windows:x86-64:msvc-14.29:default
|
||||
extends: .build:windows
|
||||
variables:
|
||||
EIGEN_CI_ADDITIONAL_ARGS: "-DEIGEN_TEST_AVX512DQ=on"
|
||||
|
||||
@@ -73,5 +70,4 @@ build:windows:x86-64:msvc-14.29:avx512dq:
|
||||
build:windows:x86-64:cuda-11.4:msvc-14.29:
|
||||
extends: .build:windows:cuda
|
||||
variables:
|
||||
EIGEN_CI_MSVC_VER: "14.29"
|
||||
EIGEN_CI_BEFORE_SCRIPT: $$env:CUDA_PATH=$$env:CUDA_PATH_V11_4
|
||||
@@ -19,35 +19,29 @@
|
||||
|
||||
# MSVC 14.29 (VS 2019) 64 bit
|
||||
|
||||
.test:windows:x86-64:msvc-14.29:default:
|
||||
test:windows:x86-64:msvc-14.29:default:official:
|
||||
extends: .test:windows
|
||||
needs: [ build:windows:x86-64:msvc-14.29:default ]
|
||||
|
||||
test:windows:x86-64:msvc-14.29:default:official:
|
||||
extends: .test:windows:x86-64:msvc-14.29:default
|
||||
variables:
|
||||
EIGEN_CI_CTEST_LABEL: Official
|
||||
|
||||
test:windows:x86-64:msvc-14.29:default:unsupported:
|
||||
extends: .test:windows:x86-64:msvc-14.29:default
|
||||
extends: test:windows:x86-64:msvc-14.29:default:official
|
||||
variables:
|
||||
EIGEN_CI_CTEST_LABEL: Unsupported
|
||||
|
||||
.test:windows:x86-64:msvc-14.29:avx2:
|
||||
test:windows:x86-64:msvc-14.29:avx2:official:
|
||||
extends: .test:windows
|
||||
needs: [ build:windows:x86-64:msvc-14.29:avx2 ]
|
||||
|
||||
test:windows:x86-64:msvc-14.29:avx2:official:
|
||||
extends: .test:windows:x86-64:msvc-14.29:avx2
|
||||
variables:
|
||||
EIGEN_CI_CTEST_LABEL: Official
|
||||
|
||||
test:windows:x86-64:msvc-14.29:avx2:unsupported:
|
||||
extends: .test:windows:x86-64:msvc-14.29:avx2
|
||||
extends: test:windows:x86-64:msvc-14.29:avx2:official
|
||||
variables:
|
||||
EIGEN_CI_CTEST_LABEL: Unsupported
|
||||
|
||||
.test:windows:x86-64:msvc-14.29:avx512dq:
|
||||
test:windows:x86-64:msvc-14.29:avx512dq:official:
|
||||
extends: .test:windows
|
||||
needs: [ build:windows:x86-64:msvc-14.29:avx512dq ]
|
||||
tags:
|
||||
@@ -55,14 +49,11 @@ test:windows:x86-64:msvc-14.29:avx2:unsupported:
|
||||
- windows
|
||||
- x86-64
|
||||
- avx512
|
||||
|
||||
test:windows:x86-64:msvc-14.29:avx512dq:official:
|
||||
extends: .test:windows:x86-64:msvc-14.29:avx512dq
|
||||
variables:
|
||||
EIGEN_CI_CTEST_LABEL: Official
|
||||
|
||||
test:windows:x86-64:msvc-14.29:avx512dq:unsupported:
|
||||
extends: .test:windows:x86-64:msvc-14.29:avx512dq
|
||||
extends: test:windows:x86-64:msvc-14.29:avx512dq:official
|
||||
variables:
|
||||
EIGEN_CI_CTEST_LABEL: Unsupported
|
||||
|
||||
|
||||
@@ -18,9 +18,6 @@ one option, and other parts (or libraries that you use) are compiled with anothe
|
||||
fail to link or exhibit subtle bugs. Nevertheless, these options can be useful for people who know what they
|
||||
are doing.
|
||||
|
||||
- \b EIGEN2_SUPPORT and \b EIGEN2_SUPPORT_STAGEnn_xxx are disabled starting from the 3.3 release.
|
||||
Defining one of these will raise a compile-error. If you need to compile Eigen2 code,
|
||||
<a href="http://eigen.tuxfamily.org/index.php?title=Eigen2">check this site</a>.
|
||||
- \b EIGEN_DEFAULT_DENSE_INDEX_TYPE - the type for column and row indices in matrices, vectors and array
|
||||
(DenseBase::Index). Set to \c std::ptrdiff_t by default.
|
||||
- \b EIGEN_DEFAULT_IO_FORMAT - the IOFormat to use when printing a matrix if no %IOFormat is specified.
|
||||
@@ -44,7 +41,7 @@ are doing.
|
||||
preferable. Not defined by default.
|
||||
\warning See the documentation of \c EIGEN_INITIALIZE_MATRICES_BY_ZERO for a discussion on a limitations
|
||||
of these macros when applied to \c 1x1, \c 1x2, and \c 2x1 fixed-size matrices.
|
||||
- \b EIGEN_NO_AUTOMATIC_RESIZING - if defined, the matrices (or arrays) on both sides of an assignment
|
||||
- \b EIGEN_NO_AUTOMATIC_RESIZING - if defined, the matrices (or arrays) on both sides of an assignment
|
||||
<tt>a = b</tt> have to be of the same size; otherwise, %Eigen automatically resizes \c a so that it is of
|
||||
the correct size. Not defined by default.
|
||||
|
||||
@@ -72,8 +69,8 @@ The %Eigen library contains many assertions to guard against programming errors,
|
||||
run time. However, these assertions do cost time and can thus be turned off.
|
||||
|
||||
- \b EIGEN_NO_DEBUG - disables %Eigen's assertions if defined. Not defined by default, unless the
|
||||
\c NDEBUG macro is defined (this is a standard C++ macro which disables all asserts).
|
||||
- \b EIGEN_NO_STATIC_ASSERT - if defined, compile-time static assertions are replaced by runtime assertions;
|
||||
\c NDEBUG macro is defined (this is a standard C++ macro which disables all asserts).
|
||||
- \b EIGEN_NO_STATIC_ASSERT - if defined, compile-time static assertions are replaced by runtime assertions;
|
||||
this saves compilation time. Not defined by default.
|
||||
- \b eigen_assert - macro with one argument that is used inside %Eigen for assertions. By default, it is
|
||||
basically defined to be \c assert, which aborts the program if the assertion is violated. Redefine this
|
||||
@@ -90,7 +87,7 @@ run time. However, these assertions do cost time and can thus be turned off.
|
||||
Let us emphasize that \c EIGEN_MAX_*_ALIGN_BYTES define only a desirable upper bound. In practice data is aligned to largest power-of-two common divisor of \c EIGEN_MAX_STATIC_ALIGN_BYTES and the size of the data, such that memory is not wasted.
|
||||
- \b \c EIGEN_DONT_PARALLELIZE - if defined, this disables multi-threading. This is only relevant if you enabled OpenMP.
|
||||
See \ref TopicMultiThreading for details.
|
||||
- \b \c EIGEN_DONT_VECTORIZE - disables explicit vectorization when defined. Not defined by default, unless
|
||||
- \b \c EIGEN_DONT_VECTORIZE - disables explicit vectorization when defined. Not defined by default, unless
|
||||
alignment is disabled by %Eigen's platform test or the user defining \c EIGEN_DONT_ALIGN.
|
||||
- \b \c EIGEN_UNALIGNED_VECTORIZE - disables/enables vectorization with unaligned stores. Default is 1 (enabled).
|
||||
If set to 0 (disabled), then expression for which the destination cannot be aligned are not vectorized (e.g., unaligned
|
||||
|
||||
@@ -102,6 +102,7 @@ list(APPEND EIGEN_LAPACK_TARGETS eigen_lapack_static)
|
||||
|
||||
if (EIGEN_BUILD_SHARED_LIBS)
|
||||
add_library(eigen_lapack SHARED ${EigenLapack_SRCS})
|
||||
target_compile_definitions(eigen_lapack PUBLIC "EIGEN_BUILD_DLL")
|
||||
list(APPEND EIGEN_LAPACK_TARGETS eigen_lapack)
|
||||
target_link_libraries(eigen_lapack eigen_blas)
|
||||
endif()
|
||||
|
||||
210
lapack/lapack.h
210
lapack/lapack.h
@@ -7,127 +7,131 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void BLASFUNC(csymv)(const char *, const int *, const float *, const float *, const int *, const float *, const int *,
|
||||
const float *, float *, const int *);
|
||||
void BLASFUNC(zsymv)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, const double *, double *, const int *);
|
||||
void BLASFUNC(xsymv)(const char *, const int *, const double *, const double *, const int *, const double *,
|
||||
const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csymv)(const char *, const int *, const float *, const float *, const int *, const float *,
|
||||
const int *, const float *, float *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsymv)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsymv)(const char *, const int *, const double *, const double *, const int *,
|
||||
const double *, const int *, const double *, double *, const int *);
|
||||
|
||||
void BLASFUNC(cspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *);
|
||||
void BLASFUNC(zspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
void BLASFUNC(xspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cspmv)(char *, int *, float *, float *, float *, int *, float *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xspmv)(char *, int *, double *, double *, double *, int *, double *, double *, int *);
|
||||
|
||||
void BLASFUNC(csyr)(char *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zsyr)(char *, int *, double *, double *, int *, double *, int *);
|
||||
void BLASFUNC(xsyr)(char *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(csyr)(char *, int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zsyr)(char *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xsyr)(char *, int *, double *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(cspr)(char *, int *, float *, float *, int *, float *);
|
||||
void BLASFUNC(zspr)(char *, int *, double *, double *, int *, double *);
|
||||
void BLASFUNC(xspr)(char *, int *, double *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cspr)(char *, int *, float *, float *, int *, float *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zspr)(char *, int *, double *, double *, int *, double *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xspr)(char *, int *, double *, double *, int *, double *);
|
||||
|
||||
void BLASFUNC(sgemt)(char *, int *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dgemt)(char *, int *, int *, double *, double *, int *, double *, int *);
|
||||
void BLASFUNC(cgemt)(char *, int *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zgemt)(char *, int *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgemt)(char *, int *, int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgemt)(char *, int *, int *, double *, double *, int *, double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgemt)(char *, int *, int *, float *, float *, int *, float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgemt)(char *, int *, int *, double *, double *, int *, double *, int *);
|
||||
|
||||
void BLASFUNC(sgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *,
|
||||
int *);
|
||||
void BLASFUNC(cgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgema)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgema)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *,
|
||||
double *, int *);
|
||||
|
||||
void BLASFUNC(sgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(dgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *,
|
||||
int *);
|
||||
void BLASFUNC(cgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *, float *, int *);
|
||||
void BLASFUNC(zgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *, double *,
|
||||
int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *,
|
||||
double *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgems)(char *, char *, int *, int *, float *, float *, int *, float *, float *, int *,
|
||||
float *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgems)(char *, char *, int *, int *, double *, double *, int *, double *, double *, int *,
|
||||
double *, int *);
|
||||
|
||||
void BLASFUNC(sgetf2)(int *, int *, float *, int *, int *, int *);
|
||||
void BLASFUNC(dgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
void BLASFUNC(qgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
void BLASFUNC(cgetf2)(int *, int *, float *, int *, int *, int *);
|
||||
void BLASFUNC(zgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
void BLASFUNC(xgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgetf2)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgetf2)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgetf2)(int *, int *, double *, int *, int *, int *);
|
||||
|
||||
void BLASFUNC(sgetrf)(int *, int *, float *, int *, int *, int *);
|
||||
void BLASFUNC(dgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
void BLASFUNC(qgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
void BLASFUNC(cgetrf)(int *, int *, float *, int *, int *, int *);
|
||||
void BLASFUNC(zgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
void BLASFUNC(xgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgetrf)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgetrf)(int *, int *, float *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgetrf)(int *, int *, double *, int *, int *, int *);
|
||||
|
||||
void BLASFUNC(slaswp)(int *, float *, int *, int *, int *, int *, int *);
|
||||
void BLASFUNC(dlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
void BLASFUNC(qlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
void BLASFUNC(claswp)(int *, float *, int *, int *, int *, int *, int *);
|
||||
void BLASFUNC(zlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
void BLASFUNC(xlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(slaswp)(int *, float *, int *, int *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(claswp)(int *, float *, int *, int *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xlaswp)(int *, double *, int *, int *, int *, int *, int *);
|
||||
|
||||
void BLASFUNC(sgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
void BLASFUNC(cgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
void BLASFUNC(zgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgetrs)(char *, int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgetrs)(char *, int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(sgesv)(int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
void BLASFUNC(cgesv)(int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
void BLASFUNC(zgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(sgesv)(int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cgesv)(int *, int *, float *, int *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xgesv)(int *, int *, double *, int *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(spotf2)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dpotf2)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qpotf2)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(cpotf2)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(zpotf2)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xpotf2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(spotf2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dpotf2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qpotf2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cpotf2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zpotf2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xpotf2)(char *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(spotrf)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dpotrf)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qpotrf)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(cpotrf)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(zpotrf)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xpotrf)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(spotrf)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dpotrf)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qpotrf)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cpotrf)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zpotrf)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xpotrf)(char *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(slauu2)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dlauu2)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qlauu2)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(clauu2)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(zlauu2)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xlauu2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(slauu2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dlauu2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qlauu2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(clauu2)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zlauu2)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xlauu2)(char *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(slauum)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dlauum)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qlauum)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(clauum)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(zlauum)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xlauum)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(slauum)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dlauum)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qlauum)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(clauum)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zlauum)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xlauum)(char *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(strti2)(char *, char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(ctrti2)(char *, char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(ztrti2)(char *, char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(strti2)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctrti2)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztrti2)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtrti2)(char *, char *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(strtri)(char *, char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(ctrtri)(char *, char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(ztrtri)(char *, char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(strtri)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ctrtri)(char *, char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(ztrtri)(char *, char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xtrtri)(char *, char *, int *, double *, int *, int *);
|
||||
|
||||
void BLASFUNC(spotri)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(dpotri)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(qpotri)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(cpotri)(char *, int *, float *, int *, int *);
|
||||
void BLASFUNC(zpotri)(char *, int *, double *, int *, int *);
|
||||
void BLASFUNC(xpotri)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(spotri)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(dpotri)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(qpotri)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(cpotri)(char *, int *, float *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(zpotri)(char *, int *, double *, int *, int *);
|
||||
EIGEN_BLAS_API void BLASFUNC(xpotri)(char *, int *, double *, int *, int *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -56,27 +56,29 @@ EIGEN_LAPACK_FUNC(gesdd)
|
||||
PlainMatrixType mat(*m, *n);
|
||||
mat = matrix(a, *m, *n, *lda);
|
||||
|
||||
int option = *jobz == 'A' ? Eigen::ComputeFullU | Eigen::ComputeFullV
|
||||
: *jobz == 'S' ? Eigen::ComputeThinU | Eigen::ComputeThinV
|
||||
: *jobz == 'O' ? Eigen::ComputeThinU | Eigen::ComputeThinV
|
||||
: 0;
|
||||
|
||||
Eigen::BDCSVD<PlainMatrixType> svd(mat, option);
|
||||
|
||||
make_vector(s, diag_size) = svd.singularValues().head(diag_size);
|
||||
|
||||
if (*jobz == 'A') {
|
||||
Eigen::BDCSVD<PlainMatrixType, Eigen::ComputeFullU | Eigen::ComputeFullV> svd(mat);
|
||||
make_vector(s, diag_size) = svd.singularValues().head(diag_size);
|
||||
matrix(u, *m, *m, *ldu) = svd.matrixU();
|
||||
matrix(vt, *n, *n, *ldvt) = svd.matrixV().adjoint();
|
||||
} else if (*jobz == 'S') {
|
||||
Eigen::BDCSVD<PlainMatrixType, Eigen::ComputeThinU | Eigen::ComputeThinV> svd(mat);
|
||||
make_vector(s, diag_size) = svd.singularValues().head(diag_size);
|
||||
matrix(u, *m, diag_size, *ldu) = svd.matrixU();
|
||||
matrix(vt, diag_size, *n, *ldvt) = svd.matrixV().adjoint();
|
||||
} else if (*jobz == 'O' && *m >= *n) {
|
||||
Eigen::BDCSVD<PlainMatrixType, Eigen::ComputeThinU | Eigen::ComputeThinV> svd(mat);
|
||||
make_vector(s, diag_size) = svd.singularValues().head(diag_size);
|
||||
matrix(a, *m, *n, *lda) = svd.matrixU();
|
||||
matrix(vt, *n, *n, *ldvt) = svd.matrixV().adjoint();
|
||||
} else if (*jobz == 'O') {
|
||||
Eigen::BDCSVD<PlainMatrixType, Eigen::ComputeThinU | Eigen::ComputeThinV> svd(mat);
|
||||
make_vector(s, diag_size) = svd.singularValues().head(diag_size);
|
||||
matrix(u, *m, *m, *ldu) = svd.matrixU();
|
||||
matrix(a, diag_size, *n, *lda) = svd.matrixV().adjoint();
|
||||
} else {
|
||||
Eigen::BDCSVD<PlainMatrixType> svd(mat);
|
||||
make_vector(s, diag_size) = svd.singularValues().head(diag_size);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
128
scripts/git_commit_mrs_and_issues.py
Normal file
128
scripts/git_commit_mrs_and_issues.py
Normal file
@@ -0,0 +1,128 @@
|
||||
"""Search for MRs and issues related to a list of commits."""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
import subprocess
|
||||
import re
|
||||
|
||||
|
||||
def find_cherry_pick_source(commit_hash: str):
|
||||
"""
|
||||
For a given commit hash, find the original commit it was cherry-picked from.
|
||||
|
||||
Args:
|
||||
commit_hash: The commit hash to inspect.
|
||||
|
||||
Returns:
|
||||
The full hash of the original commit if found, otherwise None.
|
||||
"""
|
||||
try:
|
||||
# Use 'git show' to get the full commit message for the given hash.
|
||||
# The '-s' flag suppresses the diff output.
|
||||
# The '--format=%B' flag prints only the raw commit body/message.
|
||||
commit_message = subprocess.check_output(
|
||||
["git", "show", "-s", "--format=%B", commit_hash.strip()],
|
||||
text=True,
|
||||
stderr=subprocess.PIPE,
|
||||
).strip()
|
||||
|
||||
# This regex looks for the specific line Git adds during a cherry-pick.
|
||||
# It captures the full 40-character SHA-1 hash.
|
||||
cherry_pick_pattern = re.compile(
|
||||
r"\(cherry picked from commit ([a-f0-9]{40})\)"
|
||||
)
|
||||
|
||||
# Search the entire commit message for the pattern.
|
||||
match = cherry_pick_pattern.search(commit_message)
|
||||
|
||||
if match:
|
||||
# If a match is found, return the captured group (the original commit hash).
|
||||
return match.group(1)
|
||||
else:
|
||||
return None
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
# This error occurs if the git command fails, e.g., for an invalid hash.
|
||||
print(
|
||||
f"Error processing commit '{commit_hash.strip()}': {e.stderr.strip()}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return None
|
||||
except FileNotFoundError:
|
||||
# This error occurs if the 'git' command itself isn't found.
|
||||
print(
|
||||
"Error: 'git' command not found. Please ensure Git is installed and in your PATH.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main function to read commit hashes from stdin and process them.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
description="A script to download all MRs from GitLab matching specified criteria."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--merge_requests_file",
|
||||
type=str,
|
||||
required=True,
|
||||
help="JSON file containing all the merge request information extracted via the GitLab API.",
|
||||
)
|
||||
|
||||
# E.g. git log --pretty=%H 3e819d83bf52abda16bb53565f6801df40d071f1..3.4.1
|
||||
parser.add_argument(
|
||||
"--commits",
|
||||
required=True,
|
||||
help="List of commits, '-' for stdin.",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
mrs = []
|
||||
with open(args.merge_requests_file, "r") as file:
|
||||
mrs = json.load(file)
|
||||
mrs_by_commit = {}
|
||||
|
||||
if args.commits == "-":
|
||||
commit_hashes = sys.stdin.readlines()
|
||||
else:
|
||||
with open(args.commits, "r") as file:
|
||||
commit_hashes = file.readlines()
|
||||
|
||||
# Arrange commits by SHA.
|
||||
for mr in mrs:
|
||||
for key in ["sha", "merge_commit_sha", "squash_commit_sha"]:
|
||||
sha = mr[key]
|
||||
if sha:
|
||||
mrs_by_commit[sha] = mr
|
||||
|
||||
# Find the MRs and issues related to each commit.
|
||||
info = {}
|
||||
for sha in commit_hashes:
|
||||
sha = sha.strip()
|
||||
if not sha:
|
||||
continue
|
||||
|
||||
# If a cherry-pick, extract the original hash.
|
||||
sha = find_cherry_pick_source(sha) or sha
|
||||
mr = mrs_by_commit.get(sha)
|
||||
|
||||
commit_info = {}
|
||||
if mr:
|
||||
commit_info["merge_request"] = mr["iid"]
|
||||
commit_info["related_issues"] = [
|
||||
issue["iid"] for issue in mr["related_issues"]
|
||||
]
|
||||
commit_info["closes_issues"] = [
|
||||
issue["iid"] for issue in mr["closes_issues"]
|
||||
]
|
||||
|
||||
info[sha] = commit_info
|
||||
|
||||
print(json.dumps(info, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
136
scripts/gitlab_api_deploy_package.py
Normal file
136
scripts/gitlab_api_deploy_package.py
Normal file
@@ -0,0 +1,136 @@
|
||||
"""Helper script to download source archives and upload them to the Eigen GitLab generic package registry."""
|
||||
|
||||
import os
|
||||
import requests
|
||||
import hashlib
|
||||
import argparse
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
EIGEN_PROJECT_ID = 15462818 # Taken from the gitlab project page.
|
||||
|
||||
|
||||
def calculate_sha256(filepath: str):
|
||||
"""Calculates the SHA256 checksum of a file."""
|
||||
sha256_hash = hashlib.sha256()
|
||||
with open(filepath, "rb") as f:
|
||||
# Read and update hash in chunks of 4K
|
||||
for byte_block in iter(lambda: f.read(4096), b""):
|
||||
sha256_hash.update(byte_block)
|
||||
return sha256_hash.hexdigest()
|
||||
|
||||
|
||||
def upload_to_generic_registry(
|
||||
gitlab_private_token: str, package_name: str, package_version: str, filepath: str
|
||||
):
|
||||
"""Uploads a file to the GitLab generic package registry."""
|
||||
headers = {"PRIVATE-TOKEN": gitlab_private_token}
|
||||
filename = os.path.basename(filepath)
|
||||
upload_url = f"https://gitlab.com/api/v4/projects/{EIGEN_PROJECT_ID}/packages/generic/{package_name}/{package_version}/{filename}"
|
||||
|
||||
print(f"Uploading {filename} to {upload_url}...")
|
||||
try:
|
||||
with open(filepath, "rb") as f:
|
||||
response = requests.put(upload_url, headers=headers, data=f)
|
||||
response.raise_for_status()
|
||||
print(f"Successfully uploaded {filename}.")
|
||||
return True
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"Error uploading {filename}: {e}")
|
||||
if e.response is not None:
|
||||
print(f"Response content: {e.response.text}")
|
||||
return False
|
||||
|
||||
|
||||
def main():
|
||||
"""Main function to download archives and upload them to the registry."""
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Download GitLab release archives for Eigen and upload them to the generic package registry."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--gitlab_private_token",
|
||||
type=str,
|
||||
help="GitLab private API token. Defaults to the GITLAB_PRIVATE_TOKEN environment variable if set.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--version",
|
||||
required=True,
|
||||
help="Specify a single version (tag name) to process.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--download-dir", help=f"Directory to store temporary downloads (optional)."
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.gitlab_private_token:
|
||||
args.gitlab_private_token = os.getenv("GITLAB_PRIVATE_TOKEN")
|
||||
if not args.gitlab_private_token:
|
||||
print("Could not determine GITLAB_PRIVATE_TOKEN.", file=sys.stderr)
|
||||
parser.print_usage()
|
||||
sys.exit(1)
|
||||
|
||||
# Create download directory if it doesn't exist.
|
||||
cleanup_download_dir = False
|
||||
if args.download_dir:
|
||||
if not os.path.exists(args.download_dir):
|
||||
cleanup_download_dir = True
|
||||
os.makedirs(args.download_dir)
|
||||
else:
|
||||
args.download_dir = tempfile.mkdtemp()
|
||||
cleanup_download_dir = True
|
||||
|
||||
for ext in ["tar.gz", "tar.bz2", "tar", "zip"]:
|
||||
archive_filename = f"eigen-{args.version}.{ext}"
|
||||
archive_url = f"https://gitlab.com/libeigen/eigen/-/archive/{args.version}/{archive_filename}"
|
||||
archive_filepath = os.path.join(args.download_dir, archive_filename)
|
||||
|
||||
# Download the archive
|
||||
print(f"Downloading {archive_url}...")
|
||||
try:
|
||||
response = requests.get(archive_url, stream=True)
|
||||
response.raise_for_status()
|
||||
with open(archive_filepath, "wb") as f:
|
||||
for chunk in response.iter_content(chunk_size=8192):
|
||||
f.write(chunk)
|
||||
print(f"Downloaded to {archive_filepath}")
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"Error downloading {archive_url}: {e}. Skipping.")
|
||||
continue
|
||||
|
||||
# Calculate SHA256 sum
|
||||
sha256_sum = calculate_sha256(archive_filepath)
|
||||
print(f"SHA256 sum: {sha256_sum}")
|
||||
|
||||
# Create SHA256 sum file
|
||||
sha_filename = f"{archive_filename}.sha256"
|
||||
sha_filepath = os.path.join(args.download_dir, sha_filename)
|
||||
with open(sha_filepath, "w") as f:
|
||||
f.write(f"{sha256_sum} {archive_filename}\n")
|
||||
print(f"Created SHA256 file: {sha_filepath}")
|
||||
|
||||
# Upload archive to generic registry
|
||||
if not upload_to_generic_registry(
|
||||
args.gitlab_private_token, "eigen", args.version, archive_filepath
|
||||
):
|
||||
# If upload fails, clean up and move to the next release
|
||||
os.remove(archive_filepath)
|
||||
os.remove(sha_filepath)
|
||||
continue
|
||||
|
||||
# Upload SHA256 sum file to generic registry
|
||||
upload_to_generic_registry(
|
||||
args.gitlab_private_token, "eigen", args.version, sha_filepath
|
||||
)
|
||||
|
||||
# Clean up downloaded files
|
||||
print("Cleaning up local files...")
|
||||
os.remove(archive_filepath)
|
||||
os.remove(sha_filepath)
|
||||
|
||||
# Clean up the download directory if it's empty
|
||||
if cleanup_download_dir and not os.listdir(args.download_dir):
|
||||
os.rmdir(args.download_dir)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
174
scripts/gitlab_api_issues.py
Normal file
174
scripts/gitlab_api_issues.py
Normal file
@@ -0,0 +1,174 @@
|
||||
"""Downloads all issues from GitLab matching specified criteria."""
|
||||
|
||||
import argparse
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
import requests
|
||||
import sys
|
||||
|
||||
EIGEN_PROJECT_ID = 15462818 # Taken from the gitlab project page.
|
||||
|
||||
|
||||
def date(date_string: str):
|
||||
"""Convert a date YY-MM-DD string to a datetime object."""
|
||||
try:
|
||||
return datetime.strptime(date_string, "%Y-%m-%d")
|
||||
except ValueError:
|
||||
msg = f"Not a valid date: '{date_string}'. Expected format is YYYY-MM-DD."
|
||||
raise argparse.ArgumentTypeError(msg)
|
||||
|
||||
|
||||
def _get_api_query(
|
||||
gitlab_private_token: str, url: str, params: dict[str, str] | None = None
|
||||
):
|
||||
next_page = "1"
|
||||
if not params:
|
||||
params = dict()
|
||||
params["per_page"] = "100"
|
||||
headers = {"PRIVATE-TOKEN": gitlab_private_token}
|
||||
out = []
|
||||
while next_page:
|
||||
params["page"] = next_page
|
||||
try:
|
||||
resp = requests.head(url=url, params=params, headers=headers)
|
||||
if resp.status_code != 200:
|
||||
print("Request failed: ", resp, file=sys.stderr)
|
||||
break
|
||||
|
||||
next_next_page = resp.headers["x-next-page"]
|
||||
|
||||
resp = requests.get(url=url, params=params, headers=headers)
|
||||
if resp.status_code != 200:
|
||||
# Try again.
|
||||
continue
|
||||
|
||||
out.extend(resp.json())
|
||||
# Advance at the end, in case an exception occurs above so we can retry
|
||||
next_page = next_next_page
|
||||
except:
|
||||
# Keep same next_page
|
||||
continue
|
||||
return out
|
||||
|
||||
|
||||
def get_issues(
|
||||
gitlab_private_token: str,
|
||||
author_username: str | None = None,
|
||||
state: str | None = None,
|
||||
created_before: datetime.datetime | None = None,
|
||||
created_after: datetime.datetime | None = None,
|
||||
updated_after: datetime.datetime | None = None,
|
||||
updated_before: datetime.datetime | None = None,
|
||||
):
|
||||
"""Return list of merge requests.
|
||||
|
||||
Args:
|
||||
gitlab_token: GitLab API token.
|
||||
author_username: issue author username.
|
||||
state: issue state (opened, closed).
|
||||
created_after: datetime start of period.
|
||||
created_before: datetime end of period.
|
||||
updated_after: datetime start of period.
|
||||
updated_before: datetime end of period.
|
||||
|
||||
Returns:
|
||||
List of merge requests.
|
||||
"""
|
||||
url = f"https://gitlab.com/api/v4/projects/{str(EIGEN_PROJECT_ID)}/issues"
|
||||
params = dict()
|
||||
if author_username:
|
||||
params["author_username"] = author_username
|
||||
|
||||
if state:
|
||||
params["state"] = state
|
||||
|
||||
if created_before:
|
||||
params["created_before"] = created_before.isoformat()
|
||||
|
||||
if created_after:
|
||||
params["created_after"] = created_after.isoformat()
|
||||
|
||||
if updated_before:
|
||||
params["updated_before"] = updated_before.isoformat()
|
||||
|
||||
if updated_after:
|
||||
params["updated_after"] = updated_after.isoformat()
|
||||
|
||||
params["order_by"] = "created_at"
|
||||
params["sort"] = "asc"
|
||||
issues = _get_api_query(gitlab_private_token, url, params)
|
||||
for issue in issues:
|
||||
if int(issue["merge_requests_count"]) > 0:
|
||||
issue_iid = issue["iid"]
|
||||
issue["related_merge_requests"] = _get_api_query(
|
||||
gitlab_private_token, f"{url}/{issue_iid}/related_merge_requests"
|
||||
)
|
||||
issue["closed_by_merge_requests"] = _get_api_query(
|
||||
gitlab_private_token, f"{url}/{issue_iid}/closed_by"
|
||||
)
|
||||
return issues
|
||||
|
||||
|
||||
def main(_):
|
||||
parser = argparse.ArgumentParser(
|
||||
description="A script to download all issues from GitLab matching specified criteria."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--gitlab_private_token",
|
||||
type=str,
|
||||
help="GitLab private API token. Defaults to the GITLAB_PRIVATE_TOKEN environment variable if set.",
|
||||
)
|
||||
parser.add_argument("--author", type=str, help="The name of the author.")
|
||||
parser.add_argument(
|
||||
"--state",
|
||||
type=str,
|
||||
choices=["opened", "closed"],
|
||||
help="The state of the issue.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--created_before",
|
||||
type=date,
|
||||
help="The created-before date in YYYY-MM-DD format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--created_after",
|
||||
type=date,
|
||||
help="The created-after date in YYYY-MM-DD format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--updated_before",
|
||||
type=date,
|
||||
help="The updated-before date in YYYY-MM-DD format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--updated_after",
|
||||
type=date,
|
||||
help="The updated-after date in YYYY-MM-DD format.",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.gitlab_private_token:
|
||||
args.gitlab_private_token = os.getenv("GITLAB_PRIVATE_TOKEN")
|
||||
if not args.gitlab_private_token:
|
||||
print("Could not determine GITLAB_PRIVATE_TOKEN.", file=sys.stderr)
|
||||
parser.print_usage()
|
||||
sys.exit(1)
|
||||
|
||||
# Parse the arguments from the command line
|
||||
issues = get_issues(
|
||||
gitlab_private_token=args.gitlab_private_token,
|
||||
author_username=args.author,
|
||||
state=args.state,
|
||||
created_before=args.created_before,
|
||||
created_after=args.created_after,
|
||||
updated_before=args.updated_before,
|
||||
updated_after=args.updated_after,
|
||||
)
|
||||
|
||||
issue_str = json.dumps(issues, indent=2)
|
||||
print(issue_str)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv)
|
||||
122
scripts/gitlab_api_labeller.py
Normal file
122
scripts/gitlab_api_labeller.py
Normal file
@@ -0,0 +1,122 @@
|
||||
"""Adds a label to a GitLab merge requests or issues."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import requests
|
||||
|
||||
EIGEN_PROJECT_ID = 15462818 # Taken from the gitlab project page.
|
||||
|
||||
|
||||
def add_label_to_mr(private_token: str, mr_iid: int, label: str):
|
||||
"""
|
||||
Adds a label to a specific merge request in a GitLab project.
|
||||
|
||||
Args:
|
||||
private_token: The user's private GitLab API token.
|
||||
mr_iid: The internal ID (IID) of the merge request.
|
||||
label: The label to add.
|
||||
"""
|
||||
api_url = (
|
||||
f"https://gitlab.com/api/v4/projects/{EIGEN_PROJECT_ID}/merge_requests/{mr_iid}"
|
||||
)
|
||||
headers = {"PRIVATE-TOKEN": private_token}
|
||||
# Using 'add_labels' ensures we don't overwrite existing labels.
|
||||
payload = {"add_labels": label}
|
||||
|
||||
try:
|
||||
response = requests.put(api_url, headers=headers, json=payload)
|
||||
response.raise_for_status() # Raises an HTTPError for bad responses (4xx or 5xx)
|
||||
print(f"✅ Successfully added label '{label}' to Merge Request !{mr_iid}.")
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"❌ Error updating Merge Request !{mr_iid}: {e}", file=sys.stderr)
|
||||
if hasattr(e, "response") and e.response is not None:
|
||||
print(f" Response: {e.response.text}", file=sys.stderr)
|
||||
|
||||
|
||||
def add_label_to_issue(private_token: str, issue_iid: int, label: str):
|
||||
"""
|
||||
Adds a label to a specific issue in a GitLab project.
|
||||
|
||||
Args:
|
||||
private_token: The user's private GitLab API token.
|
||||
issue_iid: The internal ID (IID) of the issue.
|
||||
label: The label to add.
|
||||
"""
|
||||
api_url = (
|
||||
f"https://gitlab.com/api/v4/projects/{EIGEN_PROJECT_ID}/issues/{issue_iid}"
|
||||
)
|
||||
headers = {"PRIVATE-TOKEN": private_token}
|
||||
payload = {"add_labels": label}
|
||||
|
||||
try:
|
||||
response = requests.put(api_url, headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
print(f"✅ Successfully added label '{label}' to Issue #{issue_iid}.")
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"❌ Error updating Issue #{issue_iid}: {e}", file=sys.stderr)
|
||||
if hasattr(e, "response") and e.response is not None:
|
||||
print(f" Response: {e.response.text}", file=sys.stderr)
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main function to parse arguments and trigger the labelling process.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Add a label to GitLab merge requests and issues.",
|
||||
formatter_class=argparse.RawTextHelpFormatter,
|
||||
)
|
||||
parser.add_argument("label", help="The label to add.")
|
||||
parser.add_argument(
|
||||
"--mrs",
|
||||
nargs="+",
|
||||
type=int,
|
||||
help="A space-separated list of Merge Request IIDs.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--issues", nargs="+", type=int, help="A space-separated list of Issue IIDs."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--gitlab_private_token",
|
||||
help="Your GitLab private access token. \n(Best practice is to use the GITLAB_PRIVATE_TOKEN environment variable instead.)",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
# Prefer environment variable for the token for better security.
|
||||
gitlab_private_token = args.gitlab_private_token or os.environ.get(
|
||||
"GITLAB_PRIVATE_TOKEN"
|
||||
)
|
||||
if not gitlab_private_token:
|
||||
print("Error: GitLab private token not found.", file=sys.stderr)
|
||||
print(
|
||||
"Please provide it using the --token argument or by setting the GITLAB_PRIVATE_TOKEN environment variable.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
if not args.mrs and not args.issues:
|
||||
print(
|
||||
"Error: You must provide at least one merge request (--mrs) or issue (--issues) ID.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
print("-" * 30)
|
||||
|
||||
if args.mrs:
|
||||
print(f"Processing {len(args.mrs)} merge request(s)...")
|
||||
for mr_iid in args.mrs:
|
||||
add_label_to_mr(gitlab_private_token, mr_iid, args.label)
|
||||
|
||||
if args.issues:
|
||||
print(f"\nProcessing {len(args.issues)} issue(s)...")
|
||||
for issue_iid in args.issues:
|
||||
add_label_to_issue(gitlab_private_token, issue_iid, args.label)
|
||||
|
||||
print("-" * 30)
|
||||
print("Script finished.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
200
scripts/gitlab_api_mrs.py
Normal file
200
scripts/gitlab_api_mrs.py
Normal file
@@ -0,0 +1,200 @@
|
||||
"""Downloads all MRs from GitLab matching specified criteria."""
|
||||
|
||||
import argparse
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
import requests
|
||||
import sys
|
||||
|
||||
EIGEN_PROJECT_ID = 15462818 # Taken from the gitlab project page.
|
||||
|
||||
|
||||
def date(date_string: str):
|
||||
"""Convert a date YY-MM-DD string to a datetime object."""
|
||||
try:
|
||||
return datetime.strptime(date_string, "%Y-%m-%d")
|
||||
except ValueError:
|
||||
msg = f"Not a valid date: '{date_string}'. Expected format is YYYY-MM-DD."
|
||||
raise argparse.ArgumentTypeError(msg)
|
||||
|
||||
|
||||
def _get_api_query(
|
||||
gitlab_private_token: str, url: str, params: dict[str, str] | None = None
|
||||
):
|
||||
next_page = "1"
|
||||
if not params:
|
||||
params = dict()
|
||||
params["per_page"] = "100"
|
||||
headers = {"PRIVATE-TOKEN": gitlab_private_token}
|
||||
out = []
|
||||
while next_page:
|
||||
params["page"] = next_page
|
||||
try:
|
||||
resp = requests.head(url=url, params=params, headers=headers)
|
||||
if resp.status_code != 200:
|
||||
print("Request failed: ", resp, file=sys.stderr)
|
||||
break
|
||||
|
||||
next_next_page = resp.headers["x-next-page"]
|
||||
|
||||
resp = requests.get(url=url, params=params, headers=headers)
|
||||
if resp.status_code != 200:
|
||||
# Try again.
|
||||
continue
|
||||
|
||||
out.extend(resp.json())
|
||||
# Advance at the end, in case an exception occurs above so we can retry
|
||||
next_page = next_next_page
|
||||
except:
|
||||
# Keep same next_page
|
||||
continue
|
||||
return out
|
||||
|
||||
|
||||
def get_merge_requests(
|
||||
gitlab_private_token: str,
|
||||
author_username: str | None = None,
|
||||
state: str | None = None,
|
||||
created_before: datetime.datetime | None = None,
|
||||
created_after: datetime.datetime | None = None,
|
||||
updated_after: datetime.datetime | None = None,
|
||||
updated_before: datetime.datetime | None = None,
|
||||
related_issues: bool = False,
|
||||
closes_issues: bool = False,
|
||||
):
|
||||
"""Return list of merge requests.
|
||||
|
||||
Args:
|
||||
gitlab_token: GitLab API token.
|
||||
author_username: MR author username.
|
||||
state: MR state (merged, opened, closed, locked).
|
||||
created_after: datetime start of period.
|
||||
created_before: datetime end of period.
|
||||
updated_after: datetime start of period.
|
||||
updated_before: datetime end of period.
|
||||
|
||||
Returns:
|
||||
List of merge requests.
|
||||
"""
|
||||
url = (
|
||||
"https://gitlab.com/api/v4/projects/"
|
||||
+ str(EIGEN_PROJECT_ID)
|
||||
+ "/merge_requests"
|
||||
)
|
||||
params = dict()
|
||||
if author_username:
|
||||
params["author_username"] = author_username
|
||||
|
||||
if state:
|
||||
params["state"] = state
|
||||
|
||||
if created_before:
|
||||
params["created_before"] = created_before.isoformat()
|
||||
|
||||
if created_after:
|
||||
params["created_after"] = created_after.isoformat()
|
||||
|
||||
if updated_before:
|
||||
params["updated_before"] = updated_before.isoformat()
|
||||
|
||||
if updated_after:
|
||||
params["updated_after"] = updated_after.isoformat()
|
||||
|
||||
params["order_by"] = "created_at"
|
||||
params["sort"] = "asc"
|
||||
|
||||
next_page = "1"
|
||||
params["per_page"] = "100"
|
||||
headers = {"PRIVATE-TOKEN": gitlab_private_token}
|
||||
|
||||
mrs = _get_api_query(gitlab_private_token, url, params)
|
||||
|
||||
if related_issues:
|
||||
for mr in mrs:
|
||||
mr["related_issues"] = _get_api_query(
|
||||
gitlab_private_token, f"{url}/{mr['iid']}/related_issues"
|
||||
)
|
||||
|
||||
if closes_issues:
|
||||
for mr in mrs:
|
||||
mr["closes_issues"] = _get_api_query(
|
||||
gitlab_private_token, f"{url}/{mr['iid']}/closes_issues"
|
||||
)
|
||||
|
||||
return mrs
|
||||
|
||||
|
||||
def main(_):
|
||||
parser = argparse.ArgumentParser(
|
||||
description="A script to download all MRs from GitLab matching specified criteria."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--gitlab_private_token",
|
||||
type=str,
|
||||
help="GitLab private API token. Defaults to the GITLAB_PRIVATE_TOKEN environment variable if set.",
|
||||
)
|
||||
parser.add_argument("--author", type=str, help="The name of the author.")
|
||||
parser.add_argument(
|
||||
"--state",
|
||||
type=str,
|
||||
choices=["merged", "opened", "closed", "locked"],
|
||||
help="The state of the MR.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--created_before",
|
||||
type=date,
|
||||
help="The created-before date in YYYY-MM-DD format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--created_after",
|
||||
type=date,
|
||||
help="The created-after date in YYYY-MM-DD format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--updated_before",
|
||||
type=date,
|
||||
help="The updated-before date in YYYY-MM-DD format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--updated_after",
|
||||
type=date,
|
||||
help="The updated-after date in YYYY-MM-DD format.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--related_issues", action="store_true", help="Query for related issues."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--closes_issues",
|
||||
action="store_true",
|
||||
help="Query for issues closed by the MR.",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.gitlab_private_token:
|
||||
args.gitlab_private_token = os.getenv("GITLAB_PRIVATE_TOKEN")
|
||||
if not args.gitlab_private_token:
|
||||
print("Could not determine GITLAB_PRIVATE_TOKEN.", file=sys.stderr)
|
||||
parser.print_usage()
|
||||
sys.exit(1)
|
||||
|
||||
# Parse the arguments from the command line
|
||||
mrs = get_merge_requests(
|
||||
gitlab_private_token=args.gitlab_private_token,
|
||||
author_username=args.author,
|
||||
state=args.state,
|
||||
created_before=args.created_before,
|
||||
created_after=args.created_after,
|
||||
updated_before=args.updated_before,
|
||||
updated_after=args.updated_after,
|
||||
related_issues=args.related_issues,
|
||||
closes_issues=args.closes_issues,
|
||||
)
|
||||
|
||||
mr_str = json.dumps(mrs, indent=2)
|
||||
print(mr_str)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv)
|
||||
@@ -1,9 +1,6 @@
|
||||
# Powershell script to set up MSVC environment.
|
||||
|
||||
param ($EIGEN_CI_MSVC_ARCH, $EIGEN_CI_MSVC_VER)
|
||||
|
||||
Set-PSDebug -Trace 1
|
||||
|
||||
function Get-ScriptDirectory { Split-Path $MyInvocation.ScriptName }
|
||||
|
||||
# Set defaults if not already set.
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <limits>
|
||||
#include <Eigen/Eigenvalues>
|
||||
#include <Eigen/SparseCore>
|
||||
#include <unsupported/Eigen/MatrixFunctions>
|
||||
|
||||
template <typename MatrixType>
|
||||
void selfadjointeigensolver_essential_check(const MatrixType& m) {
|
||||
@@ -135,11 +136,13 @@ void selfadjointeigensolver(const MatrixType& m) {
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.eigenvectors());
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.operatorSqrt());
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.operatorInverseSqrt());
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.operatorExp());
|
||||
|
||||
eiSymmUninitialized.compute(symmA, false);
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.eigenvectors());
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.operatorSqrt());
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.operatorInverseSqrt());
|
||||
VERIFY_RAISES_ASSERT(eiSymmUninitialized.operatorExp());
|
||||
|
||||
// test Tridiagonalization's methods
|
||||
Tridiagonalization<MatrixType> tridiag(symmC);
|
||||
@@ -167,6 +170,14 @@ void selfadjointeigensolver(const MatrixType& m) {
|
||||
eiSymmTridiag.eigenvectors().real().transpose());
|
||||
}
|
||||
|
||||
// Test matrix expponential from eigendecomposition.
|
||||
// First scale to avoid overflow.
|
||||
symmB = symmB / symmB.norm();
|
||||
eiSymm.compute(symmB);
|
||||
MatrixType expSymmB = eiSymm.operatorExp();
|
||||
symmB = symmB.template selfadjointView<Lower>();
|
||||
VERIFY_IS_APPROX(expSymmB, symmB.exp());
|
||||
|
||||
if (rows > 1 && rows < 20) {
|
||||
// Test matrix with NaN
|
||||
symmC(0, 0) = std::numeric_limits<typename MatrixType::RealScalar>::quiet_NaN();
|
||||
|
||||
@@ -126,12 +126,12 @@ void homogeneous(void) {
|
||||
}
|
||||
|
||||
{
|
||||
const Eigen::PermutationMatrix<Size> P{Eigen::Vector<int, Size>::EqualSpaced(0, 1)};
|
||||
const auto right = Eigen::Vector<Scalar, Size - 1>::Random().eval().homogeneous();
|
||||
const auto left = Eigen::RowVector<Scalar, Size - 1>::Random().eval().homogeneous();
|
||||
PermutationMatrix<Size> P{Vector<int, Size>::EqualSpaced(0, 1).reverse()};
|
||||
auto right = Vector<Scalar, Size - 1>::Random().eval().nestByValue().homogeneous();
|
||||
auto left = RowVector<Scalar, Size - 1>::Random().eval().nestByValue().homogeneous();
|
||||
|
||||
VERIFY_IS_APPROX(P * right, P * right.eval());
|
||||
VERIFY_IS_APPROX(left * P, left.eval() * P);
|
||||
VERIFY_IS_APPROX(P * right, right.reverse());
|
||||
VERIFY_IS_APPROX(left * P, left.reverse());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -94,6 +94,19 @@ void jacobisvd_verify_inputs(const MatrixType& input = MatrixType()) {
|
||||
(int)ColPivHouseholderQRPreconditioner));
|
||||
}
|
||||
|
||||
template <typename MatrixType>
|
||||
void svd_triangular_matrix(const MatrixType& input = MatrixType()) {
|
||||
MatrixType matrix(input.rows(), input.cols());
|
||||
svd_fill_random(matrix);
|
||||
// Make sure that we only consider the 'Lower' part of the matrix.
|
||||
MatrixType matrix_self_adj = matrix.template selfadjointView<Lower>().toDenseMatrix();
|
||||
|
||||
JacobiSVD<MatrixType, ComputeFullV> svd_triangular(matrix.template selfadjointView<Lower>());
|
||||
JacobiSVD<MatrixType, ComputeFullV> svd_full(matrix_self_adj);
|
||||
|
||||
VERIFY_IS_APPROX(svd_triangular.singularValues(), svd_full.singularValues());
|
||||
}
|
||||
|
||||
namespace Foo {
|
||||
// older compiler require a default constructor for Bar
|
||||
// cf: https://stackoverflow.com/questions/7411515/
|
||||
@@ -211,5 +224,10 @@ EIGEN_DECLARE_TEST(jacobisvd) {
|
||||
|
||||
CALL_SUBTEST_55(svd_underoverflow<void>());
|
||||
|
||||
// Check that the TriangularBase constructor works
|
||||
CALL_SUBTEST_56((svd_triangular_matrix<Matrix3d>()));
|
||||
CALL_SUBTEST_57((svd_triangular_matrix<Matrix4f>()));
|
||||
CALL_SUBTEST_58((svd_triangular_matrix<Matrix<double, 10, 10>>()));
|
||||
|
||||
msvc_workaround();
|
||||
}
|
||||
|
||||
@@ -352,7 +352,7 @@ void test_cref_move_ctor(const DenseBase<Derived> &expr) {
|
||||
const double *data1 = cref1.data(), *obj_data1 = static_cast<CRefDerived &>(cref1).m_object.data();
|
||||
VERIFY(test_is_equal(data1, obj_data1, owns_data));
|
||||
CRef cref2(std::move(cref1));
|
||||
VERIFY_IS_EQUAL(data1, cref1.data());
|
||||
VERIFY_IS_EQUAL(std::uintptr_t(data1), std::uintptr_t(cref1.data()));
|
||||
const double *data2 = cref2.data(), *obj_data2 = static_cast<CRefDerived &>(cref2).m_object.data();
|
||||
VERIFY(test_is_equal(data1, data2, MatrixType::MaxSizeAtCompileTime == Dynamic || !owns_data));
|
||||
VERIFY(test_is_equal(data1, obj_data2, MatrixType::MaxSizeAtCompileTime == Dynamic && owns_data));
|
||||
|
||||
Reference in New Issue
Block a user