Strange Matrix3D Multiplication Results

This has caused me endless confusion over the last few days, the Matrix3D class churns out some really strange results when multiplying matrices using the append() and prepend() methods.

Just to make sure I’m not going mad I created my own function for matrix multiplication and compared three sets of results. The first set of results were from this page at gamedev.net, the array at the bottom of the page is the result of multiplying the two matrices together. Here it is for convenience:

250, 260, 270, 280, 618, 644, 670, 696, 986, 1028, 1070, 1112, 1354, 1412, 1470, 1528

Now, I pushed the same two matrices through my multiplication function (which I am positive is producing correct results) and I ended up with the same result as above:

250, 260, 270, 280, 618, 644, 670, 696, 986, 1028, 1070, 1112, 1354, 1412, 1470, 1528

So my matrix multiplication function is working fine. The result from the Matrix3D class is completely different:

2454, 2540, 2626, 280, 5026, 5204, 5382, 696, 7598, 7868, 8138, 1112, 1354, 1412, 1470, 20832

I tried both append() and prepend() methods and neither produced a result anywhere close to the first two.

Why is the result from the Matrix3D class so different? Is this a problem with the Matrix3D multiplication routines or does the Flash API use matrices that are different from regular 4x4 matrices?