-
Notifications
You must be signed in to change notification settings - Fork 374
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added reference implementation of Hermitian EVD.
Details: - Defined a new level-4 operation, hevd, which performs a Hermitian eigenvalue decomposition (EVD) via the QR algorithm (i.e., Givens rotations). The operation has two companion functions: - rhevd: a so-called "reverse" Hermitian EVD in which the eigenvector and eigenvalue output from an hEVD is used to recompute the original Hermitian matrix. - hevpinv: an operation which explicitly computes the pseudo-inverse of a Hermitian matrix via hevd, inverttv, and rhevd, where inverttv inverts each element of a vector, unless the absolute value of the element is less than a given threshold, in which case the value is set to 0. The implementation of hevd is, for now, based on code that was converted via f2c. (At some point in the future, the implementation will likely be replaced (or at least augmented) by a native implementation based on the so-called Restructured QR algorithm.) This f2c'ed code lives in frame/4/f2c and is based on netlib LAPACK 3.9.1. - Added a testsuite module to test the new hevd operation. It is tested by default for all four input.operations.* files. - Added scripts, called via a Makefile, that gradually process the output of f2c into something that can compile and link in the BLIS build system (without reliance on libf2c). These scripts (and Makefile) live in frame/4/other/staging and the original Fortran code is in frame/4/other/staging/netlib. - Implemented fscanm and fscanv operations, which will read in a matrix or vector, respectively, from a C file stream, as well as their stdin-assumping counterparts, scanm and scanv. For now, these operations live in frame/base/scan. - Implemented inverttv, which inverts each element of a vector unless the absolute value of the element in question is less than a given threshold, in which case the value is set to 0 (instead of being inverted). - Defined dlamch_() and slamch_() in frame/compat/bla_lamch.c, which are implemented as wrappers to their pre-existing bli_?lamch() counterparts. - Changed various BLAS code in frame/compat to call bla_lsame_() instead of lsame_(). Also relocated frame/compat/f2c/bla_lsame.c to 'util' subdir. - Defined f2c_[cz]dot[cu]() functions, which serve as f2c-compatible wrappers to the corresponding BLAS functions. (By f2c-compatible, we mean that they "return" their result in a hidden extra parameter that is emitted by f2c.) - Added various missing operations to frame/compate/f2c/util, such as: bla_r_real(), bla_d_real(), bla_i_len(), bla_nint(), bla_pow_??(), bla_s_cmp(), and bla_s_copy(). (In addition, bla_a_max() and bla_a_min() were implemented as macros.) These functions serve to provide siloed libf2c functionality in a BLIS-specific namespace. - Modified existing bla_r_abs(), bla_d_abs(), and bla_r_imag(), to use call-by-value conventions. Also return double in all cases, even if input is a float (bla_real). - Defined PASTEF2C macros that works like PASTEF77 except that it also prepends f2c_ to the final token. - Whitespace changes.
- Loading branch information
Showing
338 changed files
with
68,981 additions
and
325 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.