Sha256: 860471a853b248201a8a6923a423fcf3cfa62118736f6bc81ecc978c2a166bc0

Contents?: true

Size: 1.33 KB

Versions: 9

Compression:

Stored size: 1.33 KB

Contents

#!/usr/bin/env ruby
require("gsl")
require("../gsl_test2.rb")
include GSL::Test
include Math

def test_lmder(fdf, x, xx, f, cov)
  s = GSL::MultiFit::FdfSolver.alloc("lmsder", fdf.n, fdf.p)
  s.set(fdf, x)
  iter = 0
  begin
    status = s.iterate
    for i in 0...fdf.p
      test_rel(s.x[i], xx[fdf.p*iter+i], 1e-5, "lmsder,  iter=#{iter}, x#{i}")
    end
    test_rel(Blas.dnrm2(s.f), f[iter], 1e-5, "lmsder, iter=#{iter}, f")
    iter += 1
  end while iter < 20
  covar = s.covar(0.0)
  for i in 0...fdf.p
    for j in 0...fdf.p
      test_rel(covar[i,j], cov[i*fdf.p+j], 1e-7, 
               "gsl_multifit_covar cov(#{i},#{j})")
    end
  end
end

def test_fdf(name, fdf, x, x_final, f_sumsq, sigma)
  s = GSL::MultiFit::FdfSolver.alloc("lmsder", fdf.n, fdf.p)
  s.set(fdf, x)
  iter = 0
  begin
    status = s.iterate
#    status = GSL::MultiFit::test_delta(s.dx, s.x, 0.0, 1e-7)
    status = s.test_delta(0.0, 1e-7)
    iter += 1
  end while status == GSL::CONTINUE and iter < 1000
  covar = s.covar(0.0)
  for i in 0...fdf.p
    test_rel(s.x[i], x_final[i], 1e-5, "#{name}, lmsder, x#{i}")
  end
  s2 = pow(Blas.dnrm2(s.f), 2.0)
  test_rel(s2, f_sumsq, 1e-5, "#{name}, lmsder, |f|^2")
  for i in 0...fdf.p
    ei = sqrt(s2/(fdf.n-fdf.p))*sqrt(covar[i,i]);
    test_rel(ei, sigma[i], 1e-4, "#{name}, sigma(#{i})")
  end
end

GSL::IEEE::env_setup()
  

Version data entries

9 entries across 9 versions & 4 rubygems

Version Path
gsl-nmatrix-1.15.3.2 tests/multifit/test_multifit.rb
gsl-nmatrix-1.15.3.1 tests/multifit/test_multifit.rb
rb-gsl-1.15.3.1 tests/multifit/test_multifit.rb
blackwinter-gsl-1.15.3.2 tests/multifit/test_multifit.rb
gsl-nmatrix-1.15.3.0 tests/multifit/test_multifit.rb
gsl-1.15.3 tests/multifit/test_multifit.rb
gsl-1.14.7 tests/multifit/test_multifit.rb
gsl-1.14.6 tests/multifit/test_multifit.rb
gsl-1.14.5 tests/multifit/test_multifit.rb