80#ifdef HAVE_TEUCHOS_ARPREC
81#include <arprec/mp_real.h>
84#ifdef HAVE_TEUCHOS_GNU_MP
92#ifdef HAVE_TEUCHOS_ARPREC
94#elif defined(HAVE_TEUCHOS_GNU_MP)
95#define SType1 mpf_class
102template<
typename TYPE>
105template<
typename TYPE>
108template<
typename TYPE1,
typename TYPE2>
111template<
typename TYPE1,
typename TYPE2>
114#ifdef HAVE_TEUCHOS_ARPREC
122#ifdef HAVE_TEUCHOS_GNU_MP
130template<
typename TYPE>
133template<
typename TYPE>
136template<
typename TYPE>
139template<
typename TYPE>
142#ifdef HAVE_TEUCHOS_ARPREC
160 hilbertCLP.setOption(
"precision", &precision,
"Arbitrary precision");
161 bool verbose =
false;
162 hilbertCLP.setOption(
"verbose",
"quiet", &verbose,
"Verbosity of example");
167#ifdef HAVE_TEUCHOS_ARPREC
168 mp::mp_init( precision );
171#ifdef HAVE_TEUCHOS_GNU_MP
173 std::cout<<
"The precision of the GNU MP variable is (in bits) : "<<
mpf_get_default_prec() << std::endl;
210 std::cout <<
typeid(
result1 ).name() <<
" -- Cholesky factorization failed (negative diagonal) at row "<<-
compSType1<< std::endl;
213 delete []
H1;
H1 = 0;
214 delete []
b1;
b1 = 0;
229 std::cout <<
typeid(
result2 ).name() <<
" -- Cholesky factorization failed (negative diagonal) at row "<<-
compSType2<< std::endl;
232 delete []
H2;
H2 = 0;
233 delete []
b2;
b2 = 0;
256 std::cout <<
typeid(
result1_2 ).name() <<
" (converted) -- Cholesky factorization failed (negative diagonal) at row "<<-
convSType2<< std::endl;
260 delete []
H2;
H2 = 0;
261 delete []
b2;
b2 = 0;
262 delete []
H1;
H1 = 0;
263 delete []
b1;
b1 = 0;
286 std::cout <<
typeid(
result2_1 ).name() <<
" (converted) -- Cholesky factorization failed (negative diagonal) at row "<<-
convSType1<< std::endl;
290 delete []
H1;
H1 = 0;
291 delete []
b1;
b1 = 0;
292 delete []
H2;
H2 = 0;
293 delete []
b2;
b2 = 0;
296 std::cout <<
"***************************************************" << std::endl;
297 std::cout <<
"Dimension of Hilbert Matrix : "<< n << std::endl;
298 std::cout <<
"***************************************************" << std::endl;
299 std::cout <<
"Datatype : Absolute error || x_hat - x ||"<< std::endl;
300 std::cout <<
"---------------------------------------------------" << std::endl;
303 std::cout <<
typeid(
result1 ).name() <<
"\t : "<<
result1 << std::endl;
312 std::cout <<
typeid(
result2 ).name() <<
"\t : "<<
result2 << std::endl;
319#ifdef HAVE_TEUCHOS_ARPREC
326template<
typename TYPE>
329 for(
int i = 0;
i < n;
i++) {
330 for(
int j = 0;
j < n;
j++) {
336template<
typename TYPE>
340 for(
int i = 0;
i < n;
i++) {
342 for(
int j = 0;
j < n;
j++) {
348template<
typename TYPE1,
typename TYPE2>
350 for(
int i = 0;
i < n;
i++) {
351 for(
int j = 0;
j < n;
j++) {
352 B[
i + (
j * n)] =
A[
i + (
j * n)];
357template<
typename TYPE1,
typename TYPE2>
359 for(
int i = 0;
i < n;
i++) {
364#ifdef HAVE_TEUCHOS_ARPREC
367 for(
int i = 0;
i < n;
i++) {
368 for(
int j = 0;
j < n;
j++) {
376 for(
int i = 0;
i < n;
i++) {
382#ifdef HAVE_TEUCHOS_GNU_MP
385 for(
int i = 0;
i < n;
i++) {
386 for(
int j = 0;
j < n;
j++) {
387 B[
i + (
j * n)] =
A[
i + (
j * n)].get_d();
394 for(
int i = 0;
i < n;
i++) {
400template<
typename TYPE>
403 for(
int k = 0;
k < n;
k++) {
404 for(
int j =
k + 1;
j < n;
j++) {
406 for(
int i =
j;
i < n;
i++) {
414 for(
int i =
k;
i < n;
i++) {
421template<
typename TYPE>
428 for(
int i = 0;
i < n;
i++) {
433 blasObj.TRSM(
Teuchos::LEFT_SIDE,
Teuchos::UPPER_TRI,
Teuchos::TRANS,
Teuchos::NON_UNIT_DIAG, n, 1,
scal1,
H, n,
b, n);
434 blasObj.TRSM(
Teuchos::LEFT_SIDE,
Teuchos::UPPER_TRI,
Teuchos::NO_TRANS,
Teuchos::NON_UNIT_DIAG, n, 1,
scal1,
H, n,
b, n);
442template<
typename TYPE>
445 for(
int i = 0;
i < n;
i++) {
446 std::cout <<
" " << x[
i];
448 std::cout <<
" ]" << std::endl;
451template<
typename TYPE>
454 for(
int i = 0;
i <
m;
i++) {
459 for(
int j = 0;
j < n;
j++) {
460 std::cout <<
" " <<
a[
i + (
j *
m)];
464 std::cout << std::endl;
467 std::cout <<
"]" << std::endl;
470#ifdef HAVE_TEUCHOS_ARPREC
474 for(
int i = 0;
i < n;
i++) {
480 std::cout <<
"]" << std::endl;
486 for(
int i = 0;
i <
m;
i++) {
491 for(
int j = 0;
j < n;
j++) {
495 std::cout <<
" " <<
a[
i + (
j *
m)];
499 std::cout << std::endl;
502 std::cout <<
"]" << std::endl;
Templated interface class to BLAS routines.
Basic command line parser for input from (argc,argv[])
Teuchos header file which uses auto-configuration information to include necessary C++ headers.
Class that helps parse command line input arguments from (argc,argv[]) and set options.
Concrete serial communicator subclass.
std::string Teuchos_Version()
void ConstructHilbertMatrix(TYPE *, int)
void PrintArrayAsVector(TYPE *, int)
int Solve(int, TYPE *, TYPE *, TYPE *)
int Cholesky(TYPE *, int)
void PrintArrayAsMatrix(TYPE *, int, int)
void ConvertHilbertSumVector(TYPE1 *, TYPE2 *, int)
void ConvertHilbertMatrix(TYPE1 *, TYPE2 *, int)
void ConstructHilbertSumVector(TYPE *, int)
static T one()
Returns representation of one for this scalar type.
static T zero()
Returns representation of zero for this scalar type.
static T squareroot(T x)
Returns a number of magnitudeType that is the square root of this scalar type x.