HN2new | past | comments | ask | show | jobs | submitlogin
Numeric JavaScript (numericjs.com)
85 points by shawndumas on April 6, 2015 | hide | past | favorite | 13 comments


This branch adds slicing and broadcasting as in numpy: https://github.com/orangeduck/numeric

There are a few known bugs in mainline numericjs (including one in the eigen decomposition when there are repeated eigenvalues). The author of numericjs is active in the Google group, but hasn't had time to work on it in the last few years. Hence the third-party, not integrated orangeduck branch.

This project, when I started using it 5 or 6 years ago, was the one that made me realize just how fast JavaScript has become. This project also demonstrates how desperately JavaScript needs operator overloading. When I used numericjs for a homework assignment recently, I considered writing a sweetjs macro for my students but didn't get around to it. I would be grateful if someone else did!


To add another datapoint, I remember using numericjs a few months ago and the parts I used were pretty buggy (iirc singular value decomposition for nonsquare matrices didn't work). It is also oddly missing common stuff like cross product which I thought I would find in a matrix/vector library.

Its implementation of "dot" is kind of nice though. Without worry about the type, it does multiplying a scalar to a matrix, a matrix with a matrix, a matrix with a vector, and a vector with a vector, etc all correctly.



This code is very old. It also helps to explain why there are so many libraries checked in directly to the repo instead of being installed by NPM, etc.

EDIT: I guess it is also explained by the apparent fact that it was written by a math professor before he was a professor.


Github repo while the site is getting a Hug of Death: https://github.com/sloisel/numeric


Great, and with the "workshop" (http://numericjs.com/workshop.php) it's like an JS based IPython or Mathematica.


Very interesting library. I remember having a need for a symbolic algebra library in JS some time back. While JS is not the main go to language for math it is nice to have more development there.


[deleted]


As it is in most languages with IEEE 754 floating-point. Though there are some odd ones which make it an error, because they think they know better than the IEEE 754 designers, which they don't.


I couldn't help but notice this slightly, uh, controversial part of the codebase:

https://github.com/sloisel/numeric/blob/656fa1254be540f42871...


One can always hope they aren't using it's more recent social definition.

delay or hold back in terms of progress, development, or accomplishment


That seems a little overly charitable, given the context...

It appears to be checking whether the browser is Internet Explorer, and creating a Web Worker polyfill if it is - which, naming conventions aside, really isn't such a good strategy.

There's also a lot of `var foo` in that file; I don't know if it says much about the quality of code in the rest of the project (maybe this is just a file slapped together in a hurry), but it doesn't particularly inspire confidence.

In fact, on closer investigation, there's a lot of `var foo` in this file too: https://github.com/sloisel/numeric/blob/master/src/numeric.j...


That won't work since IE11 because it no longer contains IE or MSIE in the useragent.


Yes, but Numeric works fine in IE11 anyway.

The IE11 user agent looks like this:

  Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: