Boost logo

Boost Users :

Subject: Re: [Boost-users] [Proto] implementing an computer algebra systemwith proto
From: Kim Kuen Tang (kuentang_at_[hidden])
Date: 2009-01-25 16:55:15


Dave Jenkins schrieb:
>
> "Eric Niebler" <eric_at_[hidden]> wrote in message
> news:4978F428.8080107_at_boost-consulting.com...
>> A general equation solver will be challenging to write, but should be
>> possible. You'll need to familiarize yourself with Proto grammars and
>> transforms. Here is a toy example to get you started. Hope it helps.
>
Thank you very much for this starting project.

> Suppose you want to move a series of additions to the right hand side.
> For example, transforming "var_ + 1 + 3 = 2" into "var_ = 2 - 3 - 1".
>
> Is there a general way to iterate the Solve() transform until all the
> plusses are consumed?
> Or do you need multiple calls to Solve(), e.g. "proto::display_expr(
> Solve()Solve()( var_ + 1 + 3 = 2 ) );"
>

The grammar Solve should call himself recursively until it matches a
desired expression. The stopping rule is the grammar

"proto::when<proto::assign<proto::terminal<placeholder>, _> >" .

So once the grammar
        "proto::when<
           proto::assign< proto::plus<proto::terminal<placeholder>, _>, _ >
          ,proto::_make_assign( proto::_left(proto::_left) ,
proto::_make_minus( proto::_right, proto::_right(proto::_left) ) )
>"
is extended with the feature of calling Solve recursively, then multiple
calls to Solve is not needed.
(I am trying to implement this feature.)

Btw Eric, do you plan to give a session in proto in boostcon 09?

With regards,
Kim Tang
 


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net