úÎ[ÎRĒT      !"#$%&'()*+,-./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 portable provisionalEdward Kmett <ekmett@gmail.com> Safe-Inferred 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. T U a V 1e-12W U a V 1e-6 TW    TW 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.       Safe-Inferred6A space that distinguishes 2 orthogonal basis vectors  and , but may have more. A 2-dimensional vector +the counter-clockwise perpendicular vector XYZ[\]^_`abcdXYZ[\]^_`abcd Safe-Inferred7A space that distinguishes 3 orthogonal basis vectors: , , and . (It may have more) A 3-dimensional vector cross product scalar triple product  efghijklmnopqr    efghijklmnopqr Safe-Inferred!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. !"#$%&'stuvwxyz{|}~€!"#$%&'$%&'!"#!"#$%&'stuvwxyz{|}~€ Safe-Inferred (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”•–  Safe-Inferred—%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ĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąē  Safe-Inferred G)Matrices use a row-major representation. Hmatrix product Imatrix * column vector Jrow vector * matrix K+hermitian conjugate or conjugate transpose LCompute the trace of a matrix M$Build a rotation matrix from a unit 8. N=Build a transformation matrix from a rotation expressed as a  8 and a translation vector. Q3x3 identity matrix. R4x4 identity matrix. S@Extract the translation vector (first three entries of the last " column) from a 3x4 or 4x4 matrix EFGHIJKLMģNOPQRSEFGHIJKLMNOPQRSHIJKGFEPOQRLSMNEFGHIJKLMģNOPQRS  Safe-InferredT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSī   !"##$%&'(()*+,-../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{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’_`“”•–—˜™š›œžŸ Ą Ē Ģ Ī\ĨĶ\Ĩ§\ĨĻ\ĨĐ\ĨŠ\ĨŦ Ž ­ Ū Ŋ ° ą ē ģ ī ĩ ķ · ļ đ š ŧ ž ― ū ŋĀ linear-0.4.1 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 axisAngleM43M44M33!*!!**!adjointtracefromQuaternionmkTransformation m43_to_m44 m33_to_m44eye3eye4 translation$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