Mathscape : 1st crack at documentation
--------------------------------------
The underlying structure to this package is streams. Every operation is a filter of streams. For instance, addition takes two streams as input and outputs the sum in an output stream. This is obvisously not optimal for calculations but it allows for a modular approach. Each piece is very simple and can be linked together to create very complex structures. Since the this approach really leaves the computer in the dark about what's going on in terms of the math it is easy to introduce user interfaces to generate the streams. For now though, there is only one stream generator which I have labeled X. Also the filters relate to simple math fuctions
(+, -, *, /, ^, exp, log, floor, sin, cos, tan, asin, acos, atan, abs, and canstants)
The constants have been implemented as filters as well. This allows them to be synced up with the other streams easily.
Each filter is a graphical object so that the user can see what is going on as well as have some limited interaction.
The initialization of the network of filters is done in a postscriptish maner.
This language turns out to be very efficient as an internal language. Seeing that it is a little less understandable the CompOp filter (compound function) is initalized by the more standard math expressions (less efficiently).
Generator -1.0 1.0 99 gen
Plotter plot (takes 2 streams)
AddOp add (takes 2 streams)
MulOp mul (takes 2 streams)
*DivOp div (takes 2 streams) + - div
*PowOp pow (takes 2 streams) exp x pow
ConOp 3.14 con (takes 1 stream)
CosOp cos (takes 1 stream)
SinOp sin (takes 1 stream)
TanOp tan (takes 1 stream)
SplitOp 4 dup (takes 1 stream)
CompOp 3,x,sin,x,* comp (takes 1 stream)
3 flip, exch are internal stack operations.
Proposed filters
----------------
The CompoundOp filter, computing with compound filters, would have two components to it the splitter part and the combining part. The splitter part would apparently need multiple output streams: one that tells the combining part where to expect the input from and the rest to flow the data to each of the possible cases.
A discrete derivative filter, DervOp, would take an x and a y stream and approximate the derivative (cubic approx?).
A discrete integration filter, IntOp, would take an x and a y stream and approximate the integral (polygonal approx?).