1 /* --------------------------------------------------------------------- 2 * 3 * -- PBLAS routine (version 2.0) -- 4 * University of Tennessee, Knoxville, Oak Ridge National Laboratory, 5 * and University of California, Berkeley. 6 * March 12, 2002 7 * 8 * --------------------------------------------------------------------- 9 */ 10 /* 11 * This file includes PBLAS tools definitions. All PBLAS routines include 12 * this file. 13 * 14 * ---------------------------------------------------------------------- 15 * #define macro constants 16 * --------------------------------------------------------------------- 17 * 18 * Descriptor entries for type 1 19 */ 20 #define BLOCK_CYCLIC_2D 1 21 22 #define DTYPE1_ 0 /* Descriptor Type */ 23 #define CTXT1_ 1 /* BLACS context */ 24 #define M1_ 2 /* Global Number of Rows */ 25 #define N1_ 3 /* Global Number of Columns */ 26 #define MB1_ 4 /* Row Blocking Size */ 27 #define NB1_ 5 /* Column Blocking Size */ 28 #define RSRC1_ 6 /* Starting Processor Row */ 29 #define CSRC1_ 7 /* Starting Processor Column */ 30 #define LLD1_ 8 /* Local Leading Dimension */ 31 #define DLEN1_ 9 /* Descriptor Length */ 32 /* 33 * Descriptor entries for type 2 34 */ 35 #define BLOCK_CYCLIC_2D_INB 2 36 37 #define DTYPE_ 0 /* Descriptor Type */ 38 #define CTXT_ 1 /* BLACS context */ 39 #define M_ 2 /* Global Number of Rows */ 40 #define N_ 3 /* Global Number of Columns */ 41 #define IMB_ 4 /* Initial Row Blocking Size */ 42 #define INB_ 5 /* Initial Column Blocking Size */ 43 #define MB_ 6 /* Row Blocking Size */ 44 #define NB_ 7 /* Column Blocking Size */ 45 #define RSRC_ 8 /* Starting Process Row */ 46 #define CSRC_ 9 /* Starting Process Column */ 47 #define LLD_ 10 /* Local Leading Dimension */ 48 #define DLEN_ 11 /* Descriptor Length */ 49 50 #define CPACKING 'P' 51 #define CUNPACKING 'U' 52 53 #define PACKING "P" 54 #define UNPACKING "U" 55 56 #define CGENERAL 'G' 57 /* #define CSYMM 'S' */ 58 #define CHERM 'H' 59 60 #define GENERAL "G" 61 #define SYMM "S" 62 #define HERM "H" 63 64 #define ONE 1.0 65 #define TWO 2.0 66 #define ZERO 0.0 67 /* Input error checking related constants */ 68 #define DESCMULT 100 69 #define BIGNUM 10000 70 /* 71 * --------------------------------------------------------------------- 72 * #define macro functions 73 * --------------------------------------------------------------------- 74 */ 75 #define ABS( a_ ) ( ( (a_) < 0 ) ? -(a_) : (a_) ) 76 #define MIN( a_, b_ ) ( ( (a_) < (b_) ) ? (a_) : (b_) ) 77 #define MAX( a_, b_ ) ( ( (a_) > (b_) ) ? (a_) : (b_) ) 78 79 #define FLOOR(a,b) (((a)>0) ? (((a)/(b))) : (-(((-(a))+(b)-1)/(b)))) 80 #define CEIL(a,b) ( ( (a)+(b)-1 ) / (b) ) 81 #define ICEIL(a,b) (((a)>0) ? ((((a)+(b)-1)/(b))) : (-((-(a))/(b)))) 82 83 #define Mupcase(C) (((C)>96 && (C)<123) ? (C) & 0xDF : (C)) 84 #define Mlowcase(C) (((C)>64 && (C)< 91) ? (C) | 32 : (C)) 85 /* 86 * The following macros perform common modulo operations; All functions 87 * except MPosMod assume arguments are < d (i.e., arguments are themsel- 88 * ves within modulo range). 89 */ 90 /* increment with mod */ 91 #define MModInc(I, d) if(++(I) == (d)) (I) = 0 92 /* decrement with mod */ 93 #define MModDec(I, d) if(--(I) == -1) (I) = (d)-1 94 /* positive modulo */ 95 #define MPosMod(I, d) ( (I) - ((I)/(d))*(d) ) 96 /* add two numbers */ 97 #define MModAdd(I1, I2, d) \ 98 ( ( (I1) + (I2) < (d) ) ? (I1) + (I2) : (I1) + (I2) - (d) ) 99 /* add 1 to # */ 100 #define MModAdd1(I, d) ( ((I) != (d)-1) ? (I) + 1 : 0 ) 101 /* subtract two numbers */ 102 #define MModSub(I1, I2, d) \ 103 ( ( (I1) < (I2) ) ? (d) + (I1) - (I2) : (I1) - (I2) ) 104 /* sub 1 from # */ 105 #define MModSub1(I, d) ( ((I)!=0) ? (I)-1 : (d)-1 ) 106 /* 107 * DNROC computes maximum number of local rows or columns. This macro is 108 * only used to compute the time estimates in the Level 3 PBLAS routines. 109 */ 110 111 #define DNROC( n_, nb_, p_ ) \ 112 ((double)(((((n_)+(nb_)-1)/(nb_))+(p_)-1)/(p_))*(double)((nb_))) 113 /* 114 * Mptr returns a pointer to a_( i_, j_ ) for readability reasons and 115 * also less silly errors ... 116 * 117 * There was some problems with the previous code which read: 118 * 119 * #define Mptr( a_, i_, j_, lda_, siz_ ) \ 120 * ( (a_) + ( ( (i_)+(j_)*(lda_) )*(siz_) ) ) 121 * 122 * since it can overflow the 32-bit integer "easily". 123 * The following code should fix the problem. 124 * It uses the "off_t" command. 125 * 126 * Change made by Julien Langou on Sat. September 12, 2009. 127 * Fix provided by John Moyard from CNES. 128 * 129 * JL :April 2011: Change off_t by long long 130 * off_t is not supported under Windows 131 */ 132 #define Mptr( a_, i_, j_, lda_, siz_ ) \ 133 ( (a_) + ( (long long) ( (long long)(i_)+ \ 134 (long long)(j_)*(long long)(lda_))*(long long)(siz_) ) ) 135 /* 136 * Mfirstnb and Mlastnb compute the global size of the first and last 137 * block corresponding to the interval i_:i_+n_-1 of global indexes. 138 */ 139 #define Mfirstnb( inbt_, n_, i_, inb_, nb_ ) \ 140 inbt_ = (inb_) - (i_); \ 141 if( inbt_ <= 0 ) \ 142 inbt_ = ( (-inbt_) / (nb_) + 1 ) * (nb_) + inbt_; \ 143 inbt_ = MIN( inbt_, (n_) ); 144 145 #define Mlastnb( inbt_, n_, i_, inb_, nb_ ) \ 146 inbt_ = (i_) + (n_) - (inb_); \ 147 if( inbt_ > 0 ) \ 148 { \ 149 inbt_ = -( ( (nb_)+inbt_-1 )/(nb_)-1 )*(nb_) + inbt_; \ 150 inbt_ = MIN( inbt_, (n_) ); \ 151 } \ 152 else { inbt_ = (n_); }; 153 /* 154 * Does the index interval i_:i_+n_-1 spans more than one process rows 155 * or columns ? 156 * 157 * Mspan returns 0 (false) when the data is replicated (srcproc_ < 0) or 158 * when there is only one process row or column in the process grid. 159 */ 160 #define Mspan( n_, i_, inb_, nb_, srcproc_, nprocs_ ) \ 161 ( ( (srcproc_) >= 0 ) && ( ( (nprocs_) > 1 ) && \ 162 ( ( (i_) < (inb_) ) ? \ 163 ( (i_) + (n_) > (inb_) ) : \ 164 ( (i_) + (n_) > (inb_) + \ 165 ( ( (i_) - (inb_) ) / (nb_) + 1 ) * (nb_) ) ) ) ) 166 /* 167 * Mindxl2g computes the global index ig_ corresponding to the local 168 * index il_ in process proc_. 169 */ 170 #define Mindxl2g( ig_, il_, inb_, nb_, proc_, srcproc_, nprocs_ ) \ 171 { \ 172 if( ( (srcproc_) >= 0 ) && ( (nprocs_) > 1 ) ) \ 173 { \ 174 if( (proc_) == (srcproc_) ) \ 175 { \ 176 if( (il_) < (inb_) ) ig_ = (il_); \ 177 else ig_ = (il_) + \ 178 (nb_)*((nprocs_)-1)*( ((il_)-(inb_)) / (nb_) + 1 ); \ 179 } \ 180 else if( (proc_) < (srcproc_) ) \ 181 { \ 182 ig_ = (il_) + (inb_) + \ 183 (nb_)*( ((nprocs_)-1)*((il_)/(nb_)) + \ 184 (proc_)-(srcproc_)-1+(nprocs_) ); \ 185 } \ 186 else \ 187 { \ 188 ig_ = (il_) + (inb_) + \ 189 (nb_)*( ((nprocs_)-1)*((il_)/(nb_)) + \ 190 (proc_)-(srcproc_)-1 ); \ 191 } \ 192 } \ 193 else \ 194 { \ 195 ig_ = (il_); \ 196 } \ 197 } 198 /* 199 * Mindxg2p returns the process coodinate owning the entry globally 200 * indexed by ig_. 201 */ 202 #define Mindxg2p( ig_, inb_, nb_, proc_, srcproc_, nprocs_ ) \ 203 { \ 204 if( ( (ig_) >= (inb_) ) && ( (srcproc_) >= 0 ) && \ 205 ( (nprocs_) > 1 ) ) \ 206 { \ 207 proc_ = (srcproc_) + 1 + ( (ig_)-(inb_) ) / (nb_); \ 208 proc_ -= ( proc_ / (nprocs_) ) * (nprocs_); \ 209 } \ 210 else \ 211 { \ 212 proc_ = (srcproc_); \ 213 } \ 214 } 215 /* 216 * Mnumroc computes the # of local indexes np_ residing in the process 217 * of coordinate proc_ corresponding to the interval of global indexes 218 * i_:i_+n_-1 assuming that the global index 0 resides in the process 219 * srcproc_, and that the indexes are distributed from srcproc_ using 220 * the parameters inb_, nb_ and nprocs_. 221 */ 222 #define Mnumroc( np_, n_, i_, inb_, nb_, proc_, srcproc_, nprocs_ ) \ 223 { \ 224 if( ( (srcproc_) >= 0 ) && ( (nprocs_) > 1 ) ) \ 225 { \ 226 int inb__, mydist__, n__, nblk__, quot__, src__; \ 227 if( ( inb__ = (inb_) - (i_) ) <= 0 ) \ 228 { \ 229 src__ = (srcproc_) + ( nblk__ = (-inb__) / (nb_) + 1 ); \ 230 src__ -= ( src__ / (nprocs_) ) * (nprocs_); \ 231 inb__ += nblk__*(nb_); \ 232 if( ( n__ = (n_) - inb__ ) <= 0 ) \ 233 { if( (proc_) == src__ ) np_ = (n_); else np_ = 0; } \ 234 else \ 235 { \ 236 if( ( mydist__ = (proc_) - src__ ) < 0 ) \ 237 mydist__ += (nprocs_); \ 238 nblk__ = n__ / (nb_) + 1; \ 239 mydist__ -= nblk__ - \ 240 ( quot__ = ( nblk__ / (nprocs_) ) ) * (nprocs_); \ 241 if( mydist__ < 0 ) \ 242 { \ 243 if( (proc_) != src__ ) \ 244 np_ = (nb_) + (nb_) * quot__; \ 245 else \ 246 np_ = inb__ + (nb_) * quot__; \ 247 } \ 248 else if( mydist__ > 0 ) \ 249 { \ 250 np_ = (nb_) * quot__; \ 251 } \ 252 else \ 253 { \ 254 if( (proc_) != src__ ) \ 255 np_ = n__ + (nb_) + (nb_) * ( quot__ - nblk__ ); \ 256 else \ 257 np_ = (n_) + (nb_) * ( quot__ - nblk__ ); \ 258 } \ 259 } \ 260 } \ 261 else \ 262 { \ 263 if( ( n__ = (n_) - inb__ ) <= 0 ) \ 264 { if( (proc_) == (srcproc_) ) np_ = (n_); else np_ = 0; } \ 265 else \ 266 { \ 267 if( ( mydist__ = (proc_) - (srcproc_) ) < 0 ) \ 268 mydist__ += (nprocs_); \ 269 nblk__ = n__ / (nb_) + 1; \ 270 mydist__ -= nblk__ - \ 271 ( quot__ = ( nblk__ / (nprocs_) ) ) * (nprocs_); \ 272 if( mydist__ < 0 ) \ 273 { \ 274 if( (proc_) != (srcproc_) ) \ 275 np_ = (nb_) + (nb_) * quot__; \ 276 else \ 277 np_ = inb__ + (nb_) * quot__; \ 278 } \ 279 else if( mydist__ > 0 ) \ 280 { \ 281 np_ = (nb_) * quot__; \ 282 } \ 283 else \ 284 { \ 285 if( (proc_) != (srcproc_) ) \ 286 np_ = n__ + (nb_) + (nb_) * ( quot__ - nblk__ ); \ 287 else \ 288 np_ = (n_) + (nb_) * ( quot__ - nblk__ ); \ 289 } \ 290 } \ 291 } \ 292 } \ 293 else \ 294 { \ 295 np_ = (n_); \ 296 } \ 297 } 298 299 #define Mnpreroc( np_, n_, i_, inb_, nb_, proc_, srcproc_, nprocs_ ) \ 300 { \ 301 if( ( (srcproc_) >= 0 ) && ( (nprocs_) > 1 ) ) \ 302 { \ 303 int inb__, mydist__, n__, nblk__, quot__, rem__, src__; \ 304 if( ( inb__ = (inb_) - (i_) ) <= 0 ) \ 305 { \ 306 src__ = (srcproc_) + ( nblk__ = (-inb__) / (nb_) + 1 ); \ 307 src__ -= ( src__ / (nprocs_) ) * (nprocs_); \ 308 if( (proc_) != src__ ) \ 309 { \ 310 inb__ += nblk__*(nb_); \ 311 if( ( n__ = (n_) - inb__ ) <= 0 ) { np_ = (n_); } \ 312 else \ 313 { \ 314 if( ( mydist__ = (proc_) - src__ ) < 0 ) \ 315 mydist__ += (nprocs_); \ 316 nblk__ = n__ / (nb_) + 1; \ 317 rem__ = nblk__ - \ 318 ( quot__ = ( nblk__ / (nprocs_) ) ) * (nprocs_); \ 319 if( mydist__ <= rem__ ) \ 320 { \ 321 np_ = inb__ - (nb_) + \ 322 ( quot__ + 1 ) * mydist__ * (nb_); \ 323 } \ 324 else \ 325 { \ 326 np_ = (n_) + \ 327 ( mydist__ - (nprocs_) ) * quot__ * (nb_); \ 328 } \ 329 } \ 330 } \ 331 else \ 332 { \ 333 np_ = 0; \ 334 } \ 335 } \ 336 else \ 337 { \ 338 if( (proc_) != (srcproc_) ) \ 339 { \ 340 if( ( n__ = (n_) - inb__ ) <= 0 ) { np_ = (n_); } \ 341 else \ 342 { \ 343 if( ( mydist__ = (proc_) - (srcproc_) ) < 0 ) \ 344 mydist__ += (nprocs_); \ 345 nblk__ = n__ / (nb_) + 1; \ 346 rem__ = nblk__ - \ 347 ( quot__ = ( nblk__ / (nprocs_) ) ) * (nprocs_); \ 348 if( mydist__ <= rem__ ) \ 349 { \ 350 np_ = inb__ - (nb_) + \ 351 ( quot__ + 1 ) * mydist__ * (nb_); \ 352 } \ 353 else \ 354 { \ 355 np_ = (n_) + \ 356 ( mydist__ - (nprocs_) ) * quot__ * (nb_); \ 357 } \ 358 } \ 359 } \ 360 else \ 361 { \ 362 np_ = 0; \ 363 } \ 364 } \ 365 } \ 366 else \ 367 { \ 368 np_ = 0; \ 369 } \ 370 } 371 372 #define Mnnxtroc( np_, n_, i_, inb_, nb_, proc_, srcproc_, nprocs_ ) \ 373 { \ 374 if( ( (srcproc_) >= 0 ) && ( (nprocs_) > 1 ) ) \ 375 { \ 376 int inb__, mydist__, n__, nblk__, quot__, rem__, src__; \ 377 if( ( inb__ = (inb_) - (i_) ) <= 0 ) \ 378 { \ 379 src__ = (srcproc_) + ( nblk__ = (-inb__) / (nb_) + 1 ); \ 380 src__ -= ( src__ / (nprocs_) ) * (nprocs_); \ 381 inb__ += nblk__*(nb_); \ 382 if( ( n__ = (n_) - inb__ ) <= 0 ) { np_ = 0; } \ 383 else \ 384 { \ 385 if( ( mydist__ = (proc_) - src__ ) < 0 ) \ 386 mydist__ += (nprocs_); \ 387 nblk__ = n__ / (nb_) + 1; \ 388 rem__ = nblk__ - \ 389 ( quot__ = ( nblk__ / (nprocs_) ) ) * (nprocs_); \ 390 if( mydist__ < rem__ ) \ 391 { \ 392 np_ = n__ - ( quot__ * mydist__ + \ 393 quot__ + mydist__ ) * (nb_); \ 394 } \ 395 else \ 396 { \ 397 np_ = ( (nprocs_) - 1 - mydist__ ) * quot__ * (nb_); \ 398 } \ 399 } \ 400 } \ 401 else \ 402 { \ 403 if( ( n__ = (n_) - inb__ ) <= 0 ) { np_ = 0; } \ 404 else \ 405 { \ 406 if( ( mydist__ = (proc_) - (srcproc_) ) < 0 ) \ 407 mydist__ += (nprocs_); \ 408 nblk__ = n__ / (nb_) + 1; \ 409 rem__ = nblk__ - \ 410 ( quot__ = ( nblk__ / (nprocs_) ) ) * (nprocs_); \ 411 if( mydist__ < rem__ ) \ 412 { \ 413 np_ = n__ - ( quot__ * mydist__ + \ 414 quot__ + mydist__ ) * (nb_); \ 415 } \ 416 else \ 417 { \ 418 np_ = ( (nprocs_) - 1 - mydist__ ) * quot__ * (nb_); \ 419 } \ 420 } \ 421 } \ 422 } \ 423 else \ 424 { np_ = 0; } \ 425 } 426 427 428 #define Minfog2l( i_, j_, desc_, nr_, nc_, r_, c_, ii_, jj_, pr_, pc_ ) \ 429 { \ 430 int quot__, i__, imb__, inb__, j__, mb__, mydist__, \ 431 nb__, nblk__, src__; \ 432 imb__ = desc_[IMB_]; mb__ = desc_[MB_]; pr_ = desc_[RSRC_]; \ 433 if( ( pr_ >= 0 ) && ( nr_ > 1 ) ) \ 434 { \ 435 if( ( i__ = (i_) - imb__ ) < 0 ) \ 436 { ii_ = ( r_ == pr_ ? (i_) : 0 ); } \ 437 else \ 438 { \ 439 src__ = pr_; \ 440 pr_ += ( nblk__ = i__ / mb__ + 1 ); \ 441 pr_ -= ( pr_ / nr_ ) * nr_; \ 442 if( ( mydist__ = r_ - src__ ) < 0 ) mydist__ += nr_; \ 443 if( mydist__ >= nblk__ - ( quot__ = nblk__ / nr_ ) * nr_ ) \ 444 { \ 445 if( r_ != src__ ) ii_ = mb__; \ 446 else ii_ = imb__; \ 447 if( r_ != pr_ ) \ 448 ii_ += ( quot__ - 1 ) * mb__; \ 449 else \ 450 ii_ += i__ + ( quot__ - nblk__ ) * mb__; \ 451 } \ 452 else \ 453 { \ 454 if( r_ != src__ ) ii_ = mb__ + quot__ * mb__; \ 455 else ii_ = imb__ + quot__ * mb__; \ 456 } \ 457 } \ 458 } \ 459 else \ 460 { \ 461 ii_ = (i_); \ 462 } \ 463 inb__ = desc_[INB_]; nb__ = desc_[NB_]; pc_ = desc_[CSRC_]; \ 464 if( ( pc_ >= 0 ) && ( nc_ > 1 ) ) \ 465 { \ 466 if( ( j__ = (j_) - inb__ ) < 0 ) \ 467 { jj_ = ( c_ == pc_ ? (j_) : 0 ); } \ 468 else \ 469 { \ 470 src__ = pc_; \ 471 pc_ += ( nblk__ = j__ / nb__ + 1 ); \ 472 pc_ -= ( pc_ / nc_ ) * nc_; \ 473 if( ( mydist__ = c_ - src__ ) < 0 ) mydist__ += nc_; \ 474 if( mydist__ >= nblk__ - ( quot__ = nblk__ / nc_ ) * nc_ ) \ 475 { \ 476 if( c_ != src__ ) jj_ = nb__; \ 477 else jj_ = inb__; \ 478 if( c_ != pc_ ) \ 479 jj_ += ( quot__ - 1 ) * nb__; \ 480 else \ 481 jj_ += j__ + ( quot__ - nblk__ ) * nb__; \ 482 } \ 483 else \ 484 { \ 485 if( c_ != src__ ) jj_ = nb__ + quot__ * nb__; \ 486 else jj_ = inb__ + quot__ * nb__; \ 487 } \ 488 } \ 489 } \ 490 else \ 491 { \ 492 jj_ = (j_); \ 493 } \ 494 } 495 496 /* 497 * The following macros initialize or translate descriptors. 498 */ 499 #define MDescSet( desc, m, n, imb, inb, mb, nb, rsrc, csrc, ictxt, lld ) \ 500 { \ 501 (desc)[DTYPE_] = BLOCK_CYCLIC_2D_INB; \ 502 (desc)[CTXT_ ] = (ictxt); \ 503 (desc)[M_ ] = (m); \ 504 (desc)[N_ ] = (n); \ 505 (desc)[IMB_ ] = (imb); \ 506 (desc)[INB_ ] = (inb); \ 507 (desc)[MB_ ] = (mb); \ 508 (desc)[NB_ ] = (nb); \ 509 (desc)[RSRC_ ] = (rsrc); \ 510 (desc)[CSRC_ ] = (csrc); \ 511 (desc)[LLD_ ] = (lld); \ 512 } 513 514 #define MDescCopy(DescIn, DescOut) \ 515 { \ 516 (DescOut)[DTYPE_] = (DescIn)[DTYPE_]; \ 517 (DescOut)[M_ ] = (DescIn)[M_ ]; \ 518 (DescOut)[N_ ] = (DescIn)[N_ ]; \ 519 (DescOut)[IMB_ ] = (DescIn)[IMB_ ]; \ 520 (DescOut)[INB_ ] = (DescIn)[INB_ ]; \ 521 (DescOut)[MB_ ] = (DescIn)[MB_ ]; \ 522 (DescOut)[NB_ ] = (DescIn)[NB_ ]; \ 523 (DescOut)[RSRC_ ] = (DescIn)[RSRC_ ]; \ 524 (DescOut)[CSRC_ ] = (DescIn)[CSRC_ ]; \ 525 (DescOut)[CTXT_ ] = (DescIn)[CTXT_ ]; \ 526 (DescOut)[LLD_ ] = (DescIn)[LLD_ ]; \ 527 } 528 529 #define MDescTrans(DescIn, DescOut) \ 530 { \ 531 if ( (DescIn)[DTYPE_] == BLOCK_CYCLIC_2D ) \ 532 { \ 533 (DescOut)[DTYPE_] = BLOCK_CYCLIC_2D_INB; \ 534 (DescOut)[M_ ] = (DescIn)[M1_ ]; \ 535 (DescOut)[N_ ] = (DescIn)[N1_ ]; \ 536 (DescOut)[IMB_ ] = (DescIn)[MB1_ ]; \ 537 (DescOut)[INB_ ] = (DescIn)[NB1_ ]; \ 538 (DescOut)[MB_ ] = (DescIn)[MB1_ ]; \ 539 (DescOut)[NB_ ] = (DescIn)[NB1_ ]; \ 540 (DescOut)[RSRC_ ] = (DescIn)[RSRC1_ ]; \ 541 (DescOut)[CSRC_ ] = (DescIn)[CSRC1_ ]; \ 542 (DescOut)[CTXT_ ] = (DescIn)[CTXT1_ ]; \ 543 (DescOut)[LLD_ ] = (DescIn)[LLD1_ ]; \ 544 } \ 545 else if ( (DescIn)[DTYPE_] == BLOCK_CYCLIC_2D_INB ) \ 546 { \ 547 (DescOut)[DTYPE_] = BLOCK_CYCLIC_2D_INB; \ 548 (DescOut)[M_ ] = (DescIn)[M_ ]; \ 549 (DescOut)[N_ ] = (DescIn)[N_ ]; \ 550 (DescOut)[IMB_ ] = (DescIn)[IMB_ ]; \ 551 (DescOut)[INB_ ] = (DescIn)[INB_ ]; \ 552 (DescOut)[MB_ ] = (DescIn)[MB_ ]; \ 553 (DescOut)[NB_ ] = (DescIn)[NB_ ]; \ 554 (DescOut)[RSRC_ ] = (DescIn)[RSRC_ ]; \ 555 (DescOut)[CSRC_ ] = (DescIn)[CSRC_ ]; \ 556 (DescOut)[CTXT_ ] = (DescIn)[CTXT_ ]; \ 557 (DescOut)[LLD_ ] = (DescIn)[LLD_ ]; \ 558 } \ 559 else \ 560 { \ 561 (DescOut)[DTYPE_] = (DescIn)[0]; \ 562 (DescOut)[CTXT_ ] = (DescIn)[1]; \ 563 (DescOut)[M_ ] = 0; \ 564 (DescOut)[N_ ] = 0; \ 565 (DescOut)[IMB_ ] = 1; \ 566 (DescOut)[INB_ ] = 1; \ 567 (DescOut)[MB_ ] = 1; \ 568 (DescOut)[NB_ ] = 1; \ 569 (DescOut)[RSRC_ ] = 0; \ 570 (DescOut)[CSRC_ ] = 0; \ 571 (DescOut)[LLD_ ] = 1; \ 572 } \ 573 } 574 575 #define MIndxTrans( I, J, i, j ) \ 576 { \ 577 i = *I - 1; \ 578 j = *J - 1; \ 579 } 580 581 #if( _F2C_CALL_ == _F2C_ADD_ ) 582 /* 583 * These defines set up the naming scheme required to have a FORTRAN 584 * routine called by a C routine. No redefinition is necessary to have 585 * the following FORTRAN to C interface: 586 * 587 * FORTRAN DECLARATION C CALL 588 * SUBROUTINE PDFOO(...) pdfoo_(...) 589 * 590 * This is the PBLAS default. 591 */ 592 593 #endif 594 595 #if( _F2C_CALL_ == _F2C_F77ISF2C ) 596 /* 597 * These defines set up the naming scheme required to have a FORTRAN 598 * routine called by a C routine for systems where the FORTRAN compiler 599 * is actually f2c (a FORTRAN to C conversion utility). 600 * 601 * FORTRAN DECLARATION C CALL 602 * SUBROUTINE PDFOO(...) pdfoo__(...) 603 */ 604 605 #endif 606 607 #if( _F2C_CALL_ == _F2C_UPCASE ) 608 /* 609 * These defines set up the naming scheme required to have a FORTRAN 610 * routine called by a C routine with the following FORTRAN to C inter- 611 * face: 612 * 613 * FORTRAN DECLARATION C CALL 614 * SUBROUTINE PDFOO(...) PDFOO(...) 615 */ 616 #define immadd_ IMMADD 617 #define smmadd_ SMMADD 618 #define dmmadd_ DMMADD 619 #define cmmadd_ CMMADD 620 #define zmmadd_ ZMMADD 621 622 #define immtadd_ IMMTADD 623 #define smmtadd_ SMMTADD 624 #define dmmtadd_ DMMTADD 625 #define cmmtadd_ CMMTADD 626 #define zmmtadd_ ZMMTADD 627 628 #define smmcadd_ SMMCADD 629 #define dmmcadd_ DMMCADD 630 #define cmmcadd_ CMMCADD 631 #define zmmcadd_ ZMMCADD 632 633 #define smmtcadd_ SMMTCADD 634 #define dmmtcadd_ DMMTCADD 635 #define cmmtcadd_ CMMTCADD 636 #define zmmtcadd_ ZMMTCADD 637 638 #define immdda_ IMMDDA 639 #define smmdda_ SMMDDA 640 #define dmmdda_ DMMDDA 641 #define cmmdda_ CMMDDA 642 #define zmmdda_ ZMMDDA 643 644 #define smmddac_ SMMDDAC 645 #define dmmddac_ DMMDDAC 646 #define cmmddac_ CMMDDAC 647 #define zmmddac_ ZMMDDAC 648 649 #define immddat_ IMMDDAT 650 #define smmddat_ SMMDDAT 651 #define dmmddat_ DMMDDAT 652 #define cmmddat_ CMMDDAT 653 #define zmmddat_ ZMMDDAT 654 655 #define smmddact_ SMMDDACT 656 #define dmmddact_ DMMDDACT 657 #define cmmddact_ CMMDDACT 658 #define zmmddact_ ZMMDDACT 659 660 #define sasqrtb_ SASQRTB 661 #define dasqrtb_ DASQRTB 662 663 #define sset_ SSET 664 #define dset_ DSET 665 #define cset_ CSET 666 #define zset_ ZSET 667 668 #define svasum_ SVASUM 669 #define dvasum_ DVASUM 670 #define scvasum_ SCVASUM 671 #define dzvasum_ DZVASUM 672 673 #define sascal_ SASCAL 674 #define dascal_ DASCAL 675 676 #define scshft_ SCSHFT 677 #define dcshft_ DCSHFT 678 #define ccshft_ CCSHFT 679 #define zcshft_ ZCSHFT 680 681 #define srshft_ SRSHFT 682 #define drshft_ DRSHFT 683 #define crshft_ CRSHFT 684 #define zrshft_ ZRSHFT 685 686 #define svvdot_ SVVDOT 687 #define dvvdot_ DVVDOT 688 #define cvvdotc_ CVVDOTC 689 #define cvvdotu_ CVVDOTU 690 #define zvvdotc_ ZVVDOTC 691 #define zvvdotu_ ZVVDOTU 692 693 #define stzpad_ STZPAD 694 #define dtzpad_ DTZPAD 695 #define ctzpad_ CTZPAD 696 #define ztzpad_ ZTZPAD 697 698 #define stzpadcpy_ STZPADCPY 699 #define dtzpadcpy_ DTZPADCPY 700 #define ctzpadcpy_ CTZPADCPY 701 #define ztzpadcpy_ ZTZPADCPY 702 703 #define stzscal_ STZSCAL 704 #define dtzscal_ DTZSCAL 705 #define ctzscal_ CTZSCAL 706 #define ztzscal_ ZTZSCAL 707 708 #define chescal_ CHESCAL 709 #define zhescal_ ZHESCAL 710 711 #define ctzcnjg_ CTZCNJG 712 #define ztzcnjg_ ZTZCNJG 713 714 #define sagemv_ SAGEMV 715 #define dagemv_ DAGEMV 716 #define cagemv_ CAGEMV 717 #define zagemv_ ZAGEMV 718 719 #define sasymv_ SASYMV 720 #define dasymv_ DASYMV 721 #define casymv_ CASYMV 722 #define zasymv_ ZASYMV 723 #define cahemv_ CAHEMV 724 #define zahemv_ ZAHEMV 725 726 #define satrmv_ SATRMV 727 #define datrmv_ DATRMV 728 #define catrmv_ CATRMV 729 #define zatrmv_ ZATRMV 730 731 #define csymv_ CSYMV 732 #define zsymv_ ZSYMV 733 734 #define csyr_ CSYR 735 #define zsyr_ ZSYR 736 737 #define csyr2_ CSYR2 738 #define zsyr2_ ZSYR2 739 740 #endif 741 742 #if( _F2C_CALL_ == _F2C_NOCHANGE ) 743 /* 744 * These defines set up the naming scheme required to have a FORTRAN 745 * routine called by a C routine with the following FORTRAN to C inter- 746 * face: 747 * 748 * FORTRAN DECLARATION C CALL 749 * SUBROUTINE PDFOO(...) pdfoo(...) 750 */ 751 #define immadd_ immadd 752 #define smmadd_ smmadd 753 #define dmmadd_ dmmadd 754 #define cmmadd_ cmmadd 755 #define zmmadd_ zmmadd 756 757 #define immtadd_ immtadd 758 #define smmtadd_ smmtadd 759 #define dmmtadd_ dmmtadd 760 #define cmmtadd_ cmmtadd 761 #define zmmtadd_ zmmtadd 762 763 #define smmcadd_ smmcadd 764 #define dmmcadd_ dmmcadd 765 #define cmmcadd_ cmmcadd 766 #define zmmcadd_ zmmcadd 767 768 #define smmtcadd_ smmtcadd 769 #define dmmtcadd_ dmmtcadd 770 #define cmmtcadd_ cmmtcadd 771 #define zmmtcadd_ zmmtcadd 772 773 #define immdda_ immdda 774 #define smmdda_ smmdda 775 #define dmmdda_ dmmdda 776 #define cmmdda_ cmmdda 777 #define zmmdda_ zmmdda 778 779 #define smmddac_ smmddac 780 #define dmmddac_ dmmddac 781 #define cmmddac_ cmmddac 782 #define zmmddac_ zmmddac 783 784 #define immddat_ immddat 785 #define smmddat_ smmddat 786 #define dmmddat_ dmmddat 787 #define cmmddat_ cmmddat 788 #define zmmddat_ zmmddat 789 790 #define smmddact_ smmddact 791 #define dmmddact_ dmmddact 792 #define cmmddact_ cmmddact 793 #define zmmddact_ zmmddact 794 795 #define sasqrtb_ sasqrtb 796 #define dasqrtb_ dasqrtb 797 798 #define sset_ sset 799 #define dset_ dset 800 #define cset_ cset 801 #define zset_ zset 802 803 #define svasum_ svasum 804 #define dvasum_ dvasum 805 #define scvasum_ scvasum 806 #define dzvasum_ dzvasum 807 808 #define sascal_ sascal 809 #define dascal_ dascal 810 811 #define scshft_ scshft 812 #define dcshft_ dcshft 813 #define ccshft_ ccshft 814 #define zcshft_ zcshft 815 816 #define srshft_ srshft 817 #define drshft_ drshft 818 #define crshft_ crshft 819 #define zrshft_ zrshft 820 821 #define svvdot_ svvdot 822 #define dvvdot_ dvvdot 823 #define cvvdotc_ cvvdotc 824 #define cvvdotu_ cvvdotu 825 #define zvvdotc_ zvvdotc 826 #define zvvdotu_ zvvdotu 827 828 #define stzpad_ stzpad 829 #define dtzpad_ dtzpad 830 #define ctzpad_ ctzpad 831 #define ztzpad_ ztzpad 832 833 #define stzpadcpy_ stzpadcpy 834 #define dtzpadcpy_ dtzpadcpy 835 #define ctzpadcpy_ ctzpadcpy 836 #define ztzpadcpy_ ztzpadcpy 837 838 #define stzscal_ stzscal 839 #define dtzscal_ dtzscal 840 #define ctzscal_ ctzscal 841 #define ztzscal_ ztzscal 842 843 #define chescal_ chescal 844 #define zhescal_ zhescal 845 846 #define ctzcnjg_ ctzcnjg 847 #define ztzcnjg_ ztzcnjg 848 849 #define sagemv_ sagemv 850 #define dagemv_ dagemv 851 #define cagemv_ cagemv 852 #define zagemv_ zagemv 853 854 #define sasymv_ sasymv 855 #define dasymv_ dasymv 856 #define casymv_ casymv 857 #define zasymv_ zasymv 858 #define cahemv_ cahemv 859 #define zahemv_ zahemv 860 861 #define satrmv_ satrmv 862 #define datrmv_ datrmv 863 #define catrmv_ catrmv 864 #define zatrmv_ zatrmv 865 866 #define csymv_ csymv 867 #define zsymv_ zsymv 868 869 #define csyr_ csyr 870 #define zsyr_ zsyr 871 872 #define csyr2_ csyr2 873 #define zsyr2_ zsyr2 874 875 #endif 876 /* 877 * --------------------------------------------------------------------- 878 * Function prototypes 879 * --------------------------------------------------------------------- 880 */ 881 #ifdef __STDC__ 882 883 F_VOID_FCT immadd_ ( int *, int *, char *, 884 char *, int *, char *, 885 char *, int * ); 886 F_VOID_FCT smmadd_ ( int *, int *, char *, 887 char *, int *, char *, 888 char *, int * ); 889 F_VOID_FCT dmmadd_ ( int *, int *, char *, 890 char *, int *, char *, 891 char *, int * ); 892 F_VOID_FCT cmmadd_ ( int *, int *, char *, 893 char *, int *, char *, 894 char *, int * ); 895 F_VOID_FCT zmmadd_ ( int *, int *, char *, 896 char *, int *, char *, 897 char *, int * ); 898 899 F_VOID_FCT smmcadd_ ( int *, int *, char *, 900 char *, int *, char *, 901 char *, int * ); 902 F_VOID_FCT dmmcadd_ ( int *, int *, char *, 903 char *, int *, char *, 904 char *, int * ); 905 F_VOID_FCT cmmcadd_ ( int *, int *, char *, 906 char *, int *, char *, 907 char *, int * ); 908 F_VOID_FCT zmmcadd_ ( int *, int *, char *, 909 char *, int *, char *, 910 char *, int * ); 911 912 F_VOID_FCT immtadd_ ( int *, int *, char *, 913 char *, int *, char *, 914 char *, int * ); 915 F_VOID_FCT smmtadd_ ( int *, int *, char *, 916 char *, int *, char *, 917 char *, int * ); 918 F_VOID_FCT dmmtadd_ ( int *, int *, char *, 919 char *, int *, char *, 920 char *, int * ); 921 F_VOID_FCT cmmtadd_ ( int *, int *, char *, 922 char *, int *, char *, 923 char *, int * ); 924 F_VOID_FCT zmmtadd_ ( int *, int *, char *, 925 char *, int *, char *, 926 char *, int * ); 927 928 F_VOID_FCT smmtcadd_ ( int *, int *, char *, 929 char *, int *, char *, 930 char *, int * ); 931 F_VOID_FCT dmmtcadd_ ( int *, int *, char *, 932 char *, int *, char *, 933 char *, int * ); 934 F_VOID_FCT cmmtcadd_ ( int *, int *, char *, 935 char *, int *, char *, 936 char *, int * ); 937 F_VOID_FCT zmmtcadd_ ( int *, int *, char *, 938 char *, int *, char *, 939 char *, int * ); 940 941 F_VOID_FCT immdda_ ( int *, int *, char *, 942 char *, int *, char *, 943 char *, int * ); 944 F_VOID_FCT smmdda_ ( int *, int *, char *, 945 char *, int *, char *, 946 char *, int * ); 947 F_VOID_FCT dmmdda_ ( int *, int *, char *, 948 char *, int *, char *, 949 char *, int * ); 950 F_VOID_FCT cmmdda_ ( int *, int *, char *, 951 char *, int *, char *, 952 char *, int * ); 953 F_VOID_FCT zmmdda_ ( int *, int *, char *, 954 char *, int *, char *, 955 char *, int * ); 956 957 F_VOID_FCT smmddac_ ( int *, int *, char *, 958 char *, int *, char *, 959 char *, int * ); 960 F_VOID_FCT dmmddac_ ( int *, int *, char *, 961 char *, int *, char *, 962 char *, int * ); 963 F_VOID_FCT cmmddac_ ( int *, int *, char *, 964 char *, int *, char *, 965 char *, int * ); 966 F_VOID_FCT zmmddac_ ( int *, int *, char *, 967 char *, int *, char *, 968 char *, int * ); 969 970 F_VOID_FCT immddat_ ( int *, int *, char *, 971 char *, int *, char *, 972 char *, int * ); 973 F_VOID_FCT smmddat_ ( int *, int *, char *, 974 char *, int *, char *, 975 char *, int * ); 976 F_VOID_FCT dmmddat_ ( int *, int *, char *, 977 char *, int *, char *, 978 char *, int * ); 979 F_VOID_FCT cmmddat_ ( int *, int *, char *, 980 char *, int *, char *, 981 char *, int * ); 982 F_VOID_FCT zmmddat_ ( int *, int *, char *, 983 char *, int *, char *, 984 char *, int * ); 985 986 F_VOID_FCT smmddact_ ( int *, int *, char *, 987 char *, int *, char *, 988 char *, int * ); 989 F_VOID_FCT dmmddact_ ( int *, int *, char *, 990 char *, int *, char *, 991 char *, int * ); 992 F_VOID_FCT cmmddact_ ( int *, int *, char *, 993 char *, int *, char *, 994 char *, int * ); 995 F_VOID_FCT zmmddact_ ( int *, int *, char *, 996 char *, int *, char *, 997 char *, int * ); 998 999 F_VOID_FCT sasqrtb_ ( float *, float *, float * ); 1000 F_VOID_FCT dasqrtb_ ( double *, double *, double * ); 1001 1002 F_VOID_FCT sset_ ( int *, char *, char *, 1003 int * ); 1004 F_VOID_FCT dset_ ( int *, char *, char *, 1005 int * ); 1006 F_VOID_FCT cset_ ( int *, char *, char *, 1007 int * ); 1008 F_VOID_FCT zset_ ( int *, char *, char *, 1009 int * ); 1010 1011 F_VOID_FCT svasum_ ( int *, char *, char *, 1012 int * ); 1013 F_VOID_FCT dvasum_ ( int *, char *, char *, 1014 int * ); 1015 F_VOID_FCT scvasum_ ( int *, char *, char *, 1016 int * ); 1017 F_VOID_FCT dzvasum_ ( int *, char *, char *, 1018 int * ); 1019 1020 F_VOID_FCT sascal_ ( int *, char *, char *, 1021 int * ); 1022 F_VOID_FCT dascal_ ( int *, char *, char *, 1023 int * ); 1024 1025 F_VOID_FCT scshft_ ( int *, int *, int *, 1026 char *, int * ); 1027 F_VOID_FCT dcshft_ ( int *, int *, int *, 1028 char *, int * ); 1029 F_VOID_FCT ccshft_ ( int *, int *, int *, 1030 char *, int * ); 1031 F_VOID_FCT zcshft_ ( int *, int *, int *, 1032 char *, int * ); 1033 1034 F_VOID_FCT srshft_ ( int *, int *, int *, 1035 char *, int * ); 1036 F_VOID_FCT drshft_ ( int *, int *, int *, 1037 char *, int * ); 1038 F_VOID_FCT crshft_ ( int *, int *, int *, 1039 char *, int * ); 1040 F_VOID_FCT zrshft_ ( int *, int *, int *, 1041 char *, int * ); 1042 1043 F_VOID_FCT svvdot_ ( int *, char *, char *, 1044 int *, char *, int * ); 1045 F_VOID_FCT dvvdot_ ( int *, char *, char *, 1046 int *, char *, int * ); 1047 F_VOID_FCT cvvdotu_ ( int *, char *, char *, 1048 int *, char *, int * ); 1049 F_VOID_FCT cvvdotc_ ( int *, char *, char *, 1050 int *, char *, int * ); 1051 F_VOID_FCT zvvdotu_ ( int *, char *, char *, 1052 int *, char *, int * ); 1053 F_VOID_FCT zvvdotc_ ( int *, char *, char *, 1054 int *, char *, int * ); 1055 1056 F_VOID_FCT stzpad_ ( F_CHAR_T, F_CHAR_T, int *, 1057 int *, int *, char *, 1058 char *, char *, int * ); 1059 F_VOID_FCT dtzpad_ ( F_CHAR_T, F_CHAR_T, int *, 1060 int *, int *, char *, 1061 char *, char *, int * ); 1062 F_VOID_FCT ctzpad_ ( F_CHAR_T, F_CHAR_T, int *, 1063 int *, int *, char *, 1064 char *, char *, int * ); 1065 F_VOID_FCT ztzpad_ ( F_CHAR_T, F_CHAR_T, int *, 1066 int *, int *, char *, 1067 char *, char *, int * ); 1068 1069 F_VOID_FCT stzpadcpy_ ( F_CHAR_T, F_CHAR_T, int *, 1070 int *, int *, char *, 1071 int *, char *, int * ); 1072 F_VOID_FCT dtzpadcpy_ ( F_CHAR_T, F_CHAR_T, int *, 1073 int *, int *, char *, 1074 int *, char *, int * ); 1075 F_VOID_FCT ctzpadcpy_ ( F_CHAR_T, F_CHAR_T, int *, 1076 int *, int *, char *, 1077 int *, char *, int * ); 1078 F_VOID_FCT ztzpadcpy_ ( F_CHAR_T, F_CHAR_T, int *, 1079 int *, int *, char *, 1080 int *, char *, int * ); 1081 1082 F_VOID_FCT stzscal_ ( F_CHAR_T, int *, int *, 1083 int *, char *, char *, 1084 int * ); 1085 F_VOID_FCT dtzscal_ ( F_CHAR_T, int *, int *, 1086 int *, char *, char *, 1087 int * ); 1088 F_VOID_FCT ctzscal_ ( F_CHAR_T, int *, int *, 1089 int *, char *, char *, 1090 int * ); 1091 F_VOID_FCT ztzscal_ ( F_CHAR_T, int *, int *, 1092 int *, char *, char *, 1093 int * ); 1094 1095 F_VOID_FCT chescal_ ( F_CHAR_T, int *, int *, 1096 int *, char *, char *, 1097 int * ); 1098 F_VOID_FCT zhescal_ ( F_CHAR_T, int *, int *, 1099 int *, char *, char *, 1100 int * ); 1101 1102 F_VOID_FCT ctzcnjg_ ( F_CHAR_T, int *, int *, 1103 int *, char *, char *, 1104 int * ); 1105 F_VOID_FCT ztzcnjg_ ( F_CHAR_T, int *, int *, 1106 int *, char *, char *, 1107 int * ); 1108 1109 F_VOID_FCT sagemv_ ( F_CHAR_T, int *, int *, 1110 char *, char *, int *, 1111 char *, int *, char *, 1112 char *, int * ); 1113 F_VOID_FCT dagemv_ ( F_CHAR_T, int *, int *, 1114 char *, char *, int *, 1115 char *, int *, char *, 1116 char *, int * ); 1117 F_VOID_FCT cagemv_ ( F_CHAR_T, int *, int *, 1118 char *, char *, int *, 1119 char *, int *, char *, 1120 char *, int * ); 1121 F_VOID_FCT zagemv_ ( F_CHAR_T, int *, int *, 1122 char *, char *, int *, 1123 char *, int *, char *, 1124 char *, int * ); 1125 1126 F_VOID_FCT sasymv_ ( F_CHAR_T, int *, char *, 1127 char *, int *, char *, 1128 int *, char *, char *, 1129 int * ); 1130 F_VOID_FCT dasymv_ ( F_CHAR_T, int *, char *, 1131 char *, int *, char *, 1132 int *, char *, char *, 1133 int * ); 1134 F_VOID_FCT casymv_ ( F_CHAR_T, int *, char *, 1135 char *, int *, char *, 1136 int *, char *, char *, 1137 int * ); 1138 F_VOID_FCT zasymv_ ( F_CHAR_T, int *, char *, 1139 char *, int *, char *, 1140 int *, char *, char *, 1141 int * ); 1142 F_VOID_FCT cahemv_ ( F_CHAR_T, int *, char *, 1143 char *, int *, char *, 1144 int *, char *, char *, 1145 int * ); 1146 F_VOID_FCT zahemv_ ( F_CHAR_T, int *, char *, 1147 char *, int *, char *, 1148 int *, char *, char *, 1149 int * ); 1150 1151 F_VOID_FCT satrmv_ ( F_CHAR_T, F_CHAR_T, F_CHAR_T, 1152 int *, char *, char *, 1153 int *, char *, int *, 1154 char *, char *, int * ); 1155 F_VOID_FCT datrmv_ ( F_CHAR_T, F_CHAR_T, F_CHAR_T, 1156 int *, char *, char *, 1157 int *, char *, int *, 1158 char *, char *, int * ); 1159 F_VOID_FCT catrmv_ ( F_CHAR_T, F_CHAR_T, F_CHAR_T, 1160 int *, char *, char *, 1161 int *, char *, int *, 1162 char *, char *, int * ); 1163 F_VOID_FCT zatrmv_ ( F_CHAR_T, F_CHAR_T, F_CHAR_T, 1164 int *, char *, char *, 1165 int *, char *, int *, 1166 char *, char *, int * ); 1167 1168 F_VOID_FCT csymv_ ( F_CHAR_T, int *, char *, 1169 char *, int *, char *, 1170 int *, char *, char *, 1171 int * ); 1172 F_VOID_FCT zsymv_ ( F_CHAR_T, int *, char *, 1173 char *, int *, char *, 1174 int *, char *, char *, 1175 int * ); 1176 1177 F_VOID_FCT csyr_ ( F_CHAR_T, int *, char *, 1178 char *, int *, char *, 1179 int * ); 1180 F_VOID_FCT zsyr_ ( F_CHAR_T, int *, char *, 1181 char *, int *, char *, 1182 int * ); 1183 1184 F_VOID_FCT csyr2_ ( F_CHAR_T, int *, char *, 1185 char *, int *, char *, 1186 int *, char *, int * ); 1187 F_VOID_FCT zsyr2_ ( F_CHAR_T, int *, char *, 1188 char *, int *, char *, 1189 int *, char *, int * ); 1190 1191 void PB_Ctzsyr ( PBTYP_T *, char *, int, 1192 int, int, int, 1193 char *, char *, int, 1194 char *, int, char *, 1195 int ); 1196 void PB_Ctzher ( PBTYP_T *, char *, int, 1197 int, int, int, 1198 char *, char *, int, 1199 char *, int, char *, 1200 int ); 1201 void PB_Ctzsyr2 ( PBTYP_T *, char *, int, 1202 int, int, int, 1203 char *, char *, int, 1204 char *, int, char *, 1205 int, char *, int, 1206 char *, int ); 1207 void PB_Ctzher2 ( PBTYP_T *, char *, int, 1208 int, int, int, 1209 char *, char *, int, 1210 char *, int, char *, 1211 int, char *, int, 1212 char *, int ); 1213 void PB_Ctztrmv ( PBTYP_T *, char *, char *, 1214 char *, char *, int, 1215 int, int, int, 1216 char *, char *, int, 1217 char *, int, char *, 1218 int ); 1219 void PB_Ctzatrmv ( PBTYP_T *, char *, char *, 1220 char *, char *, int, 1221 int, int, int, 1222 char *, char *, int, 1223 char *, int, char *, 1224 int ); 1225 void PB_Ctzsymv ( PBTYP_T *, char *, char *, 1226 int, int, int, 1227 int, char *, char *, 1228 int, char *, int, 1229 char *, int, char *, 1230 int, char *, int ); 1231 void PB_Ctzhemv ( PBTYP_T *, char *, char *, 1232 int, int, int, 1233 int, char *, char *, 1234 int, char *, int, 1235 char *, int, char *, 1236 int, char *, int ); 1237 void PB_Ctzasymv ( PBTYP_T *, char *, char *, 1238 int, int, int, 1239 int, char *, char *, 1240 int, char *, int, 1241 char *, int, char *, 1242 int, char *, int ); 1243 void PB_Ctzahemv ( PBTYP_T *, char *, char *, 1244 int, int, int, 1245 int, char *, char *, 1246 int, char *, int, 1247 char *, int, char *, 1248 int, char *, int ); 1249 1250 void PB_Ctzsyrk ( PBTYP_T *, char *, int, 1251 int, int, int, 1252 char *, char *, int, 1253 char *, int, char *, 1254 int ); 1255 void PB_Ctzherk ( PBTYP_T *, char *, int, 1256 int, int, int, 1257 char *, char *, int, 1258 char *, int, char *, 1259 int ); 1260 void PB_Ctzsyr2k ( PBTYP_T *, char *, int, 1261 int, int, int, 1262 char *, char *, int, 1263 char *, int, char *, 1264 int, char *, int, 1265 char *, int ); 1266 void PB_Ctzher2k ( PBTYP_T *, char *, int, 1267 int, int, int, 1268 char *, char *, int, 1269 char *, int, char *, 1270 int, char *, int, 1271 char *, int ); 1272 void PB_Ctztrmm ( PBTYP_T *, char *, char *, 1273 char *, char *, int, 1274 int, int, int, 1275 char *, char *, int, 1276 char *, int, char *, 1277 int ); 1278 void PB_Ctzsymm ( PBTYP_T *, char *, char *, 1279 int, int, int, 1280 int, char *, char *, 1281 int, char *, int, 1282 char *, int, char *, 1283 int, char *, int ); 1284 void PB_Ctzhemm ( PBTYP_T *, char *, char *, 1285 int, int, int, 1286 int, char *, char *, 1287 int, char *, int, 1288 char *, int, char *, 1289 int, char *, int ); 1290 1291 void PB_CpswapNN ( PBTYP_T *, int, char *, 1292 int, int, int *, 1293 int, char *, int, 1294 int, int *, int ); 1295 void PB_CpswapND ( PBTYP_T *, int, char *, 1296 int, int, int *, 1297 int, char *, int, 1298 int, int *, int ); 1299 void PB_Cpdot11 ( PBTYP_T *, int, char *, 1300 char *, int, int, 1301 int *, int, char *, 1302 int, int, int *, 1303 int, VVDOT_T ); 1304 void PB_CpdotNN ( PBTYP_T *, int, char *, 1305 char *, int, int, 1306 int *, int, char *, 1307 int, int, int *, 1308 int, VVDOT_T ); 1309 void PB_CpdotND ( PBTYP_T *, int, char *, 1310 char *, int, int, 1311 int *, int, char *, 1312 int, int, int *, 1313 int, VVDOT_T ); 1314 void PB_CpaxpbyNN ( PBTYP_T *, char *, int, 1315 int, char *, char *, 1316 int, int, int *, 1317 char *, char *, char *, 1318 int, int, int *, 1319 char * ); 1320 void PB_CpaxpbyND ( PBTYP_T *, char *, int, 1321 int, char *, char *, 1322 int, int, int *, 1323 char *, char *, char *, 1324 int, int, int *, 1325 char * ); 1326 void PB_CpaxpbyDN ( PBTYP_T *, char *, int, 1327 int, char *, char *, 1328 int, int, int *, 1329 char *, char *, char *, 1330 int, int, int *, 1331 char * ); 1332 void PB_Cpaxpby ( PBTYP_T *, char *, int, 1333 int, char *, char *, 1334 int, int, int *, 1335 char *, char *, char *, 1336 int, int, int *, 1337 char * ); 1338 1339 void PB_Cpsyr ( PBTYP_T *, char *, int, 1340 int, char *, char *, 1341 int, char *, int, 1342 char *, int, int, 1343 int *, TZSYR_T ); 1344 void PB_Cpsyr2 ( PBTYP_T *, char *, int, 1345 int, char *, char *, 1346 int, char *, int, 1347 char *, int, char *, 1348 int, char *, int, 1349 int, int *, TZSYR2_T ); 1350 void PB_Cptrm ( PBTYP_T *, PBTYP_T *, char *, 1351 char *, char *, char *, 1352 int, int, char *, 1353 char *, int, int, 1354 int *, char *, int, 1355 char *, int, TZTRM_T ); 1356 void PB_Cpsym ( PBTYP_T *, PBTYP_T *, char *, 1357 char *, int, int, 1358 char *, char *, int, 1359 int, int *, char *, 1360 int, char *, int, 1361 char *, int, char *, 1362 int, TZSYM_T ); 1363 void PB_Cpgeadd ( PBTYP_T *, char *, char *, 1364 char *, int, int, 1365 char *, char *, int, 1366 int, int *, char *, 1367 char *, int, int, 1368 int * ); 1369 void PB_Cptradd ( PBTYP_T *, char *, char *, 1370 char *, int, int, 1371 char *, char *, int, 1372 int, int *, char *, 1373 char *, int, int, 1374 int * ); 1375 void PB_Cptran ( PBTYP_T *, char *, int, 1376 int, char *, char *, 1377 int, int, int *, 1378 char *, char *, int, 1379 int, int * ); 1380 void PB_Cptrsv ( PBTYP_T *, int, char *, 1381 char *, char *, int, 1382 char *, int, int, 1383 int *, char *, int, 1384 char *, int ); 1385 void PB_Cptrsm ( PBTYP_T *, int, char *, 1386 char *, char *, char *, 1387 int, int, char *, 1388 char *, int, int, 1389 int *, char *, int, 1390 char *, int ); 1391 1392 void PB_CpgemmAB ( PBTYP_T *, char *, char *, 1393 char *, char *, int, 1394 int, int, char *, 1395 char *, int, int, 1396 int *, char *, int, 1397 int, int *, char *, 1398 char *, int, int, 1399 int * ); 1400 void PB_CpgemmAC ( PBTYP_T *, char *, char *, 1401 char *, char *, int, 1402 int, int, char *, 1403 char *, int, int, 1404 int *, char *, int, 1405 int, int *, char *, 1406 char *, int, int, 1407 int * ); 1408 void PB_CpgemmBC ( PBTYP_T *, char *, char *, 1409 char *, char *, int, 1410 int, int, char *, 1411 char *, int, int, 1412 int *, char *, int, 1413 int, int *, char *, 1414 char *, int, int, 1415 int * ); 1416 void PB_CpsymmAB ( PBTYP_T *, char *, char *, 1417 char *, char *, int, 1418 int, char *, char *, 1419 int, int, int *, 1420 char *, int, int, 1421 int *, char *, char *, 1422 int, int, int * ); 1423 void PB_CpsymmBC ( PBTYP_T *, char *, char *, 1424 char *, char *, int, 1425 int, char *, char *, 1426 int, int, int *, 1427 char *, int, int, 1428 int *, char *, char *, 1429 int, int, int * ); 1430 void PB_CpsyrkA ( PBTYP_T *, char *, char *, 1431 char *, char *, int, 1432 int, char *, char *, 1433 int, int, int *, 1434 char *, char *, int, 1435 int, int * ); 1436 void PB_CpsyrkAC ( PBTYP_T *, char *, char *, 1437 char *, char *, int, 1438 int, char *, char *, 1439 int, int, int *, 1440 char *, char *, int, 1441 int, int * ); 1442 void PB_Cpsyr2kA ( PBTYP_T *, char *, char *, 1443 char *, char *, int, 1444 int, char *, char *, 1445 int, int, int *, 1446 char *, int, int, 1447 int *, char *, char *, 1448 int, int, int * ); 1449 void PB_Cpsyr2kAC ( PBTYP_T *, char *, char *, 1450 char *, char *, int, 1451 int, char *, char *, 1452 int, int, int *, 1453 char *, int, int, 1454 int *, char *, char *, 1455 int, int, int * ); 1456 void PB_CptrmmAB ( PBTYP_T *, char *, char *, 1457 char *, char *, char *, 1458 int, int, char *, 1459 char *, int, int, 1460 int *, char *, int, 1461 int, int * ); 1462 void PB_CptrmmB ( PBTYP_T *, char *, char *, 1463 char *, char *, char *, 1464 int, int, char *, 1465 char *, int, int, 1466 int *, char *, int, 1467 int, int * ); 1468 void PB_CptrsmAB ( PBTYP_T *, char *, char *, 1469 char *, char *, char *, 1470 int, int, char *, 1471 char *, int, int, 1472 int *, char *, int, 1473 int, int * ); 1474 void PB_CptrsmAB0 ( PBTYP_T *, char *, char *, 1475 char *, int, int, 1476 char *, char *, int, 1477 int, int *, char *, 1478 int, int, int *, 1479 char * *, int *, int * ); 1480 void PB_CptrsmAB1 ( PBTYP_T *, char *, char *, 1481 char *, char *, int, 1482 int, char *, char *, 1483 int, int, int *, 1484 char *, int, int, 1485 int *, char *, int * ); 1486 void PB_CptrsmB ( PBTYP_T *, char *, char *, 1487 char *, char *, char *, 1488 int, int, char *, 1489 char *, int, int, 1490 int *, char *, int, 1491 int, int * ); 1492 #else 1493 1494 F_VOID_FCT immadd_ (); 1495 F_VOID_FCT smmadd_ (); 1496 F_VOID_FCT dmmadd_ (); 1497 F_VOID_FCT cmmadd_ (); 1498 F_VOID_FCT zmmadd_ (); 1499 1500 F_VOID_FCT smmcadd_ (); 1501 F_VOID_FCT dmmcadd_ (); 1502 F_VOID_FCT cmmcadd_ (); 1503 F_VOID_FCT zmmcadd_ (); 1504 1505 F_VOID_FCT immtadd_ (); 1506 F_VOID_FCT smmtadd_ (); 1507 F_VOID_FCT dmmtadd_ (); 1508 F_VOID_FCT cmmtadd_ (); 1509 F_VOID_FCT zmmtadd_ (); 1510 1511 F_VOID_FCT smmtcadd_ (); 1512 F_VOID_FCT dmmtcadd_ (); 1513 F_VOID_FCT cmmtcadd_ (); 1514 F_VOID_FCT zmmtcadd_ (); 1515 1516 F_VOID_FCT immdda_ (); 1517 F_VOID_FCT smmdda_ (); 1518 F_VOID_FCT dmmdda_ (); 1519 F_VOID_FCT cmmdda_ (); 1520 F_VOID_FCT zmmdda_ (); 1521 1522 F_VOID_FCT smmddac_ (); 1523 F_VOID_FCT dmmddac_ (); 1524 F_VOID_FCT cmmddac_ (); 1525 F_VOID_FCT zmmddac_ (); 1526 1527 F_VOID_FCT immddat_ (); 1528 F_VOID_FCT smmddat_ (); 1529 F_VOID_FCT dmmddat_ (); 1530 F_VOID_FCT cmmddat_ (); 1531 F_VOID_FCT zmmddat_ (); 1532 1533 F_VOID_FCT smmddact_ (); 1534 F_VOID_FCT dmmddact_ (); 1535 F_VOID_FCT cmmddact_ (); 1536 F_VOID_FCT zmmddact_ (); 1537 1538 F_VOID_FCT sasqrtb_ (); 1539 F_VOID_FCT dasqrtb_ (); 1540 1541 F_VOID_FCT sset_ (); 1542 F_VOID_FCT dset_ (); 1543 F_VOID_FCT cset_ (); 1544 F_VOID_FCT zset_ (); 1545 1546 F_VOID_FCT svasum_ (); 1547 F_VOID_FCT dvasum_ (); 1548 F_VOID_FCT scvasum_ (); 1549 F_VOID_FCT dzvasum_ (); 1550 1551 F_VOID_FCT sascal_ (); 1552 F_VOID_FCT dascal_ (); 1553 1554 F_VOID_FCT scshft_ (); 1555 F_VOID_FCT dcshft_ (); 1556 F_VOID_FCT ccshft_ (); 1557 F_VOID_FCT zcshft_ (); 1558 1559 F_VOID_FCT srshft_ (); 1560 F_VOID_FCT drshft_ (); 1561 F_VOID_FCT crshft_ (); 1562 F_VOID_FCT zrshft_ (); 1563 1564 F_VOID_FCT svvdot_ (); 1565 F_VOID_FCT dvvdot_ (); 1566 F_VOID_FCT cvvdotc_ (); 1567 F_VOID_FCT cvvdotu_ (); 1568 F_VOID_FCT zvvdotc_ (); 1569 F_VOID_FCT zvvdotu_ (); 1570 1571 F_VOID_FCT stzpad_ (); 1572 F_VOID_FCT dtzpad_ (); 1573 F_VOID_FCT ctzpad_ (); 1574 F_VOID_FCT ztzpad_ (); 1575 1576 F_VOID_FCT stzpadcpy_ (); 1577 F_VOID_FCT dtzpadcpy_ (); 1578 F_VOID_FCT ctzpadcpy_ (); 1579 F_VOID_FCT ztzpadcpy_ (); 1580 1581 F_VOID_FCT stzscal_ (); 1582 F_VOID_FCT dtzscal_ (); 1583 F_VOID_FCT ctzscal_ (); 1584 F_VOID_FCT ztzscal_ (); 1585 1586 F_VOID_FCT chescal_ (); 1587 F_VOID_FCT zhescal_ (); 1588 1589 F_VOID_FCT ctzcnjg_ (); 1590 F_VOID_FCT ztzcnjg_ (); 1591 1592 F_VOID_FCT sagemv_ (); 1593 F_VOID_FCT dagemv_ (); 1594 F_VOID_FCT cagemv_ (); 1595 F_VOID_FCT zagemv_ (); 1596 1597 F_VOID_FCT sasymv_ (); 1598 F_VOID_FCT dasymv_ (); 1599 F_VOID_FCT casymv_ (); 1600 F_VOID_FCT zasymv_ (); 1601 F_VOID_FCT cahemv_ (); 1602 F_VOID_FCT zahemv_ (); 1603 1604 F_VOID_FCT satrmv_ (); 1605 F_VOID_FCT datrmv_ (); 1606 F_VOID_FCT catrmv_ (); 1607 F_VOID_FCT zatrmv_ (); 1608 1609 F_VOID_FCT csymv_ (); 1610 F_VOID_FCT zsymv_ (); 1611 1612 F_VOID_FCT csyr_ (); 1613 F_VOID_FCT zsyr_ (); 1614 1615 F_VOID_FCT csyr2_ (); 1616 F_VOID_FCT zsyr2_ (); 1617 1618 void PB_Ctzsyr (); 1619 void PB_Ctzher (); 1620 void PB_Ctzsyr2 (); 1621 void PB_Ctzher2 (); 1622 void PB_Ctztrmv (); 1623 void PB_Ctzatrmv (); 1624 void PB_Ctzsymv (); 1625 void PB_Ctzhemv (); 1626 void PB_Ctzasymv (); 1627 void PB_Ctzahemv (); 1628 void PB_Ctzsyrk (); 1629 void PB_Ctzherk (); 1630 void PB_Ctzsyr2k (); 1631 void PB_Ctzher2k (); 1632 void PB_Ctztrmm (); 1633 void PB_Ctzsymm (); 1634 void PB_Ctzhemm (); 1635 1636 void PB_CpswapNN (); 1637 void PB_CpswapND (); 1638 void PB_Cpdot11 (); 1639 void PB_CpdotNN (); 1640 void PB_CpdotND (); 1641 void PB_CpaxpbyNN (); 1642 void PB_CpaxpbyND (); 1643 void PB_CpaxpbyDN (); 1644 void PB_Cpaxpby (); 1645 1646 void PB_Cpsyr (); 1647 void PB_Cpsyr2 (); 1648 void PB_Cptrm (); 1649 void PB_Cpsym (); 1650 void PB_Cpgeadd (); 1651 void PB_Cptradd (); 1652 void PB_Cptran (); 1653 void PB_Cptrsv (); 1654 void PB_Cptrsm (); 1655 1656 void PB_CpgemmAB (); 1657 void PB_CpgemmAC (); 1658 void PB_CpgemmBC (); 1659 void PB_CpsymmAB (); 1660 void PB_CpsymmBC (); 1661 void PB_CpsyrkA (); 1662 void PB_CpsyrkAC (); 1663 void PB_Cpsyr2kA (); 1664 void PB_Cpsyr2kAC (); 1665 void PB_CptrmmAB (); 1666 void PB_CptrmmB (); 1667 void PB_CptrsmAB (); 1668 void PB_CptrsmAB0 (); 1669 void PB_CptrsmAB1 (); 1670 void PB_CptrsmB (); 1671 1672 #endif 1673 /* TOOLS */ 1674 #ifdef __STDC__ 1675 1676 int PB_Cgcd ( int, int ); 1677 int PB_Clcm ( int, int ); 1678 1679 void PB_Cdescset ( int *, int, int, 1680 int, int, int, 1681 int, int, int, 1682 int, int ); 1683 void PB_Cdescribe ( int, int, int, 1684 int, int *, int, 1685 int, int, int, 1686 int *, int *, int *, 1687 int *, int *, int *, 1688 int *, int *, int *, 1689 int * ); 1690 void PB_CargFtoC ( int, int, int *, 1691 int *, int *, int * ); 1692 int PB_Cfirstnb ( int, int, int, 1693 int ); 1694 int PB_Clastnb ( int, int, int, 1695 int ); 1696 int PB_Cspan ( int, int, int, 1697 int, int, int ); 1698 1699 void PB_Cainfog2l ( int, int, int, 1700 int, int *, int, 1701 int, int, int, 1702 int *, int *, int *, 1703 int *, int *, int *, 1704 int *, int *, int *, 1705 int * ); 1706 void PB_Cinfog2l ( int, int, int *, 1707 int, int, int, 1708 int, int *, int *, 1709 int *, int * ); 1710 int PB_Cg2lrem ( int, int, int, 1711 int, int, int ); 1712 int PB_Cindxg2p ( int, int, int, 1713 int, int, int ); 1714 int PB_Cnumroc ( int, int, int, 1715 int, int, int, 1716 int ); 1717 int PB_Cnpreroc ( int, int, int, 1718 int, int, int, 1719 int ); 1720 int PB_Cnnxtroc ( int, int, int, 1721 int, int, int, 1722 int ); 1723 1724 void PB_Cconjg ( PBTYP_T *, char *, char * ); 1725 1726 1727 void PB_Cwarn ( int, int, char *, 1728 char *, ... ); 1729 void PB_Cabort ( int, char *, int ); 1730 void PB_Cchkmat ( int, char *, char *, 1731 int, int, int, 1732 int, int, int, 1733 int *, int, int * ); 1734 void PB_Cchkvec ( int, char *, char *, 1735 int, int, int, 1736 int, int *, int, 1737 int, int * ); 1738 1739 char * PB_Cmalloc ( int ); 1740 char * PB_Cgetbuf ( char *, int ); 1741 1742 PBTYP_T * PB_Citypeset ( void ); 1743 PBTYP_T * PB_Cstypeset ( void ); 1744 PBTYP_T * PB_Cdtypeset ( void ); 1745 PBTYP_T * PB_Cctypeset ( void ); 1746 PBTYP_T * PB_Cztypeset ( void ); 1747 1748 int pilaenv_ ( int *, F_CHAR_T ); 1749 char * PB_Ctop ( int *, char *, char *, 1750 char * ); 1751 1752 void PB_CVMinit ( PB_VM_T *, int, int, 1753 int, int, int, 1754 int, int, int, 1755 int, int, int, 1756 int ); 1757 int PB_CVMnpq ( PB_VM_T * ); 1758 void PB_CVMcontig ( PB_VM_T *, int *, int *, 1759 int *, int * ); 1760 int PB_CVMloc ( PBTYP_T *, PB_VM_T *, char *, 1761 char *, char *, char *, 1762 int, int, char *, 1763 char *, int, char *, 1764 char *, int ); 1765 int PB_CVMswp ( PBTYP_T *, PB_VM_T *, char *, 1766 char *, char *, int, 1767 char *, int, char *, 1768 int ); 1769 int PB_CVMpack ( PBTYP_T *, PB_VM_T *, char *, 1770 char *, char *, char *, 1771 int, int, char *, 1772 char *, int, char *, 1773 char *, int ); 1774 void PB_CVMupdate ( PB_VM_T *, int, int *, 1775 int * ); 1776 1777 void PB_Cbinfo ( int, int, int, 1778 int, int, int, 1779 int, int, int, 1780 int *, int *, int *, 1781 int *, int *, int *, 1782 int *, int *, int *, 1783 int *, int * ); 1784 1785 void PB_Cplaprnt ( PBTYP_T *, int, int, 1786 char *, int, int, 1787 int *, int, int, 1788 char * ); 1789 void PB_Cplaprn2 ( PBTYP_T *, int, int, 1790 char *, int, int, 1791 int *, int, int, 1792 char *, int, int ); 1793 void PB_Cprnt ( char, int, int, 1794 int, char *, int, 1795 int, char * ); 1796 1797 void PB_Cplapad ( PBTYP_T *, char *, char *, 1798 int, int, char *, 1799 char *, char *, int, 1800 int, int * ); 1801 void PB_Cplapd2 ( PBTYP_T *, char *, char *, 1802 int, int, char *, 1803 char *, char *, int, 1804 int, int * ); 1805 void PB_Cplascal ( PBTYP_T *, char *, char *, 1806 int, int, char *, 1807 char *, int, int, 1808 int * ); 1809 void PB_Cplasca2 ( PBTYP_T *, char *, char *, 1810 int, int, char *, 1811 char *, int, int, 1812 int * ); 1813 void PB_Cplacnjg ( PBTYP_T *, int, int, 1814 char *, char *, int, 1815 int, int * ); 1816 1817 void PB_CInV ( PBTYP_T *, char *, char *, 1818 int, int, int *, 1819 int, char *, int, 1820 int, int *, char *, 1821 char * *, int *, int * ); 1822 void PB_CInV2 ( PBTYP_T *, char *, char *, 1823 int, int, int *, 1824 int, char *, int, 1825 int, int *, char *, 1826 char *, int, int * ); 1827 void PB_CInOutV ( PBTYP_T *, char *, int, 1828 int, int *, int, 1829 char *, char *, int, 1830 int, int *, char *, 1831 char * *, char * *, int *, 1832 int *, int *, int * ); 1833 void PB_CInOutV2 ( PBTYP_T *, char *, char *, 1834 int, int, int, 1835 int *, int, char *, 1836 int, int, int *, 1837 char *, char * *, int *, 1838 int *, int *, int * ); 1839 void PB_COutV ( PBTYP_T *, char *, char *, 1840 int, int, int *, 1841 int, char * *, int *, 1842 int *, int * ); 1843 void PB_CGatherV ( PBTYP_T *, char *, char *, 1844 int, int, char *, 1845 int, int, int *, 1846 char *, char * *, int *, 1847 int * ); 1848 void PB_CScatterV ( PBTYP_T *, char *, int, 1849 int, char *, int, 1850 int, int *, char *, 1851 char *, char *, int, 1852 int, int *, char * ); 1853 #else 1854 1855 int PB_Cgcd (); 1856 int PB_Clcm (); 1857 1858 void PB_Cdescset (); 1859 void PB_Cdescribe (); 1860 void PB_CargFtoC (); 1861 int PB_Cfirstnb (); 1862 int PB_Clastnb (); 1863 int PB_Cspan (); 1864 1865 void PB_Cainfog2l (); 1866 void PB_Cinfog2l (); 1867 int PB_Cg2lrem (); 1868 int PB_Cindxg2p (); 1869 int PB_Cnumroc (); 1870 int PB_Cnpreroc (); 1871 int PB_Cnnxtroc (); 1872 1873 void PB_Cconjg (); 1874 1875 void PB_Cwarn (); 1876 void PB_Cabort (); 1877 void PB_Cchkmat (); 1878 void PB_Cchkvec (); 1879 1880 char * PB_Cmalloc (); 1881 char * PB_Cgetbuf (); 1882 1883 PBTYP_T * PB_Citypeset (); 1884 PBTYP_T * PB_Cstypeset (); 1885 PBTYP_T * PB_Cdtypeset (); 1886 PBTYP_T * PB_Cctypeset (); 1887 PBTYP_T * PB_Cztypeset (); 1888 1889 int pilaenv_ (); 1890 char * PB_Ctop (); 1891 1892 void PB_CVMinit (); 1893 int PB_CVMnpq (); 1894 void PB_CVMcontig (); 1895 int PB_CVMloc (); 1896 int PB_CVMswp (); 1897 int PB_CVMpack (); 1898 void PB_CVMupdate (); 1899 1900 void PB_Cbinfo (); 1901 1902 void PB_Cplaprnt (); 1903 void PB_Cplaprn2 (); 1904 void PB_Cprnt (); 1905 1906 void PB_Cplapad (); 1907 void PB_Cplapd2 (); 1908 void PB_Cplascal (); 1909 void PB_Cplasca2 (); 1910 void PB_Cplacnjg (); 1911 1912 void PB_CInV (); 1913 void PB_CInV2 (); 1914 void PB_CInOutV (); 1915 void PB_CInOutV2 (); 1916 void PB_COutV (); 1917 void PB_CGatherV (); 1918 void PB_CScatterV (); 1919 1920 #endif 1921