#!/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 NMatrix m m = NMatrix[[0, 1.2, 1],[1.5, 0, 2]] # Convert NMatrix m to Vector gv gv = m.to_gv # Convert Vector gv to NArray m2 m2 = gv.to_na m2.class # Create GSL::Vector v v = GSL::Vector.alloc(1..4) # Convert v to NArray na na = v.to_na na.class # Convert na back to Vector v2 = na.to_gv # Create new Vector copy of na v3 = GSL::Vector.alloc(na) # Create Vector::View of na v4 = na.to_gv_view # Set element of Vector::View v4[2] = 123 # Show that na was modified na # Show that v3 was not modified v3 END