úÎ7ù4p4      !"#$%&'()*+,-./0123SafeDR9Three-dimensional vector, with an associated matrix type.Associated type for 3×3 matrix. Origin point  (0, 0, 0).'Construct a new vector from components.%Deconstruct a vector into components.Zip two vectors elementwise.Add two vectors.Subtract two vectors.Cross product. Scale a vector.  Dot product. Euclidean norm of a vector. AProduce unit vector with the same direction as the original one. Distance between two points.!Invert the direction of a vector.!Construct a new matrix from rows.Deconstruct a matrix into rows.Generic vector dot product.oMultiply the transpose of the first vector by the given matrix, then multiply the result by the second vector. ô [ a11 a12 a13 ] [ v2x ] [ ] [ ] [ v1x v1y v1z ] . [ a21 a22 a23 ] . [ v2y ] = s [ ] [ ] [ a31 a32 a33 ] [ v2z ] Multiply a matrix and a vector. ¹[ a11 a12 a13 ] [ v2x ] [ rx ] [ ] [ ] [ ] [ a21 a22 a23 ] . [ v2y ] = [ ry ] [ ] [ ] [ ] [ a31 a32 a33 ] [ v2z ] [ rz ] &Build a diagonal matrix from a number d. <[ d 0 0 ] [ ] [ 0 d 0 ] [ ] [ 0 0 d ] JTranspose a vector and multiply it by another vector, producing a matrix. ð[ v1x ] [ r11 r12 r13 ] [ ] [ ] [ v1y ] . [ v2x v2y v2z ] = [ r21 r22 r23 ] [ ] [ ] [ v1z ] [ r31 r32 r33 ] Add two matrices.    None 9;<=DR implementation with 2 instance based on tuples, suitable for use with Data.Vector.Unboxed.mThis represents 3-vector as a triple of doubles, using the default Unbox instance for tuples as provided by Data.Vector.Unboxed8, which wraps a vector of tuples as a tuple of vectors. ÿ interface: [d1 (x, y, z); d2 (x, y, z) ...], length = N | | | | | | storage(x): [d1x-+ | | ; d2x-+ | | ...], length = N storage(y): [d1y----+ | ; d2y----+ | ...], length = N storage(z): [d1z-------+ ; d2z-------+ ...], length = N 456789:;74865;:9None<=DR# implementation with U instance based on a single contiguous array storage scheme, suitable for use with Data.Vector.Unboxed.<6 instance provides the required index transformations. §interface: [d1 x y z ; d2 x y z ...], length = N = M / 3 | | | | | | storage: [ d1x d2y d2z ; d2x d2y d2z ...], length = M #$=>?%&'@AB(#$#$#$%&'@=A>(B?None<=DR+ implementation with U instance based on a single contiguous array storage scheme, suitable for use with Data.Vector.Storable.Unbox6 instance provides the required index transformations. §interface: [d1 x y z ; d2 x y z ...], length = N = M / 3 | | | | | | storage: [ d1x d2y d2z ; d2x d2y d2z ...], length = M +,C-D./ +, +,+,-.DC/E      !"#$%&'()*%#$" !++,-.&'/0123456789:2315;4<=>%simple-vec3-0.2-WpHrFTISdOJf0cuUe83YQData.Vec3.ClassData.Vec3.UnboxedData.Vec3.Unboxed.Contiguous Data.Vec3Data.Vector.UnboxedUnboxForeign.StorableStorableVec3MatrixoriginfromXYZtoXYZzipWith<+><->><.^.*norm normalizedistanceinvertfromRowstoRowsdotMmxvdiagvxvaddMUVec3 $fEqUVec3 $fShowUVec3 $fVec3UVec3$fVectorVectorUVec3$fMVectorMVectorUVec3 $fUnboxUVec3 $fEqMatrix $fShowMatrix$fVectorVectorMatrix$fMVectorMVectorMatrix $fUnboxMatrixSVec3$fArbitrarySVec3 $fVec3SVec3$fStorableSVec3 $fEqSVec3 $fShowSVec3UMatrixV_UVec3MV_UVec3D:R:MatrixUVec30D:R:VectorUVec30 V_UMatrix MV_UMatrixD:R:VectorMatrix0&vector-0.11.0.0-6uB77qGCxR6GPLxI2sqsX3Data.Vector.Unboxed.BaseD:R:MVectorsUVec30SMatrixD:R:MatrixSVec30