tadd missing transpose.c - numtools - perform numerical operations on vectors a… | |
git clone git://src.adamsgaard.dk/numtools | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e6a23d29b0e98397210e40824f9f37929eb60c2b | |
parent 5b24cf0f0de9c6d52fa609cb59e025d2706e2e7e | |
Author: Anders Damsgaard <[email protected]> | |
Date: Sun, 12 Sep 2021 07:16:51 +0200 | |
add missing transpose.c | |
Diffstat: | |
A transpose.c | 48 +++++++++++++++++++++++++++++… | |
1 file changed, 48 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/transpose.c b/transpose.c | |
t@@ -0,0 +1,48 @@ | |
+#include <err.h> | |
+#include <stdio.h> | |
+#include <stdlib.h> | |
+#include <unistd.h> | |
+ | |
+#include "util.h" | |
+ | |
+int | |
+main(void) | |
+{ | |
+ size_t i = 0, j = 0, nf = 0, nr = 0, linesize = 0; | |
+ char *line = NULL, *data = NULL; | |
+ double val, **vals = NULL; | |
+ | |
+ if (pledge("stdio", NULL) == -1) | |
+ err(2, "pledge"); | |
+ | |
+ vals = calloc(1, sizeof(double *)); | |
+ while (getline(&line, &linesize, stdin) > 0) { | |
+ if (nr > 0) | |
+ if (!(vals = xreallocarray(vals, nr + 1, sizeof(double… | |
+ err(1, "reallocarray"); | |
+ if ((nf = allocarr(&vals[nr], line, linesize)) == 0) | |
+ errx(1, "no fields in input"); | |
+ data = line; | |
+ for (i = 0; i < nf; i++) { | |
+ if (!scannextval(&data, &val)) | |
+ errx(1, "could not parse line %ld, field %ld",… | |
+ vals[nr][i] = val; | |
+ } | |
+ nr++; | |
+ } | |
+ for (i = 0; i < nf; i++) { | |
+ for (j = 0; j < nr; j++) { | |
+ printf("%g", vals[j][i]); | |
+ if (j < nr - 1) | |
+ printf(DELIMSTR); | |
+ } | |
+ puts(""); | |
+ } | |
+ | |
+ free(line); | |
+ for (i = 0; i < nr; i++) | |
+ free(vals[i]); | |
+ free(vals); | |
+ | |
+ return 0; | |
+} |