Joseph Redmon
2014-01-28 b2b7137b6f185ce2f01664d782a09b08d50d5a07
src/mini_blas.c
@@ -1,16 +1,44 @@
#include <stdlib.h>
#include <math.h>
void pm(int M, int N, double *A)
{
    int i,j;
    for(i =0 ; i < M; ++i){
        for(j = 0; j < N; ++j){
            printf("%10.6f, ", A[i*N+j]);
        }
        printf("\n");
    }
    printf("\n");
}
void gemm(int TA, int TB, int M, int N, int K, double ALPHA, 
                    double *A, int lda, 
                    double *B, int ldb,
                    double BETA,
                    double *C, int ldc)
{
    // Assume TA = TB = 0, beta = 1 LULZ
    // Assume TA = 0, beta = 1 LULZ
    int i,j,k;
    if(TB && !TA){
        for(i = 0; i < M; ++i){
            for(j = 0; j < N; ++j){
                register double sum = 0;
                for(k = 0; k < K; ++k){
                    sum += ALPHA*A[i*lda+k]*B[k+j*ldb];
                }
                C[i*ldc+j] += sum;
            }
        }
    }else{
    for(i = 0; i < M; ++i){
        for(k = 0; k < K; ++k){
                register double A_PART = ALPHA*A[i*lda+k];
            for(j = 0; j < N; ++j){
                C[i*ldc+j] += ALPHA*A[i*lda+k]*B[k*ldb+j];
                    C[i*ldc+j] += A_PART*B[k*ldb+j];
                }
            }
        }
    }