;; an example function with everything wired in...
(defun sinplot()
(with-open-file (s "/tmp/sinplot" :direction :output :if-exists :supersede)
(format s "TitleText: Sin(x)~%")
(format s "0.Color: white~%")
(do ((i 0.0 (+ i 0.1)))
((> i 6.28)
(run-shell-command "xgraph /tmp/sinplot" :wait nil)
'XGraphOutput)
(format s "~12,4G ~12,4G~%" i (sin i)))))
Here's some stuff to do:
(a) figure out how to numerical_real_meval as much as possible
(b) figure out how to make xgraph options settable from the command line
(c)adaptive plotting using divided differences
(d) interval stuff: how to mark by changing color or style
(e) multiple plots
...
(n) compile mma to lisp (and compile)
e.g. in a plot command like
plot(Exp[-x]Sin[x^2], ...) change the first argument, namely
(Times (Exp (Times -1 x))(Sin (Power x 2)))
to lisp, in the process
checking that the only free variable remaining is the plot variable..
(defun tempfun(x) (declare(float x))
(setq x (coerce x 'float))
(the float
(* (exp (- x))(sin (expt x 2)))))
and then compile that into machine language.
Problems:
expressions that involve other functions:
e.g. plot(f[x]*f[1-x], ..
need to have a (* numericalmeval `(f ,x) `(f (Plus ,x (Times -1 1))
or some such.