[14] | 1 | /**CHeaderFile***************************************************************** |
---|
| 2 | |
---|
| 3 | FileName [img.h] |
---|
| 4 | |
---|
| 5 | PackageName [img] |
---|
| 6 | |
---|
| 7 | Synopsis [Methods for performing image computations.] |
---|
| 8 | |
---|
| 9 | Description [The image package is used to compute the image (forward or |
---|
| 10 | backward) of a set under a vector of functions. The functions are given by |
---|
| 11 | a graph of multi-valued functions (MVFs). This graph is built using the |
---|
| 12 | partition package. Each vertex in this graph has an MVF and an MDD id. The |
---|
| 13 | fanins of a vertex v give those vertices upon which the MVF at v depends. |
---|
| 14 | The vector of functions to use for an image computation, the "roots", is |
---|
| 15 | specified by an array of (names of) vertices of the graph. The domain |
---|
| 16 | variables are the variables over which "from" sets are defined for forward |
---|
| 17 | images, and "to" sets are defined for backward images. The range variables |
---|
| 18 | are the variables over which "to" sets are defined for forward images, and |
---|
| 19 | "from" sets are defined for backward images. The quantify variables are |
---|
| 20 | additional variables over which the functions are defined; this set is |
---|
| 21 | disjoint from domain variables. These variables are existentially |
---|
| 22 | quantified from the results of backward image computation. <p> |
---|
| 23 | |
---|
| 24 | Computing images is fundamental to many symbolic analysis techniques, and |
---|
| 25 | methods for computing images efficiently is an area of ongoing research. |
---|
| 26 | For this reason, the image package has been designed with lots of |
---|
| 27 | flexibility to easily allow new methods to be integrated (to add a new |
---|
| 28 | method, see the instructions in imgInt.h). Applications that use the image |
---|
| 29 | package can switch among different image methods simply by specifying the |
---|
| 30 | method type in the image initialization routine. By using the returned |
---|
| 31 | structure (Img_ImageInfo_t) from the initialization routine, all subsequent |
---|
| 32 | (forward or backward) image computations will be done using the specified |
---|
| 33 | method.<p> |
---|
| 34 | |
---|
| 35 | VIS users can control which image method is used by appropriately setting |
---|
| 36 | the "image_method" flag. Also, VIS users can set flags to control |
---|
| 37 | parameters for different image computation methods. Because the user has |
---|
| 38 | the ability to change the values of these flags, Img_ImageInfo_t structs |
---|
| 39 | should be freed and re-initialized whenever the VIS user changes the value |
---|
| 40 | of these flags.<p> |
---|
| 41 | |
---|
| 42 | Following are descriptions of the methods implemented. In the descriptions, |
---|
| 43 | x=x_1,...x_n is the set of domain variables, u=u_1,...,u_k is the set of |
---|
| 44 | quantify variables, y=y_1,...,y_m is the set of range variables, and |
---|
| 45 | f=f_1(x,u),...,f_m(x,u) is the set of functions under which we wish to |
---|
| 46 | compute images.<p> |
---|
| 47 | |
---|
| 48 | <b>Monolithic:</b> This is the most naive approach possible. A single |
---|
| 49 | relation T(x,y) is constructed during the initialization phase, using the |
---|
| 50 | computation (exists u (prod_i(y_i = f_i(x,u)))). To compute the forward |
---|
| 51 | image, where fromUpperBound=U(x), fromLowerBound=L(x), and toCareSet=C(y), |
---|
| 52 | we first compute a set A(x) between U(x) and L(x). Then, T(x,y) is |
---|
| 53 | simplified with respect to A(x) and C(y) to get T*. Finally, x is |
---|
| 54 | quantified from T* to produce the final answer. Backward images are |
---|
| 55 | computed analogously. The monolithic method does not recognize any |
---|
| 56 | user-settable flags for image computation.<p> |
---|
| 57 | |
---|
| 58 | <b>IWLS95:</b> This technique is based on the early quantification heuristic. |
---|
| 59 | The initialization process consists of following steps: |
---|
| 60 | <UL> |
---|
| 61 | <LI> Create the relation of the roots at the bit level |
---|
| 62 | in terms of the quantify and domain variables. |
---|
| 63 | <LI> Order the bit level relations. |
---|
| 64 | <LI> Group the relations of bits together, making a cluster |
---|
| 65 | whenever the BDD size reaches a threshold. |
---|
| 66 | <LI> For each cluster, quantify out the quantify variables which |
---|
| 67 | are local to that particular cluster. |
---|
| 68 | <LI> Order the clusters using the algorithm given in |
---|
| 69 | "Efficient BDD Algorithms for FSM Synthesis and |
---|
| 70 | Verification", by R. K. Ranjan et. al. in the proceedings of |
---|
| 71 | IWLS'95{1}. |
---|
| 72 | <LI> The orders of the clusters for forward and backward image are |
---|
| 73 | calculated and stored. Also stored is the schedule of |
---|
| 74 | variables for early quantification. |
---|
| 75 | </UL> |
---|
| 76 | For forward and backward image computation the corresponding |
---|
| 77 | routines are called with appropriate ordering of clusters and |
---|
| 78 | early quantification schedule. <p>] |
---|
| 79 | |
---|
| 80 | Author [Rajeev Ranjan, Tom Shiple, Abelardo Pardo, In-Ho Moon] |
---|
| 81 | |
---|
| 82 | Copyright [Copyright (c) 1994-1996 The Regents of the Univ. of California. |
---|
| 83 | All rights reserved. |
---|
| 84 | |
---|
| 85 | Permission is hereby granted, without written agreement and without license |
---|
| 86 | or royalty fees, to use, copy, modify, and distribute this software and its |
---|
| 87 | documentation for any purpose, provided that the above copyright notice and |
---|
| 88 | the following two paragraphs appear in all copies of this software. |
---|
| 89 | |
---|
| 90 | IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR |
---|
| 91 | DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT |
---|
| 92 | OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF |
---|
| 93 | CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
---|
| 94 | |
---|
| 95 | THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, |
---|
| 96 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
---|
| 97 | FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN |
---|
| 98 | "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE |
---|
| 99 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.] |
---|
| 100 | |
---|
| 101 | Revision [$Id: img.h,v 1.50 2005/05/15 01:03:36 jinh Exp $] |
---|
| 102 | |
---|
| 103 | ******************************************************************************/ |
---|
| 104 | |
---|
| 105 | #ifndef _IMG |
---|
| 106 | #define _IMG |
---|
| 107 | |
---|
| 108 | #include "vm.h" |
---|
| 109 | #include "ntk.h" |
---|
| 110 | |
---|
| 111 | /*---------------------------------------------------------------------------*/ |
---|
| 112 | /* Constant declarations */ |
---|
| 113 | /*---------------------------------------------------------------------------*/ |
---|
| 114 | |
---|
| 115 | /* This is a threshold for finding dependent variables. */ |
---|
| 116 | #define IMG_MAX_DEP_SIZE 20 |
---|
| 117 | |
---|
| 118 | /*---------------------------------------------------------------------------*/ |
---|
| 119 | /* Structure declarations */ |
---|
| 120 | /*---------------------------------------------------------------------------*/ |
---|
| 121 | |
---|
| 122 | /*---------------------------------------------------------------------------*/ |
---|
| 123 | /* Type declarations */ |
---|
| 124 | /*---------------------------------------------------------------------------*/ |
---|
| 125 | typedef struct ImgImageInfoStruct Img_ImageInfo_t; |
---|
| 126 | |
---|
| 127 | /**Enum************************************************************************ |
---|
| 128 | |
---|
| 129 | Synopsis [Methods for image computation. See the description in img.h.] |
---|
| 130 | |
---|
| 131 | ******************************************************************************/ |
---|
| 132 | typedef enum { |
---|
| 133 | Img_Monolithic_c, |
---|
| 134 | Img_Iwls95_c, |
---|
| 135 | Img_Mlp_c, |
---|
| 136 | Img_Tfm_c, /* transition function method */ |
---|
| 137 | Img_Hybrid_c, /* hybrid image comutation */ |
---|
| 138 | Img_Linear_c, |
---|
| 139 | Img_Linear_Range_c, |
---|
| 140 | Img_Default_c |
---|
| 141 | } Img_MethodType; |
---|
| 142 | |
---|
| 143 | |
---|
| 144 | /**Enum************************************************************************ |
---|
| 145 | |
---|
| 146 | Synopsis [Type to indicate the direction of image computation.] |
---|
| 147 | |
---|
| 148 | Description [Type to indicate the direction of image computation. When an |
---|
| 149 | imageInfo structure is initialized, the application must specify what |
---|
| 150 | "directions" of image computation will be performed: forward, backward, or |
---|
| 151 | both.] |
---|
| 152 | |
---|
| 153 | ******************************************************************************/ |
---|
| 154 | typedef enum { |
---|
| 155 | Img_Forward_c, |
---|
| 156 | Img_Backward_c, |
---|
| 157 | Img_Both_c |
---|
| 158 | } Img_DirectionType; |
---|
| 159 | |
---|
| 160 | |
---|
| 161 | /**Enum************************************************************************ |
---|
| 162 | |
---|
| 163 | Synopsis [Type to indicate image minimization method.] |
---|
| 164 | |
---|
| 165 | Description [Type to indicate image minimization method.] |
---|
| 166 | |
---|
| 167 | ******************************************************************************/ |
---|
| 168 | typedef enum { |
---|
| 169 | Img_Restrict_c, /* default */ |
---|
| 170 | Img_Constrain_c, |
---|
| 171 | Img_Compact_c, |
---|
| 172 | Img_Squeeze_c, |
---|
| 173 | Img_And_c, |
---|
| 174 | Img_OrNot_c, |
---|
| 175 | Img_DefaultMinimizeMethod_c /* refer to img_minimize_method */ |
---|
| 176 | } Img_MinimizeType; |
---|
| 177 | |
---|
| 178 | /**Enum************************************************************************ |
---|
| 179 | |
---|
| 180 | Synopsis [Image substitute direction] |
---|
| 181 | |
---|
| 182 | ******************************************************************************/ |
---|
| 183 | typedef enum { |
---|
| 184 | Img_D2R_c, /* domain to range */ |
---|
| 185 | Img_R2D_c /* range to domain */ |
---|
| 186 | } Img_SubstituteDir; |
---|
| 187 | |
---|
| 188 | /**Enum************************************************************************ |
---|
| 189 | |
---|
| 190 | Synopsis [State variables optimization direction] |
---|
| 191 | |
---|
| 192 | ******************************************************************************/ |
---|
| 193 | typedef enum { |
---|
| 194 | Opt_None, |
---|
| 195 | Opt_CS, |
---|
| 196 | Opt_NS, |
---|
| 197 | Opt_Both |
---|
| 198 | } Img_OptimizeType; |
---|
| 199 | |
---|
| 200 | /*---------------------------------------------------------------------------*/ |
---|
| 201 | /* Variable declarations */ |
---|
| 202 | /*---------------------------------------------------------------------------*/ |
---|
| 203 | |
---|
| 204 | |
---|
| 205 | /*---------------------------------------------------------------------------*/ |
---|
| 206 | /* Macro declarations */ |
---|
| 207 | /*---------------------------------------------------------------------------*/ |
---|
| 208 | |
---|
| 209 | /**AutomaticStart*************************************************************/ |
---|
| 210 | |
---|
| 211 | /*---------------------------------------------------------------------------*/ |
---|
| 212 | /* Function prototypes */ |
---|
| 213 | /*---------------------------------------------------------------------------*/ |
---|
| 214 | |
---|
| 215 | EXTERN int Img_ImageBuildFwdLFPRelation(Ntk_Network_t *network, Img_ImageInfo_t *imageInfo, mdd_t *constraint, int whichTime, int *maxTime, int *numBlocks); |
---|
| 216 | EXTERN void Img_PrintHybridOptions(void); |
---|
| 217 | EXTERN mdd_t* Img_MultiwayLinearAndSmooth(mdd_manager *mddManager, array_t *relationArray, array_t *smoothVarMddIdArray, array_t *introducedVarMddIdArray, Img_MethodType method, Img_DirectionType direction); |
---|
| 218 | EXTERN void Img_PrintPartitionedTransitionRelation(mdd_manager *mddManager, Img_ImageInfo_t *imageInfo, Img_DirectionType directionType); |
---|
| 219 | EXTERN void Img_ReorderPartitionedTransitionRelation(Img_ImageInfo_t *imageInfo, Img_DirectionType directionType); |
---|
| 220 | EXTERN void Img_UpdateQuantificationSchedule(Img_ImageInfo_t *imageInfo, Img_DirectionType directionType); |
---|
| 221 | EXTERN void Img_ClusterRelationArray(mdd_manager *mddManager, Img_MethodType method, Img_DirectionType direction, array_t *relationArray, array_t *domainVarMddIdArray, array_t *rangeVarMddIdArray, array_t *quantifyVarMddIdArray, array_t **clusteredRelationArray, array_t **arraySmoothVarBddArray, array_t **smoothVarCubeArray, boolean freeRelationArray); |
---|
| 222 | EXTERN void Img_PrintMlpOptions(void); |
---|
| 223 | EXTERN int Img_TfmGetRecursionStatistics(Img_ImageInfo_t *imageInfo, int preFlag, int *nRecurs, int *nLeaves, int *nTurns, float *averageDepth, int *maxDepth, int *nDecomps, int *topDecomp, int *maxDecomp, float *averageDecomp); |
---|
| 224 | EXTERN void Img_TfmPrintStatistics(Img_ImageInfo_t *imageInfo, Img_DirectionType dir); |
---|
| 225 | EXTERN void Img_TfmPrintRecursionStatistics(Img_ImageInfo_t *imageInfo, int preFlag); |
---|
| 226 | EXTERN void Img_PrintTfmOptions(void); |
---|
| 227 | EXTERN int Img_TfmGetCacheStatistics(Img_ImageInfo_t *imageInfo, int preFlag, double *inserts, double *lookups, double *hits, double *entries, int *nSlots, int *maxChainLength); |
---|
| 228 | EXTERN int Img_TfmCheckGlobalCache(int preFlag); |
---|
| 229 | EXTERN void Img_TfmPrintCacheStatistics(Img_ImageInfo_t *imageInfo, int preFlag); |
---|
| 230 | EXTERN void Img_TfmFlushCache(Img_ImageInfo_t *imageInfo, int preFlag); |
---|
| 231 | EXTERN void Img_Init(void); |
---|
| 232 | EXTERN void Img_End(void); |
---|
| 233 | EXTERN Img_MethodType Img_UserSpecifiedMethod(void); |
---|
| 234 | EXTERN Img_ImageInfo_t * Img_ImageInfoInitialize(Img_ImageInfo_t *imageInfo, graph_t * mddNetwork, array_t * roots, array_t * domainVars, array_t * rangeVars, array_t * quantifyVars, mdd_t * domainCube, mdd_t * rangeCube, mdd_t * quantifyCube, Ntk_Network_t * network, Img_MethodType methodType, Img_DirectionType directionType, int FAFWFlag, mdd_t *winning); |
---|
| 235 | EXTERN void Img_ImageInfoUpdateVariables(Img_ImageInfo_t *imageInfo, graph_t * mddNetwork, array_t * domainVars, array_t * quantifyVars, mdd_t * domainCube, mdd_t * quantifyCube); |
---|
| 236 | EXTERN void Img_ImageAllowPartialImage(Img_ImageInfo_t *info, boolean value); |
---|
| 237 | EXTERN void Img_ImagePrintPartialImageOptions(void); |
---|
| 238 | EXTERN boolean Img_ImageWasPartial(Img_ImageInfo_t *info); |
---|
| 239 | EXTERN mdd_t * Img_ImageInfoComputeImageWithDomainVars(Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray); |
---|
| 240 | EXTERN mdd_t * Img_ImageInfoComputeFwdWithDomainVars(Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, mdd_t * toCareSet); |
---|
| 241 | EXTERN mdd_t * Img_ImageInfoComputeFwd(Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray); |
---|
| 242 | EXTERN mdd_t * Img_ImageInfoComputePreImageWithDomainVars(Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray); |
---|
| 243 | EXTERN mdd_t * Img_ImageInfoComputeEXWithDomainVars(Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray); |
---|
| 244 | EXTERN mdd_t * Img_ImageInfoComputeBwdWithDomainVars(Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, mdd_t * toCareSet); |
---|
| 245 | EXTERN mdd_t * Img_ImageInfoComputeBwd(Img_ImageInfo_t * imageInfo, mdd_t * fromLowerBound, mdd_t * fromUpperBound, array_t * toCareSetArray); |
---|
| 246 | EXTERN void Img_ImageInfoFree(Img_ImageInfo_t * imageInfo); |
---|
| 247 | EXTERN char * Img_ImageInfoObtainMethodTypeAsString(Img_ImageInfo_t * imageInfo); |
---|
| 248 | EXTERN Img_MethodType Img_ImageInfoObtainMethodType(Img_ImageInfo_t * imageInfo); |
---|
| 249 | EXTERN void Img_ImageInfoPrintMethodParams(Img_ImageInfo_t *imageInfo, FILE *fp); |
---|
| 250 | EXTERN void Img_ResetTrMinimizedFlag(Img_ImageInfo_t *imageInfo, Img_DirectionType directionType); |
---|
| 251 | EXTERN Img_MinimizeType Img_ReadMinimizeMethod(void); |
---|
| 252 | EXTERN void Img_MinimizeTransitionRelation(Img_ImageInfo_t *imageInfo, array_t *constrainArray, Img_MinimizeType minimizeMethod, Img_DirectionType directionType, boolean reorderIwls95Clusters); |
---|
| 253 | EXTERN mdd_t * Img_MinimizeImage(mdd_t *image, mdd_t *constraint, Img_MinimizeType method, boolean underapprox); |
---|
| 254 | EXTERN mdd_t * Img_AddDontCareToImage(mdd_t *image, mdd_t *constraint, Img_MinimizeType method); |
---|
| 255 | EXTERN mdd_t * Img_MinimizeImageArray(mdd_t *image, array_t *constraintArray, Img_MinimizeType method, boolean underapprox); |
---|
| 256 | EXTERN void Img_SetPrintMinimizeStatus(Img_ImageInfo_t *imageInfo, int status); |
---|
| 257 | EXTERN int Img_ReadPrintMinimizeStatus(Img_ImageInfo_t *imageInfo); |
---|
| 258 | EXTERN void Img_AbstractTransitionRelation(Img_ImageInfo_t *imageInfo, array_t *abstractVars, mdd_t *abstractCube, Img_DirectionType directionType); |
---|
| 259 | EXTERN void Img_DupTransitionRelation(Img_ImageInfo_t *imageInfo, Img_DirectionType directionType); |
---|
| 260 | EXTERN void Img_RestoreTransitionRelation(Img_ImageInfo_t *imageInfo, Img_DirectionType directionType); |
---|
| 261 | EXTERN int Img_ApproximateTransitionRelation(Img_ImageInfo_t *imageInfo, bdd_approx_dir_t approxDir, bdd_approx_type_t approxMethod, int approxThreshold, double approxQuality, double approxQualityBias, Img_DirectionType directionType, mdd_t *bias); |
---|
| 262 | EXTERN mdd_t * Img_ApproximateImage(mdd_manager *mgr, mdd_t *image, bdd_approx_dir_t approxDir, bdd_approx_type_t approxMethod, int approxThreshold, double approxQuality, double approxQualityBias, mdd_t *bias); |
---|
| 263 | EXTERN int Img_IsPartitionedTransitionRelation(Img_ImageInfo_t *imageInfo); |
---|
| 264 | EXTERN void Img_ResetNumberOfImageComputation(Img_DirectionType imgDir); |
---|
| 265 | EXTERN int Img_GetNumberOfImageComputation(Img_DirectionType imgDir); |
---|
| 266 | EXTERN array_t * Img_GetPartitionedTransitionRelation(Img_ImageInfo_t *imageInfo, Img_DirectionType directionType); |
---|
| 267 | EXTERN void Img_ReplaceIthPartitionedTransitionRelation(Img_ImageInfo_t *imageInfo, int i, mdd_t *relation, Img_DirectionType directionType); |
---|
| 268 | EXTERN void Img_ReplacePartitionedTransitionRelation(Img_ImageInfo_t *imageInfo, array_t *relationArray, Img_DirectionType directionType); |
---|
| 269 | EXTERN mdd_t * Img_ComposeIntermediateNodes(graph_t *partition, mdd_t *node, array_t *psVars, array_t *nsVars, array_t *inputVars); |
---|
| 270 | EXTERN void Img_ImageConstrainAndClusterTransitionRelation(Img_ImageInfo_t *imageInfo, Img_DirectionType direction, mdd_t *constrain, Img_MinimizeType minimizeMethod, boolean underApprox, boolean cleanUp, boolean forceReorder, int printStatus); |
---|
| 271 | EXTERN Img_MinimizeType Img_GuidedSearchReadUnderApproxMinimizeMethod(void); |
---|
| 272 | EXTERN Img_MinimizeType Img_GuidedSearchReadOverApproxMinimizeMethod(void); |
---|
| 273 | EXTERN mdd_t * Img_Substitute(Img_ImageInfo_t *imageInfo, mdd_t *f, Img_SubstituteDir dir); |
---|
| 274 | EXTERN mdd_t * Img_ImageGetUnreachableStates(Img_ImageInfo_t * imageInfo); |
---|
| 275 | EXTERN void Img_ImageInfoSetUseOptimizedRelationFlag(Img_ImageInfo_t * imageInfo); |
---|
| 276 | EXTERN void Img_ImageInfoResetUseOptimizedRelationFlag(Img_ImageInfo_t * imageInfo); |
---|
| 277 | EXTERN void Img_ImageInfoResetLinearComputeRange(Img_ImageInfo_t * imageInfo); |
---|
| 278 | EXTERN void Img_ImageInfoSetLinearComputeRange(Img_ImageInfo_t * imageInfo); |
---|
| 279 | EXTERN int Img_IsTransitionRelationOptimized(Img_ImageInfo_t * imageInfo); |
---|
| 280 | EXTERN void Img_ForwardImageInfoConjoinWithWinningStrategy( Img_ImageInfo_t * imageInfo, mdd_t *winningStrategy); |
---|
| 281 | EXTERN void Img_ForwardImageInfoRecoverFromWinningStrategy( Img_ImageInfo_t * imageInfo); |
---|
| 282 | EXTERN Img_OptimizeType Img_ImageInfoObtainOptimizeType(Img_ImageInfo_t * imageInfo); |
---|
| 283 | EXTERN int Img_IsQuantifyCubeSame( Img_ImageInfo_t *imageInfo, mdd_t *quantifyCube); |
---|
| 284 | EXTERN int Img_IsQuantifyArraySame( Img_ImageInfo_t *imageInfo, array_t *quantifyArray); |
---|
| 285 | EXTERN void Img_ImageInfoFreeFAFW(Img_ImageInfo_t * imageInfo); |
---|
| 286 | |
---|
| 287 | |
---|
| 288 | |
---|
| 289 | |
---|
| 290 | /** |
---|
| 291 | EXTERN void ImgLinearClusterRelationArray(mdd_manager *mgr, ImgFunctionData_t *functionData, array_t *relationArray, Img_DirectionType direction, array_t **clusteredRelationArrayPtr, array_t **arraySmoothVarBddArrayPtr, array_t **optClusteredRelationArrayPtr, array_t **optArraySmoothVarBddArrayPtr, ImgTrmOption_t *option); |
---|
| 292 | **/ |
---|
| 293 | |
---|
| 294 | |
---|
| 295 | |
---|
| 296 | /**AutomaticEnd***************************************************************/ |
---|
| 297 | |
---|
| 298 | #endif /* _IMG */ |
---|