00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
#ifndef LHGeneralIncs_h
00014 
#include "General.h"
00015 
#endif
00016 
00017 
#ifndef LHDoNDim_h
00018 
#include "DoNDim.h"
00019 
#endif
00020 
00021 #define SHRINK_FACTOR 13
00022 
00023 
00024 
00025 
00026 
00027 
#if FARBR_FILES
00028 
#include "stdio.h"
00029 
#include "string.h"
00030 
void WriteLuts( 
char *theName,
long WordSize,
long aElutAdrSize,
long aElutWordSize,UINT16 *Elut,
00031                                 
long aXlutInDim,
long aXlutOutDim,
long aXlutAdrSize,
long aXlutWordSize,UINT16 *Xlut,
00032                                 
long aAlutAdrSize,
long aAlutWordSize,UINT16 *aus_lut);
00033 
#endif
00034 
00035 
#if UWEs_eigene_Umgebung
00036 
#include <stdio.h>
00037 
#define DebugPrint printf
00038 
#else
00039 
#ifdef DEBUG_OUTPUT
00040 
#define kThisFile kLHDoNDimID
00041 
00042 
#else
00043 #define DebugPrint(x)
00044 
#endif
00045 
#endif
00046 
00047 #define CLIPPWord(x,a,b) ((x)<(a)?(UINT16)(a):((x)>(b)?(UINT16)(b):(UINT16)(x+.5)))
00048 #define CLIPP(x,a,b) ((x)<(a)?(a):((x)>(b)?(b):(x)))
00049 
00050 
00051 
00052 
00053 #define Round(a) (((a)>0.)?((a)+.5):((a)-.5))
00054 
00055 
00056 
00057 
00058 void DoOnlyMatrixForCube( Matrix2D      *theMatrix, Ptr aXlut, 
long aPointCount, 
long gridPointsCube )
00059 {
00060     
register long       ii,jj;
00061     
register long       i;
00062     
register long       aLong0;
00063     
register long       aLong1;
00064     
register long       aLong2;
00065     
register long       theEnd;
00066     
register long       aVal;
00067     
long                        aMatrix[3][3];
00068     
register double aFactor,dVal;
00069     
register UINT16     accu,aMax;
00070     
register UINT8 *theArr = (
UINT8 *)aXlut;
00071     
00072  
00073     
00074 
#ifdef DEBUG_OUTPUT
00075 
        long err=0;
00076 
#endif
00077 
        LH_START_PROC(
"DoOnlyMatrixForCube")
00078         jj=aPointCount;
00079         theEnd = 3 * aPointCount;
00080                           
00081         
00082         i = gridPointsCube;
00083         aMax = 256 - 1;
00084         aFactor = 4096.*255./(256.*(i-1)/i);
00085         
for( ii=0; ii<3; ii++){ 
00086                 
for( jj=0; jj<3; jj++){ 
00087                         dVal = (*theMatrix)[ii][jj]*aFactor;
00088                         aMatrix[ii][jj] = (
long)
Round(dVal);
00089                 }
00090         }
00091 
        #if FARBR_DEBUG
00092 
    DebugPrint(
"theArr=(d)");
for(ii=0; ii<3; ++ii) 
for( jj=0; jj<3; jj++) 
DebugPrint(
"%f ",aMatrix[ii][jj]); 
DebugPrint(
"\n");
00093 
    #endif
00094 
    
00095 
00096 
00097 
00098 
00099 
00100         
for (i = 0; i < theEnd; i +=3){         
00101                aLong0=theArr[i+0];
00102                aLong1=theArr[i+1];
00103                aLong2=theArr[i+2];
00104                 
for( ii=0; ii<3; ii++){ 
00105                                 aVal = aMatrix[ii][0] * aLong0;
00106                                 aVal += aMatrix[ii][1] * aLong1;
00107                                 aVal += aMatrix[ii][2] * aLong2;
00108                         
if( aVal > 0) aVal = (aVal+2047)>>12;
00109                         
else aVal = (aVal-2047)>>12;
00110                         accu = (
UINT16)
CLIPP(aVal,0,(
long)aMax);
00111                 theArr[i+ii] = (
UINT8)accu;
00112                 }
00113 
        #if FARBR_DEBUG
00114 
        DebugPrint(
"i=%ld\n",i);
00115         
DebugPrint(
"theArr=(d)");
for(ii=0; ii<3; ++ii) 
DebugPrint(
"%ld ",theArr[i+ii]); 
DebugPrint(
"\n");
00116         
DebugPrint(
"ein_reg=(d)");
DebugPrint(
"%ld ",aLong0);
DebugPrint(
"%ld ",aLong1);
DebugPrint(
"%ld ",aLong2); 
DebugPrint(
"\n");
00117 
        #endif
00118 
        }
00119 
00120         
LH_END_PROC(
"DoOnlyMatrixForCube")
00121 }
00122 
00123 
00124 #define VAL_MAX 65536
00125 #define VAL_MAXM1 (VAL_MAX-1)
00126 
00127 
00128 
00129 
00130 void DoMatrixForCube16( DoMatrixForCubeStructPtr aStructPtr )
00131 {
00132     
register long       ii,jj;
00133     
register long       i;
00134     
00135     
register long       aLong0;
00136     
register long       aLong1;
00137     
register long       aLong2;
00138     
register long       theEnd;
00139     
register long       aElutShift,
aElutShiftNum,aAlutShift,aElutOffset,aAlutOffset;
00140     
register unsigned long      aElutAdrSize,separateEluts,separateAluts;
00141     
register long       aVal;
00142     
long                        aMatrix[3][3];
00143     
register double aFactor,dVal;
00144     
register unsigned long      aMax;
00145     
register UINT16 *ein_lut;
00146     
register UINT16 *aus_lut;
00147     
register UINT8 *aus_lutByte;
00148     
register unsigned long aAlutAdrSize;
00149     
register UINT16 *theArr;
00150     
register UINT8 *theByteArr;
00151     
register unsigned long ko,ko0;
00152     
register long aElutShiftRight;
00153     
00154  
00155 
#ifdef DEBUG_OUTPUT
00156 
        long err=0;
00157 
#endif
00158 
        LH_START_PROC(
"DoMatrixForCube16")
00159 
00160     
00161         ein_lut = aStructPtr->ein_lut;
00162         aus_lut = (
UINT16 *)aStructPtr->aus_lut;
00163         aus_lutByte = (
UINT8 *)aus_lut;
00164         theArr = (
UINT16 *)aStructPtr->theArr;
00165         theByteArr = (
UINT8 *)theArr;
00166         aAlutAdrSize = aStructPtr->aAlutAdrSize;
00167         aElutAdrSize = aStructPtr->aElutAdrSize;
00168         separateEluts = aStructPtr->separateEluts;
00169         separateAluts = aStructPtr->separateAluts;
00170         theEnd =  3*aStructPtr->aPointCount;
00171         aMax = aAlutAdrSize-1;
00172         
00173         
for( i=0; i<33; i++) 
if( (1
L<<i) == (
long)aElutAdrSize )
break;
00174         
if( i > 32 ) 
return;
00175         
aElutShift = 16-i;
00176         aElutShiftRight = aStructPtr->aElutWordSize - 
aElutShift + 0; 
00177         
if( aElutShiftRight < 0 ) 
return;
00178         
aElutShiftNum = 1<<
aElutShift;
00179         
00180         aFactor = 2*8. * aMax /(aStructPtr->gridPoints-1)*(
double)aStructPtr->gridPoints;
00181         
for( ii=0; ii<3; ii++){ 
00182                 
for( jj=0; jj<3; jj++){ 
00183                         dVal = (*(aStructPtr->theMatrix))[ii][jj]*aFactor;
00184                 aMatrix[ii][jj] = (
long)
Round(dVal);
00185                 }
00186         }
00187 
        #if FARBR_DEBUG
00188 
    DebugPrint(
"theArr=(d)");
for(ii=0; ii<3; ++ii) 
for( jj=0; jj<3; jj++) 
DebugPrint(
"%f ",aMatrix[ii][jj]); 
DebugPrint(
"\n");
00189     
00190 
00191 
00192 
00193 
00194 
00195 
    #endif
00196 
    if( aStructPtr->aBufferByteCount == 2 ){
00197                 aAlutShift = 16-aStructPtr->aAlutWordSize;
00198                 
for (i = 0; i < theEnd; i +=3){         
00199         
00200                         aElutOffset = 0;
00201                         ko = (theArr[i+0]);
00202                         ko0 = ko - ( ko >> ( 16 - 
aElutShift ));
00203                         ko = ko0 & ( 
aElutShiftNum - 1 );
00204                         ko0 = ko0 >> 
aElutShift;
00205                         
if( ko0 >= (aElutAdrSize-1) ){
00206                                 aLong0 = ein_lut[ ko0 + aElutOffset ]<<(
aElutShift-aElutShiftRight);
00207                         }
00208                         
else{
00209                                 ko0 += aElutOffset;
00210                         aLong0 = ( ein_lut[ ko0 ] * ( 
aElutShiftNum - ko ) + ein_lut[ ko0 + 1 ] * ko )>>aElutShiftRight;
00211                     }   
00212                         
if( separateEluts )aElutOffset += aElutAdrSize;
00213                         
00214                         ko = (theArr[i+1]);
00215                         ko0 = ko - ( ko >> ( 16 - 
aElutShift ));
00216                         ko = ko0 & ( 
aElutShiftNum - 1 );
00217                         ko0 = ko0 >> 
aElutShift;
00218                         
if( ko0 >= (aElutAdrSize-1) ){
00219                                 aLong1 = ein_lut[ ko0 + aElutOffset ]<<(
aElutShift-aElutShiftRight);
00220                         }
00221                         
else{
00222                                 ko0 += aElutOffset;
00223                         aLong1 = ( ein_lut[ ko0 ] * ( 
aElutShiftNum - ko ) + ein_lut[ ko0 + 1 ] * ko )>>aElutShiftRight;
00224                     }   
00225                         
if( separateEluts )aElutOffset += aElutAdrSize;
00226                         
00227                         ko = (theArr[i+2]);
00228                         ko0 = ko - ( ko >> ( 16 - 
aElutShift ));
00229                         ko = ko0 & ( 
aElutShiftNum - 1 );
00230                         ko0 = ko0 >> 
aElutShift;
00231                         
if( ko0 >= (aElutAdrSize-1) ){
00232                                 aLong2 = ein_lut[ ko0 + aElutOffset ]<<(
aElutShift-aElutShiftRight);
00233                         }
00234                         
else{
00235                                 ko0 += aElutOffset;
00236                         aLong2 = ( ein_lut[ ko0 ] * ( 
aElutShiftNum - ko ) + ein_lut[ ko0 + 1 ] * ko )>>aElutShiftRight;
00237                     }   
00238                                 
00239                         aLong0 = ( aLong0 +2 )>>2;             
00240                         aLong1 = ( aLong1 +2 )>>2;             
00241                         aLong2 = ( aLong2 +2 )>>2;             
00242                         aAlutOffset = 0;
00243                         
for( ii=0; ii<3; ii++){ 
00244                                         aVal = aMatrix[ii][0] * aLong0;
00245                                         aVal += aMatrix[ii][1] * aLong1;
00246                                         aVal += aMatrix[ii][2] * aLong2;
00247                                 aVal = (aVal+((1<<9)-1))>>10;
00248                                 
if( aVal < 0 ) aVal = 0;
00249                                 
00250                         ko0= ( aVal>> (3+2+3) );
00251                         
if( ko0 >= (aAlutAdrSize-1) ){
00252                                 theArr[i+ii] = aus_lut[ (aAlutAdrSize-1) + aAlutOffset ] <<aAlutShift;
00253                         }
00254                         
else{
00255                                 ko0 += aAlutOffset;
00256                                 ko = ( aVal & ((1<<(3+2+3))-1) );
00257                                 theArr[i+ii] = (
UINT16)(( aus_lut[ ko0 ] * ( (1<<(3+2+3)) - ko ) + aus_lut[ ko0 +1 ] * ko)>>((3+2+3)-aAlutShift));
00258                                 }
00259                         
if( separateAluts )aAlutOffset += aAlutAdrSize;
00260                         }
00261 
                #if FARBR_DEBUG
00262 
                DebugPrint(
"i=%ld\n",i);
00263                 
DebugPrint(
"theArr=(d)");
for(ii=0; ii<3; ++ii) 
DebugPrint(
"%ld ",theArr[i+ii]); 
DebugPrint(
"\n");
00264                 
DebugPrint(
"ein_reg=(d)");
DebugPrint(
"%ld ",aLong0);
DebugPrint(
"%ld ",aLong1);
DebugPrint(
"%ld ",aLong2); 
DebugPrint(
"\n");
00265 
                #endif
00266 
                }
00267         }
00268         
else{
00269                 aAlutShift = aStructPtr->aAlutWordSize - 8;
00270                 
for (i = 0; i < theEnd; i +=3){         
00271         
00272         
00273                         aElutOffset = 0;
00274                         ko = (theArr[i+0]);
00275                         ko0 = ko - ( ko >> ( 16 - 
aElutShift ));
00276                         ko = ko0 & ( 
aElutShiftNum - 1 );
00277                         ko0 = ko0 >> 
aElutShift;
00278                         
if( ko0 >= (aElutAdrSize-1) ){
00279                                 aLong0 = ein_lut[ ko0 + aElutOffset ]<<(
aElutShift-aElutShiftRight);
00280                         }
00281                         
else{
00282                                 ko0 += aElutOffset;
00283                         aLong0 = ( ein_lut[ ko0 ] * ( 
aElutShiftNum - ko ) + ein_lut[ ko0 + 1 ] * ko )>>aElutShiftRight;
00284                     }   
00285                         
if( separateEluts )aElutOffset += aElutAdrSize;
00286                         
00287                         ko = (theArr[i+1]);
00288                         ko0 = ko - ( ko >> ( 16 - 
aElutShift ));
00289                         ko = ko0 & ( 
aElutShiftNum - 1 );
00290                         ko0 = ko0 >> 
aElutShift;
00291                         
if( ko0 >= (aElutAdrSize-1) ){
00292                                 aLong1 = ein_lut[ ko0 + aElutOffset ]<<(
aElutShift-aElutShiftRight);
00293                         }
00294                         
else{
00295                                 ko0 += aElutOffset;
00296                         aLong1 = ( ein_lut[ ko0 ] * ( 
aElutShiftNum - ko ) + ein_lut[ ko0 + 1 ] * ko )>>aElutShiftRight;
00297                     }   
00298                         
if( separateEluts )aElutOffset += aElutAdrSize;
00299                         
00300                         ko = (theArr[i+2]);
00301                         ko0 = ko - ( ko >> ( 16 - 
aElutShift ));
00302                         ko = ko0 & ( 
aElutShiftNum - 1 );
00303                         ko0 = ko0 >> 
aElutShift;
00304                         
if( ko0 >= (aElutAdrSize-1) ){
00305                                 aLong2 = ein_lut[ ko0 + aElutOffset ]<<(
aElutShift-aElutShiftRight);
00306                         }
00307                         
else{
00308                                 ko0 += aElutOffset;
00309                         aLong2 = ( ein_lut[ ko0 ] * ( 
aElutShiftNum - ko ) + ein_lut[ ko0 + 1 ] * ko )>>aElutShiftRight;
00310                     }   
00311                        
00312                         aLong0 = ( aLong0 +2 )>>2;             
00313                         aLong1 = ( aLong1 +2 )>>2;             
00314                         aLong2 = ( aLong2 +2 )>>2;             
00315                         aAlutOffset = 0;
00316                         
if( aStructPtr->aAlutWordSize > 8 ){
00317                                 
for( ii=0; ii<3; ii++){ 
00318                                                 aVal = aMatrix[ii][0] * aLong0;
00319                                                 aVal += aMatrix[ii][1] * aLong1;
00320                                                 aVal += aMatrix[ii][2] * aLong2;
00321                                         aVal = (aVal+((1<<12)-1))>>13;
00322                                         
if( aVal < 0 ) aVal = 0;
00323                                         
00324                                 ko0= (aVal+((1<<(3+2-1))-1)) >> (3+2);
00325                                 
if( ko0 >= (aAlutAdrSize-1) ){
00326                                         theByteArr[i+ii] = aus_lut[ (aAlutAdrSize-1) + aAlutOffset ] >>aAlutShift;
00327                                 }
00328                                 
else{
00329                                         theByteArr[i+ii] = aus_lut[ ko0 + aAlutOffset ] >>aAlutShift;
00330                                         }
00331                                 
if( separateAluts )aAlutOffset += aAlutAdrSize;
00332                                 }
00333                         }
00334                         
else{
00335                                 
for( ii=0; ii<3; ii++){ 
00336                                                 aVal = aMatrix[ii][0] * aLong0;
00337                                                 aVal += aMatrix[ii][1] * aLong1;
00338                                                 aVal += aMatrix[ii][2] * aLong2;
00339                                         aVal = (aVal+((1<<12)-1))>>13;
00340                                         
if( aVal < 0 ) aVal = 0;
00341                                         
00342                                 ko0= (aVal+((1<<(3+2-1))-1)) >> (3+2);
00343                                 
if( ko0 >= (aAlutAdrSize-1) ){
00344                                         theByteArr[i+ii] = aus_lutByte[ (aAlutAdrSize-1) + aAlutOffset ] ;
00345                                 }
00346                                 
else{
00347                                         theByteArr[i+ii] = aus_lutByte[ ko0 + aAlutOffset ] ;
00348                                         }
00349                                 
if( separateAluts )aAlutOffset += aAlutAdrSize;
00350                                 }
00351                         }
00352 
                #if FARBR_DEBUG
00353 
                DebugPrint(
"i=%ld\n",i);
00354                 
DebugPrint(
"theArr=(d)");
for(ii=0; ii<3; ++ii) 
DebugPrint(
"%ld ",theArr[i+ii]); 
DebugPrint(
"\n");
00355                 
DebugPrint(
"ein_reg=(d)");
DebugPrint(
"%ld ",aLong0);
DebugPrint(
"%ld ",aLong1);
DebugPrint(
"%ld ",aLong2); 
DebugPrint(
"\n");
00356 
                #endif
00357 
                }
00358         }
00359         
LH_END_PROC(
"DoMatrixForCube16")
00360 }
00361 
00362 void DoOnlyMatrixForCube16( Matrix2D    *theMatrix, Ptr aXlut, 
long aPointCount, 
long gridPointsCube )
00363 {
00364     
register long       ii,jj;
00365     
register long       i;
00366     
register long       aLong0;
00367     
register long       aLong1;
00368     
register long       aLong2;
00369     
register long       theEnd;
00370     
register long       aVal;
00371     
long                        aMatrix[3][3];
00372     
register double aFactor,dVal;
00373     
register UINT16     accu,aMax;
00374     
register UINT16 *theArr = (
UINT16 *)aXlut;
00375     
00376  
00377     
00378 
#ifdef DEBUG_OUTPUT
00379 
        long err = 0;
00380 
#endif
00381 
        LH_START_PROC(
"DoOnlyMatrixForCube16")
00382         jj=aPointCount;
00383         theEnd = 3 * aPointCount;
00384           
00385         
00386         i = gridPointsCube;
00387         aMax = 
VAL_MAXM1;
00388         aFactor = 4096.;
00389         
for( ii=0; ii<3; ii++){ 
00390                 
for( jj=0; jj<3; jj++){ 
00391                         dVal = (*theMatrix)[ii][jj]*aFactor;
00392                         aMatrix[ii][jj] = (
long)
Round(dVal);
00393                 }
00394         }
00395 
        #if FARBR_DEBUG
00396 
    DebugPrint(
"theArr=(d)");
for(ii=0; ii<3; ++ii) 
for( jj=0; jj<3; jj++) 
DebugPrint(
"%f ",aMatrix[ii][jj]); 
DebugPrint(
"\n");
00397 
    #endif
00398 
    
00399 
00400 
00401 
00402 
00403 
00404         
for (i = 0; i < theEnd; i +=3){         
00405                aLong0=theArr[i+0];
00406                aLong1=theArr[i+1];
00407                aLong2=theArr[i+2];
00408                 
for( ii=0; ii<3; ii++){ 
00409                                 aVal = aMatrix[ii][0] * aLong0;
00410                                 aVal += aMatrix[ii][1] * aLong1;
00411                                 aVal += aMatrix[ii][2] * aLong2;
00412                         
if( aVal > 0) aVal = (aVal+2047)>>12;
00413                         
else aVal = (aVal-2047)>>12;
00414                         accu = (
UINT16)
CLIPP(aVal,0,(
long)aMax);
00415                 theArr[i+ii] = accu;
00416                 }
00417 
        #if FARBR_DEBUG
00418 
        DebugPrint(
"i=%ld\n",i);
00419         
DebugPrint(
"theArr=(d)");
for(ii=0; ii<3; ++ii) 
DebugPrint(
"%ld ",theArr[i+ii]); 
DebugPrint(
"\n");
00420         
DebugPrint(
"ein_reg=(d)");
DebugPrint(
"%ld ",aLong0);
DebugPrint(
"%ld ",aLong1);
DebugPrint(
"%ld ",aLong2); 
DebugPrint(
"\n");
00421 
        #endif
00422 
        }
00423         
LH_END_PROC(
"DoOnlyMatrixForCube16")
00424 }
00425 
00426 
00427 
#if FARBR_FILES
00428 
static FileCount = 0;
00429 
static FILE *stream1;
00430 
00431 
00432 
00433 
00434 
void WriteLuts( 
char *theName,
long WordSize,
long aElutAdrSize,
long aElutWordSize,UINT16 *Elut,
00435                                 
long aXlutInDim,
long aXlutOutDim,
long aXlutAdrSize,
long aXlutWordSize,UINT16 *Xlut,
00436                                 
long aAlutAdrSize,
long aAlutWordSize,UINT16 *Alut)
00437 {
00438         
register unsigned long Size,i,ii,l,lMax;
00439         
char FileNameBuffer[256];
00440         
00441         
Size = aElutAdrSize*aXlutInDim;
00442     
sprintf(FileNameBuffer,
"%s Elut%d",theName,FileCount);
00443     stream1=fopen(FileNameBuffer,
"wb");             
00444     
if(stream1 == 
NULL){
00445         
DebugPrint(
"Open %s failed \n",FileNameBuffer);
00446         
return;
00447     }
00448         lMax=0;
00449         
if( 2 == 2 ){ 
for(i=0; i<
Size; ++i)
if( lMax < Elut[i] )lMax = Elut[i];}
00450         
else{ 
for(i=0; i<
Size; ++i)
if( lMax < ((
UINT8 *)Elut)[i] )lMax = ((
UINT8 *)Elut)[i];}
00451         
sprintf(FileNameBuffer,
"%s InputDimension=%d OutputDimension=%d AdrSize=%ld EndWert=%ld WordSize=%ld",
00452                         FileNameBuffer,aXlutInDim,aXlutInDim,aElutAdrSize,lMax,aElutWordSize);
00453         i=
strlen( FileNameBuffer )+1;
00454         
for( ii=i; ii<((i+15)/16)*16; ii++)
FileNameBuffer[ii-1]=
' ';
00455         
FileNameBuffer[ii-1]=
'\0';
00456         l=fprintf(stream1,
"%s\n",FileNameBuffer);
00457         
00458     
if(fwrite(Elut,
sizeof(UINT16),Size,stream1) != 
Size){
00459             
DebugPrint(
"Write Error %s\n",FileNameBuffer);
00460             
return;
00461     }
00462     fclose(stream1);
00463     
Size = 1;
00464     
for( i=0; i<aXlutInDim; ++i)
Size *= aXlutAdrSize;                   
00465         
Size = 
Size*aXlutOutDim;
00466     
sprintf(FileNameBuffer,
"DoNDim Xlut%d",FileCount);
00467     stream1=fopen(FileNameBuffer,
"wb");             
00468     
if(stream1 == 
NULL){
00469         
DebugPrint(
"Open %s failed \n",FileNameBuffer);
00470         
return;
00471     }
00472         lMax=0;
00473         
if( WordSize == 2 ){ 
for(i=0; i<
Size; ++i)
if( lMax < Xlut[i] )lMax = Xlut[i];}
00474         
else{ 
for(i=0; i<
Size; ++i)
if( lMax < ((
UINT8 *)Xlut)[i] )lMax = ((
UINT8 *)Xlut)[i];}
00475         
sprintf(FileNameBuffer,
"%s InputDimension=%d OutputDimension=%d AdrSize=%ld EndWert=%ld WordSize=%ld",
00476                         FileNameBuffer,aXlutInDim,aXlutOutDim,aXlutAdrSize,lMax,aXlutWordSize);
00477         i=
strlen( FileNameBuffer )+1;
00478         
for( ii=i; ii<((i+15)/16)*16; ii++)
FileNameBuffer[ii-1]=
' ';
00479         
FileNameBuffer[ii-1]=
'\0';
00480         l=fprintf(stream1,
"%s\n",FileNameBuffer);
00481         
00482     
if(fwrite(Xlut,WordSize,Size,stream1) != 
Size){
00483             
DebugPrint(
"Write Error %s\n",FileNameBuffer);
00484             
return;
00485     }
00486     fclose(stream1);
00487         
Size = aAlutAdrSize*aXlutOutDim;
00488     
sprintf(FileNameBuffer,
"DoNDim Alut%d",FileCount);
00489     stream1=fopen(FileNameBuffer,
"wb");             
00490     
if(stream1 == 
NULL){
00491         
DebugPrint(
"Open %s failed \n",FileNameBuffer);
00492         
return;
00493     }
00494         lMax=0;
00495         
if( WordSize == 2 ){ 
for(i=0; i<
Size; ++i)
if( lMax < Alut[i] )lMax = Alut[i];}
00496         
else{ 
for(i=0; i<
Size; ++i)
if( lMax < ((
UINT8 *)Alut)[i] )lMax = ((
UINT8 *)Alut)[i];}
00497         
sprintf(FileNameBuffer,
"%s InputDimension=%d OutputDimension=%d AdrSize=%ld EndWert=%ld WordSize=%ld",
00498                         FileNameBuffer,aXlutOutDim,aXlutOutDim,aAlutAdrSize,lMax,aAlutWordSize);
00499         i=
strlen( FileNameBuffer )+1;
00500         
for( ii=i; ii<((i+15)/16)*16; ii++)
FileNameBuffer[ii-1]=
' ';
00501         
FileNameBuffer[ii-1]=
'\0';
00502         l=fprintf(stream1,
"%s\n",FileNameBuffer);
00503         
00504     
if(fwrite(Alut,WordSize,Size,stream1) != 
Size){
00505             
DebugPrint(
"Write Error %s\n",FileNameBuffer);
00506             
return;
00507     }
00508     fclose(stream1);
00509     FileCount++;
00510 }
00511 
#endif