File: hilbert.rb

package info (click to toggle)
ruby-gsl 2.1.0.3%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 4,988 kB
  • sloc: ansic: 62,105; ruby: 15,859; sh: 19; makefile: 10
file content (31 lines) | stat: -rwxr-xr-x 714 bytes parent folder | download | duplicates (8)
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
29
30
31
#!/usr/bin/env ruby
# Turn on warnings
$-w = true

require 'irb/xmp'
require 'gsl'

# Apparently, IRB::Frame has a bug that prevents the defaults from working, so
# an XMP instance must be created explicitly this way instead of using the
# otherwise convenient xmp method.
XMP.new(IRB::Frame.top(-1)).puts <<END
# Create 3x3 Hilbert matrix m
m = GSL::Matrix.hilbert(3)

# Compute inverse of m
invm = m.inv

# Create inverse of 3x3 Hilbert matrix directly
invm2 = GSL::Matrix.invhilbert(3)

# Show that both inverse matrices are inverses of m
m*invm
m*invm2

# Show that the two inverse matrices are equal
# to absolute accuracy eps = 1e-10
invm == invm2

# Show that they may not be exactly equal
invm - invm2
END