SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ pcblas2tstchk()

subroutine pcblas2tstchk ( integer  ictxt,
integer  nout,
integer  nrout,
character*1  uplo,
character*1  trans,
character*1  diag,
integer  m,
integer  n,
complex  alpha,
complex, dimension( * )  a,
complex, dimension( * )  pa,
integer  ia,
integer  ja,
integer, dimension( * )  desca,
complex, dimension( * )  x,
complex, dimension( * )  px,
integer  ix,
integer  jx,
integer, dimension( * )  descx,
integer  incx,
complex  beta,
complex, dimension( * )  y,
complex, dimension( * )  py,
integer  iy,
integer  jy,
integer, dimension( * )  descy,
integer  incy,
real  thresh,
complex  rogue,
real, dimension( * )  work,
integer  info 
)

Definition at line 2563 of file pcblas2tst.f.

2568*
2569* -- PBLAS test routine (version 2.0) --
2570* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
2571* and University of California, Berkeley.
2572* April 1, 1998
2573*
2574* .. Scalar Arguments ..
2575 CHARACTER*1 DIAG, TRANS, UPLO
2576 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2577 $ JY, M, N, NOUT, NROUT
2578 REAL THRESH
2579 COMPLEX ALPHA, BETA, ROGUE
2580* ..
2581* .. Array Arguments ..
2582 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2583 REAL WORK( * )
2584 COMPLEX A( * ), PA( * ), PX( * ), PY( * ), X( * ),
2585 $ Y( * )
2586* ..
2587*
2588* Purpose
2589* =======
2590*
2591* PCBLAS2TSTCHK performs the computational tests of the Level 2 PBLAS.
2592*
2593* Notes
2594* =====
2595*
2596* A description vector is associated with each 2D block-cyclicly dis-
2597* tributed matrix. This vector stores the information required to
2598* establish the mapping between a matrix entry and its corresponding
2599* process and memory location.
2600*
2601* In the following comments, the character _ should be read as
2602* "of the distributed matrix". Let A be a generic term for any 2D
2603* block cyclicly distributed matrix. Its description vector is DESCA:
2604*
2605* NOTATION STORED IN EXPLANATION
2606* ---------------- --------------- ------------------------------------
2607* DTYPE_A (global) DESCA( DTYPE_ ) The descriptor type.
2608* CTXT_A (global) DESCA( CTXT_ ) The BLACS context handle, indicating
2609* the NPROW x NPCOL BLACS process grid
2610* A is distributed over. The context
2611* itself is global, but the handle
2612* (the integer value) may vary.
2613* M_A (global) DESCA( M_ ) The number of rows in the distribu-
2614* ted matrix A, M_A >= 0.
2615* N_A (global) DESCA( N_ ) The number of columns in the distri-
2616* buted matrix A, N_A >= 0.
2617* IMB_A (global) DESCA( IMB_ ) The number of rows of the upper left
2618* block of the matrix A, IMB_A > 0.
2619* INB_A (global) DESCA( INB_ ) The number of columns of the upper
2620* left block of the matrix A,
2621* INB_A > 0.
2622* MB_A (global) DESCA( MB_ ) The blocking factor used to distri-
2623* bute the last M_A-IMB_A rows of A,
2624* MB_A > 0.
2625* NB_A (global) DESCA( NB_ ) The blocking factor used to distri-
2626* bute the last N_A-INB_A columns of
2627* A, NB_A > 0.
2628* RSRC_A (global) DESCA( RSRC_ ) The process row over which the first
2629* row of the matrix A is distributed,
2630* NPROW > RSRC_A >= 0.
2631* CSRC_A (global) DESCA( CSRC_ ) The process column over which the
2632* first column of A is distributed.
2633* NPCOL > CSRC_A >= 0.
2634* LLD_A (local) DESCA( LLD_ ) The leading dimension of the local
2635* array storing the local blocks of
2636* the distributed matrix A,
2637* IF( Lc( 1, N_A ) > 0 )
2638* LLD_A >= MAX( 1, Lr( 1, M_A ) )
2639* ELSE
2640* LLD_A >= 1.
2641*
2642* Let K be the number of rows of a matrix A starting at the global in-
2643* dex IA,i.e, A( IA:IA+K-1, : ). Lr( IA, K ) denotes the number of rows
2644* that the process of row coordinate MYROW ( 0 <= MYROW < NPROW ) would
2645* receive if these K rows were distributed over NPROW processes. If K
2646* is the number of columns of a matrix A starting at the global index
2647* JA, i.e, A( :, JA:JA+K-1, : ), Lc( JA, K ) denotes the number of co-
2648* lumns that the process MYCOL ( 0 <= MYCOL < NPCOL ) would receive if
2649* these K columns were distributed over NPCOL processes.
2650*
2651* The values of Lr() and Lc() may be determined via a call to the func-
2652* tion PB_NUMROC:
2653* Lr( IA, K ) = PB_NUMROC( K, IA, IMB_A, MB_A, MYROW, RSRC_A, NPROW )
2654* Lc( JA, K ) = PB_NUMROC( K, JA, INB_A, NB_A, MYCOL, CSRC_A, NPCOL )
2655*
2656* Arguments
2657* =========
2658*
2659* ICTXT (local input) INTEGER
2660* On entry, ICTXT specifies the BLACS context handle, indica-
2661* ting the global context of the operation. The context itself
2662* is global, but the value of ICTXT is local.
2663*
2664* NOUT (global input) INTEGER
2665* On entry, NOUT specifies the unit number for the output file.
2666* When NOUT is 6, output to screen, when NOUT is 0, output to
2667* stderr. NOUT is only defined for process 0.
2668*
2669* NROUT (global input) INTEGER
2670* On entry, NROUT specifies which routine will be tested as
2671* follows:
2672* If NROUT = 1, PCGEMV will be tested;
2673* else if NROUT = 2, PCHEMV will be tested;
2674* else if NROUT = 3, PCTRMV will be tested;
2675* else if NROUT = 4, PCTRSV will be tested;
2676* else if NROUT = 5, PCGERU will be tested;
2677* else if NROUT = 6, PCGERC will be tested;
2678* else if NROUT = 7, PCHER will be tested;
2679* else if NROUT = 8, PCHER2 will be tested;
2680*
2681* UPLO (global input) CHARACTER*1
2682* On entry, UPLO specifies if the upper or lower part of the
2683* matrix operand is to be referenced.
2684*
2685* TRANS (global input) CHARACTER*1
2686* On entry, TRANS specifies if the matrix operand A is to be
2687* transposed.
2688*
2689* DIAG (global input) CHARACTER*1
2690* On entry, DIAG specifies if the triangular matrix operand is
2691* unit or non-unit.
2692*
2693* M (global input) INTEGER
2694* On entry, M specifies the number of rows of A.
2695*
2696* N (global input) INTEGER
2697* On entry, N specifies the number of columns of A.
2698*
2699* ALPHA (global input) COMPLEX
2700* On entry, ALPHA specifies the scalar alpha.
2701*
2702* A (local input/local output) COMPLEX array
2703* On entry, A is an array of dimension (DESCA( M_ ),*). This
2704* array contains a local copy of the initial entire matrix PA.
2705*
2706* PA (local input) COMPLEX array
2707* On entry, PA is an array of dimension (DESCA( LLD_ ),*). This
2708* array contains the local entries of the matrix PA.
2709*
2710* IA (global input) INTEGER
2711* On entry, IA specifies A's global row index, which points to
2712* the beginning of the submatrix sub( A ).
2713*
2714* JA (global input) INTEGER
2715* On entry, JA specifies A's global column index, which points
2716* to the beginning of the submatrix sub( A ).
2717*
2718* DESCA (global and local input) INTEGER array
2719* On entry, DESCA is an integer array of dimension DLEN_. This
2720* is the array descriptor for the matrix A.
2721*
2722* X (local input/local output) COMPLEX array
2723* On entry, X is an array of dimension (DESCX( M_ ),*). This
2724* array contains a local copy of the initial entire matrix PX.
2725*
2726* PX (local input) COMPLEX array
2727* On entry, PX is an array of dimension (DESCX( LLD_ ),*). This
2728* array contains the local entries of the matrix PX.
2729*
2730* IX (global input) INTEGER
2731* On entry, IX specifies X's global row index, which points to
2732* the beginning of the submatrix sub( X ).
2733*
2734* JX (global input) INTEGER
2735* On entry, JX specifies X's global column index, which points
2736* to the beginning of the submatrix sub( X ).
2737*
2738* DESCX (global and local input) INTEGER array
2739* On entry, DESCX is an integer array of dimension DLEN_. This
2740* is the array descriptor for the matrix X.
2741*
2742* INCX (global input) INTEGER
2743* On entry, INCX specifies the global increment for the
2744* elements of X. Only two values of INCX are supported in
2745* this version, namely 1 and M_X. INCX must not be zero.
2746*
2747* BETA (global input) COMPLEX
2748* On entry, BETA specifies the scalar beta.
2749*
2750* Y (local input/local output) COMPLEX array
2751* On entry, Y is an array of dimension (DESCY( M_ ),*). This
2752* array contains a local copy of the initial entire matrix PY.
2753*
2754* PY (local input) COMPLEX array
2755* On entry, PY is an array of dimension (DESCY( LLD_ ),*). This
2756* array contains the local entries of the matrix PY.
2757*
2758* IY (global input) INTEGER
2759* On entry, IY specifies Y's global row index, which points to
2760* the beginning of the submatrix sub( Y ).
2761*
2762* JY (global input) INTEGER
2763* On entry, JY specifies Y's global column index, which points
2764* to the beginning of the submatrix sub( Y ).
2765*
2766* DESCY (global and local input) INTEGER array
2767* On entry, DESCY is an integer array of dimension DLEN_. This
2768* is the array descriptor for the matrix Y.
2769*
2770* INCY (global input) INTEGER
2771* On entry, INCY specifies the global increment for the
2772* elements of Y. Only two values of INCY are supported in
2773* this version, namely 1 and M_Y. INCY must not be zero.
2774*
2775* THRESH (global input) REAL
2776* On entry, THRESH is the threshold value for the test ratio.
2777*
2778* ROGUE (global input) COMPLEX
2779* On entry, ROGUE specifies the constant used to pad the
2780* non-referenced part of triangular, symmetric or Hermitian ma-
2781* trices.
2782*
2783* WORK (workspace) REAL array
2784* On entry, WORK is an array of dimension LWORK where LWORK is
2785* at least MAX( M, N ). This array is used to store the compu-
2786* ted gauges (see PCMVCH).
2787*
2788* INFO (global output) INTEGER
2789* On exit, if INFO = 0, no error has been found, otherwise
2790* if( MOD( INFO, 2 ) = 1 ) then an error on A has been found,
2791* if( MOD( INFO/2, 2 ) = 1 ) then an error on X has been found,
2792* if( MOD( INFO/4, 2 ) = 1 ) then an error on Y has been found.
2793*
2794* -- Written on April 1, 1998 by
2795* Antoine Petitet, University of Tennessee, Knoxville 37996, USA.
2796*
2797* =====================================================================
2798*
2799* .. Parameters ..
2800 REAL RZERO
2801 parameter( rzero = 0.0e+0 )
2802 COMPLEX ONE, ZERO
2803 parameter( one = ( 1.0e+0, 0.0e+0 ),
2804 $ zero = ( 0.0e+0, 0.0e+0 ) )
2805 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2806 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2807 $ RSRC_
2808 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
2809 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
2810 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
2811 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
2812* ..
2813* .. Local Scalars ..
2814 INTEGER I, MYCOL, MYROW, NPCOL, NPROW
2815 REAL ERR
2816 COMPLEX ALPHA1
2817* ..
2818* .. Local Arrays ..
2819 INTEGER IERR( 3 )
2820* ..
2821* .. External Subroutines ..
2822 EXTERNAL blacs_gridinfo, ctrsv, pb_claset, pcchkmin,
2823 $ pcchkvin, pcmvch, pctrmv, pcvmch, pcvmch2
2824* ..
2825* .. External Functions ..
2826 LOGICAL LSAME
2827 EXTERNAL lsame
2828* ..
2829* .. Intrinsic Functions ..
2830 INTRINSIC cmplx, min, real
2831* ..
2832* .. Executable Statements ..
2833*
2834 info = 0
2835*
2836* Quick return if possible
2837*
2838 IF( ( m.LE.0 ).OR.( n.LE.0 ) )
2839 $ RETURN
2840*
2841* Start the operations
2842*
2843 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
2844*
2845 DO 10 i = 1, 3
2846 ierr( i ) = 0
2847 10 CONTINUE
2848*
2849 IF( nrout.EQ.1 ) THEN
2850*
2851* Test PCGEMV
2852*
2853* Check the resulting vector Y
2854*
2855 CALL pcmvch( ictxt, trans, m, n, alpha, a, ia, ja, desca, x,
2856 $ ix, jx, descx, incx, beta, y, py, iy, jy, descy,
2857 $ incy, work, err, ierr( 3 ) )
2858*
2859 IF( ierr( 3 ).NE.0 ) THEN
2860 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2861 $ WRITE( nout, fmt = 9997 )
2862 ELSE IF( err.GT.thresh ) THEN
2863 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2864 $ WRITE( nout, fmt = 9996 ) err
2865 END IF
2866*
2867* Check the input-only arguments
2868*
2869 CALL pcchkmin( err, m, n, a, pa, ia, ja, desca, ierr( 1 ) )
2870 IF( lsame( trans, 'N' ) ) THEN
2871 CALL pcchkvin( err, n, x, px, ix, jx, descx, incx,
2872 $ ierr( 2 ) )
2873 ELSE
2874 CALL pcchkvin( err, m, x, px, ix, jx, descx, incx,
2875 $ ierr( 2 ) )
2876 END IF
2877*
2878 ELSE IF( nrout.EQ.2 ) THEN
2879*
2880* Test PCHEMV
2881*
2882* Check the resulting vector Y
2883*
2884 CALL pcmvch( ictxt, 'No transpose', n, n, alpha, a, ia, ja,
2885 $ desca, x, ix, jx, descx, incx, beta, y, py, iy,
2886 $ jy, descy, incy, work, err, ierr( 3 ) )
2887*
2888 IF( ierr( 3 ).NE.0 ) THEN
2889 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2890 $ WRITE( nout, fmt = 9997 )
2891 ELSE IF( err.GT.thresh ) THEN
2892 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2893 $ WRITE( nout, fmt = 9996 ) err
2894 END IF
2895*
2896* Check the input-only arguments
2897*
2898 IF( lsame( uplo, 'L' ) ) THEN
2899 CALL pb_claset( 'Upper', n-1, n-1, 0, rogue, rogue,
2900 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2901 ELSE
2902 CALL pb_claset( 'Lower', n-1, n-1, 0, rogue, rogue,
2903 $ a( ia+1+(ja-1)*desca( m_ ) ), desca( m_ ) )
2904 END IF
2905 CALL pcchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2906 CALL pcchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
2907*
2908 ELSE IF( nrout.EQ.3 ) THEN
2909*
2910* Test PCTRMV
2911*
2912* Check the resulting vector X
2913*
2914 CALL pcmvch( ictxt, trans, n, n, one, a, ia, ja, desca, y, ix,
2915 $ jx, descx, incx, zero, x, px, ix, jx, descx, incx,
2916 $ work, err, ierr( 2 ) )
2917*
2918 IF( ierr( 2 ).NE.0 ) THEN
2919 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2920 $ WRITE( nout, fmt = 9997 )
2921 ELSE IF( err.GT.thresh ) THEN
2922 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2923 $ WRITE( nout, fmt = 9996 ) err
2924 END IF
2925*
2926* Check the input-only arguments
2927*
2928 IF( lsame( uplo, 'L' ) ) THEN
2929 IF( lsame( diag, 'N' ) ) THEN
2930 CALL pb_claset( 'Upper', n-1, n-1, 0, rogue, rogue,
2931 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2932 ELSE
2933 CALL pb_claset( 'Upper', n, n, 0, rogue, one,
2934 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2935 END IF
2936 ELSE
2937 IF( lsame( diag, 'N' ) ) THEN
2938 CALL pb_claset( 'Lower', n-1, n-1, 0, rogue, rogue,
2939 $ a( ia+1+(ja-1)*desca( m_ ) ),
2940 $ desca( m_ ) )
2941 ELSE
2942 CALL pb_claset( 'Lower', n, n, 0, rogue, one,
2943 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2944 END IF
2945 END IF
2946 CALL pcchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2947*
2948 ELSE IF( nrout.EQ.4 ) THEN
2949*
2950* Test PCTRSV
2951*
2952* Check the resulting vector X
2953*
2954 CALL ctrsv( uplo, trans, diag, n, a( ia+(ja-1)*desca( m_ ) ),
2955 $ desca( m_ ), x( ix+(jx-1)*descx( m_ ) ), incx )
2956 CALL pctrmv( uplo, trans, diag, n, pa, ia, ja, desca, px, ix,
2957 $ jx, descx, incx )
2958 CALL pcmvch( ictxt, trans, n, n, one, a, ia, ja, desca, x, ix,
2959 $ jx, descx, incx, zero, y, px, ix, jx, descx, incx,
2960 $ work, err, ierr( 2 ) )
2961*
2962 IF( ierr( 2 ).NE.0 ) THEN
2963 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2964 $ WRITE( nout, fmt = 9997 )
2965 ELSE IF( err.GT.thresh ) THEN
2966 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2967 $ WRITE( nout, fmt = 9996 ) err
2968 END IF
2969*
2970* Check the input-only arguments
2971*
2972 IF( lsame( uplo, 'L' ) ) THEN
2973 IF( lsame( diag, 'N' ) ) THEN
2974 CALL pb_claset( 'Upper', n-1, n-1, 0, rogue, rogue,
2975 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2976 ELSE
2977 CALL pb_claset( 'Upper', n, n, 0, rogue, one,
2978 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2979 END IF
2980 ELSE
2981 IF( lsame( diag, 'N' ) ) THEN
2982 CALL pb_claset( 'Lower', n-1, n-1, 0, rogue, rogue,
2983 $ a( ia+1+(ja-1)*desca( m_ ) ),
2984 $ desca( m_ ) )
2985 ELSE
2986 CALL pb_claset( 'Lower', n, n, 0, rogue, one,
2987 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2988 END IF
2989 END IF
2990 CALL pcchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2991*
2992 ELSE IF( nrout.EQ.5 ) THEN
2993*
2994* Test PCGERU
2995*
2996* Check the resulting matrix A
2997*
2998 CALL pcvmch( ictxt, 'No transpose', 'Ge', m, n, alpha, x, ix,
2999 $ jx, descx, incx, y, iy, jy, descy, incy, a, pa,
3000 $ ia, ja, desca, work, err, ierr( 1 ) )
3001 IF( ierr( 1 ).NE.0 ) THEN
3002 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3003 $ WRITE( nout, fmt = 9997 )
3004 ELSE IF( err.GT.thresh ) THEN
3005 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3006 $ WRITE( nout, fmt = 9996 ) err
3007 END IF
3008*
3009* Check the input-only arguments
3010*
3011 CALL pcchkvin( err, m, x, px, ix, jx, descx, incx, ierr( 2 ) )
3012 CALL pcchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3013*
3014 ELSE IF( nrout.EQ.6 ) THEN
3015*
3016* Test PCGERC
3017*
3018* Check the resulting matrix A
3019*
3020 CALL pcvmch( ictxt, 'Conjugate transpose', 'Ge', m, n, alpha,
3021 $ x, ix, jx, descx, incx, y, iy, jy, descy, incy,
3022 $ a, pa, ia, ja, desca, work, err, ierr( 1 ) )
3023 IF( ierr( 1 ).NE.0 ) THEN
3024 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3025 $ WRITE( nout, fmt = 9997 )
3026 ELSE IF( err.GT.thresh ) THEN
3027 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3028 $ WRITE( nout, fmt = 9996 ) err
3029 END IF
3030*
3031* Check the input-only arguments
3032*
3033 CALL pcchkvin( err, m, x, px, ix, jx, descx, incx, ierr( 2 ) )
3034 CALL pcchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3035*
3036 ELSE IF( nrout.EQ.7 ) THEN
3037*
3038* Test PCHER
3039*
3040* Check the resulting matrix A
3041*
3042 alpha1 = cmplx( real( alpha ), rzero )
3043 CALL pcvmch( ictxt, 'Conjugate transpose', uplo, n, n, alpha1,
3044 $ x, ix, jx, descx, incx, x, ix, jx, descx, incx, a,
3045 $ pa, ia, ja, desca, work, err, ierr( 1 ) )
3046 IF( ierr( 1 ).NE.0 ) THEN
3047 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3048 $ WRITE( nout, fmt = 9997 )
3049 ELSE IF( err.GT.thresh ) THEN
3050 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3051 $ WRITE( nout, fmt = 9996 ) err
3052 END IF
3053*
3054* Check the input-only arguments
3055*
3056 CALL pcchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
3057*
3058 ELSE IF( nrout.EQ.8 ) THEN
3059*
3060* Test PCHER2
3061*
3062* Check the resulting matrix A
3063*
3064 CALL pcvmch2( ictxt, uplo, n, n, alpha, x, ix, jx, descx, incx,
3065 $ y, iy, jy, descy, incy, a, pa, ia, ja, desca,
3066 $ work, err, ierr( 1 ) )
3067 IF( ierr( 1 ).NE.0 ) THEN
3068 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3069 $ WRITE( nout, fmt = 9997 )
3070 ELSE IF( err.GT.thresh ) THEN
3071 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3072 $ WRITE( nout, fmt = 9996 ) err
3073 END IF
3074*
3075* Check the input-only arguments
3076*
3077 CALL pcchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
3078 CALL pcchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3079*
3080 END IF
3081*
3082 IF( ierr( 1 ).NE.0 ) THEN
3083 info = info + 1
3084 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3085 $ WRITE( nout, fmt = 9999 ) 'A'
3086 END IF
3087*
3088 IF( ierr( 2 ).NE.0 ) THEN
3089 info = info + 2
3090 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3091 $ WRITE( nout, fmt = 9998 ) 'X'
3092 END IF
3093*
3094 IF( ierr( 3 ).NE.0 ) THEN
3095 info = info + 4
3096 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3097 $ WRITE( nout, fmt = 9998 ) 'Y'
3098 END IF
3099*
3100 9999 FORMAT( 2x, ' ***** ERROR: Matrix operand ', a,
3101 $ ' is incorrect.' )
3102 9998 FORMAT( 2x, ' ***** ERROR: Vector operand ', a,
3103 $ ' is incorrect.' )
3104 9997 FORMAT( 2x, ' ***** FATAL ERROR - Computed result is less ',
3105 $ 'than half accurate *****' )
3106 9996 FORMAT( 2x, ' ***** Test completed with maximum test ratio: ',
3107 $ f11.5, ' SUSPECT *****' )
3108*
3109 RETURN
3110*
3111* End of PCBLAS2TSTCHK
3112*
float cmplx[2]
Definition pblas.h:136
subroutine pcchkvin(errmax, n, x, px, ix, jx, descx, incx, info)
Definition pcblastst.f:2582
subroutine pcchkmin(errmax, m, n, a, pa, ia, ja, desca, info)
Definition pcblastst.f:3332
subroutine pcvmch(ictxt, trans, uplo, m, n, alpha, x, ix, jx, descx, incx, y, iy, jy, descy, incy, a, pa, ia, ja, desca, g, err, info)
Definition pcblastst.f:4606
subroutine pcvmch2(ictxt, uplo, m, n, alpha, x, ix, jx, descx, incx, y, iy, jy, descy, incy, a, pa, ia, ja, desca, g, err, info)
Definition pcblastst.f:4975
subroutine pcmvch(ictxt, trans, m, n, alpha, a, ia, ja, desca, x, ix, jx, descx, incx, beta, y, py, iy, jy, descy, incy, g, err, info)
Definition pcblastst.f:4172
subroutine pb_claset(uplo, m, n, ioffd, alpha, beta, a, lda)
#define min(A, B)
Definition pcgemr.c:181
logical function lsame(ca, cb)
Definition tools.f:1724
Here is the call graph for this function:
Here is the caller graph for this function: