Changeset 4160
- Timestamp:
- Jun 8, 2005, 12:28:08 PM (21 years ago)
- Location:
- trunk/psLib
- Files:
-
- 3 edited
-
src/dataManip/psMatrix.c (modified) (6 diffs)
-
src/math/psMatrix.c (modified) (6 diffs)
-
test/dataManip/tst_psMatrix05.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/dataManip/psMatrix.c
r4144 r4160 21 21 * @author Robert DeSonia, MHPCC 22 22 * 23 * @version $Revision: 1.3 0$ $Name: not supported by cvs2svn $24 * @date $Date: 2005-06-08 02:38:02$23 * @version $Revision: 1.31 $ $Name: not supported by cvs2svn $ 24 * @date $Date: 2005-06-08 22:28:07 $ 25 25 * 26 26 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 33 33 #include <gsl/gsl_matrix.h> 34 34 #include <gsl/gsl_linalg.h> 35 #include <gsl/gsl_blas.h> 35 36 #include <gsl/gsl_permutation.h> 36 37 #include <gsl/gsl_eigen.h> … … 138 139 numRows = inImage->numRows; 139 140 numCols = inImage->numCols; 140 for(i=0; i<numRows; i++) { 141 for(j=0; j<numCols; j++) { 142 if(inImage->type.type == PS_TYPE_F32) { 143 outGslMatrix->data[i*numCols+j] = (psF64)inImage->data.F32[i][j]; 144 } else { 141 if(inImage->type.type == PS_TYPE_F32) { 142 for(i=0; i<numRows; i++) { 143 for(j=0; j<numCols; j++) { 144 outGslMatrix->data[i*numCols+j] = inImage->data.F32[i][j]; 145 } 146 } 147 } else { 148 for(i=0; i<numRows; i++) { 149 for(j=0; j<numCols; j++) { 145 150 outGslMatrix->data[i*numCols+j] = inImage->data.F64[i][j]; 146 151 } … … 160 165 numRows = outImage->numRows; 161 166 numCols = outImage->numCols; 162 for(i=0; i<numRows; i++) { 163 for(j=0; j<numCols; j++) { 164 if(outImage->type.type == PS_TYPE_F32) { 165 outImage->data.F32[i][j] = (psF32)inGslMatrix->data[i*numCols+j]; 166 } else { 167 if(outImage->type.type == PS_TYPE_F32) { 168 for(i=0; i<numRows; i++) { 169 for(j=0; j<numCols; j++) { 170 outImage->data.F32[i][j] = inGslMatrix->data[i*numCols+j]; 171 } 172 } 173 } else { 174 for(i=0; i<numRows; i++) { 175 for(j=0; j<numCols; j++) { 167 176 outImage->data.F64[i][j] = inGslMatrix->data[i*numCols+j]; 168 177 } … … 401 410 } 402 411 403 outImage = psImageRecycle(outImage, inImage 1->numCols, inImage2->numRows, inImage2->type.type);412 outImage = psImageRecycle(outImage, inImage2->numCols, inImage1->numRows, inImage2->type.type); 404 413 405 414 // Initialize GSL data … … 411 420 412 421 // Perform multiplication 422 // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, 0.0, m3); 413 423 gsl_linalg_matmult(m1, m2, m3); 414 // N.B., gsl_blas_sgemm/dgemm could have been used instead, e.g.,415 // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, m3)416 424 417 425 // Copy GSL matrix data to psImage data -
trunk/psLib/src/math/psMatrix.c
r4144 r4160 21 21 * @author Robert DeSonia, MHPCC 22 22 * 23 * @version $Revision: 1.3 0$ $Name: not supported by cvs2svn $24 * @date $Date: 2005-06-08 02:38:02$23 * @version $Revision: 1.31 $ $Name: not supported by cvs2svn $ 24 * @date $Date: 2005-06-08 22:28:07 $ 25 25 * 26 26 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 33 33 #include <gsl/gsl_matrix.h> 34 34 #include <gsl/gsl_linalg.h> 35 #include <gsl/gsl_blas.h> 35 36 #include <gsl/gsl_permutation.h> 36 37 #include <gsl/gsl_eigen.h> … … 138 139 numRows = inImage->numRows; 139 140 numCols = inImage->numCols; 140 for(i=0; i<numRows; i++) { 141 for(j=0; j<numCols; j++) { 142 if(inImage->type.type == PS_TYPE_F32) { 143 outGslMatrix->data[i*numCols+j] = (psF64)inImage->data.F32[i][j]; 144 } else { 141 if(inImage->type.type == PS_TYPE_F32) { 142 for(i=0; i<numRows; i++) { 143 for(j=0; j<numCols; j++) { 144 outGslMatrix->data[i*numCols+j] = inImage->data.F32[i][j]; 145 } 146 } 147 } else { 148 for(i=0; i<numRows; i++) { 149 for(j=0; j<numCols; j++) { 145 150 outGslMatrix->data[i*numCols+j] = inImage->data.F64[i][j]; 146 151 } … … 160 165 numRows = outImage->numRows; 161 166 numCols = outImage->numCols; 162 for(i=0; i<numRows; i++) { 163 for(j=0; j<numCols; j++) { 164 if(outImage->type.type == PS_TYPE_F32) { 165 outImage->data.F32[i][j] = (psF32)inGslMatrix->data[i*numCols+j]; 166 } else { 167 if(outImage->type.type == PS_TYPE_F32) { 168 for(i=0; i<numRows; i++) { 169 for(j=0; j<numCols; j++) { 170 outImage->data.F32[i][j] = inGslMatrix->data[i*numCols+j]; 171 } 172 } 173 } else { 174 for(i=0; i<numRows; i++) { 175 for(j=0; j<numCols; j++) { 167 176 outImage->data.F64[i][j] = inGslMatrix->data[i*numCols+j]; 168 177 } … … 401 410 } 402 411 403 outImage = psImageRecycle(outImage, inImage 1->numCols, inImage2->numRows, inImage2->type.type);412 outImage = psImageRecycle(outImage, inImage2->numCols, inImage1->numRows, inImage2->type.type); 404 413 405 414 // Initialize GSL data … … 411 420 412 421 // Perform multiplication 422 // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, 0.0, m3); 413 423 gsl_linalg_matmult(m1, m2, m3); 414 // N.B., gsl_blas_sgemm/dgemm could have been used instead, e.g.,415 // gsl_blas_dgemm(CblasNoTrans, CblasNoTrans, 1.0, m1, m2, m3)416 424 417 425 // Copy GSL matrix data to psImage data -
trunk/psLib/test/dataManip/tst_psMatrix05.c
r3682 r4160 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1. 9$ $Name: not supported by cvs2svn $13 * @date $Date: 2005-0 4-07 20:27:42$12 * @version $Revision: 1.10 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-06-08 22:28:08 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 50 50 psImage *inImage232 = NULL; 51 51 52 double truthMatrix[3][3] = {{ 8.000000, 20.000000}, 53 {-4.000000, 11.000000}}; 54 55 56 52 double truthMatrix[3][3] = {{ 0.0, 52.0}, 53 {-14.0, 51.0}}; 57 54 58 55 // Test A - Create input and output images 59 56 printPositiveTestHeader(stdout, "psMatrix", "Create input and output images"); 60 57 outImage = (psImage*) psImageAlloc(2, 2, PS_TYPE_F64); 61 inImage1 = (psImage*) psImageAlloc( 2, 2, PS_TYPE_F64);62 inImage2 = (psImage*) psImageAlloc(2, 2, PS_TYPE_F64);58 inImage1 = (psImage*) psImageAlloc(3, 2, PS_TYPE_F64); 59 inImage2 = (psImage*) psImageAlloc(2, 3, PS_TYPE_F64); 63 60 inImage1->data.F64[0][0] = 2; 64 61 inImage1->data.F64[0][1] = 3; 62 inImage1->data.F64[0][2] = 4; 65 63 inImage1->data.F64[1][0] = -1; 66 64 inImage1->data.F64[1][1] = 2; 65 inImage1->data.F64[1][2] = 5; 67 66 inImage2->data.F64[0][0] = 4; 68 67 inImage2->data.F64[0][1] = 1; 69 68 inImage2->data.F64[1][0] = 0; 70 69 inImage2->data.F64[1][1] = 6; 70 inImage2->data.F64[2][0] = -2; 71 inImage2->data.F64[2][1] = 8; 71 72 outImage32 = (psImage*)psImageAlloc(2, 2, PS_TYPE_F32); 72 inImage132 = (psImage*)psImageAlloc( 2, 2, PS_TYPE_F32);73 inImage232 = (psImage*)psImageAlloc(2, 2, PS_TYPE_F32);73 inImage132 = (psImage*)psImageAlloc(3, 2, PS_TYPE_F32); 74 inImage232 = (psImage*)psImageAlloc(2, 3, PS_TYPE_F32); 74 75 inImage132->data.F32[0][0] = 2; 75 76 inImage132->data.F32[0][1] = 3; 77 inImage132->data.F32[0][2] = 4; 76 78 inImage132->data.F32[1][0] = -1; 77 79 inImage132->data.F32[1][1] = 2; 80 inImage132->data.F32[1][2] = 5; 78 81 inImage232->data.F32[0][0] = 4; 79 82 inImage232->data.F32[0][1] = 1; 80 83 inImage232->data.F32[1][0] = 0; 81 84 inImage232->data.F32[1][1] = 6; 85 inImage232->data.F32[2][0] = -2; 86 inImage232->data.F32[2][1] = 8; 82 87 printFooter( stdout, "psMatrix", "Create input and output images", true ); 83 88
Note:
See TracChangeset
for help on using the changeset viewer.
