.TH "vector" 3 "Oct 12, 2003" .SH Vector .PP .B Inherits from: CAObject .PP .B Maturity Index: Relatively mature .SH Class Description .PP A vector consists of a number of .I scalars that can be arbitrary Computer Algebra Kit objects, but they currently have to be either floating-point or elements of a field (see .B inField ) or elements of an integral domain (see .B inIntegralDomain )\&. .PP There are methods to access, insert and remove scalars\&. It\&'s also possible to place or replace a scalar directly at a given index\&. See the documentation on .B eachScalar to access the scalar at a given index\&. .PP .B Note: Vector objects are meant for computational tasks\&. They are no substitute for List or Collection objects, that are better suited for the purpose of storing objects\&. .SH Method types .PP .B Creation .RS 3 .br * collection: .br * scalarZero:numScalars: .br * copy .br * deepCopy .RE .PP .B Identity .RS 3 .br * scalarZero .br * numScalars .br * hash .br * isEqual: .RE .PP .B Insertion Scalars .RS 3 .br * insertScalar: .br * insertScalar:at: .RE .PP .B Removing Scalars .RS 3 .br * removeScalar .br * removeScalarAt: .RE .PP .B Placing and Replacing .RS 3 .br * placeScalar:at: .br * replaceScalarAt:with: .br * asCollection .br * asNumerical .br * asModp: .br * onCommonDenominator: .RE .PP .B Accessing Scalars .RS 3 .br * eachScalar .br * floatValueAt: .br * intValueAt: .RE .PP .B Addition .RS 3 .br * zero .br * isZero .br * isOpposite: .br * negate .br * double .br * add: .br * subtract: .br * addScalar:at: .br * subtractScalar:at: .RE .PP .B Scalar Multiplication .RS 3 .br * multiplyScalar: .br * divideScalar: .RE .PP .B Multiplication .RS 3 .br * dotSquare .br * dotMultiply: .br * multiplyLeftMatrix: .RE .PP .B Printing .RS 3 .br * printOn: .RE .SH Methods .PP collection: .RS 1 + .B collection : .I aCltn .RE .PP Creates a vector containing references to the scalars from .I aCltn \&. The collection must not be empty\&. .PP scalarZero:numScalars: .RS 1 + .B scalarZero : .I aScalarZero .B numScalars :(int) .I numScalars .RE .PP Creates a new vector with .I numScalars zero scalars\&. .PP copy .RS 1 - .B copy .RE .PP Returns a new vector\&. .PP deepCopy .RS 1 - .B deepCopy .RE .PP Returns a new vector\&. Sends .B deepCopy messages to the scalars in the vector\&. .PP scalarZero .RS 1 - .B scalarZero .RE .PP Returns the zero scalar element\&. .PP numScalars .RS 1 - ( int ) .B numScalars .RE .PP Returns the number of scalar objects in the vector\&. Returns 0 if the vector is empty\&. The first scalar in the vector is at index 0, the last scalar at .I numScalars minus one\&. .PP hash .RS 1 - ( unsigned ) .B hash .RE .PP Returns a small integer that is the same for objects that are equal (in the sense of .B isEqual: )\&. .PP isEqual: .RS 1 - ( BOOL ) .B isEqual : .I b .RE .PP Whether the two objects are equal\&. Returns YES if the objects are pointer equal\&. .PP insertScalar: .RS 1 - .B insertScalar : .I aScalar .RE .PP Inserts .I aScalar as first entry and returns .B self \&. The object .I aScalar belongs to the vector after insertion, and is not necessarily copied\&. To insert a scalar, the reference count of the vector should be equal to one\&. .PP insertScalar:at: .RS 1 - .B insertScalar : .I aScalar .B at :(int) .I i .RE .PP Inserts .I aScalar as i-th entry and returns .B self \&. The object .I aScalar belongs to the vector after insertion, and is not necessarily copied\&. If .I i is equal to zero, this method is identical to .B -insertScalar: \&. If .I i is equal to .B numScalars , this method inserts the scalar as last element\&. .PP removeScalar .RS 1 - .B removeScalar .RE .PP Removes (and returns) the first scalar in the vector (the scalar at index 0)\&. Returns .B nil if there were no more elements left\&. This can be used in the following way : .RS 3 while (c = [vector removeScalar]) { /* do something with c */ } .br .RE .PP To remove a scalar, the reference count of the vector should be equal to one\&. .PP removeScalarAt: .RS 1 - .B removeScalarAt :(int) .I i .RE .PP Removes and returns the i-th scalar in the vector\&. If .I i is zero, this method is identical to .B removeScalar \&. Unlike .B removeScalar , which returns .B nil if there are no more scalars in the vector, this method generates an error message if you attempt to remove a scalar at an illegal index\&. .PP placeScalar:at: .RS 1 - .B placeScalar : .I aScalar .B at :(int) .I i .RE .PP Frees the scalar at position .I i and replaces it by the scalar object .I aScalar \&. Returns .B self \&. The scalar .I aScalar belongs to the receiving vector object; it is not necessarily copied\&. This is similar to List\&'s -addObject: method\&. It is an error to use an illegal index .I i or to attempt to set a scalar in a vector whose reference count is not equal to one\&. .PP replaceScalarAt:with: .RS 1 - .B replaceScalarAt :(int) .I i .B with : .I aScalar .RE .PP Similar to .B placeScalar:at: but returns the scalar at position .I i after replacing it by .I aScalar \&. It is an error to use an illegal index .I i or to attempt to replace a scalar in a vector whose reference count is not equal to one\&. .PP asCollection .RS 1 - .B asCollection .RE .PP Returns a new collection containing new references to the scalars in the vector\&. .PP asNumerical .RS 1 - .B asNumerical .RE .PP Returns a new vector, whose scalars are the numerical value of the scalars of the original vector\&. .PP asModp: .RS 1 - .B asModp :(unsigned short) .I p .RE .PP Returns a new vector, whose scalars are the value of the scalars of the original vector mod .I p \&. .PP onCommonDenominator: .RS 1 - .B onCommonDenominator :(id *) .I denominator .RE .PP Puts a vector with fractional scalars on a common denominator\&. Returns a new vector with integral scalars, and, by reference, the common denominator of the scalars in the vector\&. .PP eachScalar .RS 1 - .B eachScalar .RE .PP Returns a new sequence object that gives access to the scalars of the vector\&. .PP floatValueAt: .RS 1 - ( float ) .B floatValueAt :(int) .I i .RE .PP Returns the .B floatValue of the scalar at the .I i -th position\&. .PP intValueAt: .RS 1 - ( int ) .B intValueAt :(int) .I i .RE .PP Returns the .B intValue of the scalar at the .I i -th position\&. .PP zero .RS 1 - .B zero .RE .PP Returns a vector of the same dimension as the object that receives the message, but all filled with zero scalars\&. .PP isZero .RS 1 - ( BOOL ) .B isZero .RE .PP Whether the object is equal to zero\&. .PP isOpposite: .RS 1 - ( BOOL ) .B isOpposite : .I b .RE .PP Whether the object is the opposite of .I b \&. .PP negate .RS 1 - .B negate .RE .PP Returns the opposite of the object\&. .PP double .RS 1 - .B double .RE .PP Returns a new object, equal to the object multiplied by two i\&.e\&., added to itself\&. .PP add: .RS 1 - .B add : .I b .RE .PP Adds .I b to the object\&. Returns a new object\&. .PP subtract: .RS 1 - .B subtract : .I b .RE .PP Subtracts .I b from the object\&. Returns a new object\&. .PP addScalar:at: .RS 1 - .B addScalar : .I s .B at :(int) .I i .RE .PP Returns a .B new vector\&. Adds .I s to the scalar at position .I i , and replaces the scalar by the sum\&. .I i must be between 0 and the number of scalars in the vector\&. This method is .I not an insertion method\&. .PP .B See also: insertScalar:at:, replaceScalar:at: .PP subtractScalar:at: .RS 1 - .B subtractScalar : .I s .B at :(int) .I i .RE .PP Returns a .B new vector\&. Subtracts .I s from the scalar at position .I i \&. .I i must be between 0 and the number of scalars in the vector\&. This method is .I not an insertion method\&. .PP multiplyScalar: .RS 1 - .B multiplyScalar : .I s .RE .PP Multiplies by the scalar .I s \&. Returns a new object\&. .PP divideScalar: .RS 1 - .B divideScalar : .I s .RE .PP Exact division by the scalar .I s \&. Returns a new object, or .B nil if the division is not exact\&. .PP dotSquare .RS 1 - .B dotSquare .RE .PP Returns a new scalar product, the dot product of the vector by itself, defined as the sum of squares of the scalars in the vector\&. .PP dotMultiply: .RS 1 - .B dotMultiply : .I aVector .RE .PP Returns a new scalar product, the dot product of the vector .I self by .I aVector , defined as the sum of the products of the scalars in the vectors\&. .PP multiplyLeftMatrix: .RS 1 - .B multiplyLeftMatrix : .I aMatrix .RE .PP Returns a new vector, the product of .I aMatrix by the column vector .I self \&. .PP printOn: .RS 1 - .B printOn :(IOD) .I aFile .RE .PP Prints, between braces, a comma separated list of the scalars (by sending .B printOn: messages to the scalars)\&.