Changeset 12431 for trunk/psLib/src/mathtypes
- Timestamp:
- Mar 13, 2007, 2:39:51 PM (19 years ago)
- Location:
- trunk/psLib/src/mathtypes
- Files:
-
- 6 edited
-
psImage.c (modified) (21 diffs)
-
psImage.h (modified) (9 diffs)
-
psScalar.c (modified) (4 diffs)
-
psScalar.h (modified) (5 diffs)
-
psVector.c (modified) (12 diffs)
-
psVector.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/mathtypes/psImage.c
r12381 r12431 9 9 * @author Ross Harman, MHPCC 10 10 * 11 * @version $Revision: 1.12 4$ $Name: not supported by cvs2svn $12 * @date $Date: 2007-03- 09 20:16:40 $11 * @version $Revision: 1.125 $ $Name: not supported by cvs2svn $ 12 * @date $Date: 2007-03-14 00:39:50 $ 13 13 * 14 14 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 31 31 #include "psString.h" 32 32 33 34 35 #define SQUARE(x) ((x)*(x))36 #define MIN(x,y) (((x) > (y)) ? (y) : (x))37 #define MAX(x,y) (((x) > (y)) ? (x) : (y))38 33 39 34 static void imageFree(psImage* image) … … 209 204 int x, 210 205 int y, 211 double complexvalue)206 double value) 212 207 { 213 208 PS_ASSERT_IMAGE_NON_NULL(image, false); … … 276 271 IMAGE_SET_CASE(F32); 277 272 IMAGE_SET_CASE(F64); 278 IMAGE_SET_CASE(C32);279 IMAGE_SET_CASE(C64);280 273 default: 281 274 psError(PS_ERR_BAD_PARAMETER_TYPE, true, "Invalid psImage Data Type\n"); … … 286 279 } 287 280 288 double complexpsImageGet(const psImage *image,281 double psImageGet(const psImage *image, 289 282 int x, 290 283 int y) … … 354 347 IMAGE_GET_CASE(F32); 355 348 IMAGE_GET_CASE(F64); 356 IMAGE_GET_CASE(C32);357 IMAGE_GET_CASE(C64);358 349 default: 359 350 psError(PS_ERR_BAD_PARAMETER_TYPE, true, "Invalid psImage Data Type\n"); … … 485 476 PSIMAGE_BUFFER_COPY(F64,OUTTYPE); \ 486 477 break; \ 487 case PS_TYPE_C32: \488 PSIMAGE_BUFFER_COPY(C32,OUTTYPE); \489 break; \490 case PS_TYPE_C64: \491 PSIMAGE_BUFFER_COPY(C64,OUTTYPE); \492 break; \493 478 default: \ 494 479 break; \ … … 526 511 case PS_TYPE_F64: 527 512 PSIMAGE_BUFFER_COPY_CASE(output, F64); 528 break;529 case PS_TYPE_C32:530 PSIMAGE_BUFFER_COPY_CASE(output, C32);531 break;532 case PS_TYPE_C64:533 PSIMAGE_BUFFER_COPY_CASE(output, C64);534 513 break; 535 514 default: { … … 593 572 } 594 573 595 double complexpsImagePixelInterpolate(const psImage* input,574 double psImagePixelInterpolate(const psImage* input, 596 575 float x, 597 576 float y, 598 577 const psImage* mask, 599 578 psMaskType maskVal, 600 double complexunexposedValue,579 double unexposedValue, 601 580 psImageInterpolateMode mode) 602 581 { … … 660 639 PSIMAGE_PIXEL_INTERPOLATE_CASE(F32); 661 640 PSIMAGE_PIXEL_INTERPOLATE_CASE(F64); 662 PSIMAGE_PIXEL_INTERPOLATE_CASE(C32);663 PSIMAGE_PIXEL_INTERPOLATE_CASE(C64);664 641 default: { 665 642 char* typeStr; … … 729 706 float y, \ 730 707 const psImage* mask, \ 731 ps U32maskVal, \708 psMaskType maskVal, \ 732 709 RETURNTYPE unexposedValue) \ 733 710 { \ … … 759 736 PSIMAGE_PIXEL_INTERPOLATE_FLAT(F32,psF64) 760 737 PSIMAGE_PIXEL_INTERPOLATE_FLAT(F64,psF64) 761 PSIMAGE_PIXEL_INTERPOLATE_FLAT(C32,psC64)762 PSIMAGE_PIXEL_INTERPOLATE_FLAT(C64,psC64)763 738 764 739 #define PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(TYPE, RETURNTYPE, SUFFIX, FRACFUNC) \ … … 768 743 float y, \ 769 744 const psImage* mask, \ 770 ps U32maskVal, \745 psMaskType maskVal, \ 771 746 RETURNTYPE unexposedValue) \ 772 747 { \ 773 748 int floorX = floor((x) - 0.5); \ 774 749 int floorY = floor((y) - 0.5); \ 775 psF64fracX = x - 0.5 - floorX; \776 psF64fracY = y - 0.5 - floorY; \777 psS32lastX = input->numCols - 1; \778 psS32lastY = input->numRows - 1; \779 ps##TYPE V00 = 0; \780 ps##TYPE V01 = 0; \781 ps##TYPE V10 = 0; \782 ps##TYPE V11 = 0; \783 bool valid00 = false; \784 bool valid01 = false; \785 bool valid10 = false; \786 bool valid11 = false; \750 float fracX = x - 0.5 - floorX; \ 751 float fracY = y - 0.5 - floorY; \ 752 int lastX = input->numCols - 1; \ 753 int lastY = input->numRows - 1; \ 754 ps##TYPE V00; \ 755 ps##TYPE V01; \ 756 ps##TYPE V10; \ 757 ps##TYPE V11; \ 758 bool valid00; \ 759 bool valid01; \ 760 bool valid10; \ 761 bool valid11; \ 787 762 \ 788 763 if (floorY >= 0 && floorY <= lastY) { \ … … 791 766 valid00 = (mask == NULL) || \ 792 767 ((mask->data.PS_TYPE_MASK_DATA[floorY][floorX] & maskVal) == 0); \ 768 } else { \ 769 valid00 = false; \ 793 770 } \ 794 771 if (floorX >= -1 && floorX < lastX) { \ … … 796 773 valid10 = (mask == NULL) || \ 797 774 ((mask->data.PS_TYPE_MASK_DATA[floorY][floorX+1] & maskVal) == 0); \ 775 } else { \ 776 valid10 = false; \ 798 777 } \ 778 } else { \ 779 valid00 = false; \ 780 valid10 = false; \ 799 781 } \ 800 782 if (floorY >= -1 && floorY < lastY) { \ … … 803 785 valid01 = (mask == NULL) || \ 804 786 ((mask->data.PS_TYPE_MASK_DATA[floorY+1][floorX] & maskVal) == 0); \ 787 } else { \ 788 valid01 = false; \ 805 789 } \ 806 790 if (floorX >= -1 && floorX < lastX) { \ … … 808 792 valid11 = (mask == NULL) || \ 809 793 ((mask->data.PS_TYPE_MASK_DATA[floorY+1][floorX+1] & maskVal) == 0); \ 794 } else { \ 795 valid11 = false; \ 810 796 } \ 797 } else { \ 798 valid01 = false; \ 799 valid11 = false; \ 811 800 } \ 812 801 \ … … 814 803 if (valid00 && valid10 && valid01 && valid11) { \ 815 804 /* formula from the ADD */ \ 816 /* XXX this had V01 and V10 exchanged! */ \817 805 return V00*FRACFUNC((1.0-fracX)*(1.0-fracY)) + V10*FRACFUNC(fracX*(1.0-fracY)) + \ 818 806 V01*FRACFUNC(fracY*(1.0-fracX)) + V11*FRACFUNC(fracX*fracY); \ … … 864 852 float y, \ 865 853 const psImage* mask, \ 866 ps U32maskVal, \854 psMaskType maskVal, \ 867 855 RETURNTYPE unexposedValue) \ 868 856 { \ … … 917 905 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(F32,psF64,F32,) 918 906 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(F64,psF64,F64,) 919 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(C32,psC64,C32,)920 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(C64,psC64,C64,)921 907 922 908 PSIMAGE_PIXEL_INTERPOLATE_BICUBE(U8,psF64,U8,) … … 930 916 PSIMAGE_PIXEL_INTERPOLATE_BICUBE(F32,psF64,F32,) 931 917 PSIMAGE_PIXEL_INTERPOLATE_BICUBE(F64,psF64,F64,) 932 PSIMAGE_PIXEL_INTERPOLATE_BICUBE(C32,psC64,C32,)933 PSIMAGE_PIXEL_INTERPOLATE_BICUBE(C64,psC64,C64,)934 918 935 919 // Variance Version 936 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U8,psF64,VARIANCE_U8,SQUARE) 937 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U16,psF64,VARIANCE_U16,SQUARE) 938 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U32,psF64,VARIANCE_U32,SQUARE) 939 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U64,psF64,VARIANCE_U64,SQUARE) 940 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S8,psF64,VARIANCE_S8,SQUARE) 941 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S16,psF64,VARIANCE_S16,SQUARE) 942 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S32,psF64,VARIANCE_S32,SQUARE) 943 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S64,psF64,VARIANCE_S64,SQUARE) 944 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(F32,psF64,VARIANCE_F32,SQUARE) 945 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(F64,psF64,VARIANCE_F64,SQUARE) 946 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(C32,psC64,VARIANCE_C32,SQUARE) 947 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(C64,psC64,VARIANCE_C64,SQUARE) 920 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U8,psF64,VARIANCE_U8,PS_SQR) 921 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U16,psF64,VARIANCE_U16,PS_SQR) 922 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U32,psF64,VARIANCE_U32,PS_SQR) 923 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(U64,psF64,VARIANCE_U64,PS_SQR) 924 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S8,psF64,VARIANCE_S8,PS_SQR) 925 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S16,psF64,VARIANCE_S16,PS_SQR) 926 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S32,psF64,VARIANCE_S32,PS_SQR) 927 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(S64,psF64,VARIANCE_S64,PS_SQR) 928 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(F32,psF64,VARIANCE_F32,PS_SQR) 929 PSIMAGE_PIXEL_INTERPOLATE_BILINEAR(F64,psF64,VARIANCE_F64,PS_SQR) -
trunk/psLib/src/mathtypes/psImage.h
r12381 r12431 9 9 * @author Joshua Hoblitt, University of Hawaii 10 10 * 11 * @version $Revision: 1. 89$ $Name: not supported by cvs2svn $12 * @date $Date: 2007-03- 09 20:16:40$11 * @version $Revision: 1.90 $ $Name: not supported by cvs2svn $ 12 * @date $Date: 2007-03-14 00:39:51 $ 13 13 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii 14 14 */ … … 20 20 /// @{ 21 21 22 #include <complex.h>23 22 #include <stdio.h> 24 23 #include "psType.h" … … 70 69 psF32** F32; ///< Single-precision float data. 71 70 psF64** F64; ///< Double-precision float data. 72 psC32** C32; ///< Single-precision complex data.73 psC64** C64; ///< Double-precision complex data.74 71 psPtr* V; ///< Pointer to data. 75 72 } data; ///< Union for data types. … … 143 140 bool psImageSet( 144 141 psImage *image, ///< the image to set 145 int x, ///< x-position146 int y, ///< y-position147 double complex value///< specified value to set142 int x, ///< x-position 143 int y, ///< y-position 144 double value ///< specified value to set 148 145 ); 149 146 … … 152 149 * A negative value for the x or y positions means index from the end. 153 150 * 154 * @return complex: The value at the specified x,y position.155 */ 156 double complexpsImageGet(151 * @return double: The value at the specified x,y position. 152 */ 153 double psImageGet( 157 154 const psImage *image, ///< the image from which to get 158 155 int x, ///< x-position … … 230 227 /** Interpolate image pixel value given floating point coordinates. 231 228 * 232 * @return complexPixel value interpolated from image or unexposedValue if229 * @return double Pixel value interpolated from image or unexposedValue if 233 230 * given x,y doesn't coorespond to a valid image location 234 231 */ 235 double complexpsImagePixelInterpolate(232 double psImagePixelInterpolate( 236 233 const psImage* input, ///< input image for interpolation 237 234 float x, ///< column location to derive value of … … 239 236 const psImage* mask, ///< if not NULL, the mask of the input image 240 237 psMaskType maskVal, ///< the mask value 241 double complex unexposedValue,///< return value if x,y location is not in image.238 double unexposedValue, ///< return value if x,y location is not in image. 242 239 psImageInterpolateMode mode ///< interpolation mode 243 240 ); … … 250 247 float y, /**< row location ot derive value of */ \ 251 248 const psImage* mask, /**< if not NULL, the mask of the input image */ \ 252 ps U32 maskVal,/**< the mask value */ \249 psMaskType maskVal, /**< the mask value */ \ 253 250 RETURNTYPE unexposedValue /**< return value if x,y location is not in image. */ \ 254 251 ); … … 264 261 PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_S64,psF64) \ 265 262 PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_F32,psF64) \ 266 PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_F64,psF64) \ 267 PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_C32,psC64) \ 268 PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_C64,psC64) 263 PIXEL_INTERPOLATE_FCN_PROTOTYPE(MODE##_F64,psF64) 269 264 270 265 #ifndef SWIG -
trunk/psLib/src/mathtypes/psScalar.c
r11697 r12431 8 8 * @author Ross Harman, MHPCC 9 9 * 10 * @version $Revision: 1.2 7$ $Name: not supported by cvs2svn $11 * @date $Date: 2007-0 2-08 02:42:46$10 * @version $Revision: 1.28 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2007-03-14 00:39:51 $ 12 12 * 13 13 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 34 34 unsigned int lineno, 35 35 const char *func, 36 double complexvalue,36 double value, 37 37 psElemType type) 38 38 { … … 75 75 case PS_TYPE_F64: 76 76 scalar->data.F64 = (psF64) value; 77 break;78 case PS_TYPE_C32:79 scalar->data.C32 = (psC32) value;80 break;81 case PS_TYPE_C64:82 scalar->data.C64 = (psC64) value;83 77 break; 84 78 default: … … 148 142 newScalar = p_psScalarAlloc(file, lineno, func, value->data.F64, dataType); 149 143 break; 150 case PS_TYPE_C32:151 newScalar = p_psScalarAlloc(file, lineno, func, value->data.C32, dataType);152 break;153 case PS_TYPE_C64:154 newScalar = p_psScalarAlloc(file, lineno, func, value->data.C64, dataType);155 break;156 144 default: 157 145 psError(PS_ERR_BAD_PARAMETER_TYPE, true, -
trunk/psLib/src/mathtypes/psScalar.h
r11697 r12431 8 8 * @author Joshua Hoblitt, University of Hawaii 9 9 * 10 * @version $Revision: 1.2 2$ $Name: not supported by cvs2svn $11 * @date $Date: 2007-0 2-08 02:42:46$10 * @version $Revision: 1.23 $ $Name: not supported by cvs2svn $ 11 * @date $Date: 2007-03-14 00:39:51 $ 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii 13 13 */ … … 41 41 psF32 F32; ///< Single-precision float data. 42 42 psF64 F64; ///< Double-precision float data. 43 psC32 C32; ///< Single-precision complex data.44 psC64 C64; ///< Double-precision complex data.45 43 } data; ///< Union for data types. 46 44 } … … 56 54 * 57 55 * Uses psLib memory allocation functions to create scalar data as defined by the psType type. 58 * Accepts a complex 64 bit float for input value, as max size, but resizes according to 59 * correct type. 56 * Accepts a double for input value, as max size, but resizes according to correct type. 60 57 * 61 58 * @return psScalar* Pointer to a new psScalar. … … 63 60 #ifdef DOXYGEN 64 61 psScalar* psScalarAlloc( 65 double complex value,///< Data to be put into psScalar62 double value, ///< Data to be put into psScalar 66 63 psElemType type ///< Type of data to be held by psScalar 67 64 ); … … 71 68 unsigned int lineno, ///< Line number of caller 72 69 const char *func, ///< Function name of caller 73 double complex value,///< Data to be put into psScalar70 double value, ///< Data to be put into psScalar 74 71 psElemType type ///< Type of data to be held by psScalar 75 72 ); -
trunk/psLib/src/mathtypes/psVector.c
r12381 r12431 10 10 * @author Joshua Hoblitt, University of Hawaii 11 11 * 12 * @version $Revision: 1.9 5$ $Name: not supported by cvs2svn $13 * @date $Date: 2007-03- 09 20:16:40$12 * @version $Revision: 1.96 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2007-03-14 00:39:51 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 33 33 #include "psAssert.h" 34 34 #include "psString.h" 35 36 typedef struct37 {38 union {39 psU8* U8; ///< Unsigned 8-bit integer data.40 psU16* U16; ///< Unsigned 16-bit integer data.41 psU32* U32; ///< Unsigned 32-bit integer data.42 psU64* U64; ///< Unsigned 64-bit integer data.43 psS8* S8; ///< Signed 8-bit integer data.44 psS16* S16; ///< Signed 16-bit integer data.45 psS32* S32; ///< Signed 32-bit integer data.46 psS64* S64; ///< Signed 64-bit integer data.47 psF32* F32; ///< Single-precision float data.48 psF64* F64; ///< Double-precision float data.49 psC32* C32; ///< Single-precision complex data.50 psC64* C64; ///< Double-precision complex data.51 } data;52 psU32 index;53 }54 indexedVector;55 56 static void vectorFree(psVector* psVec);57 35 58 36 static void vectorFree(psVector* psVec) … … 270 248 PSVECTOR_COPY_SAME_CASE(F32); 271 249 PSVECTOR_COPY_SAME_CASE(F64); 272 PSVECTOR_COPY_SAME_CASE(C32);273 PSVECTOR_COPY_SAME_CASE(C64);274 250 default: { 275 251 char* typeStr; … … 326 302 PSVECTOR_COPY(F64,OUTTYPE); \ 327 303 break; \ 328 case PS_TYPE_C32: \329 PSVECTOR_COPY(C32,OUTTYPE); \330 break; \331 case PS_TYPE_C64: \332 PSVECTOR_COPY(C64,OUTTYPE); \333 break; \334 304 default: { \ 335 305 char* typeStr; \ … … 355 325 PSVECTOR_COPY_CASE(F32); 356 326 PSVECTOR_COPY_CASE(F64); 357 PSVECTOR_COPY_CASE(C32);358 PSVECTOR_COPY_CASE(C64);359 327 default: { 360 328 char* typeStr; … … 560 528 break; 561 529 562 #define APPEND_ELEMENTS_CASE_COMPLEX(TYPE,CREAL,CIMAG) \563 case PS_TYPE_##TYPE: \564 for (lcv=0; lcv < size && ! full; lcv++) { \565 snprintf(tempStr, maxLength, "%s%g%+gi", prefix, \566 CREAL(vector->data.TYPE[lcv]), \567 CIMAG(vector->data.TYPE[lcv])); \568 strncat(str,tempStr,maxLength); \569 full = (strlen(str) > maxLength-2); \570 prefix = ","; \571 } \572 break;573 574 530 int lcv; 575 531 char* prefix = "["; … … 585 541 APPEND_ELEMENTS_CASE(F32,double,"%g") 586 542 APPEND_ELEMENTS_CASE(F64,double,"%g") 587 APPEND_ELEMENTS_CASE_COMPLEX(C32,crealf,cimagf)588 APPEND_ELEMENTS_CASE_COMPLEX(C64,creal,cimag)589 543 default: 590 544 snprintf(str,maxLength,"[...]"); … … 822 776 bool psVectorSet(psVector *input, 823 777 long position, 824 double complexvalue)778 double value) 825 779 { 826 780 if (input == NULL) { … … 880 834 input->data.F64[position] = (psF64)value; 881 835 break; 882 case PS_TYPE_C32:883 input->data.C32[position] = (psC32)value;884 break;885 case PS_TYPE_C64:886 input->data.C64[position] = (psC64)value;887 break;888 836 default: 889 837 psError(PS_ERR_BAD_PARAMETER_TYPE, true, "Invalid psVector Data Type\n"); … … 894 842 } 895 843 896 double complexpsVectorGet(const psVector *input,844 double psVectorGet(const psVector *input, 897 845 long position) 898 846 { … … 941 889 case PS_TYPE_F64: 942 890 return input->data.F64[position]; 943 break;944 case PS_TYPE_C32:945 return input->data.C32[position];946 break;947 case PS_TYPE_C64:948 return input->data.C64[position];949 891 break; 950 892 default: … … 992 934 case PS_TYPE_F32: 993 935 case PS_TYPE_F64: 994 case PS_TYPE_C32:995 case PS_TYPE_C64:996 936 default: 997 937 psError(PS_ERR_BAD_PARAMETER_TYPE, true, -
trunk/psLib/src/mathtypes/psVector.h
r12381 r12431 10 10 * @author Joshua Hoblitt, University of Hawaii 11 11 * 12 * @version $Revision: 1.6 6$ $Name: not supported by cvs2svn $13 * @date $Date: 2007-03- 09 20:16:40$12 * @version $Revision: 1.67 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2007-03-14 00:39:51 $ 14 14 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii 15 15 */ … … 45 45 psF32* F32; ///< Single-precision float data. 46 46 psF64* F64; ///< Double-precision float data. 47 psC32* C32; ///< Single-precision complex data.48 psC64* C64; ///< Double-precision complex data.49 47 } data; 50 48 void *lock; ///< Optional lock for thread safety. … … 227 225 /** Sort an array of floats. 228 226 * 229 * Sorts an array of floats in ascending order. This function is valid for 230 * all non-complex data types. 227 * Sorts an array of floats in ascending order. 231 228 * 232 229 * @return psVector* Pointer to sorted psVector. … … 334 331 */ 335 332 bool psVectorSet( 336 psVector *input, ///< Input vector to set337 long position, ///< vector position338 double complex value///< value to set333 psVector *input, ///< Input vector to set 334 long position, ///< vector position 335 double value ///< value to set 339 336 ); 340 337 … … 344 341 * A negative position means index from the end. 345 342 * 346 * @return complex: Value of the input vector at the specified position.347 */ 348 double complexpsVectorGet(343 * @return double: Value of the input vector at the specified position. 344 */ 345 double psVectorGet( 349 346 const psVector *input, ///< Input vector from which to get value 350 347 long position ///< vector position
Note:
See TracChangeset
for help on using the changeset viewer.
