
Algebrite, a computer algebra system in JavaScript - davidedc
http://algebrite.org/
======
ldp01
Very neat! Would you consider adding a TeX() function to format the output
strings into LaTeX? This functionality is very useful for someone who needs to
present their results.

I'm doing some coursework for my MSc in math, and have taken to using CASs
(Maxima, and Yacas via RYacas) to explore/validate my assignment
questions/answers. The automatic TeX formatting in those systems has been an
essential feature.

~~~
Etheryte
Separate Latex libraries already exist, why not simply extend one of those?

------
daniel-levin
There is also a comprehensive mathematical library for JS called math.js [1].
It has no dependencies, supports powerful symbolic computation, as well as
many mathematical functions. It implements a useful subset of what one expects
a CAS to be able to do.

[1] [http://mathjs.org/](http://mathjs.org/)

~~~
davidedc
I like Math.js a lot. It is (mostly) a numerical library though (apart from
units of measurement and the ability to define functions). I'd challenge that
it supports "powerful symbolic computation": CAS traditionally solve equations
for example, manipulate polynomials, simplify expressions, add/multiply
polynomials/vectors/matrices having elements expressed in symbols rather than
having values, that sort of things.

------
gravypod
I would be interested seeing this coupled with a NLP library and a graphing
library if this could be used to make a wolfram-like clone.

------
noobermin
There needs to be a javascript flavor/js based language that allows operator
overloading...so that there can be something like numpy in javascript. I love
js's semantics much more than python's so it'd be great to do quick and dirty
numeric stuff in js.

~~~
GFK_of_xmaspast
Aren't all numbers in javascript double precision.

~~~
alextgordon
You're right, but I guess you're being downvoted because nobody wants to hear
it. JavaScript will never get anything like numpy, because it doesn't have
integers. Doing mathematics without integers is like driving a car without
wheels.

~~~
bliker
It does: [https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Type...](https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Typed_arrays)

------
ivan_ah
That's very cool.

The API seems fairly similar to SymPy. It would be great to have a CAS that
can perform simple operations in the browser, and ship more complicated things
to a SymPy backend (or another CAS).

[http://live.sympy.org/](http://live.sympy.org/) is great, but do we really
need to call the backend for everything?

------
Edmond
beat me to it, I develop www.jasymchat.com which is based on Jasymca
([http://webuser.hs-furtwangen.de/~dersch/](http://webuser.hs-
furtwangen.de/~dersch/))..I was thinking of porting Jasymca to a Javascript.

~~~
gravypod
I'd love for someone to try and put this into real hardware.

Computers have advanced but calculators haven't.

Calculators are only focused on school kids, not on people who really need to
get things done.

I'd love to have octave or scipy on a piece of dedicated hardware.

~~~
CuriouslyC
A Mathematica style program for tablets that could convert handwritten math
using common notation into symbolic constructs would be absolutely amazing.

~~~
rawnlq
This does what you want:
[https://webdemo.myscript.com/#/demo/equation](https://webdemo.myscript.com/#/demo/equation)

------
teraflop
Awesome!

Not knowing much about how a CAS is implemented, I'm curious -- what is it
that causes the integration demo to take so much longer than the other
examples? Does it have to do some kind of search to find the correct sequence
of manipulations?

~~~
mroll
I'm not sure what method this system uses for definite integration, but it is
likely one of Simpsons, Gaussian, and Clenshaw-Curtis. These are numerical
methods that, for the best accuracy, require lots of steps of evaluation.
Depending on the error bounds you want, it could take a while.

Edit: also the nonlinear square root term may cause difficulty.

People might find this interesting: Maple uses Clenshaw Curtis as the default,
but will switch dynamically to Gaussian if singularities are detected.

~~~
Gladdyu
This would be relevant to numerical integration.

However, as it gives as answer some multiple of pi, it must've performed
symbolic integration, which also suits the general design of the library
better. There are some methods for performing symbolic integration but often
trial and error with lookup tables and tricks (substitution etc) is faster.

~~~
gh02t
Yeah, actually using the Risch algorithm is usually a last resort in a lot of
CAS' because it's fairly intensive and also will often produce answers in a
form very different from what a human would give. It's also famously difficult
to implement, so if this library is using it without a thick layer of tricks
and heuristics then that's probably where the slowness comes from.

------
evmar
Sorta offtopic, but the logo reminds me of
[http://ich.deanmcnamee.com/pre3d/](http://ich.deanmcnamee.com/pre3d/) ,
except that one has the cute behavior when you move the mouse.

~~~
jessaustin
Close! Your link has the tetrakis cuboctahedron, while TFA has the pentakis
dodecahedron. The spinning on mouse is really cool; all logos ought to have
that.

------
nateabele
This is admittedly a nitpick, but, seriously people: there are no good reasons
(although plenty of bad ones) to continue using CoffeeScript. Just write ES6†.

† ES2015 for the super-pedants :-)

