Joseph Redmon
2015-02-09 979d02126b1a597361934f86f50eeda31ff083fe
src/utils.c
@@ -2,11 +2,26 @@
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
#include <float.h>
#include <limits.h>
#include "utils.h"
void pm(int M, int N, float *A)
{
    int i,j;
    for(i =0 ; i < M; ++i){
        printf("%d ", i+1);
        for(j = 0; j < N; ++j){
            printf("%10.6f, ", A[i*N+j]);
        }
        printf("\n");
    }
    printf("\n");
}
char *find_replace(char *str, char *orig, char *rep)
{
    static char buffer[4096];
@@ -44,10 +59,9 @@
    }
}
void error(char *s)
void error(const char *s)
{
    perror(s);
    //fprintf(stderr, "Error: %s\n", s);
    exit(0);
}
@@ -135,6 +149,27 @@
    return line;
}
void read_all(int fd, char *buffer, size_t bytes)
{
    size_t n = 0;
    while(n < bytes){
        int next = read(fd, buffer + n, bytes-n);
        if(next <= 0) error("read failed");
        n += next;
    }
}
void write_all(int fd, char *buffer, size_t bytes)
{
    size_t n = 0;
    while(n < bytes){
        size_t next = write(fd, buffer + n, bytes-n);
        if(next <= 0) error("write failed");
        n += next;
    }
}
char *copy_string(char *s)
{
    char *copy = malloc(strlen(s)+1);
@@ -221,6 +256,14 @@
    return a;
}
float mse_array(float *a, int n)
{
    int i;
    float sum = 0;
    for(i = 0; i < n; ++i) sum += a[i]*a[i];
    return sqrt(sum/n);
}
void normalize_array(float *a, int n)
{
    int i;
@@ -241,6 +284,16 @@
    }
}
float mag_array(float *a, int n)
{
    int i;
    float sum = 0;
    for(i = 0; i < n; ++i){
        sum += a[i]*a[i];
    }
    return sqrt(sum);
}
void scale_array(float *a, int n, float s)
{
    int i;