1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
require 'test_helper'
class QuarticTest < GSL::TestCase
def _test_quartic(n, *sol)
z = GSL::Poly.complex_solve_quartic(0.0, 0.0, 0.0, n)
desc = "Four roots, x^4 #{n}"
assert_rel z[0].re, sol[0], 1e-9, "#{desc}: z0.real"
assert_rel z[0].im, sol[1], 1e-9, "#{desc}: z0.imag"
assert_rel z[1].re, sol[2], 1e-9, "#{desc}: z1.real"
assert_rel z[1].im, sol[3], 1e-9, "#{desc}: z1.imag"
assert_rel z[2].re, sol[4], 1e-9, "#{desc}: z2.real"
assert_rel z[2].im, sol[5], 1e-9, "#{desc}: z2.imag"
assert_rel z[3].re, sol[6], 1e-9, "#{desc}: z3.real"
assert_rel z[3].im, sol[7], 1e-9, "#{desc}: z3.imag"
end
def test_quartic
return unless GSL::Poly.method_defined?(:complex_solve_quartic)
sol = 3.0 / Math.sqrt(2.0)
_test_quartic(-81.0, -3.0, 0.0, 0.0, -3.0, 0.0, 3.0, 3.0, 0.0)
_test_quartic(81.0, -sol, -sol, -sol, sol, sol, -sol, sol, sol)
end
end
|