[debug] try to debug littleEndian false on tensor contracted product

This commit is contained in:
2026-07-26 22:08:15 +02:00
parent 3b5185c201
commit fd0f0e7684
2 changed files with 120 additions and 19 deletions
+88 -1
View File
@@ -145,6 +145,92 @@ long diff_timespec_nanoseconds(struct timespec time_stop, struct timespec time_s
#endif /*__TOOLS_T_C_H__*/
/* implementations */
/* IMPLEMENTATION_TOOLS */
#define POW 17
#define MMOD ((1 << (POW)) - 1)
#define SUBA 5
#define SUBB 8
#define GEN_TO_STR_N(type,size,format) \
TYPE_STRING type##_TO_STR(type var){ \
char *ret = malloc(size); \
/*int szret = */sprintf(ret,format,var); \
/*ret[szret]='\0'*//*no need , already by default */; \
return ret; \
}\
#define GENERATE_FUNCTION_ALL(type)\
type MAX_ARRAY_##type(const type *array, size_t size){\
if(array == NULL) return 0;\
type mx =(type)array[0];\
for(size_t i = 0; i < size; ++i)\
if(COMPARE_N_##type(&mx,&array[i]) < 0) mx =(type)array[i];\
return mx;}\
\
size_t ARG_MAX_ARRAY_##type(const type *array, size_t size){\
if(array == NULL) return 0;\
size_t i_mx = 0;\
for(size_t i = 0; i < size; ++i)\
if(COMPARE_N_##type(&array[i_mx],&array[i]) < 0) i_mx = i;\
return i_mx;}\
\
type MIN_ARRAY_##type(const type *array, size_t size){\
if(array == NULL) return 0;\
type mn =(type)array[0];\
for(size_t i = 0; i < size; ++i)\
if(COMPARE_N_##type(&mn,&array[i]) > 0) mn =(type)array[i];\
return mn;}\
\
size_t ARG_MIN_ARRAY_##type(const type *array, size_t size){\
if(array == NULL) return 0;\
size_t i_mn = 0;\
for(size_t i = 0; i < size; ++i)\
if(COMPARE_N_##type(&array[i_mn],&array[i]) > 0) i_mn = i;\
return i_mn;}\
\
#define GENERATE_FUNCTION_NUMERIC(type)\
int COMPARE_N_##type(const void *a, const void *b){ \
type diff = 0;\
if((*(type*)a > *(type*)b)){ \
diff =(*(type*)a - *(type*)b) * PRECISION_##type; \
/*char *str_diff = type##_TO_STR(diff), *str_a = type##_TO_STR(*(type*)a), *str_b = type##_TO_STR(*(type*)b);\
PRINT_DEBUG_(" diff = %s a=%s b=%s PRECISION : %ld\n",str_diff, str_a, str_b, PRECISION_##type);\
free(str_diff); free(str_a); free(str_b);\
*/ \
if(diff >= 1) return 1;\
return 0;\
}else{\
diff =(*(type*)b - *(type*)a) * PRECISION_##type; \
/*char *str_diff = type##_TO_STR(diff), *str_a = type##_TO_STR(*(type*)a), *str_b = type##_TO_STR(*(type*)b);\
PRINT_DEBUG_(" diff = %s a=%s b=%s PRECISION : %ld\n",str_diff, str_a, str_b, PRECISION_##type);\
free(str_diff); free(str_a); free(str_b);\
*/\
if(diff >= 1) return -1;\
return 0;\
}\
\
/*if (diff <= -1) return -1; \
if (diff >= 1) return 1; \
return 0; \
*/\
} \
\
void COPY_ARRAY_##type(type *dst, const type *src, size_t size){ \
for(size_t i = 0; i < size; ++i) dst[i]=src[i]; \
} \
\
#ifndef IMPLEMENTATION_TOOLS
@@ -175,7 +261,8 @@ long int PRECISION_TYPE_U_L_INT = 1;\
long int PRECISION_TYPE_SIZE_T = 1;\
\
long int PRECISION_TYPE_FLOAT = 100000000;\
long int PRECISION_TYPE_DOUBLE = 100000000000;\
/*long int PRECISION_TYPE_FLOAT = 100000;\
*/long int PRECISION_TYPE_DOUBLE = 100000000000;\
long int PRECISION_TYPE_L_DOUBLE = 100000000000000;\
\
\