úÎ^9Tē[      !"#$%&'()*+,-./01 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z portable provisionalEdward Kmett <ekmett@gmail.com>None Compute the sum of two vectors !Compute the negation of a vector +Compute the difference between two vectors  Compute the left scalar product !Compute the right scalar product +Compute division by a scalar on the right. *Linearly interpolate between two vectors. BProduce a default basis for a vector space. If the dimensionality 2 of the vector space is not statically known, see . :Produce a default basis for a vector space from which the  argument is drawn.    portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Inferred EProvides a fairly subjective test to see if a quantity is near zero. &Determine if a quantity is near zero. [ \ a ] 1e-12^ \ a ] 1e-6 [^    [^ Safe-Inferred A free inner product/ metric space ;Compute the inner product of two vectors or (equivalently)  convert a vector f a into a covector f a -> a. 9Compute the squared norm. The name quadrance arises from  Norman J. Wildberger's rational trigonometry. (Compute the quadrance of the difference ;Compute the distance between two vectors in a metric space /Compute the norm of a vector in a metric space *Convert a non-zero vector to unit vector.  Normalize a   functor to have unit . This function $ does not change the functor if its  is 0 or 1.      None6A space that distinguishes 2 orthogonal basis vectors  and , but may have more. A 2-dimensional vector +the counter-clockwise perpendicular vector _`abcdefghijk_`abcdefghijkNone7A space that distinguishes 3 orthogonal basis vectors: , , and . (It may have more) A 3-dimensional vector cross product scalar triple product  lmnopqrstuvwxy    lmnopqrstuvwxyNone!4A space that distinguishes orthogonal basis vectors , , , ". (It may have more.) $A 4-dimensional vector. &OConvert a 3-dimensional affine vector into a 4-dimensional homogeneous vector. 'NConvert a 3-dimensional affine point into a 4-dimensional homogeneous vector. !"#$%&'z{|}~€‚ƒ„…†‡ˆ!"#$%&'$%&'!"#!"#$%&'z{|}~€‚ƒ„…†‡ˆNone (8Plücker coordinates for lines in a 3-dimensional space. *[Given a pair of points represented by homogeneous coordinates generate Plücker coordinates  for the line through them. ‰OThese elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4). ŠOThese elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4). ‹OThese elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4). ŒOThese elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4). OThese elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4). ŽOThese elements form a basis for the Plücker space, or the Grassmanian manifold Gr(2,V4). +Valid Plücker coordinates p will have + p  0 PThat said, floating point makes a mockery of this claim, so you may want to use  . ,This isn'Yt th actual metric because this bilinear form gives rise to an isotropic quadratic space -rChecks if the line is near-isotropic (isotropic vectors in this quadratic space represent lines in real 3d space) .:Checks if the two vectors intersect (or nearly intersect) ()*‰Š‹ŒŽ+,-.‘’“”•–—˜™š()*+,-.()+-,*.()*‰Š‹ŒŽ+,-.‘’“”•–—˜™š Safe-Inferred/An involutive ring 0<Conjugate a value. This defaults to the trivial involution. /0›œ/0/0/0›œ Nonež%quadrance of the imaginary component : norm of the imaginary component ;raise a 8 to a scalar power Ÿ1Helper for calculating with specific branch cuts  1Helper for calculating with specific branch cuts <Ą with a specified branch cut. =Ē with a specified branch cut. >Ģ with a specified branch cut. ?Ī with a specified branch cut. @Ĩ with a specified branch cut. AĶ with a specified branch cut. B8Spherical linear interpolation between two quaternions. CApply a rotation to a vector. DD axis theta builds a 8 representing a  rotation of theta radians about axis. *123456789§Ļž:;Ÿ <=>?@ABCDĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđ123456789:;<=>?@ABCD895671234B<=>?@A:;CD$123456789§Ļž:;Ÿ <=>?@ABCDĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđ NoneH)Matrices use a row-major representation. Imatrix product Jmatrix * column vector Krow vector * matrix LScalar-matrix product. MMatrix-scalar product. N+hermitian conjugate or conjugate transpose OCompute the trace of a matrix P$Build a rotation matrix from a unit 8. Q=Build a transformation matrix from a rotation expressed as a  8 and a translation vector. T3x3 identity matrix. U4x4 identity matrix. V@Extract the translation vector (first three entries of the last " column) from a 3x4 or 4x4 matrix W2x2 matrix determinant. X3x3 matrix determinant. Y2x2 matrix inverse. Z3x3 matrix inverse. EFGHIJKLMNOPšQRSTUVWXYZEFGHIJKLMNOPQRSTUVWXYZIJKMLNHGFESRWXYZTUOVPQEFGHIJKLMNOPšQRSTUVWXYZ None[  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZŧ   !"##$%&'(()*+,-../0112345678 9 : ; < = > ? @ @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™fgš›œžŸ ĄĒĢĪĨĶ§Ļ Đ Š ŦcŽ­cŽŪcŽŊcްcŽącŽē ģ ī ĩ ķ · ļ đ š ŧ ž ― ū ŋ Ā Á Â Ã Ä Å ÆĮlinear-0.4.2.2 Linear.VectorLinear.Epsilon Linear.Metric Linear.V2 Linear.V3 Linear.V4Linear.PluckerLinear.ConjugateLinear.Quaternion Linear.MatrixLinear^+^gnegate^-^*^^*^/lerpbasisbasisForEpsilonnearZeroMetricdot quadranceqddistancenormsignorm normalizeR2_x_y_xyV2perpR3_z_xyzV3crosstripleR4_w_xyzwV4vectorpointPluckerplucker squaredError>< isotropic intersects Conjugate conjugate Hamiltonian_j_k_ijk Complicated_e_i Quaternionabsipowasinqacosqatanqasinhqacoshqatanhqslerprotate axisAngleM43M44M33M22!*!!**!*!!!!*adjointtracefromQuaternionmkTransformation m43_to_m44 m33_to_m44eye3eye4 translationdet22det33inv22inv33$fEpsilonDoublebaseGHC.Numabsghc-prim GHC.Classes<=$fEpsilonFloat $fStorableV2 $fEpsilonV2$fDistributiveV2$fRepresentableV2$fR2V2 $fMetricV2$fFractionalV2$fNumV2 $fMonadV2$fApplicativeV2$fTraversableV2 $fFoldableV2 $fFunctorV2 $fEpsilonV3 $fStorableV3$fRepresentableV3$fR3V3$fR2V3$fDistributiveV3 $fMetricV3$fFractionalV3$fNumV3 $fMonadV3$fApplicativeV3$fTraversableV3 $fFoldableV3 $fFunctorV3 $fEpsilonV4 $fStorableV4$fRepresentableV4$fR4V4$fR3V4$fR2V4$fDistributiveV4 $fMetricV4$fFractionalV4$fNumV4 $fMonadV4$fApplicativeV4$fTraversableV4 $fFoldableV4 $fFunctorV4p01p02p03p23p31p12==$fEpsilonPlucker$fMetricPlucker$fFractionalPlucker $fNumPlucker$fTraversablePlucker$fFoldablePlucker$fRepresentablePlucker$fDistributivePlucker$fMonadPlucker$fApplicativePlucker$fFunctorPlucker$fConjugateComplex$fConjugateFloat$fConjugateDoubleqicutcutWith GHC.FloatasinacosatanasinhacoshatanhqNaN reimagine$fEpsilonQuaternion$fFloatingQuaternion$fConjugateQuaternion$fDistributiveQuaternion$fHamiltonianQuaternion$fComplicatedQuaternion$fComplicatedComplex$fMetricQuaternion$fFractionalQuaternion$fNumQuaternion$fStorableQuaternion$fTraversableQuaternion$fFoldableQuaternion$fRepresentableQuaternion$fMonadQuaternion$fApplicativeQuaternion$fFunctorQuaternionmkTransformationMat