From 0c9237e0b461b14656bc8247c7d90b3e20045572 Mon Sep 17 00:00:00 2001 From: iru Date: Mon, 5 Nov 2012 15:38:39 -0200 Subject: [PATCH 1/3] fplot(1) man page --- sys/man/1/fplot | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 sys/man/1/fplot diff --git a/sys/man/1/fplot b/sys/man/1/fplot new file mode 100644 index 000000000..73791309c --- /dev/null +++ b/sys/man/1/fplot @@ -0,0 +1,57 @@ +.TH FPLOT 1 +.SH NAME +fplot \- plot elementary function +.SH SYNOPSYS +.B fplot +[ +.B -c +[ +.B -s +.I size +]] [ +.B -r +.I range +] +.I functions ... +.SH DESCRIPTION +.I Fplot +plots elementary +.I functions +separated by spaces. The default output is the screen, but if the +.B -c +option is specified, the plot is written to the standard output as an r8g8b8 +.IR image (6). +The latter image size is either 640x480 or the one specified by the +.B -s +option's argument (in the WIDTHxHEIGHT format). The +.B -r +option accepts as argument the x and y ranges, in the format +.LR "xmin:xmax ymin:ymax". +.PP +Each function to be plotted may be a combination of the independent variable x, +the elementary operations (+, -, *, and /), and the functions described in +.IR sin (2) +and +.IR exp (2). +The exception being that x^n raises x to the nth power, log is the base 10 logarithm, +and ln is the natural logarithm. +.SH EXAMPLES +Plot the absolute value and x^3 functions to a 400x400 image(6) on standard output and view with +.IR page (1). +.IP +.EX +fplot -c -s 400x400 'sqrt(x*x)' 'x^3' | page +.EE +.SH SOURCE +.B /sys/src/cmd/fplot.c +.SH SEE ALSO +.IR exp (2), +.IR sin (2), +.IR image (6), +.IR plot (1). + +.SH DIAGNOSTICS +.I Fplot +either exits with +.LR "syntax error" +or an empty status. From c8ea1cd8d7df5c044cf3ac0f29914721093ec0a9 Mon Sep 17 00:00:00 2001 From: iru Date: Mon, 5 Nov 2012 15:45:10 -0200 Subject: [PATCH 2/3] Add exponential function. --- sys/src/cmd/fplot.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/src/cmd/fplot.c b/sys/src/cmd/fplot.c index 9d6dd5301..7a302d733 100644 --- a/sys/src/cmd/fplot.c +++ b/sys/src/cmd/fplot.c @@ -57,6 +57,7 @@ void oasin(void) { *sp = asin(*sp); } void oacos(void) { *sp = acos(*sp); } void oatan(void) { *sp = atan(*sp); } void osqrt(void) { *sp = sqrt(*sp); } +void oexp(void) { *sp = sqrt(*sp); } void olog(void) { *sp = log10(*sp); } void oln(void) { *sp = log(*sp); } @@ -79,6 +80,7 @@ struct Operator { "acos", OUNARY, 0, 50, oacos, "atan", OUNARY, 0, 50, oatan, "sqrt", OUNARY, 0, 50, osqrt, + "exp", OUNARY, 0, 50, oexp, "log", OUNARY, 0, 50, olog, "ln", OUNARY, 0, 50, oln, }; From 2dbc08a8bc347e9cf9c9291b07b71cf9f00c4acf Mon Sep 17 00:00:00 2001 From: iru Date: Mon, 5 Nov 2012 15:47:13 -0200 Subject: [PATCH 3/3] Oops, make exponential function work --- sys/src/cmd/fplot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/src/cmd/fplot.c b/sys/src/cmd/fplot.c index 7a302d733..866901135 100644 --- a/sys/src/cmd/fplot.c +++ b/sys/src/cmd/fplot.c @@ -57,7 +57,7 @@ void oasin(void) { *sp = asin(*sp); } void oacos(void) { *sp = acos(*sp); } void oatan(void) { *sp = atan(*sp); } void osqrt(void) { *sp = sqrt(*sp); } -void oexp(void) { *sp = sqrt(*sp); } +void oexp(void) { *sp = exp(*sp); } void olog(void) { *sp = log10(*sp); } void oln(void) { *sp = log(*sp); }