| | |
| | | |
| | | #include "utils.h" |
| | | |
| | | void sorta_shuffle(void *arr, size_t n, size_t size, size_t sections) |
| | | { |
| | | size_t i; |
| | | for(i = 0; i < sections; ++i){ |
| | | size_t start = n*i/sections; |
| | | size_t end = n*(i+1)/sections; |
| | | size_t num = end-start; |
| | | shuffle(arr+(start*size), num, size); |
| | | } |
| | | } |
| | | |
| | | void shuffle(void *arr, size_t n, size_t size) |
| | | { |
| | | size_t i; |
| | | void *swp = calloc(1, size); |
| | | for(i = 0; i < n-1; ++i){ |
| | | size_t j = i + rand()/(RAND_MAX / (n-i)+1); |
| | | memcpy(swp, arr+(j*size), size); |
| | | memcpy(arr+(j*size), arr+(i*size), size); |
| | | memcpy(arr+(i*size), swp, size); |
| | | } |
| | | } |
| | | |
| | | void del_arg(int argc, char **argv, int index) |
| | | { |
| | | int i; |
| | |
| | | return def; |
| | | } |
| | | |
| | | char *find_char_arg(int argc, char **argv, char *arg, char *def) |
| | | { |
| | | int i; |
| | | for(i = 0; i < argc-1; ++i){ |
| | | if(!argv[i]) continue; |
| | | if(0==strcmp(argv[i], arg)){ |
| | | def = argv[i+1]; |
| | | del_arg(argc, argv, i); |
| | | del_arg(argc, argv, i); |
| | | break; |
| | | } |
| | | } |
| | | return def; |
| | | } |
| | | |
| | | |
| | | char *basecfg(char *cfgfile) |
| | | { |
| | |
| | | for(i =0 ; i < M; ++i){ |
| | | printf("%d ", i+1); |
| | | for(j = 0; j < N; ++j){ |
| | | printf("%10.6f, ", A[i*N+j]); |
| | | printf("%2.4f, ", A[i*N+j]); |
| | | } |
| | | printf("\n"); |
| | | } |
| | | printf("\n"); |
| | | } |
| | | |
| | | |
| | | char *find_replace(char *str, char *orig, char *rep) |
| | | { |
| | | static char buffer[4096]; |
| | |
| | | s[len-offset] = '\0'; |
| | | } |
| | | |
| | | void free_ptrs(void **ptrs, int n) |
| | | { |
| | | int i; |
| | | for(i = 0; i < n; ++i) free(ptrs[i]); |
| | | free(ptrs); |
| | | } |
| | | |
| | | char *fgetl(FILE *fp) |
| | | { |
| | | if(feof(fp)) return 0; |
| | |
| | | return sum_array(a,n)/n; |
| | | } |
| | | |
| | | void mean_arrays(float **a, int n, int els, float *avg) |
| | | { |
| | | int i; |
| | | int j; |
| | | memset(avg, 0, els*sizeof(float)); |
| | | for(j = 0; j < n; ++j){ |
| | | for(i = 0; i < els; ++i){ |
| | | avg[i] += a[j][i]; |
| | | } |
| | | } |
| | | for(i = 0; i < els; ++i){ |
| | | avg[i] /= n; |
| | | } |
| | | } |
| | | |
| | | float variance_array(float *a, int n) |
| | | { |
| | | int i; |
| | |
| | | } |
| | | */ |
| | | |
| | | float rand_uniform() |
| | | float rand_uniform(float min, float max) |
| | | { |
| | | return (float)rand()/RAND_MAX; |
| | | return ((float)rand()/RAND_MAX * (max - min)) + min; |
| | | } |
| | | |
| | | float **one_hot_encode(float *a, int n, int k) |