IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 1065


Ignore:
Timestamp:
Jun 21, 2004, 11:04:24 AM (22 years ago)
Author:
harman
Message:

Added more function macros

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/dataManip/psMatrixVectorArithmetic.c

    r1064 r1065  
    2929 *  @author Ross Harman, MHPCC
    3030 *
    31  *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
    32  *  @date $Date: 2004-06-19 02:00:45 $
     31 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
     32 *  @date $Date: 2004-06-21 21:04:24 $
    3333 *
    3434 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4646#include "psImage.h"
    4747#include "psVector.h"
     48#include "psScalar.h"
    4849
    4950/******************************************************************************/
     
    7980#define MAX(A,B) (((A) > (B)) ? (A) : (B))
    8081
     82
     83// VECTOR_XXXX operations
    8184#define VECTOR_SCALAR(OUT,IN1,OP,IN2,TYPE)                                                                   \
    8285{                                                                                                            \
     
    9497    }                                                                                                        \
    9598}
     99
    96100#define VECTOR_VECTOR(OUT,IN1,OP,IN2,TYPE)                                                                   \
    97101{                                                                                                            \
     
    107111    for (i=0; i < npt; i++, o++, i1++, i2++) {                                                               \
    108112        *o = OP;                                                                                             \
     113    }                                                                                                        \
     114}
     115
     116
     117// IMAGE_XXXX operations
     118#define IMAGE_SCALAR(OUT,IN1,OP,IN2,TYPE)                                                                    \
     119{                                                                                                            \
     120    int i = 0;                                                                                               \
     121    int j = 0;                                                                                               \
     122    int numRows = 0;                                                                                         \
     123    int numCols = 0;                                                                                         \
     124    ps##TYPE *o = NULL;                                                                                      \
     125    ps##TYPE *i1 = NULL;                                                                                     \
     126    ps##TYPE *i2 = NULL;                                                                                     \
     127    numRows = ((psImage*)IN1)->numRows;                                                                      \
     128    numCols = ((psImage*)IN1)->numCols;                                                                      \
     129    for(j = 0; j < numCols; j++) {                                                                           \
     130        o  = ((psImage*)OUT)->data.TYPE[j];                                                                  \
     131        i1 = ((psImage*)IN1)->data.TYPE[j];                                                                  \
     132        i2 = &((psScalar*)IN2)->data.TYPE;                                                                   \
     133        for(i = 0; i < numRows; i++, o++, i1++) {                                                            \
     134            *o = OP;                                                                                         \
     135        }                                                                                                    \
    109136    }                                                                                                        \
    110137}
     
    126153        i2 = ((psImage*)IN2)->data.TYPE[j];                                                                  \
    127154        for(i = 0; i < numRows; i++, o++, i1++, i2++) {                                                      \
     155            *o = OP;                                                                                         \
     156        }                                                                                                    \
     157    }                                                                                                        \
     158}
     159
     160// SCALAR_XXXX operations
     161#define SCALAR_SCALAR(OUT,IN1,OP,IN2,TYPE)                                                                   \
     162{                                                                                                            \
     163    int i = 0;                                                                                               \
     164    ps##TYPE *o = NULL;                                                                                      \
     165    ps##TYPE *i1 = NULL;                                                                                     \
     166    ps##TYPE *i2 = NULL;                                                                                     \
     167    o  = &((psScalar*)OUT)->data.TYPE;                                                                       \
     168    i1 = &((psScalar*)IN1)->data.TYPE;                                                                       \
     169    i2 = &((psScalar*)IN2)->data.TYPE;                                                                       \
     170    *o = OP;                                                                                                 \
     171}
     172
     173#define SCALAR_VECTOR(OUT,IN1,OP,IN2,TYPE)                                                                   \
     174{                                                                                                            \
     175    int i = 0;                                                                                               \
     176    int npt = 0;                                                                                             \
     177    ps##TYPE *o = NULL;                                                                                      \
     178    ps##TYPE *i1 = NULL;                                                                                     \
     179    ps##TYPE *i2 = NULL;                                                                                     \
     180    npt  = ((psVector*)IN1)->n;                                                                              \
     181    o  = ((psVector*)OUT)->data.TYPE;                                                                        \
     182    i1 = &((psScalar*)IN1)->data.TYPE;                                                                       \
     183    i2 = ((psVector*)IN2)->data.TYPE;                                                                        \
     184    for (i=0; i < npt; i++, o++, i2++) {                                                                     \
     185        *o = OP;                                                                                             \
     186    }                                                                                                        \
     187}
     188
     189// SCALAR_XXXX operations
     190#define SCALAR_IMAGE(OUT,IN1,OP,IN2,TYPE)                                                                    \
     191{                                                                                                            \
     192    int i = 0;                                                                                               \
     193    int j = 0;                                                                                               \
     194    int numRows = 0;                                                                                         \
     195    int numCols = 0;                                                                                         \
     196    ps##TYPE *o = NULL;                                                                                      \
     197    ps##TYPE *i1 = NULL;                                                                                     \
     198    ps##TYPE *i2 = NULL;                                                                                     \
     199    numRows = ((psImage*)IN1)->numRows;                                                                      \
     200    numCols = ((psImage*)IN1)->numCols;                                                                      \
     201    for(j = 0; j < numCols; j++) {                                                                           \
     202        o  = ((psImage*)OUT)->data.TYPE[j];                                                                  \
     203        i1 = &((psScalar*)IN1)->data.TYPE;                                                                   \
     204        i2 = ((psImage*)IN2)->data.TYPE[j];                                                                  \
     205        for(i = 0; i < numRows; i++, o++, i2++) {                                                            \
    128206            *o = OP;                                                                                         \
    129207        }                                                                                                    \
     
    232310    if(dim1 == PS_DIMEN_VECTOR) {
    233311        if(dim2 == PS_DIMEN_VECTOR) {
    234             LEVEL2(VECTOR,VECTOR,out,psType1,op,psType2);      // Vector op vector
     312            LEVEL2(VECTOR,VECTOR,out,psType1,op,psType2);       // vector op vector
    235313        } else if(dim2 == PS_DIMEN_IMAGE) {
    236             //LEVEL2(VECTOR,IMAGE,out,in1,op,in2);       // Vector op image
     314            //LEVEL2();              // vector op image
     315        } else if(dim2 == PS_DIMEN_SCALAR) {
     316            LEVEL2(VECTOR,VECTOR,out,psType1,op,psType2);               // vector op scalar
    237317        } else {
    238318            psError(__func__, ": Line %d - Invalid dimensionality for in2 arg: %d", __LINE__, dim2);
     
    240320    } else if(dim1 == PS_DIMEN_IMAGE) {
    241321        if(dim2 == PS_DIMEN_VECTOR) {
    242             //LEVEL2(IMAGE,VECTOR,out,in1,op,in2);        // Image op vector
     322            //LEVEL2();              // image op vector
    243323        } else if(dim2 == PS_DIMEN_IMAGE) {
    244             LEVEL2(IMAGE,IMAGE,out,psType1,op,in2);        // Image op image
     324            LEVEL2(IMAGE,IMAGE,out,psType1,op,psType2);             // image op image
     325        } else if(dim2 == PS_DIMEN_SCALAR) {
     326            LEVEL2(IMAGE,SCALAR,out,psType1,op,psType2);            // image op scalar
     327        } else {
     328            psError(__func__, ": Line %d - Invalid dimensionality for in2 arg: %d", __LINE__, dim2);
     329        }
     330    } else if(dim1 == PS_DIMEN_SCALAR) {
     331        if(dim2 == PS_DIMEN_VECTOR) {
     332            LEVEL2(SCALAR,VECTOR,out,psType1,op,psType2);           // scalar op vector
     333        } else if(dim2 == PS_DIMEN_IMAGE) {
     334            LEVEL2(SCALAR,IMAGE,out,psType1,op,psType2);            // scalar op image
    245335        } else {
    246336            psError(__func__, ": Line %d - Invalid dimensionality for in2 arg: %d", __LINE__, dim2);
Note: See TracChangeset for help on using the changeset viewer.