#!/usr/bin/env ruby
require("rbgsl")
require("../gsl_test.rb")
include GSL::Test
def test_nonsymmv2(m, eps)
p m
eval, evec = m.eigen_nonsymmv
evalre = eval.real
evecre = evec.real
a = evecre.inv*m*evecre
GSL::Test::test_abs(a[0][0], evalre[0], eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[1][1], evalre[1], eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[0][1], 0, eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[1][0], 0, eps, "GSL::Matrix::eigen_nonsymmv")
end
def test_nonsymmv3(m, eps)
p m
eval, evec = m.eigen_nonsymmv
evalre = eval.real
evecre = evec.real
a = evecre.inv*m*evecre
GSL::Test::test_abs(a[0][0], evalre[0], eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[1][1], evalre[1], eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[2][2], evalre[2], eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[0][1], 0, eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[0][2], 0, eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[1][0], 0, eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[1][2], 0, eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[2][0], 0, eps, "GSL::Matrix::eigen_nonsymmv")
GSL::Test::test_abs(a[2][1], 0, eps, "GSL::Matrix::eigen_nonsymmv")
end
m = GSL::Matrix[[1, 2], [3, 2]]
test_nonsymmv2(m, 1e-10)
m = GSL::Matrix[[4, 2, 3, -1], 2, 2]
test_nonsymmv2(m, 1e-10)
m = GSL::Matrix[[2, 2, -5], [3, 7, -15], [1, 2, -4]]
test_nonsymmv3(m, 1e-10)
m = GSL::Matrix[[4, 1, -1], [2, 5, -2], [1, 1, 2]]
test_nonsymmv3(m, 1e-10)
m = GSL::Matrix[[-3, 1, -1], [-7, 5, -1], [-6, 6, -2]]
test_nonsymmv3(m, 1e-6)
m = GSL::Matrix[[11, -8, 4], [-8, -1, -2], [4, -2, -4]]
test_nonsymmv3(m, 1e-10)
syntax highlighted by Code2HTML, v. 0.9.1