main/src/georegression/geometry/GeometryMath_F64.java
public static double innerProdTranM( GeoTuple3D_F64 a, DMatrixRMaj M, GeoTuple3D_F64 b ) {
		if( M.numRows != 3 || M.numCols != 3 )
			throw new IllegalArgumentException( "M must be 3 by 3." );

		DMatrixRMaj m1 = new DMatrixRMaj( 3, 1, true, a.x, a.y, a.z );
		DMatrixRMaj m2 = new DMatrixRMaj( 3, 1, true, b.x, b.y, b.z );

		return (double) ( VectorVectorMult_DDRM.innerProdTranA( m1, M, m2 ) );
	}
public static double innerProdTranM( GeoTuple3D_F64 a, DMatrixRMaj M, GeoTuple3D_F64 b ) {
		if( M.numRows != 3 || M.numCols != 3 )
			throw new IllegalArgumentException( "M must be 3 by 3." );

		DMatrixRMaj m1 = new DMatrixRMaj( 3, 1, true, a.x, a.y, a.z );
		DMatrixRMaj m2 = new DMatrixRMaj( 3, 1, true, b.x, b.y, b.z );

		return (double) ( VectorVectorMult_DDRM.innerProdTranA( m1, M, m2 ) );
	}
<p>
Computes the inner matrix product:<br>
ret = x<sup>T</sup>A<sup>T</sup>y
</p>

@param a 3D point.
@param M 3 by 3 matrix.
@param b 3D point.
@return scalar number