Julia provides common linear algebra operations in the LinearAlgebra package, and one convenient use of Julia is to create data for tests written in other programming languages.

julia> using LinearAlgebra

In Julia the rows of the matrices are separated by a semi-colon ;:

julia> M1 = [0.285714  0.857143 -0.428571 0.0;
               -0.857143 0.428571 0.285714 0.0;
               0.428571 0.285714 0.857143 0.0;
               1.0 2.0 3.0 1.0]
4×4 Matrix{Float64}:
  0.285714  0.857143  -0.428571  0.0
 -0.857143  0.428571   0.285714  0.0
  0.428571  0.285714   0.857143  0.0
  1.0       2.0        3.0       1.0

To get accurate data for the test of the Math::Inverse function in HCCVectorMath.h using Julia:

julia> inv(M1)
4×4 Matrix{Float64}:
  0.285714  -0.857143   0.428571  -2.77556e-17
  0.857143   0.428571   0.285714   2.77556e-17
 -0.428571   0.285714   0.857143   0.0
 -0.714288  -0.857142  -3.57143    1.0

Now, the data can be copied from the Julia console and pasted into a unit test for the Math::Inverse function.

BOOST_AUTO_TEST_CASE( InverseTest1 )
{
    using namespace Harlinn::Common::Core::Math;
    SquareMatrix<float, 4> matrix( 0.285714f,  0.857143f, -0.428571f, 0.0f,
                                        -0.857143f, 0.428571f, 0.285714f, 0.0f,
                                        0.428571f, 0.285714f, 0.857143f, 0.0f,
                                        1.0f, 2.0f, 3.0f, 1.0f );

    SquareMatrix<float, 4> expected( 0.285714f, -0.857143f, 0.428571f, 0.0f,
                                        0.857143f, 0.428571f, 0.285714f, 0.0f,
                                        -0.428571f, 0.285714f, 0.857143f, 0.0f,
                                        -0.714286f, -0.857143f, -3.57143f, 1.0f );

    auto inverse = Inverse( matrix );

    auto equal = Equal( inverse.value(), expected );

    BOOST_CHECK( equal );
}