This file is indexed.

/usr/share/doc/ruby-gsl/examples/vector/set_all.rb is in ruby-gsl 2.1.0.3+dfsg1-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/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
# These examples show some of the ways that Vector#set or its alias Vector#[]=
# can be invoked.  For a single argument, this is equivalent to Vector#set_all.
# For two arguments with the first a Fixnum i, this sets the i'th element (or
# the (size-i)'th element to the value of the second argument.  All other forms
# treat all but the last argument as with Vector#subvector and set the
# specified elements based on the last argument, which can be a Vector (or
# Vector::View), an Array, a Range, or a Numeric.  Vector, Array, and Range
# rvalues must have the same number of elements as the specified subvector.
# For a Numeric rvalue, all elements of the subvector are set to that value.
#
# Note the different return values of Vector#set and Vector#[]=.  Vector#set
# return self, but Vector[]= return the value to the right of the = sign.  This
# must be standard Ruby behavior since the underlying code returns the same
# value to Ruby regardless of whether it is invoked as #set or #[]=.
#
# Also be careful is setting part of a Vector from another part of the same
# vector.  The GSL method that performs this operation uses memcpy, which does
# not handle overlapping memory regions in a well defined way.  See the last
# two examples.
#
# See examples/vector/view_all.rb for additional examples of how to specify
# subvectors.

# Create test vector v
v = GSL::Vector.indgen(9)

# Vector#set and Vector#[]= with one arg sets all elements
v.set(1.2)
v[] = 3.4
v

# Vector#[i]= Numeric sets the i'th element if i is
# positive or the (size+i)'th element if i is negative.
v[3] = 5.6
v[-8] = 7.8
v

# Specifying subvector using Range with various rvalue types
v[1..4] = GSL::Vector[2, 3, 5, 7] # rvalue is Vector
v

v[1..4] = [11, 13, 17, 19] # rvalue is Array
v

v[1..4] = 24..27 # rvalue is Range
v

v[1..4] = 1.0 # rvalue is Numeric
v

# Specifying subvector using Range and stride with various rvalue types
v[0..4, 2] = GSL::Vector[2, 3, 5] # rvalue is Vector
v

v[0..4, 2] = [7, 11, 13] # rvalue is Array
v

v[0..4, 2] = 8..10 # rvalue is Range
v

v[0..4, 2] = 1.0 # rvalue is Numeric
v

# Specifying subvector using two Fixnums (offset, length) with various rvalue
# types
v[2, 4] = GSL::Vector[2, 3, 5, 7] # rvalue is Vector
v

v[2, 4] = [11, 13, 17, 19] # rvalue is Array
v

v[2, 4] = 24..27 # rvalue is Range
v

v[2, 4] = 1.0 # rvalue is Numeric
v

# Specifying subvector using three Fixnum arguments (offset, stride, length)
# with various rvalue types
v[1, 2, 3] = GSL::Vector[2, 3, 5] # rvalue is Vector
v

v[1, 2, 3] = [7, 11, 13] # rvalue is Array
v

v[1, 2, 3] = 8..10 # rvalue is Range
v

v[1, 2, 3] = 1.0 # rvalue is Numeric
v

# Copying part of a Vector to another part of the same Vector can potentially
# be problematic if the regions overlap.
v.indgen!
v[0, 3] = v[2, 3]
v

v.indgen!
v[2, 3] = v[0, 3]
v

# But it's OK if the regions do not overlap
v.indgen!
v[0, 3] = v[3, 3]
v

v.indgen!
v[3, 3] = v[0, 3]
v
END