Changeset 1088 for trunk/psLib/src/dataManip/psMatrixVectorArithmetic.c
- Timestamp:
- Jun 24, 2004, 4:00:41 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/dataManip/psMatrixVectorArithmetic.c
r1085 r1088 29 29 * @author Ross Harman, MHPCC 30 30 * 31 * @version $Revision: 1. 6$ $Name: not supported by cvs2svn $32 * @date $Date: 2004-06-25 0 0:31:12$31 * @version $Revision: 1.7 $ $Name: not supported by cvs2svn $ 32 * @date $Date: 2004-06-25 02:00:41 $ 33 33 * 34 34 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 323 323 324 324 // Preprocessor macro function to create arithmetic function based on input type 325 #define LEVEL1(DIM1,DIM2,OUT,IN1,OP,IN2)\325 #define BINARY_TYPE(DIM1,DIM2,OUT,IN1,OP,IN2) \ 326 326 switch (IN1->type) { \ 327 327 case PS_TYPE_S8: \ … … 366 366 367 367 // Preprocessor macro function to create arithmetic function operation name 368 #define LEVEL2(DIM1,DIM2,OUT,IN1,OP,IN2)\368 #define BINARY_OP(DIM1,DIM2,OUT,IN1,OP,IN2) \ 369 369 if(!strncmp(OP, "+", 1)) { \ 370 LEVEL1(DIM1,DIM2,OUT,IN1,*i1 + *i2,IN2);\370 BINARY_TYPE(DIM1,DIM2,OUT,IN1,*i1 + *i2,IN2); \ 371 371 } else if(!strncmp(OP, "-", 1)) { \ 372 LEVEL1(DIM1,DIM2,OUT,IN1,*i1 - *i2,IN2);\372 BINARY_TYPE(DIM1,DIM2,OUT,IN1,*i1 - *i2,IN2); \ 373 373 } else if(!strncmp(OP, "*", 1)) { \ 374 LEVEL1(DIM1,DIM2,OUT,IN1,*i1 * *i2,IN2);\374 BINARY_TYPE(DIM1,DIM2,OUT,IN1,*i1 * *i2,IN2); \ 375 375 } else if(!strncmp(OP, "/", 1)) { \ 376 LEVEL1(DIM1,DIM2,OUT,IN1,*i1 / *i2,IN2);\376 BINARY_TYPE(DIM1,DIM2,OUT,IN1,*i1 / *i2,IN2); \ 377 377 } else if(!strncmp(OP, "^", 1)) { \ 378 378 if(PS_IS_PSELEMTYPE_COMPLEX(IN1->type)) { \ 379 LEVEL1(DIM1,DIM2,OUT,IN1,cpow(*i1,*i2),IN2);\380 } else { \ 381 LEVEL1(DIM1,DIM2,OUT,IN1,pow(*i1,*i2),IN2);\379 BINARY_TYPE(DIM1,DIM2,OUT,IN1,cpow(*i1,*i2),IN2); \ 380 } else { \ 381 BINARY_TYPE(DIM1,DIM2,OUT,IN1,pow(*i1,*i2),IN2); \ 382 382 } \ 383 383 } else if(!strncmp(OP, "min", 3)) { \ 384 LEVEL1(DIM1,DIM2,OUT,IN1,MIN(*i1,*i2),IN2);\384 BINARY_TYPE(DIM1,DIM2,OUT,IN1,MIN(*i1,*i2),IN2); \ 385 385 } else if(!strncmp(OP, "max", 3)) { \ 386 LEVEL1(DIM1,DIM2,OUT,IN1,MAX(*i1,*i2),IN2);\386 BINARY_TYPE(DIM1,DIM2,OUT,IN1,MAX(*i1,*i2),IN2); \ 387 387 } else { \ 388 388 psError(__func__, ": Line %d - Invalid operator: %s", __LINE__, #OP); \ … … 445 445 if(dim1 == PS_DIMEN_SCALAR) { 446 446 if(dim2 == PS_DIMEN_SCALAR) { 447 LEVEL2(SCALAR,SCALAR,out,psType1,op,psType2); // scalar op scalar447 BINARY_OP(SCALAR,SCALAR,out,psType1,op,psType2); // scalar op scalar 448 448 } else if(dim2==PS_DIMEN_VECTOR || dim2==PS_DIMEN_TRANSV) { 449 LEVEL2(SCALAR,VECTOR,out,psType1,op,psType2); // scalar op vector449 BINARY_OP(SCALAR,VECTOR,out,psType1,op,psType2); // scalar op vector 450 450 } else if(dim2 == PS_DIMEN_IMAGE) { 451 LEVEL2(SCALAR,IMAGE,out,psType1,op,psType2); // scalar op image451 BINARY_OP(SCALAR,IMAGE,out,psType1,op,psType2); // scalar op image 452 452 } else { 453 453 psError(__func__, ": Line %d - Invalid dimensionality for in2 arg: %d", __LINE__, dim2); … … 455 455 } else if(dim1==PS_DIMEN_VECTOR || dim1==PS_DIMEN_TRANSV) { 456 456 if(dim2 == PS_DIMEN_SCALAR) { 457 LEVEL2(VECTOR,SCALAR,out,psType1,op,psType2); // vector op scalar457 BINARY_OP(VECTOR,SCALAR,out,psType1,op,psType2); // vector op scalar 458 458 } else if(dim2==PS_DIMEN_VECTOR || dim2==PS_DIMEN_TRANSV) { 459 LEVEL2(VECTOR,VECTOR,out,psType1,op,psType2); // vector op vector459 BINARY_OP(VECTOR,VECTOR,out,psType1,op,psType2); // vector op vector 460 460 } else if(dim2 == PS_DIMEN_IMAGE) { 461 LEVEL2(VECTOR,IMAGE,out,psType1,op,psType2); // vector op image461 BINARY_OP(VECTOR,IMAGE,out,psType1,op,psType2); // vector op image 462 462 } else { 463 463 psError(__func__, ": Line %d - Invalid dimensionality for in2 arg: %d", __LINE__, dim2); … … 465 465 } else if(dim1 == PS_DIMEN_IMAGE) { 466 466 if(dim2 == PS_DIMEN_SCALAR) { 467 LEVEL2(IMAGE,SCALAR,out,psType1,op,psType2); // image op scalar467 BINARY_OP(IMAGE,SCALAR,out,psType1,op,psType2); // image op scalar 468 468 } else if(dim2==PS_DIMEN_VECTOR || dim2==PS_DIMEN_TRANSV) { 469 LEVEL2(IMAGE,VECTOR,out,psType1,op,psType2); // image op vector469 BINARY_OP(IMAGE,VECTOR,out,psType1,op,psType2); // image op vector 470 470 } else if(dim2 == PS_DIMEN_IMAGE) { 471 LEVEL2(IMAGE,IMAGE,out,psType1,op,psType2); // image op image471 BINARY_OP(IMAGE,IMAGE,out,psType1,op,psType2); // image op image 472 472 } else { 473 473 psError(__func__, ": Line %d - Invalid dimensionality for in2 arg: %d", __LINE__, dim2); … … 594 594 } \ 595 595 } else if(!strncmp(OP, "exp", 3)) { \ 596 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \596 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 597 597 UNARY_TYPE(DIM,OUT,IN,exp(*i1)); \ 598 598 } else { \ … … 600 600 } \ 601 601 } else if(!strncmp(OP, "ln", 2)) { \ 602 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \602 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 603 603 UNARY_TYPE(DIM,OUT,IN,log(*i1)); \ 604 604 } else { \ … … 606 606 } \ 607 607 } else if(!strncmp(OP, "ten", 3)) { \ 608 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \608 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 609 609 UNARY_TYPE(DIM,OUT,IN,exp10(*i1)); \ 610 610 } else { \ … … 612 612 } \ 613 613 } else if(!strncmp(OP, "log", 3)) { \ 614 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \614 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 615 615 UNARY_TYPE(DIM,OUT,IN,log10(*i1)); \ 616 616 } else { \ … … 618 618 } \ 619 619 } else if(!strncmp(OP, "sin", 3)) { \ 620 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \620 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 621 621 UNARY_TYPE(DIM,OUT,IN,sin(*i1)); \ 622 622 } else { \ … … 624 624 } \ 625 625 } else if(!strncmp(OP, "dsin", 4)) { \ 626 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \626 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 627 627 UNARY_TYPE(DIM,OUT,IN,sin(*i1*D2R)); \ 628 628 } else { \ … … 630 630 } \ 631 631 } else if(!strncmp(OP, "cos", 3)) { \ 632 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \632 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 633 633 UNARY_TYPE(DIM,OUT,IN,cos(*i1)); \ 634 634 } else { \ … … 636 636 } \ 637 637 } else if(!strncmp(OP, "dcos", 4)) { \ 638 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \638 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 639 639 UNARY_TYPE(DIM,OUT,IN,cos(*i1*D2R)); \ 640 640 } else { \ … … 642 642 } \ 643 643 } else if(!strncmp(OP, "tan", 3)) { \ 644 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \644 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 645 645 UNARY_TYPE(DIM,OUT,IN,tan(*i1)); \ 646 646 } else { \ … … 648 648 } \ 649 649 } else if(!strncmp(OP, "dtan", 4)) { \ 650 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \650 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 651 651 UNARY_TYPE(DIM,OUT,IN,tan(*i1*D2R)); \ 652 652 } else { \ … … 654 654 } \ 655 655 } else if(!strncmp(OP, "asin", 4)) { \ 656 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \656 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 657 657 UNARY_TYPE(DIM,OUT,IN,asin(*i1)); \ 658 658 } else { \ … … 660 660 } \ 661 661 } else if(!strncmp(OP, "dasin", 5)) { \ 662 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \662 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 663 663 UNARY_TYPE(DIM,OUT,IN,R2D*asin(*i1)); \ 664 664 } else { \ … … 666 666 } \ 667 667 } else if(!strncmp(OP, "acos", 4)) { \ 668 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \668 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 669 669 UNARY_TYPE(DIM,OUT,IN,acos(*i1)); \ 670 670 } else { \ … … 672 672 } \ 673 673 } else if(!strncmp(OP, "dacos", 5)) { \ 674 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \674 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 675 675 UNARY_TYPE(DIM,OUT,IN,R2D*acos(*i1)); \ 676 676 } else { \ … … 678 678 } \ 679 679 } else if(!strncmp(OP, "atan", 4)) { \ 680 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \680 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 681 681 UNARY_TYPE(DIM,OUT,IN,atan(*i1)); \ 682 682 } else { \ … … 684 684 } \ 685 685 } else if(!strncmp(OP, "datan", 5)) { \ 686 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \686 if(PS_IS_PSELEMTYPE_COMPLEX(IN->type)) { \ 687 687 UNARY_TYPE(DIM,OUT,IN,R2D*atan(*i1)); \ 688 688 } else { \
Note:
See TracChangeset
for help on using the changeset viewer.
