SymRational, Computer Algebra

Phil Deets pjdeets2 at gmail.com
Mon Oct 12 06:39:39 PDT 2009


On Sun, 11 Oct 2009 12:24:57 -0500, dsimcha <dsimcha at yahoo.com> wrote:

> I've been thinking about where a Rational struct could lead, and  
> realized that
> the next step is to give D some capabilities for dealing with symbols.   
> For
> example, it would be nice to have something like:
>
> auto foo = symRational!SomeBigInt("1 / e + pi / 2 + G");
> // Do a whole bunch of manipulations on foo.
>
> writeln(foo);  // Symbolic expression.
> writeln(toReal(foo, constVal("G", 6e-11), constVal("pi", 3.14),
>     constVal("e", 2.718));
>
> Of course, now we're starting to talk about building a basic computer  
> algebra
> system into Phobos, or at least into some stand-alone lib.  While we  
> clearly
> don't have the manpower to do a "real" CAS, some basic CAS-like  
> capabilities
> would be nice.
>
> Programmers in most languages tend to use floating-point arithmetic as  
> their
> default way of doing math.  It really only makes sense to do this when  
> speed
> is more important than precision or interpretability of the answer.   
> However,
> it seems to get used even when this isn't the case simply because it's  
> what's
> readily available.  If D/Phobos had some built-in (very basic) CAS-like
> capabilities that were as easy to use as floats, people might actually
> consider using either symbolic or numerical manipulation on the relevant
> tradeoffs rather than just choosing numeric because it's what's easily  
> available.
>
> The problem with using a CAS's builtin language whenever you want basic
> CAS-like capabilities is that it's too domain-specific.  You can't easily
> integrate it into a larger program that requires a full-fledged general
> purpose programming language.  The beauty of D is that it has so many  
> features
> for library designers that libraries can start to look like DSLs yet  
> still
> integrate smoothly with the general-purpose subset of D.  Half the  
> reason why
> I wrote the dstats statistics lib was to prove this concept, since  
> similar
> issues arise in performing statistical calculations.
>
> The question, then, becomes, how far do we go toward trying to put some  
> basic
> CAS-like capabilities like symbolic arithmetic into Phobos?  Could  
> things like
> this really be D's killer application?

I think CAS capabilities would be much better for a third-party library  
than for Phobos. The Phobos developers may not be interested in improving  
it like the maintainers of a third-party library would. Also, you wouldn't  
have to tie the releases of the CAS library to the Phobos releases if it  
were a third-party library.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/



More information about the Digitalmars-d mailing list