MATLAB Can't Manipulate 64-Bit Integers 334
An anonymous reader writes "MATLAB, an important package of mathematical software heavily used in industry and academia, has had support for 64-bit machines for several years now. However, the MATLAB developers still haven't gotten around to implementing even basic arithmetic operations for 64-bit integers. Attempting to add, divide, subtract, or multiply two 64-bit integers will result in an error message saying that the corresponding method does not exist. As one commentator put it, 'What is the point of having numerical data types that can't be manipulated?'" The post notes that the free MATLAB clone GNU Octave deals with 64-bit integers just fine.
So... (Score:5, Insightful)
How is this news?
Especially since someone has implemented it.... (Score:5, Informative)
Re:Especially since someone has implemented it.... (Score:5, Insightful)
Re:Especially since someone has implemented it.... (Score:5, Informative)
Re:Especially since someone has implemented it.... (Score:5, Interesting)
38 downloads may not indicate a lack of demand. The demand may be there, but it may be masked in the confusion of what may be thought to have been a standard part of the program.
When our uni upgraded the maths lab computers Matlab versions to R2008a they installed the 64bit version as well. The logical thought was that the computers are 64bit, they have the option, so why not. Well at the time the basic add-on packages weren't available for the 64bit version, which included the package with the solve() function. Sure they could have looked on the website and found a few basic implementations of Newtonian solve functions written for 64bit, but their response to student complaints was to remove the 64bit Matlab and install the 32bit version.
Much like how a pirated copy does not indicate a lost sale, the fact that only few people have "demand" for the application, does not mean there's a lack of demand for the functionality in the 64bit program. It may just mean that people have tried, found it lacking, and dropped back to 32bit. I'd be interested to see stats of how many people use the 64bit Matlab on computers that natively support 64bit instructions
Re:Especially since someone has implemented it.... (Score:5, Informative)
Re:Especially since someone has implemented it.... (Score:4, Insightful)
Re:Especially since someone has implemented it.... (Score:5, Insightful)
using 64-bit integers instead of floats is a common trick in embedded C for control and signal processing on low power processors. I have experience of four different embedded systems used in commercial products from three different companies I've worked with - three of the four used 64-bit integers for roundoff-sensitive calculations.
I was a bit surprised that Matlab can't handle this, but then I've seen the poor quality of the ostensibly production-ready code that comes out of their M2C converter - it was about ten times the code footprint and a fifth the speed of a minimally-optimised C version of the same algorithm.
Honestly, I don't know how anyone can justify paying for this, when R (and even Octave in this instance) is more capable. Where the target platform requires C or asm code, then doing development in Matlab is usually more trouble than it saves. The graphs are prettier, though.
Re: (Score:3, Insightful)
Re:Exactly, 64 bits is so over rated (Score:4, Insightful)
CPU operations are limited to a certain number of bits for their operations. Programming languages like C/C++ perform their basic arithmetic operations at the machine level, so they inherit the same limitations. These bounds are not a limit either through library/template facilities at the C/C++ level, or with basic operations in high level (particular object oriented) languages such as Pike and Python.
I can tell you libgmp is not stuck with bcd. But the bcd aspect will exist because some kinds of uses for extended precision are financial/money based, and conversion to and from an external decimal format is sufficiently frequent that it's easier/faster to just do the arithmetic directly on decimal, even if tightly squeezed into 4 bits per digit. This has been going on since early computers. FYI, the ancient IBM model 1620 [wikipedia.org] computer could do this in hardware. As you can see from the code in the links I posted earlier, a choice of language can hide the fact that the underlying architecture has fixed width arithmetic.
BTW, for fun, compare the speeds of those two programs, which are implementations of the same algorithm.
Negative Slashvertisment? (Score:3, Funny)
Am I missing something here?
Re:Negative Slashvertisment? (Score:5, Funny)
Slashdot are going after the Yelp model. Looks like MATLAB hasn't been keeping up with their payments. Would hate for something to happen to all those great slashdot stories about you guys lately.
Answer (Score:3, Insightful)
What is the point of having numerical data types that can't be manipulated?
So they can charge more for the upgrade?
It's not that big of deal (Score:2, Informative)
Given that many values used in calculations are enormous, potentially thousands of bits long, 32 bits is quite sufficient. So long in fact, they can only be stated as 'strings' of integers. So much for different data types!
The concern should be the amount of time required to complete a calculation which MATLAB is very good at. I'd guess MATLAB is optimized for 32 bit. What is to be gained by rewriting everything for 64 bit?
So long as all calculations are done in a timely manner.
Re:It's not that big of deal (Score:4, Informative)
If you're a physicist and you wanted to do calculations that involved a few coulombs of charge worth of electrons, MATLAB would throw out an error as this mathematical operation in particular happens to require the calculation of a ~64 bit integer and not be terribly unreasonable.
Re:It's not that big of deal (Score:5, Insightful)
Re:It's not that big of deal (Score:4, Informative)
I think you're right, and I see the same kind of thinking when I ask about 64-bit integers in R. The people who use R are statisticians who can't imagine why a double isn't close enough. The people who complain about it are the computer programmers who are trying to use 64-bit exact fields to merge two datasets etc.
Re: (Score:2)
I don't understand. Why doesn't your RDBMS take care of that?
Alternately, couldn't you just split it in two columns and merge on A and B instead of just A?
For the record, IAAS
Re: (Score:2)
What do you expect the RDBMS to do in this case? It returns a 64-bit integer value. Then R reads it and silently casts it to a double, which silently swizzles the low 12 bits.
Since YAAS, should I stand back [scienceteecher.com]?
Re:It's not that big of deal (Score:4, Insightful)
Hmm, a double has 64 bits, where do the last 12 go?
A 64 bit integer will lose precision when converted to a 64 bit double because the double has to use some of the bits for the exponent and the rest go the mantissa. If 12 bits go to the exponent, then your 64 bit integer now has to be expressed as a 52 bit integer, raised to some power. There are (I think) 2^11 distinct numbers that would have the same representation as a double.
Re: (Score:3, Informative)
But fp is, by nature, slightly imprecise. Really, Really Small numbers would get lost in the noise.
Re: (Score:2, Informative)
No, they don't. Read the article posted earlier today for more information.
Re: (Score:3, Informative)
The reason you need the decimal datatype is not because "small numbers get lost in the noise." It's because paper-driven accounting was always done in decimal, and so to keep the numbers matching, the computer needs to round in the same way someone doing it on pencil and paper would do it. It's about compatible rounding and representation, not the size of "ulp" (Units of the Last Place) on any given calculation. A 32-bit decimal float is less precise and has less dynamic range than a 32-bit binary float.
Re: (Score:3, Informative)
The relative precision is the same over all numbers, because the mantissa is a fixed size. The bits that fall off it might represent billions or billionths, but that depends on the exponent and so the same scaling factor applies to the number and the error.
Re: (Score:3, Interesting)
Re: (Score:3, Funny)
O RLY?
Re: (Score:3, Insightful)
This is ridiculous, the first thing any self respecting physicist will do is change the units of the problem.
Re: (Score:3, Insightful)
Re:It's not that big of deal (Score:5, Insightful)
And as stated before, this matters little as it is a performance issue, and matlab still offers the best performance of its class, even vs. those who do have this feature.
Re:It's not that big of deal (Score:4, Insightful)
Re: (Score:3, Insightful)
Yes it is. People who do the kind of hardcore math that MATLAB is good at are the ones who actually need 64 bit computing.
Surprisingly, not all that often. People who work with very sensitive systems (chaotic one in particular) or VERY precise data need 64 bit precision, but for 98% of everyone else, it's just not necessary. Anyone doing really advanced work is going to use a supercomputer, for obvious reasons.
MATLAB's largest audience is engineers, although applied mathematicians and physicists use it often, just not nearly in equal numbers with engineers (who also outnumber the others greatly). Given that engineers work w
Memory moreso than computations (Score:4, Informative)
Re: (Score:3, Insightful)
1. MATLAB doesn't support 64 bit ints
2. People still us MATLAB.
Thus, there is a group of people "who do the kind of hardcore math that MATLAB is good at" who don't need 64 bit computing.
Re: (Score:2, Informative)
64-bit computing isn't about having 64-bit ints. It's about having 64-bit pointers.
Re:It's not that big of deal (Score:4, Interesting)
Seems like a lot of effort. You can always use the c interface (which itself is weird, considering matlab's roots in fortran...) but then you'd have to learn c. Matlab is a tool for physicists and engineers, not computer scientists. They don't necessarily want to take the time to learn c, or they'd have done that. Some do, anyway, of course, but usually what they produce will be one off functions for a specific goal, not entire libraries suitable for sharing.
Frankly, even equally worrisome is that Matlab doesn't appear to take advantage of GPGPU yet. The concept has been around for over half a decade, and I'd have expected the MAtrix LABoratory to jump on the bandwagon quicker than most. It's a game changer in their core competency, after all.
Re: (Score:3, Insightful)
Frankly, even equally worrisome is that Matlab doesn't appear to take advantage of GPGPU yet. The concept has been around for over half a decade, and I'd have expected the MAtrix LABoratory to jump on the bandwagon quicker than most. It's a game changer in their core competency, after all.
I haven't looked at MATLAB+GPGPU recently, but back in the olden days before CUDA and OpenCL there were a handful of 3rd party matlab extensions that made use of GPGPU. Nothing official, but still plenty functional in their limited areas of implementation. The company's laziness with respect to GPGPU is no surprise (see my other rant in this story's discussion) and the fact that others have put together limited GPU-based extensions has probably further reduced the pressure for them to do anything in that
Re: (Score:2)
I guess it depends on the exact question you're asking. A google search for "matlab gpgpu" shows that there are lots of ways to take advantage of GPGPU (NVidia's CUDA specifically) from within Matlab.
MATLAB plug-in for CU [nvidia.com]
Re:It's not that big of deal (Score:5, Informative)
You can always use the c interface (which itself is weird, considering matlab's roots in fortran...)
The reason the C interface is weird is because MATLAB stores multidimensional arrays in column-major order, like Fortran. C, on the other hand, uses row-major order. However, if you work with linear algebra, then you'll appreciate the column-major layout, because it coincides with the order returned by the vec operator (which is used all the time in computational linear algebra, and stacks the columns of a matrix).
but then you'd have to learn c. Matlab is a tool for physicists and engineers, not computer scientists. They don't necessarily want to take the time to learn c, or they'd have done that. Some do, anyway, of course, but usually what they produce will be one off functions for a specific goal, not entire libraries suitable for sharing.
I work with digital signal processing and use MATLAB almost on a daily basis. The reason DSP engineers use MATLAB is not because they don't know or don't want to know C. In fact, a good DSP engineer must be very competent at writing clear and efficient C code, because that's what he needs to actually implement algorithms on hardware. Modern high performance DSPs are so complex that coding things in assembly is completely out of the question.
The reason MATLAB is so valuable is that it allows one to prototype things extremely fast with minimal performance loss (if you know what you're doing). Of course you won't have a MATLAB environment running on a DSP, so you'll eventually have to write the C code. But since most of my time is spent developing algorithms instead of actually implementing them, MATLAB lets me be much more productive.
Re: (Score:3, Informative)
You don't even have to write C when you want to get it on your DSP - MATLAB Real-Time Workshop can generate the C code for many popular DSPs.
Re:It's not that big of deal (Score:4, Informative)
You don't even have to write C when you want to get it on your DSP
...unless you want it to be efficient. See someone else's post [slashdot.org].
Re: (Score:3, Informative)
Absurd limit theory (Score:2, Insightful)
It's best to design software for limits that are frankly absurd. Since I coined the phrase "absurd limit theory", let's delve a little bit into it.
A second divided into increments enumerated by fractions of a 64 bit integer is less than the differential travel of differing wavelengths of light over a planck unit of distance. It's a smaller unit of time than matters to our current understanding. 2^64 seconds is more time than the entire history of our Universe from beginning to end even in the most ridic
Re: (Score:2)
You better not be crunching numbers that size in MatLab.
Re: (Score:2)
I think the argument is more that, in practice, 32 bits is a decent sweet spot for the changeover from native ints to arbitrary-precision bigints (whereas 2 bits is not a sweet spot). Are there that many cases where someone needs integers between 32 and 64 bits, but doesn't need to account for the possibility of >64-bit integers, and therefo
Re: (Score:2, Insightful)
Re: (Score:3, Insightful)
numerical computations that are highly optimized for speed on computers do not always allow for variable sized numbers. The more you assume about a problem, the faster you can make the algorithm to solve it. I'm betting that there are many optimized numerical algorithms in matlab that use underlying knowledge of the data structure itself to solve it. It is a trade off speed vs scalability/generality.
A Heavy User's Opinion (Score:5, Insightful)
Re: (Score:2, Insightful)
#TODO: (Score:2)
Re: (Score:2)
No, it's MATLAB. The comment character is %
Who uses integers in MATLAB? (Score:5, Informative)
MATLAB isn't strongly typed, and by default variables are floating-point (I think 64-bit is the standard if type isn't specified). Makes sense for scientific programming. You need to go out of your way to use integer types in MATLAB, and the only reason I've ever had to do it is when trying to convert MATLAB scripts to C code to run on fixed-point processors. I do think that not supporting 64-bit integer operations is an oversight but I don't think it affects the vast majority of MATLAB users.
Re: (Score:3, Informative)
yep, really the only reason they exist is for converting numbers for input and output, not for doing any computations in matlab with them.
Re: (Score:3, Informative)
You need to go out of your way to use integer types in MATLAB
...and this is a good thing, when you consider that Matlab demotes float or double values to int when you mix them with ints. I was amazed when I discovered this. It's the only language I know with this evil behaviour.
There aren't may reasons you'd need integers in Matlab. Some that come to mind: (1) if you need more digits of precision than float or double offer, and you don't need the dynamic range of the exponents; (2) if you need to manipulate the data as bits; (3) if they're more computationally eff
Re: (Score:3, Informative)
Not that big a deal (Score:4, Insightful)
use the mex api (Score:2)
Using the MEX API it is possible to implement operators for 64 bit integers in MATLAB. They aren't provided by default but implementing your own is quite trivial.
Re: (Score:2)
I had no idea you could overload operators in matlab until I looked it up (thanks to you). I used to consider myself a matlab guru...now I know I am.
Re: (Score:2)
Commercial software lags... (Score:2, Interesting)
Re: (Score:2)
Ya, immagine that, they acted like it actually took work and thinking to completely go through a 15+ year-old architecture and make sure that every layer is 64-bit clean. And they actually though that some of their developer time should go to improving areas of their OS's that actually matter for 95%+ of their audiences first...
With the excepton of Intel's x86 instruction set hobbling their processors, and Windows only recognizing 3GiB of RAM (then subtract the address space for your video memory), or most
Re: (Score:3, Interesting)
For some reason commercial software usually seems to lag worst on the 64 bit transition. Windows and OSX lagged Linux, Java and Flash were the last bits on my Linux systems to go 64 bit, etc. They act as if 64 bit is a fad, and people will soon come to their senses and revert to 32.
Linux is plenty commercial, I think you mean "consumer software". (Or at least "proprietary software", but I don't think correlation implies causation there)
Windows server platforms got behind 64-bit more or less in step with its adoption in servers (even having ports to Itanium, back when that was a credible contender for the next 64-bit arch). Also OSX's transition to 64-bit started with the kernel and worked its way up through the UNIX layer, allowing server apps to use more memory long before consumer
Re: (Score:2)
64 bit integer plus 64 bit integer equals 65 bits? (Score:2, Funny)
In order for a number to need the 64th bit it must have a one in that 64th-most-significant position... and in order to add two such numbers, you end up needing a one in a 65 position... and there's your overflow error.
Re: (Score:2)
I'm hoping that is a joke
Re: (Score:2)
I'm not surprised... (Score:5, Informative)
I'm not a MATLAB user, just someone who has had to troubleshoot problems with it for a variety of clients.
A while back, more than a few years now, MATLAB on HPUX was limited to about 1GB of memory. Any MATLAB code that needed more memory than that was shit out of luck - even on a 64-bit machine with 64GB of RAM. This was partly due to MATLAB only being available as a 32-bit binary for HPUX and partly due to MATLAB having been compiled and linked in the most naive way possible. After diagnosing the problem with a client's MATLAB code (they had a lab full of $2M computers and couldn't run this software that only needed a couple of GB of data), I wrote a short explanation of the compile and link flags necessary to enable any process to access at least 2GB of RAM with practically no impact and 3GB with only minimal impact. In either case, no code changes necessary whatsoever.
MATLAB's customer support group responded with a categorical denial that it was even possible to do - that HPUX architecturally limited all 32-bit processes to 1GB of addressable memory. While a customer-specific test release would have been the ideal response, I was really only expecting them to open a feature request and get the next release built the right way. But they wouldn't even give my client that (despite them having an expensive support contract) - just a flat out denial of reality instead. The solution for my client was ultimately to rewrite their software in C and link it with the right flags to get access to 3GB of memory.
So, given just how strong their disinterest was in even trying to make their software work for big boys doing scientific computing, I'm not surprised to hear that all these years later they still haven't even bothered to implement native 64-bit math. They are entrenched and there just isn't enough competition to make them lift a finger.
exellent competition (Score:3, Interesting)
There's excellent competititon for Matlab, foremost NumPy. It has tons of packages, 64bit support, and just works all around a lot better.
Matlab is succeeding not because of lack of competition, but because it's entrenched and people are lazy
Re: (Score:2, Interesting)
I guess no one got around to porting MATLAB to the Alpha architecture.
ISTR that there was a lot of discussion about 64 bit floating point numbers when Alpha was first announced because some folks wanted a certain
number of bits reserved for the exponent, and others wanted a different number of bits. Happily, all that got straightened out, and I don't think
Microsoft was involved in that discussion. It certainly kept the DEC FORTRAN compiler team up at night wondering which "standard" would prevail.
But, as we
Anything to declare? (Score:2)
Dim PowerBallOdds as SuperSizeInt
Dim ChanceOfMeWinning as ExtraAccuFloat
Dim NeedToWorkTomorrow as Boolean = True
Re: (Score:2)
"Dim?"
Really?
Observations (Score:2)
Python as an alternative (Score:5, Informative)
The summary mentioned Octave as an alternative to Matlab. There is also Scilab (which has some more c-like features).
In recency I have simply been using Python. Use the iPython (interactive python) shell and load scipy (from scipy import *) and you have a very nice calculating environment. The scipy arrays are quite a joy to work with compared with what I remember from Matlab. If you're working with equal size 1D arrays then they can be used without modification in normal mathematical expressions, so a lot of my code no longer involves any iteration with for loops.
There is a graphing library (pylab) based on Matlab syntax. If you start iPython with the -pylab flag it will print out plots the same way as in Matlab. There is also Easyviz which I believe also uses Matlab syntax but interfaces with a number of standard graphing programs (like Gnuplot.)
The sympy package for doing symbolic manipulations is also quite nice, IMHO.
Disclaimer: I only used Matlab casually for my undergraduate math classes.
Numeric Python (Score:5, Informative)
Just another reason to switch to numeric python [sourceforge.net]. The more I use Matlab the less I find that I like it.
Re:Numeric Python (Score:5, Interesting)
Just another reason to switch to numeric python [sourceforge.net]. The more I use Matlab the less I find that I like it.
I don't have mod point, so allow me to second that.
The advantage of MATLab for me was ease of development that it allows me to quickly get some simple proof-of-concept code up. If I want run time speed, I'd use CLAPACK and GNU SL. I can't imagine doing any very serious numeric code in anything else (not that my work was very numeric heavy). With NumPy and SciPy, it is just as easy to do what MATLab does in a language that's actually fun to work with.
Re:Numeric Python (Score:4, Informative)
With NumPy and SciPy, it is just as easy to do what MATLab does in a language that's actually fun to work with.
I just hope Sage succeeds and becomes more well-known. It's the best open alternative we have.
Re: (Score:3, Informative)
This is ridiculous. Why flamebait?!
Sage is a free open-source mathematics software system licensed under the GPL. It combines the power of many existing open-source packages into a common Python-based interface. Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.
For what they charge for a license, they should. (Score:2)
only half true (Score:2)
While this is not implemented natively, (or at least not until you use the fixed point tools to auto-generate some code for a 64bit machine), you can do a lot of fixed point math with the fixed point toolbox:
For example:
>> x=fi(5,1,64,0,'SumMode','KeepLSB');
>> y=fi(23,1,64,0,'SumMode','KeepLSB');
>> x+y
ans =
28
DataTypeMode: Fixed-point: binary point scaling
Circular Logic (Score:3, Funny)
What do we do when the value of 1 starts to float away?
QT/Octave:
>>> sqrt(-1)^((4)^1)
ans = 1
>>> sqrt(-1)^((4)^15)
ans = 1
>>> sqrt(-1)^((4)^16)
ans = 1.0000e+00 - 2.6298e-07i
>>> sqrt(-1)^((4)^17)
ans = 1.0000e+00 - 1.0519e-06i
>>> sqrt(-1)^((4)^21)
ans = 1.0000e+00 - 2.6929e-04i
>>> sqrt(-1)^((4)^22)
ans = 0.9999994 - 0.0010772i
>>> sqrt(-1)^((4)^32)
ans = 0.56253 + 0.82678i
>>> sqrt(-1)^((4)^40)
ans = -0.97448 + 0.22446i
The fractal community will be outraged.
64-bit INT, not float. Design choice, not bug (Score:5, Interesting)
Two things:
1) This is true for 64-bit INTEGERS. The default data type for MATLAB is a 64-bit float, and has been forever.
2) This is a design decision by MATLAB's designers. You don't have to declare or type variables in MATLAB: you just set a = 5 and a new variable "a" is created. You set a(2) = 3, and now a grows into a 1-d array.
It's a handy feature and a core aspect of MATLAB's ease-of-use design, but to do this, you need to have a default data type.
64-bit float is the best choice: you can represent any number up to around 4,503,599,627,370,496 without error. For practical purposes, this means MATLAB will work fine for any real-world integer counting task: it only fails if you're interested in cryptography, primes, or other discrete math tasks, in which case you're not using MATLAB anyway.
A view from Octave developer (Score:5, Informative)
Dynamic typing (Score:3, Informative)
Myself I am developing HornetsEye [demon.co.uk] which is a Ruby-extension for doing computer vision.
The problem with supporting various types is that you end up with a lot of possible combinations when doing computations. I.e. say if you want to support arrays of 8-, 16-, 32-, and 64-bit integers (signed and unsigned) as well as 32-bit and 64-bit floating point, you have 10 ** 2 possible combinations of types when element-wise adding two arrays.
If speed is not an issue however, you could just use Ruby's dynamic typing. R
Re: (Score:3, Insightful)
SciPy/NumPy, R, and Octave are all perfectly good alternatives to MATLAB these days for most work. But there are a lot of people who rely on MATLAB-specific toolboxes. I look forward to the day when proprietary math and stats packages take their place in the bitbucket of computing history, but we're not quite there yet.
Re: (Score:2)
MATLAB is often very much faster than SciPy/NumPy at the moment, but the latter programs are very much more capable (and, the vast majority of the time, free). My colleagues use MATLAB; I'm perfectly happy producing better results in Python.
Re: (Score:2)
Heh, to each his own, I guess. I mostly work in R these days, and while I admit it's quirky, once you get used to its quirks it's quite a useful langauge. Overall, I'd rather be programming in Python than just about anything else, but in my lines of work (bioinformatics and biostatistics) R provides the best overall combination of features and usability. YMMV, and obviously does in this particular case.
Re: (Score:2)
The professor who taught the course where I had to use S+ told me something along the lines: "It is a language designed by statisticians, of course it will behave randomly!"
Re: (Score:2)
Any word on how they compare for speed? I'd be surprised if Python's speeds are remotely comparable to those of Matlab, which is after all, optimized for numeric calculations.
Re: (Score:2, Insightful)
In my personal opinion, I feel that Matlab was too awkward of a language when it came to do anything else besides math. For example, it made it difficult to use when one needed to do string manipulations to figure out w
Re: (Score:2)
R is not a "knockoff of S". It is a free implementation of the S language. S-Plus is a proprietary implementation of that language. Maybe you should read up on the history.
And ... "freetard"? WTF? If you're identifying this is a F/OSS problem, what's MathWorks' excuse?
Re: (Score:2)
Did you have a point you wanted to make about the subject at hand (*MATLAB*'s support or lack thereof for 64-bit integers), or did you just come here to be offensive?
Re: (Score:3, Interesting)
GNU R, the freetard knockoff of S...
"Freetard knockoff?" R overtook S-PLUS several years ago in terms of importance among statisticians. Indeed, it's not just in academia where this freetard knockoff has taken over; I work as a quant at an algorithmic trading hedge fund and we dumped S-PLUS in favour of R four or five years ago.
Sometimes, just sometimes, the open source implementation actually is better.
Re:MATLAB ~= fast (Score:4, Informative)
Re: (Score:3, Insightful)
Only if it can be vectorized. Otherwise, MATLAB is *bog slow*. Compiling as a MEX function will restore the speed.
Re: (Score:2, Informative)
Like every other crap gnude ware (Octave) has a sucky GUI.
Hopefully, this might be fixed very soon via Google Summer of Code 2010.
http://community.kde.org/GSoC/2010/Ideas#Project:_Cantor:_Add_a_new_Backend
Re:Yes but Octave (Score:5, Insightful)
For a program like octave, having no GUI is very forgiveable. There is really no way to work with the system outside of prompt commands. Even Matlab is very prompt based.
What is unforgivable in Octave's case is its graphing capabilities. Octave used Gnuplot for drawing which basically means it is stuck in the 1990s when it comes to making plots. 3D plots are slow, difficult and complicated things to create. Animations are out of the question. 99% of the time, you're better off exporting to png (itself a nighmare), and animating from those. 3D data is all but ungraphable on Linux systems anyway, so I suppose Octave is not alone here.
Re:Yes but Octave (Score:5, Informative)
So it clones Matlab very well then.
Re: (Score:3, Insightful)
Re:Yes but Octave (Score:5, Informative)
3D data is all but ungraphable on Linux systems anyway, so I suppose Octave is not alone here.
As I recall, MATLAB has a Linux port. As does Maple, Mathematica, et cetera. And Mayavi [wikipedia.org] is an open source program capable of excellent 3D graphics that works with Python, and therefore SciPy.
So what you really mean is that 3D data graphing is inadequate with Octave and gnuplot on any system. 3D data is perfectly graphable in Linux.
Re: (Score:3, Insightful)
You should check out some of the newer versions of Octave. The graphics in versions 3.0 and 3.2 are very much improved. (Disclosure: I was an active Octave developer a couple of years ago.)
Re:Yes but Octave (Score:5, Interesting)
That's funny. I am researcher and work with math and plotting software on a professional basis, and even when I need Matlab to do the work (e.g. if I have to use nlinfit), I always prefer to export the data to .mat and plot in Octave. Gnuplot's output generally looks better when exported to EPS/PDF.
Gnuplot does not allow to do GUI editing: that's a big plus, because I am forced, every time, to write a script: I know that if I don't write it, I will miss it later when I want to change something (it always happens). Also, it is much easier in Octave to specify a font (-F:Palatino, for example) than in Matlab: possibly not on top of your list of priorities, but when I wrote my PhD thesis I wanted to write everything with the same font: Matlab plots require you to edit the EPS source.
Curious. I just published an article with several 3D plots (which I usually eschew), and it was not really more difficult to get things done in Octave than in Matlab.
I call bullshit, you never really tried. Have a look at matplotlib [sourceforge.net]. And, that aside, Matlab is available on Linux too.