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

◆ pdblas2tstchk()

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

Definition at line 2520 of file pdblas2tst.f.

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