diff options
Diffstat (limited to 'src/octave.c')
| -rw-r--r-- | src/octave.c | 167 |
1 files changed, 83 insertions, 84 deletions
diff --git a/src/octave.c b/src/octave.c index 9fbb9ba..c57bae1 100644 --- a/src/octave.c +++ b/src/octave.c @@ -9,7 +9,6 @@ \*---------------------------------------------------------------------------*/ - /* Copyright (C) 2012 David Rowe @@ -27,116 +26,116 @@ along with this program; if not, see <http://www.gnu.org/licenses/>. */ -#include <stdio.h> -#include <stdarg.h> - #include "octave.h" +#include <stdarg.h> +#include <stdio.h> + #ifdef ARM_MATH_CM4 #include "Trace.h" #endif #define OCTAVE_BUFSIZE 2048 - -void flush_buffer(FILE* f, char* buffer,size_t* buf_idx_ptr) -{ +void flush_buffer(FILE* f, char* buffer, size_t* buf_idx_ptr) { #ifdef ARM_MATH_CM4 - trace_write(buffer,*buf_idx_ptr); + trace_write(buffer, *buf_idx_ptr); #else - fwrite(buffer,*buf_idx_ptr,1,f); + fwrite(buffer, *buf_idx_ptr, 1, f); #endif - *buf_idx_ptr = 0; + *buf_idx_ptr = 0; } -void handle_buffer(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, size_t l) -{ - *buf_idx_ptr += l; - if (*buf_idx_ptr > max_buf - 64) - { - flush_buffer(f, buffer,buf_idx_ptr); - } +void handle_buffer(FILE* f, char* buffer, const size_t max_buf, + size_t* buf_idx_ptr, size_t l) { + *buf_idx_ptr += l; + if (*buf_idx_ptr > max_buf - 64) { + flush_buffer(f, buffer, buf_idx_ptr); + } } -signed int printf_buffer(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, const char *pFormat, ...) -{ - va_list ap; - signed int rc; - - va_start(ap, pFormat); - rc = vsnprintf(&buffer[*buf_idx_ptr], max_buf - *buf_idx_ptr, pFormat, ap); - va_end(ap); - if (rc>0) - { - handle_buffer(f, buffer,max_buf,buf_idx_ptr,rc); - } - return rc; +signed int printf_buffer(FILE* f, char* buffer, const size_t max_buf, + size_t* buf_idx_ptr, const char* pFormat, ...) { + va_list ap; + signed int rc; + + va_start(ap, pFormat); + rc = vsnprintf(&buffer[*buf_idx_ptr], max_buf - *buf_idx_ptr, pFormat, ap); + va_end(ap); + if (rc > 0) { + handle_buffer(f, buffer, max_buf, buf_idx_ptr, rc); + } + return rc; } - -void printf_header(FILE* f, char* buffer,const size_t max_buf, size_t* buf_idx_ptr, const char *name, const char *dtype, int rows, int cols, int isFloat) -{ +void printf_header(FILE* f, char* buffer, const size_t max_buf, + size_t* buf_idx_ptr, const char* name, const char* dtype, + int rows, int cols, int isFloat) { #ifdef ARM_MATH_CM4 - printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# hex: %s\n", isFloat?"true":"false"); -#endif - printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# name: %s\n", name); - printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# type: %s\n",dtype); - printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# rows: %d\n", rows); - printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# columns: %d\n", cols); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# hex: %s\n", + isFloat ? "true" : "false"); +#endif + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# name: %s\n", name); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# type: %s\n", dtype); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# rows: %d\n", rows); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, buf_idx_ptr, "# columns: %d\n", + cols); } -void octave_save_int(FILE *f, char name[], int data[], int rows, int cols) -{ - int r,c; - char buffer[OCTAVE_BUFSIZE]; - size_t buf_idx = 0; - - printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "matrix", rows, cols, 0); - - for(r=0; r<rows; r++) { - for(c=0; c<cols; c++) - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " %d", data[r*cols+c]); - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); - } - - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); - flush_buffer(f, buffer, &buf_idx); +void octave_save_int(FILE* f, char name[], int data[], int rows, int cols) { + int r, c; + char buffer[OCTAVE_BUFSIZE]; + size_t buf_idx = 0; + + printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "matrix", rows, cols, + 0); + + for (r = 0; r < rows; r++) { + for (c = 0; c < cols; c++) + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " %d", + data[r * cols + c]); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); + } + + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); + flush_buffer(f, buffer, &buf_idx); } -void octave_save_float(FILE *f, char name[], float data[], int rows, int cols, int col_len) -{ - int r,c; - char buffer[OCTAVE_BUFSIZE]; - size_t buf_idx = 0; +void octave_save_float(FILE* f, char name[], float data[], int rows, int cols, + int col_len) { + int r, c; + char buffer[OCTAVE_BUFSIZE]; + size_t buf_idx = 0; - printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "matrix", rows, cols, 1); + printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "matrix", rows, cols, + 1); - for(r=0; r<rows; r++) { - for(c=0; c<cols; c++) - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " %f", data[r*col_len+c]); - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); - } + for (r = 0; r < rows; r++) { + for (c = 0; c < cols; c++) + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " %f", + data[r * col_len + c]); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); + } - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); - flush_buffer(f, buffer, &buf_idx); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); + flush_buffer(f, buffer, &buf_idx); } +void octave_save_complex(FILE* f, char name[], COMP data[], int rows, int cols, + int col_len) { + int r, c; + char buffer[OCTAVE_BUFSIZE]; + size_t buf_idx = 0; -void octave_save_complex(FILE *f, char name[], COMP data[], int rows, int cols, int col_len) -{ - int r,c; - char buffer[OCTAVE_BUFSIZE]; - size_t buf_idx = 0; - - printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "complex matrix", rows, cols, 1); - - for(r=0; r<rows; r++) { + printf_header(f, buffer, OCTAVE_BUFSIZE, &buf_idx, name, "complex matrix", + rows, cols, 1); - for(c=0; c<cols; c++) - { - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " (%f,%f)", data[r*col_len+c].real, data[r*col_len+c].imag); - } - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); + for (r = 0; r < rows; r++) { + for (c = 0; c < cols; c++) { + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, " (%f,%f)", + data[r * col_len + c].real, data[r * col_len + c].imag); } - printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); - flush_buffer(f, buffer, &buf_idx); + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n"); + } + printf_buffer(f, buffer, OCTAVE_BUFSIZE, &buf_idx, "\n\n"); + flush_buffer(f, buffer, &buf_idx); } |
