/* * call-seq: * Dvector.new -> a_dvector * Dvector.new(size=0, value=0) -> a_dvector * Dvector.new(other) -> a_dvector * Dvector.new(size) {|index| block } -> a_dvector * * Returns a new Dvector. In the first form, the new vector is * empty. In the second it is created with _size_ copies of _value_ * The third form creates a copy of the _other_ vector * passed as a parameter (this can also be an Array). * In the last form, a vector of the given size is created. Each element in this vector is * calculated by passing the element's index to the given block and * storing the return value. * * Dvector.new -> Dvector[] * Dvector.new(2) -> Dvector[ 0, 0 ] * Dvector.new(3, -1) -> Dvector[ -1, -1, -1 ] * Dvector.new(3) {|i| i**2 + 1} -> Dvector[ 1, 2, 5 ] * */ VALUE dvector_initialize(int argc, VALUE *argv, VALUE ary) {