f\[      !"#$%&'()*+,-./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 [^    [^ non-portable experimentalEdward Kmett <ekmett@gmail.com> 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.       non-portable experimentalEdward Kmett <ekmett@gmail.com>None6A space that distinguishes 2 orthogonal basis vectors  and , but may have more. A 2-dimensional vector +the counter-clockwise perpendicular vector _`abcdefghijkl_`abcdefghijkl non-portable experimentalEdward Kmett <ekmett@gmail.com>None7A space that distinguishes 3 orthogonal basis vectors: , , and . (It may have more) A 3-dimensional vector cross product scalar triple product  mnopqrstuvwxyz{    mnopqrstuvwxyz{ non-portable experimentalEdward Kmett <ekmett@gmail.com>None!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. !"#$%&'|}~!"#$%&'$%&'!"#!"#$%&'|}~ non-portable experimentalEdward Kmett <ekmett@gmail.com>None (8Plcker coordinates for lines in a 3-dimensional space. *[Given a pair of points represented by homogeneous coordinates generate Plcker coordinates  for the line through them. OThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). OThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). OThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). OThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). OThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). OThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4). +Valid Plcker 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) ()*+,-.()*+,-.()+-,*.()*+,-. non-portable experimentalEdward Kmett <ekmett@gmail.com> Safe-Inferred/An involutive ring 0<Conjugate a value. This defaults to the trivial involution. /0/0/0/0  non-portable experimentalEdward Kmett <ekmett@gmail.com>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:;<=>?@ABCD123456789:;<=>?@ABCD895671234B<=>?@A:;CD%123456789:;<=>?@ABCD  non-portable experimentalEdward Kmett <ekmett@gmail.com>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. EFGHIJKLMNOPQRSTUVWXYZEFGHIJKLMNOPQRSTUVWXYZIJKMLNHGFESRWXYZTUOVPQEFGHIJKLMNOPQRSTUVWXYZ  non-portable experimentalEdward Kmett <ekmett@gmail.com>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 cccccc linear-0.5 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$fIxV2 $fStorableV2 $fEpsilonV2$fDistributiveV2$fRepresentableV2$fR2V2 $fMetricV2$fFractionalV2$fNumV2 $fMonadV2$fApplicativeV2$fTraversableV2 $fFoldableV2 $fFunctorV2$fIxV3 $fEpsilonV3 $fStorableV3$fRepresentableV3$fR3V3$fR2V3$fDistributiveV3 $fMetricV3$fFractionalV3$fNumV3 $fMonadV3$fApplicativeV3$fTraversableV3 $fFoldableV3 $fFunctorV3$fIxV4 $fEpsilonV4 $fStorableV4$fRepresentableV4$fR4V4$fR3V4$fR2V4$fDistributiveV4 $fMetricV4$fFractionalV4$fNumV4 $fMonadV4$fApplicativeV4$fTraversableV4 $fFoldableV4 $fFunctorV4p01p02p03p23p31p12==$fEpsilonPlucker$fMetricPlucker$fFractionalPlucker $fNumPlucker $fIxPlucker$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$fIxQuaternion$fMonadQuaternion$fApplicativeQuaternion$fFunctorQuaternionmkTransformationMat