A86: Re: Symbolic Program


[Prev][Next][Index][Thread]

A86: Re: Symbolic Program




You and me both, pal.  Two very good programmers that I know each wrote
partially working programs like this for two different z80 calculators, but
I won't name them because I know that neither of them have any intention of
completion a project like this.  Hint: if you can write a C compiler in four
days on your own without any books, classes, etc., then writing a computer
algebra system (cas) such as this might be within your league.  Although, I
would say that a CAS is definitely harder than a C compiler.

A project like this is probably doable.  However, to write one you must be
extremely skilled not only in programming but also in math.  Something that
I am not.  And to write a CAS, you must understand math as a programmer, not
as a typical math student.  You need to understand the algorithms behind
manipulating, reducing and solving equations, from a general and broad
standpoint.  You think integrals are hard to do by hand?  Try writing a
program to compute indefinite integrals.

At the beginning of the semester, I was interested in doing this and started
working on some test programs.  Obviously, starting off writing it in z80
would be foolish.  My first goal was to get pretty print working.  I wrote a
program using Builder to parse an equation, convert it into an internal
format that I guessed would be easy to work with, and print it out using
pretty print.  I almost got it working, but even the code to do this got
quite complicated, not nearly as clean as I would like for something that
will get written later in assembly.  I haven't touched it since.

There is an obvious lack of books, courses and tutorials on writing a CAS
type system.  Why?  Probably because it is so HARD.  There are several open
source CAS's that you can check out, but be warned that they are incredibly
complex.

>     Could someone make a symbolic program for the 86 similar to the
89's(ie. x+x=2x).
> I would do it but I have no idea where to start.





Follow-Ups: References: