[q-lang-cvs] q/examples symbolic.q,NONE,1.1
Brought to you by:
agraef
From: Albert G. <ag...@us...> - 2006-06-06 23:13:47
|
Update of /cvsroot/q-lang/q/examples In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv3659 Added Files: symbolic.q Log Message: add new symbolic.q example --- NEW FILE: symbolic.q --- /* The Q interpreter can actually perform computations with arbitrary "symbolic" expressions, and equations can be arbitrary rewriting rules. E.g., the following equations implement distributivity and associativity. Try with something like `square (A+B)'. */ (X+Y)*Z = X*Z+Y*Z; X*(Y+Z) = X*Y+X*Z; X+(Y+Z) = (X+Y)+Z; X*(Y*Z) = (X*Y)*Z; double X = 2*X; square X = X*X; /* Another tiny example: symbolic differentiation. E.g., try something like `diff X (5*square X+double X+10)'. */ diff X X = 1; diff X (U+V) = diff X U + diff X V; diff X (U*V) = U*diff X V + V*diff X U; diff X Y = 0 otherwise; /* A few additional simplification rules. */ X*0 = 0; 0*X = 0; X*1 = X; 1*X = X; X+0 = X; 0+X = X; |