SMOLNET PORTAL home about changes
iadjust vaxis - ploot - simple plotting tools	Err	bitreich.org	70
hgit clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot	URL:git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot	bitreich.org	70
1Log	/scm/ploot/log.gph	bitreich.org	70
1Files	/scm/ploot/files.gph	bitreich.org	70
1Refs	/scm/ploot/refs.gph	bitreich.org	70
1Tags	/scm/ploot/tag	bitreich.org	70
1README	/scm/ploot/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/ploot/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit ebc69990bb78af4e042f28bff9198d6f9445f657	/scm/ploot/commit/ebc69990bb78af4e042f28bff9198d6f9445f657.gph	bitreich.org	70
1parent 8112f382b3e9104289ade9cae2d777ab4d68ea1b	/scm/ploot/commit/8112f382b3e9104289ade9cae2d777ab4d68ea1b.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Fri,  2 Feb 2018 22:55:31 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iadjust vaxis	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       4 ++--	Err	bitreich.org	70
i  A ploot                               |       0 	Err	bitreich.org	70
i  A ploot.c                             |     150 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  D plot                                |       0 	Err	bitreich.org	70
i  D plot.c                              |      89 -------------------------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i5 files changed, 152 insertions(+), 91 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/ploot/file/Makefile.gph	bitreich.org	70
i@@ -1,4 +1,4 @@	Err	bitreich.org	70
i CFLAGS        = -Wall -Wextra -Werror -std=c89 -pedantic	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-all: plot.o config.h	Err	bitreich.org	70
i-        ${CC} -o plot plot.o	Err	bitreich.org	70
i+all: ploot.o config.h	Err	bitreich.org	70
i+        ${CC} -o ploot ploot.o	Err	bitreich.org	70
1diff --git a/ploot b/ploot	/scm/ploot/file/ploot.gph	bitreich.org	70
iBinary files differ.	Err	bitreich.org	70
1diff --git a/ploot.c b/ploot.c	/scm/ploot/file/ploot.c.gph	bitreich.org	70
i@@ -0,0 +1,150 @@	Err	bitreich.org	70
i+#include <stdio.h>	Err	bitreich.org	70
i+#include <string.h>	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#include "config.h"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#define MARGIN        9	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#define ABS(x)        ((x) < 0 ? -(x) : (x))	Err	bitreich.org	70
i+#define LEN(x)        (sizeof(x) / sizeof(*x))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Set `str' to a human-readable form of `num' with always a width of 7 (+ 1	Err	bitreich.org	70
i+ * the '\0' terminator).  Buffer overflow is ensured not to happen due to the	Err	bitreich.org	70
i+ * max size of a double.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+humanize(char *str, double val)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int        exp;	Err	bitreich.org	70
i+        char        *label = " kMGTE", fmt[] = "%+.?f%c";	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (exp = 0; ABS(val) > 1000; exp++)	Err	bitreich.org	70
i+                val /= 1000;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        fmt[3] = (ABS(val) < 10) ? '3' : (ABS(val) < 100) ? '2' : '1';	Err	bitreich.org	70
i+        if (exp == 0) {	Err	bitreich.org	70
i+                fmt[5] = '\0';	Err	bitreich.org	70
i+                fmt[3]++;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        snprintf(str, 8, fmt, val, label[exp]);	Err	bitreich.org	70
i+        if (val >= 0)	Err	bitreich.org	70
i+                str[0] = ' ';	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Returns the maximal double of values between `beg' and `end'.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+double	Err	bitreich.org	70
i+maxdv(double *beg, double *end)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        double        *val, max;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        max = *beg;	Err	bitreich.org	70
i+        for (val = beg; val < end; val++) {	Err	bitreich.org	70
i+                if (*val > max)	Err	bitreich.org	70
i+                        max = *val;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        return max;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * If not null, print the title `str' centered on width.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+title(char *str, int width)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        if (str == NULL)	Err	bitreich.org	70
i+                return;	Err	bitreich.org	70
i+        printf("%*s\n\n", (int)(width - strlen(str)) / 2 + MARGIN, str);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Print vertical axis with humanized number from time to time, with occurences	Err	bitreich.org	70
i+ * determined after the position on the vertical axis from the bottom `pos'.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+vaxis(double val, int pos)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        char        label[8];	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (pos % 4 == 0) {	Err	bitreich.org	70
i+                humanize(label, val);	Err	bitreich.org	70
i+                printf("%s -", label);	Err	bitreich.org	70
i+        } else {	Err	bitreich.org	70
i+                printf("         ");	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Print horizontal axis for up to `col' values.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+haxis(int col)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        printf("%*d -+", MARGIN - 2, 0);	Err	bitreich.org	70
i+        while (col-- > 0)	Err	bitreich.org	70
i+                putchar('-');	Err	bitreich.org	70
i+        putchar('\n');	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Print two rows of a plot into a single line using ' ', '.' and ':'.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+line(double *beg, double *end, double top, double bot)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        double        *val;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        putchar('|');	Err	bitreich.org	70
i+        for (val = beg; val != end; val++)	Err	bitreich.org	70
i+                putchar((*val < bot) ? ' ' : (*val < top) ? '.' : ':');	Err	bitreich.org	70
i+        putchar('\n');	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * Plot values between `beg' and `end' in a plot of height `height'.	Err	bitreich.org	70
i+ * If `str' is not NULL, it is set as a title above the graph.	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+plot(int height, double *beg, double *end, char *str)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        double        top, bot, max;	Err	bitreich.org	70
i+        int        h;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        title(str, end - beg);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        max = maxdv(beg, end);	Err	bitreich.org	70
i+        for (h = height + height % 2; h > 0; h -= 2) {	Err	bitreich.org	70
i+                top = h * max / height;	Err	bitreich.org	70
i+                bot = (h - 1) * max / height;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                vaxis(top, h);	Err	bitreich.org	70
i+                line(beg, end, top, bot);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        haxis(end - beg);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+read_simple()	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        ;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i+main()	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        double        val[] = { 1000, 3030, 3000, 2456, 3005, 3000, 1031, 2000, 3345,	Err	bitreich.org	70
i+            1000, 1833, 2452, 432, 1456, 435, 1646, 435, 1345, 554, 5245, 3456,	Err	bitreich.org	70
i+            1000, 1833, 2452, 432, 1456, 435, 1646, 435, 1345, 554, 5245, 3456,	Err	bitreich.org	70
i+            1000, 1833, 2452, 432, 1456, 435, 1646, 435, 1345, 554, 5245, 3456,	Err	bitreich.org	70
i+            5000, 3444, 1034, 1833, 2452, 2555, 432, 2456, 435, 1646, 435, 346,	Err	bitreich.org	70
i+            1000, 1833, 2452, 432, 1456, 435, 1646, 435, 1345, 554, 5245, 3456,	Err	bitreich.org	70
i+            1000, 1833, 2452, 432, 1456, 435, 1646, 435, 1345, 554, 5245, 3456,	Err	bitreich.org	70
i+            1833, 2452, 1456, 435, 435, 554, 5456, 1034, 2452, 432, 1435, 1646,	Err	bitreich.org	70
i+            1000, 1833, 2452, 432, 1456, 435, 1646, 435, 1345, 554, 5245, 3456,	Err	bitreich.org	70
i+            1456, 3498, 834, 834, 804, 234, 544, 3456, 2984, 983, 2583, 2583 };	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        plot(30, val, val + LEN(val), "title");	Err	bitreich.org	70
i+        return 0;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
1diff --git a/plot b/plot	/scm/ploot/file/plot.gph	bitreich.org	70
iBinary files differ.	Err	bitreich.org	70
1diff --git a/plot.c b/plot.c	/scm/ploot/file/plot.c.gph	bitreich.org	70
i@@ -1,89 +0,0 @@	Err	bitreich.org	70
i-#include <stdio.h>	Err	bitreich.org	70
i-#include <string.h>	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-#include "config.h"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-#define ABS(x)        ((x) < 0 ? -(x) : (x))	Err	bitreich.org	70
i-#define LEN(x)        (sizeof(x) / sizeof(*x))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i- * Set `str' to a human-readable form of `num' with always a width of 7 (+ 1	Err	bitreich.org	70
i- * the '\0' terminator).  Buffer overflow is ensured not to happen due to the	Err	bitreich.org	70
i- * max size of a double.	Err	bitreich.org	70
i- */	Err	bitreich.org	70
i-void	Err	bitreich.org	70
i-humanize(char *str, double num)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        int        exp;	Err	bitreich.org	70
i-        char        *label = " kMGTE", fmt[] = "%+.?f%c";	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        for (exp = 0; ABS(num) > 1000; exp++)	Err	bitreich.org	70
i-                num /= 1000;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        fmt[3] = (ABS(num) < 10) ? '3' : (ABS(num) < 100) ? '2' : '1';	Err	bitreich.org	70
i-        if (exp == 0) {	Err	bitreich.org	70
i-                fmt[5] = '\0';	Err	bitreich.org	70
i-                fmt[3]++;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-        snprintf(str, 8, fmt, num, label[exp]);	Err	bitreich.org	70
i-        if (num >= 0)	Err	bitreich.org	70
i-                str[0] = ' ';	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i- * Print two rows of a plot into a single line using ' ', '.' and ':'.	Err	bitreich.org	70
i- */	Err	bitreich.org	70
i-void	Err	bitreich.org	70
i-line(double *beg, double *end, double top, double bot)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        double        *val;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        for (val = beg; val <= end; val++)	Err	bitreich.org	70
i-                putchar((*val < bot) ? ' ' : (*val < top) ? '.' : ':');	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i- * Returns the maximal double of values between `beg' and `end'.	Err	bitreich.org	70
i- */	Err	bitreich.org	70
i-double	Err	bitreich.org	70
i-maxdv(double *beg, double *end)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        double        *val, max;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        max = *beg;	Err	bitreich.org	70
i-        for (val = beg; val < end; val++) {	Err	bitreich.org	70
i-                if (*val > max)	Err	bitreich.org	70
i-                        max = *val;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-        return max;	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i- * Plot values between `beg' and `end' in a plot of height `height'.	Err	bitreich.org	70
i- */	Err	bitreich.org	70
i-void	Err	bitreich.org	70
i-plot(int height, double *beg, double *end)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        double        top, bot, max;	Err	bitreich.org	70
i-        int        h;	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i-        char        label[8];	Err	bitreich.org	70
i-*/	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        max = maxdv(beg, end);	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        for (h = height + height % 2; h > 0; h -= 2) {	Err	bitreich.org	70
i-                top = h * max / height;	Err	bitreich.org	70
i-                bot = (h - 1) * max / height;	Err	bitreich.org	70
i-                line(beg, end, top, bot);	Err	bitreich.org	70
i-                putchar('\n');	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-int	Err	bitreich.org	70
i-main()	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        double        val[] = { 0.0, 0.4, 3.4, 2.1, 3.5, 3.0, 1.1, 2.0 } ;	Err	bitreich.org	70
i-        plot(10, val, val + LEN(val));	Err	bitreich.org	70
i-        return 0;	Err	bitreich.org	70
i-}	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/ploot/commit/ebc69990bb78af4e...
Content-Typetext/plain; charset=utf-8