Changeset 41990
- Timestamp:
- Jan 19, 2022, 6:37:58 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20211108/ippTests/ippCheck/src/ippCheckKeys.c
r41986 r41990 1 1 // # include <ippCheckKeys.h> 2 2 # include <pslib.h> 3 4 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2); 3 5 4 6 int main(int argc, char **argv) { … … 40 42 psMetadata *offstr = psMetadataAlloc (); 41 43 psMetadata *off100 = psMetadataAlloc (); 42 psMetadata *off 10 = psMetadataAlloc ();43 psMetadata *off 1 = psMetadataAlloc ();44 psMetadata *off010 = psMetadataAlloc (); 45 psMetadata *off001 = psMetadataAlloc (); 44 46 psMetadata *offlow = psMetadataAlloc (); 45 47 … … 71 73 } 72 74 75 # define SAVE_ITEM_TWO \ 76 if (fabs(ratio) > 1.0) { \ 77 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 78 psMetadataAddItem (off100, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 79 continue; \ 80 } \ 81 if (fabs(ratio) > 0.1) { \ 82 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 83 psMetadataAddItem (off010, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 84 continue; \ 85 } \ 86 if (fabs(ratio) > 0.01) { \ 87 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 88 psMetadataAddItem (off001, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 89 continue; \ 90 } \ 91 if (fabs(ratio) <= 0.01) { \ 92 psMetadataItem *newItem = psMetadataItemCopy(item_2); \ 93 psMetadataAddItem (offlow, newItem, PS_LIST_TAIL, PS_META_REPLACE); \ 94 continue; \ 95 } 96 73 97 switch (item_1->type) { 74 98 case PS_DATA_BOOL: … … 84 108 // fprintf (stdout, "key %s value mismatch: %d vs %d\n", item_1->name, item_1->data.S32, item_2->data.S32); 85 109 int delta = (item_1->data.S32 - item_2->data.S32); 86 float fdelta = delta / (float) item_1->data.S32; 87 if (fabs(fdelta) > 1.0) { 88 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 89 psMetadataAddItem (off100, newItem, PS_LIST_TAIL, PS_META_REPLACE); 90 continue; 91 } 92 if (fabs(fdelta) > 0.1) { 93 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 94 psMetadataAddItem (off10, newItem, PS_LIST_TAIL, PS_META_REPLACE); 95 continue; 96 } 97 if (fabs(fdelta) > 0.01) { 98 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 99 psMetadataAddItem (off1, newItem, PS_LIST_TAIL, PS_META_REPLACE); 100 continue; 101 } 102 if (fabs(fdelta) <= 0.01) { 103 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 104 psMetadataAddItem (offlow, newItem, PS_LIST_TAIL, PS_META_REPLACE); 105 continue; 106 } 107 } 108 break; 109 110 float ratio = delta / (float) item_1->data.S32; 111 SAVE_ITEM_TWO; 112 } 113 break; 114 115 case PS_DATA_S64: 116 if (item_1->data.S64 != item_2->data.S64) { 117 long int delta = (item_1->data.S64 - item_2->data.S64); 118 float ratio = delta / (float) item_1->data.S64; 119 SAVE_ITEM_TWO; 120 } 121 break; 122 110 123 case PS_DATA_F64: 111 124 if (item_1->data.F64 != item_2->data.F64) { 112 125 double delta = (item_1->data.F64 - item_2->data.F64); 113 double fdelta = delta / (float) item_1->data.F64; 114 if (fabs(fdelta) > 1.0) { 115 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 116 psMetadataAddItem (off100, newItem, PS_LIST_TAIL, PS_META_REPLACE); 117 continue; 118 } 119 if (fabs(fdelta) > 0.1) { 120 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 121 psMetadataAddItem (off10, newItem, PS_LIST_TAIL, PS_META_REPLACE); 122 continue; 123 } 124 if (fabs(fdelta) > 0.01) { 125 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 126 psMetadataAddItem (off1, newItem, PS_LIST_TAIL, PS_META_REPLACE); 127 continue; 128 } 129 if (fabs(fdelta) <= 0.01) { 130 psMetadataItem *newItem = psMetadataItemCopy(item_2); // Copied item 131 psMetadataAddItem (offlow, newItem, PS_LIST_TAIL, PS_META_REPLACE); 132 continue; 133 } 126 double ratio = delta / (float) item_1->data.F64; 127 SAVE_ITEM_TWO; 134 128 } 135 129 break; … … 151 145 } 152 146 153 fprintf (stdout, " Keys missing from file 2:\n");147 fprintf (stdout, "\n --- Keys missing from file 2 ---\n"); 154 148 psMetadataPrint (0, missing, 1); 155 149 156 fprintf (stdout, " Keys with inconsistent types:\n");150 fprintf (stdout, "\n --- Keys with inconsistent types ---\n"); 157 151 psMetadataPrint (0, badtype, 1); 158 152 159 fprintf (stdout, " Keys with mismatched strings:\n");160 psMetadataPrint (0, offstr, 1);161 162 fprintf (stdout, " Keys with mismatched boolean values:\n");163 psMetadataPrint (0, badbool, 1);164 165 fprintf (stdout, " Keys with inconsistent by 100%% or more:\n");166 psMetadataPrint (0, off100, 1);167 168 fprintf (stdout, " Keys with inconsistent by 10 - 100%% or more:\n");169 psMetadataPrint (0, off10, 1);170 171 fprintf (stdout, " Keys with inconsistent by 1 - 10%% or more:\n");172 psMetadataPrint (0, off1, 1);173 174 fprintf (stdout, " Keys with inconsistent by < 1%%:\n");175 psMetadataPrint (0, offlow, 1);153 fprintf (stdout, "\n --- Keys with mismatched strings ---\n"); 154 PrintMismatchedKeys (offstr, head_1, head_2); 155 156 fprintf (stdout, "\n --- Keys with mismatched boolean values ---\n"); 157 PrintMismatchedKeys (badbool, head_1, head_2); 158 159 fprintf (stdout, "\n --- Keys inconsistent by 100%% or more ---\n"); 160 PrintMismatchedKeys (off100, head_1, head_2); 161 162 fprintf (stdout, "\n --- Keys inconsistent by 10 - 100%% or more ---\n"); 163 PrintMismatchedKeys (off010, head_1, head_2); 164 165 fprintf (stdout, "\n --- Keys inconsistent by 1 - 10%% or more ---\n"); 166 PrintMismatchedKeys (off001, head_1, head_2); 167 168 fprintf (stdout, "\n --- Keys inconsistent by < 1%% ---\n"); 169 PrintMismatchedKeys (offlow, head_1, head_2); 176 170 177 171 exit (0); 172 } 173 174 // we only need to support 4 types: BOOL, STRING, S32, S64, F64: 175 bool PrintMismatchedKeys (psMetadata *list, psMetadata *v1, psMetadata *v2) { 176 177 // compare keywords 178 psMetadataIterator *iter = psMetadataIteratorAlloc (list, PS_LIST_HEAD, NULL); 179 psMetadataItem *item = NULL; 180 while ((item = psMetadataGetAndIncrement (iter)) != NULL) { 181 182 psMetadataItem *i1 = psMetadataLookup(v1, item->name); 183 psAssert (i1, "is this possible?"); 184 185 psMetadataItem *i2 = psMetadataLookup(v2, item->name); 186 psAssert (i2, "is this possible?"); 187 188 int longName = (strlen(item->name) > 8); 189 190 switch (i1->type) { 191 case PS_DATA_BOOL: 192 if (longName) { 193 fprintf (stdout, " %32s : %12c vs %12c\n", item->name, (i1->data.B ? 'T' : 'F'), (i2->data.B ? 'T' : 'F')); 194 } else { 195 fprintf (stdout, " %8s : %12c vs %12c\n", item->name, (i1->data.B ? 'T' : 'F'), (i2->data.B ? 'T' : 'F')); 196 } 197 break; 198 case PS_DATA_S32: { 199 int delta = i1->data.S32 - i2->data.S32; 200 float ratio = delta / (float) i1->data.S32; 201 if (longName) { 202 fprintf (stdout, " %32s : %12d vs %12d : %12.5g\n", item->name, i1->data.S32, i2->data.S32, ratio); 203 } else { 204 fprintf (stdout, " %8s : %12d vs %12d : %12.5g\n", item->name, i1->data.S32, i2->data.S32, ratio); 205 } 206 break; } 207 case PS_DATA_S64: { 208 int delta = i1->data.S64 - i2->data.S64; 209 float ratio = delta / (float) i1->data.S64; 210 if (longName) { 211 fprintf (stdout, " %32s : %12ld vs %12ld : %12.5g\n", item->name, i1->data.S64, i2->data.S64, ratio); 212 } else { 213 fprintf (stdout, " %8s : %12ld vs %12ld : %12.5g\n", item->name, i1->data.S64, i2->data.S64, ratio); 214 } 215 break; } 216 case PS_DATA_F64: { 217 double delta = i1->data.F64 - i2->data.F64; 218 double ratio = delta / (double) i1->data.F64; 219 if (longName) { 220 fprintf (stdout, " %32s : %12.5g vs %12.5g : %12.5g\n", item->name, i1->data.F64, i2->data.F64, ratio); 221 } else { 222 fprintf (stdout, " %8s : %12.5g vs %12.5g : %12.5g\n", item->name, i1->data.F64, i2->data.F64, ratio); 223 } 224 break; } 225 case PS_DATA_STRING: 226 if (longName) { 227 fprintf (stdout, " %32s : %60s vs %60s\n", item->name, i1->data.str, i2->data.str); 228 } else { 229 fprintf (stdout, " %8s : %60s vs %60s\n", item->name, i1->data.str, i2->data.str); 230 } 231 break; 232 default: 233 psAbort ("impossible!"); 234 } 235 } 236 return true; 178 237 } 179 238
Note:
See TracChangeset
for help on using the changeset viewer.
