2241
2242
2243
2244
2245
2246
2247
2248 CHARACTER*1 DIAG, TRANS, UPLO
2249 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2250 $ JY, M, N, NOUT
2251 COMPLEX ALPHA, BETA
2252
2253
2254 CHARACTER*(*) SNAME
2255 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2370 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2371 $ RSRC_
2372 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
2373 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
2374 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
2375 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
2376
2377
2378 CHARACTER*1 DIAGREF, TRANSREF, UPLOREF
2379 INTEGER I, IAREF, INCXREF, INCYREF, IXREF, IYREF,
2380 $ JAREF, JXREF, JYREF, MREF, MYCOL, MYROW, NPCOL,
2381 $ NPROW, NREF
2382 COMPLEX ALPHAREF, BETAREF
2383
2384
2385 CHARACTER*15 ARGNAME
2386 INTEGER DESCAREF( DLEN_ ), DESCXREF( DLEN_ ),
2387 $ DESCYREF( DLEN_ )
2388
2389
2390 EXTERNAL blacs_gridinfo, igsum2d
2391
2392
2393 LOGICAL LSAME
2395
2396
2397 SAVE
2398
2399
2400
2401
2402
2403 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
2404
2405
2406
2407 IF( info.EQ.0 ) THEN
2408
2409 diagref = diag
2410 transref = trans
2411 uploref = uplo
2412 mref = m
2413 nref = n
2414 alpharef = alpha
2415 iaref = ia
2416 jaref = ja
2417 DO 10 i = 1, dlen_
2418 descaref( i ) = desca( i )
2419 10 CONTINUE
2420 ixref = ix
2421 jxref = jx
2422 DO 20 i = 1, dlen_
2423 descxref( i ) = descx( i )
2424 20 CONTINUE
2425 incxref = incx
2426 betaref = beta
2427 iyref = iy
2428 jyref = jy
2429 DO 30 i = 1, dlen_
2430 descyref( i ) = descy( i )
2431 30 CONTINUE
2432 incyref = incy
2433
2434 ELSE
2435
2436
2437
2438 argname = ' '
2439 IF( .NOT.
lsame( diag, diagref ) )
THEN
2440 WRITE( argname, fmt = '(A)' ) 'DIAG'
2441 ELSE IF( .NOT.
lsame( trans, transref ) )
THEN
2442 WRITE( argname, fmt = '(A)' ) 'TRANS'
2443 ELSE IF( .NOT.
lsame( uplo, uploref ) )
THEN
2444 WRITE( argname, fmt = '(A)' ) 'UPLO'
2445 ELSE IF( m.NE.mref ) THEN
2446 WRITE( argname, fmt = '(A)' ) 'M'
2447 ELSE IF( n.NE.nref ) THEN
2448 WRITE( argname, fmt = '(A)' ) 'N'
2449 ELSE IF( alpha.NE.alpharef ) THEN
2450 WRITE( argname, fmt = '(A)' ) 'ALPHA'
2451 ELSE IF( ia.NE.iaref ) THEN
2452 WRITE( argname, fmt = '(A)' ) 'IA'
2453 ELSE IF( ja.NE.jaref ) THEN
2454 WRITE( argname, fmt = '(A)' ) 'JA'
2455 ELSE IF( desca( dtype_ ).NE.descaref( dtype_ ) ) THEN
2456 WRITE( argname, fmt = '(A)' ) 'DESCA( DTYPE_ )'
2457 ELSE IF( desca( m_ ).NE.descaref( m_ ) ) THEN
2458 WRITE( argname, fmt = '(A)' ) 'DESCA( M_ )'
2459 ELSE IF( desca( n_ ).NE.descaref( n_ ) ) THEN
2460 WRITE( argname, fmt = '(A)' ) 'DESCA( N_ )'
2461 ELSE IF( desca( imb_ ).NE.descaref( imb_ ) ) THEN
2462 WRITE( argname, fmt = '(A)' ) 'DESCA( IMB_ )'
2463 ELSE IF( desca( inb_ ).NE.descaref( inb_ ) ) THEN
2464 WRITE( argname, fmt = '(A)' ) 'DESCA( INB_ )'
2465 ELSE IF( desca( mb_ ).NE.descaref( mb_ ) ) THEN
2466 WRITE( argname, fmt = '(A)' ) 'DESCA( MB_ )'
2467 ELSE IF( desca( nb_ ).NE.descaref( nb_ ) ) THEN
2468 WRITE( argname, fmt = '(A)' ) 'DESCA( NB_ )'
2469 ELSE IF( desca( rsrc_ ).NE.descaref( rsrc_ ) ) THEN
2470 WRITE( argname, fmt = '(A)' ) 'DESCA( RSRC_ )'
2471 ELSE IF( desca( csrc_ ).NE.descaref( csrc_ ) ) THEN
2472 WRITE( argname, fmt = '(A)' ) 'DESCA( CSRC_ )'
2473 ELSE IF( desca( ctxt_ ).NE.descaref( ctxt_ ) ) THEN
2474 WRITE( argname, fmt = '(A)' ) 'DESCA( CTXT_ )'
2475 ELSE IF( desca( lld_ ).NE.descaref( lld_ ) ) THEN
2476 WRITE( argname, fmt = '(A)' ) 'DESCA( LLD_ )'
2477 ELSE IF( ix.NE.ixref ) THEN
2478 WRITE( argname, fmt = '(A)' ) 'IX'
2479 ELSE IF( jx.NE.jxref ) THEN
2480 WRITE( argname, fmt = '(A)' ) 'JX'
2481 ELSE IF( descx( dtype_ ).NE.descxref( dtype_ ) ) THEN
2482 WRITE( argname, fmt = '(A)' ) 'DESCX( DTYPE_ )'
2483 ELSE IF( descx( m_ ).NE.descxref( m_ ) ) THEN
2484 WRITE( argname, fmt = '(A)' ) 'DESCX( M_ )'
2485 ELSE IF( descx( n_ ).NE.descxref( n_ ) ) THEN
2486 WRITE( argname, fmt = '(A)' ) 'DESCX( N_ )'
2487 ELSE IF( descx( imb_ ).NE.descxref( imb_ ) ) THEN
2488 WRITE( argname, fmt = '(A)' ) 'DESCX( IMB_ )'
2489 ELSE IF( descx( inb_ ).NE.descxref( inb_ ) ) THEN
2490 WRITE( argname, fmt = '(A)' ) 'DESCX( INB_ )'
2491 ELSE IF( descx( mb_ ).NE.descxref( mb_ ) ) THEN
2492 WRITE( argname, fmt = '(A)' ) 'DESCX( MB_ )'
2493 ELSE IF( descx( nb_ ).NE.descxref( nb_ ) ) THEN
2494 WRITE( argname, fmt = '(A)' ) 'DESCX( NB_ )'
2495 ELSE IF( descx( rsrc_ ).NE.descxref( rsrc_ ) ) THEN
2496 WRITE( argname, fmt = '(A)' ) 'DESCX( RSRC_ )'
2497 ELSE IF( descx( csrc_ ).NE.descxref( csrc_ ) ) THEN
2498 WRITE( argname, fmt = '(A)' ) 'DESCX( CSRC_ )'
2499 ELSE IF( descx( ctxt_ ).NE.descxref( ctxt_ ) ) THEN
2500 WRITE( argname, fmt = '(A)' ) 'DESCX( CTXT_ )'
2501 ELSE IF( descx( lld_ ).NE.descxref( lld_ ) ) THEN
2502 WRITE( argname, fmt = '(A)' ) 'DESCX( LLD_ )'
2503 ELSE IF( incx.NE.incxref ) THEN
2504 WRITE( argname, fmt = '(A)' ) 'INCX'
2505 ELSE IF( beta.NE.betaref ) THEN
2506 WRITE( argname, fmt = '(A)' ) 'BETA'
2507 ELSE IF( iy.NE.iyref ) THEN
2508 WRITE( argname, fmt = '(A)' ) 'IY'
2509 ELSE IF( jy.NE.jyref ) THEN
2510 WRITE( argname, fmt = '(A)' ) 'JY'
2511 ELSE IF( descy( dtype_ ).NE.descyref( dtype_ ) ) THEN
2512 WRITE( argname, fmt = '(A)' ) 'DESCY( DTYPE_ )'
2513 ELSE IF( descy( m_ ).NE.descyref( m_ ) ) THEN
2514 WRITE( argname, fmt = '(A)' ) 'DESCY( M_ )'
2515 ELSE IF( descy( n_ ).NE.descyref( n_ ) ) THEN
2516 WRITE( argname, fmt = '(A)' ) 'DESCY( N_ )'
2517 ELSE IF( descy( imb_ ).NE.descyref( imb_ ) ) THEN
2518 WRITE( argname, fmt = '(A)' ) 'DESCY( IMB_ )'
2519 ELSE IF( descy( inb_ ).NE.descyref( inb_ ) ) THEN
2520 WRITE( argname, fmt = '(A)' ) 'DESCY( INB_ )'
2521 ELSE IF( descy( mb_ ).NE.descyref( mb_ ) ) THEN
2522 WRITE( argname, fmt = '(A)' ) 'DESCY( MB_ )'
2523 ELSE IF( descy( nb_ ).NE.descyref( nb_ ) ) THEN
2524 WRITE( argname, fmt = '(A)' ) 'DESCY( NB_ )'
2525 ELSE IF( descy( rsrc_ ).NE.descyref( rsrc_ ) ) THEN
2526 WRITE( argname, fmt = '(A)' ) 'DESCY( RSRC_ )'
2527 ELSE IF( descy( csrc_ ).NE.descyref( csrc_ ) ) THEN
2528 WRITE( argname, fmt = '(A)' ) 'DESCY( CSRC_ )'
2529 ELSE IF( descy( ctxt_ ).NE.descyref( ctxt_ ) ) THEN
2530 WRITE( argname, fmt = '(A)' ) 'DESCY( CTXT_ )'
2531 ELSE IF( descy( lld_ ).NE.descyref( lld_ ) ) THEN
2532 WRITE( argname, fmt = '(A)' ) 'DESCY( LLD_ )'
2533 ELSE IF( incy.NE.incyref ) THEN
2534 WRITE( argname, fmt = '(A)' ) 'INCY'
2535 ELSE
2536 info = 0
2537 END IF
2538
2539 CALL igsum2d( ictxt, 'All', ' ', 1, 1, info, 1, -1, 0 )
2540
2541 IF( myrow.EQ.0 .AND. mycol.EQ.0 ) THEN
2542
2543 IF( info.NE.0 ) THEN
2544 WRITE( nout, fmt = 9999 ) argname, sname
2545 ELSE
2546 WRITE( nout, fmt = 9998 ) sname
2547 END IF
2548
2549 END IF
2550
2551 END IF
2552
2553 9999 FORMAT( 2x, ' ***** Input-only parameter check: ', a,
2554 $ ' FAILED changed ', a, ' *****' )
2555 9998 FORMAT( 2x, ' ***** Input-only parameter check: ', a,
2556 $ ' PASSED *****' )
2557
2558 RETURN
2559
2560
2561