h$|       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                                                                                                                                                                                                                                             -(C) 2013-2015 Edward Kmett and Anthony Cowley BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Safe-InferredClinearSerialize a linear type.linearDeserialize a linear type.(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Safe-Inferred9linear4Requires and provides a default definition such that  =  linearAn involutive ringlinear;Conjugate a value. This defaults to the trivial involution.conjugate (1 :+ 2) 1.0 :+ (-2.0) conjugate 11(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  provisionalportable Safe-Inferred%linearProvides a fairly subjective test to see if a quantity is near zero.nearZero (1e-11 :: Double)FalsenearZero (1e-17 :: Double)TruenearZero (1e-5 :: Float)FalsenearZero (1e-7 :: Float)True&linear%Determine if a quantity is near zero.(linear  a  1e-12)linear  a  1e-6*linear  a  1e-12+linear  a  1e-6%&%&(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  provisionalportableSafe(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  provisionalportable Trustworthy 9?2,linear8A vector is an additive group with additional structure.-linearThe zero vector.linearCompute the sum of two vectorsV2 1 2 ^+^ V2 3 4V2 4 6/linear*Compute the difference between two vectorsV2 4 5 ^-^ V2 3 1V2 1 40linear)Linearly interpolate between two vectors.1linearApply a function to merge the 'non-zero' components of two vectors, unioning the rest of the values.)For a dense vector this is equivalent to .*For a sparse vector this is equivalent to .2linear2Apply a function to the components of two vectors.)For a dense vector this is equivalent to .*For a sparse vector this is equivalent to .3linear Basis element6linear Compute the negation of a vectornegated (V2 2 4) V2 (-2) (-4)7linearSum over multiple vectorssumV [V2 1 1, V2 3 4]V2 4 58linearCompute the left scalar product 2 *^ V2 3 4V2 6 89linear Compute the right scalar product V2 3 4 ^* 2V2 6 8:linear*Compute division by a scalar on the right.;linearProduce a default basis for a vector space. If the dimensionality of the vector space is not statically known, see <.<linearProduce a default basis for a vector space from which the argument is drawn.=linear0Produce a diagonal (scale) matrix from a vector.scaled (V2 2 3)V2 (V2 2 0) (V2 0 3)>linearCreate a unit vector.unit _x :: V2 IntV2 1 0?linear%Outer (tensor) product of two vectors,-./1203456789:;<=>?,-./120345698:7;<=?>.6/68797:7(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy9"! Rlinear,Free and sparse inner product/metric spaces.SlinearCompute the inner product of two vectors or (equivalently) convert a vector f a into a covector f a -> a.V2 1 2 `dot` V2 3 411TlinearCompute the squared norm. The name quadrance arises from Norman J. Wildberger's rational trigonometry.Ulinear'Compute the quadrance of the differenceVlinear:Compute the distance between two vectors in a metric spaceWlinear.Compute the norm of a vector in a metric spaceXlinear)Convert a non-zero vector to unit vector.Ylinear Normalize a R functor to have unit W4. This function does not change the functor if its W is 0 or 1.Zlinear project u v computes the projection of v onto u. RSTUVWXYZ RSTUVWXYZ(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy./389>?"efghijklmnopqrstuefgplmstqruhijkno(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy/35678;>$linear)A space that has at least 1 basis vector .linear V1 2 ^._x2V1 2 & _x .~ 3V1 3linearA 1-dimensional vectorpure 1 :: V1 IntV1 1 V1 2 + V1 3V1 5 V1 2 * V1 3V1 6 sum (V1 2)2(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy/38;>'linear6A space that distinguishes 2 orthogonal basis vectors  and , but may have more.linear V2 1 2 ^._y2V2 1 2 & _y .~ 3V2 1 3linearA 2-dimensional vectorpure 1 :: V2 IntV2 1 1V2 1 2 + V2 3 4V2 4 6V2 1 2 * V2 3 4V2 3 8 sum (V2 1 2)3linear V2 1 2 ^. _yxV2 2 1linear*the counter-clockwise perpendicular vectorperp $ V2 10 20 V2 (-20) 10linearThe Z-component of the cross product of two vectors in the XY-plane.crossZ (V2 1 0) (V2 0 1)1 (C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy/38;>)slinear7A space that distinguishes 3 orthogonal basis vectors: , , and . (It may have more)linearV3 1 2 3 ^. _z3linearA 3-dimensional vectorlinear cross productlinearscalar triple product (C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy/38;>-~linear4A space that distinguishes orthogonal basis vectors , , , . (It may have more.)linearV4 1 2 3 4 ^._w4linearA 4-dimensional vector.linearConvert a 3-dimensional affine vector into a 4-dimensional homogeneous vector, i.e. sets the w coordinate to 0.linearConvert a 3-dimensional affine point into a 4-dimensional homogeneous vector, i.e. sets the w coordinate to 1.linearConvert 4-dimensional projective coordinates to a 3-dimensional point. This operation may be denoted, &euclidean [x:y:z:w] = (x/w, y/w, z/w)/ where the projective, homogenous, coordinate  [x:y:z:w]/ is one of many associated with a single point (x/w, y/w, z/w). (C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy/38;>/linearA 0-dimensional vectorpure 1 :: V0 IntV0V0 + V0V0 (C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy/38;>3linear0A vector space that includes the basis elements , ,  and linear0A vector space that includes the basis elements  and linear Quaternionslinearnorm of the imaginary componentlinearraise a  to a scalar powerlinear with a specified branch cut.linear with a specified branch cut.linear with a specified branch cut.linear with a specified branch cut.linear with a specified branch cut.linear with a specified branch cut.linear7Spherical linear interpolation between two quaternions.linearApply a rotation to a vector.linear axis theta builds a  representing a rotation of theta radians about axis. (C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy'(/8;>MNlinear'Describe how two lines pass each other.linear2The lines are coplanar (parallel or intersecting).linear9The lines pass each other clockwise (right-handed screw)linearThe lines pass each other counterclockwise (left-handed screw).linear7Plcker coordinates for lines in a 3-dimensional space.linearGiven a pair of points represented by homogeneous coordinates generate Plcker coordinates for the line through them, directed from the second towards the first.linearGiven a pair of 3D points, generate Plcker coordinates for the line through them, directed from the second towards the first.linearThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a linearThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a linearThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a linearThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a linearThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a linearThese elements form a basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a  ::  ( a) a linearThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a linearThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a linearThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a linearThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a linearThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a linearThese elements form an alternate basis for the Plcker space, or the Grassmanian manifold Gr(2,V4).  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a  ::  a =>  ( a) a linearValid Plcker coordinates p will have  p  0That said, floating point makes a mockery of this claim, so you may want to use &.linearThis isn't th actual metric because this bilinear form gives rise to an isotropic quadratic spacelinearChecks if the line is near-isotropic (isotropic vectors in this quadratic space represent lines in real 3d space).linear4Checks if two lines intersect (or nearly intersect).linear%Check how two lines pass each other.  passes l1 l2 describes l2 when looking down l1.linear!Checks if two lines are parallel.linearChecks if two lines coincide in space. In other words, undirected equality.linearChecks if two lines coincide in space, and have the same orientation.linear7The minimum squared distance of a line from the origin.linear0The point where a line is closest to the origin.linearNot all 6-dimensional points correspond to a line in 3D. This predicate tests that a Plcker coordinate lies on the Grassmann manifold, and does indeed represent a 3D line.%%5(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Safe-Inferred.9OlinearCompute the trace of a matrixtrace (V2 (V2 a b) (V2 c d))a + dlinear Compute the diagonal of a matrixdiagonal (V2 (V2 a b) (V2 c d))V2 a dlinear Compute the  /http://mathworld.wolfram.com/FrobeniusNorm.htmlFrobenius norm of a matrix.(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Safe-Inferred'(RlinearWhen lines are represented as Plcker coordinates, we have the ability to check for both directed and undirected equality. Undirected equality between s (or a  and a ) checks that the two lines coincide in 3D space. Directed equality, between two s, checks that two lines coincide in 3D, and have the same direction. To accomodate these two notions of equality, we use an  instance on the  data type.For example, to check the directed equality between two lines, p1 and p2 , we write, Ray p1 == Ray p2.(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Trustworthy j<6linear*A 4x4 matrix with row-major representationlinear*A 4x3 matrix with row-major representationlinear*A 4x2 matrix with row-major representationlinear*A 3x4 matrix with row-major representationlinear*A 3x3 matrix with row-major representationlinear*A 3x2 matrix with row-major representationlinear*A 2x4 matrix with row-major representationlinear*A 2x3 matrix with row-major representationlinear*A 2x2 matrix with row-major representationlinearThis is a generalization of " to work over any corepresentable .  ::  f =>  s t a b ->  (f s) (f t) (f a) (f b) 6In practice it is used to access a column of a matrix.V2 (V3 1 2 3) (V3 4 5 6) ^._xV3 1 2 3$V2 (V3 1 2 3) (V3 4 5 6) ^.column _xV2 1 4linearMatrix product. This can compute any combination of sparse and dense multiplication.:V2 (V3 1 2 3) (V3 4 5 6) !*! V3 (V2 1 2) (V2 3 4) (V2 4 5)V2 (V2 19 25) (V2 43 58)V2 (IntMap.fromList [(1,2)]) (IntMap.fromList [(2,3)]) !*! IntMap.fromList [(1,V3 0 0 1), (2, V3 0 0 5)]V2 (V3 0 0 2) (V3 0 0 15)linearEntry-wise matrix addition.5V2 (V3 1 2 3) (V3 4 5 6) !+! V2 (V3 7 8 9) (V3 1 2 3)V2 (V3 8 10 12) (V3 5 7 9)linearEntry-wise matrix subtraction.5V2 (V3 1 2 3) (V3 4 5 6) !-! V2 (V3 7 8 9) (V3 1 2 3)!V2 (V3 (-6) (-6) (-6)) (V3 3 3 3)linearMatrix * column vector$V2 (V3 1 2 3) (V3 4 5 6) !* V3 7 8 9 V2 50 122linearRow vector * matrix"V2 1 2 *! V2 (V3 3 4 5) (V3 6 7 8) V3 15 18 21linearScalar-matrix product5 *!! V2 (V2 1 2) (V2 3 4)V2 (V2 5 10) (V2 15 20)linearMatrix-scalar productV2 (V2 1 2) (V2 3 4) !!* 5V2 (V2 5 10) (V2 15 20)linearMatrix-scalar divisionlinear*Hermitian conjugate or conjugate transpose:adjoint (V2 (V2 (1 :+ 2) (3 :+ 4)) (V2 (5 :+ 6) (7 :+ 8)))V2 (V2 (1.0 :+ (-2.0)) (5.0 :+ (-6.0))) (V2 (3.0 :+ (-4.0)) (7.0 :+ (-8.0)))linear$Build a rotation matrix from a unit .linearBuild a transformation matrix from a rotation matrix and a translation vector.linear>Build a transformation matrix from a rotation expressed as a  and a translation vector.linearConvert from a 4x3 matrix to a 4x4 matrix, extending it with the  [ 0 0 0 1 ] column vectorlinearConvert a 3x3 matrix to a 4x4 matrix extending it with 0's in the new row and column.linear-The identity matrix for any dimension vector.identity :: M44 Int6V4 (V4 1 0 0 0) (V4 0 1 0 0) (V4 0 0 1 0) (V4 0 0 0 1)identity :: V3 (V3 Int)#V3 (V3 1 0 0) (V3 0 1 0) (V3 0 0 1)linearExtract the translation vector (first three entries of the last column) from a 3x4 or 4x4 matrix.linearExtract a 2x2 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 2x3 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 2x4 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 3x2 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 3x3 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 3x4 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 4x2 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 4x3 matrix from a matrix of higher dimensions by dropping excess rows and columns.linearExtract a 4x4 matrix from a matrix of higher dimensions by dropping excess rows and columns.linear2x2 matrix determinant.det22 (V2 (V2 a b) (V2 c d)) a * d - b * clinear3x3 matrix determinant.+det33 (V3 (V3 a b c) (V3 d e f) (V3 g h i))?a * (e * i - f * h) - d * (b * i - c * h) + g * (b * f - c * e)linear4x4 matrix determinant.linear2x2 matrix inverse.inv22 $ V2 (V2 1 2) (V2 3 4)"V2 (V2 (-2.0) 1.0) (V2 1.5 (-0.5))linear3x3 matrix inverse.+inv33 $ V3 (V3 1 2 4) (V3 4 2 2) (V3 1 1 1)V3 (V3 0.0 0.5 (-1.0)) (V3 (-0.5) (-0.75) 3.5) (V3 0.5 0.25 (-1.5))linear is just an alias for  )transpose (V3 (V2 1 2) (V2 3 4) (V2 5 6))V2 (V3 1 3 5) (V3 2 4 6)linear4x4 matrix inverse.linearCompute the (L, U) decomposition of a square matrix using Crout's algorithm. The  of the vectors must be .linearCompute the (L, U) decomposition of a square matrix using Crout's algorithm, using the vector's h instance to provide an index.linearSolve a linear system with a lower-triangular matrix of coefficients with forwards substitution.linearSolve a linear system with a lower-triangular matrix of coefficients with forwards substitution, using the vector's h! instance to provide an index.linearSolve a linear system with an upper-triangular matrix of coefficients with backwards substitution.linearSolve a linear system with an upper-triangular matrix of coefficients with backwards substitution, using the vector's h! instance to provide an index.linear,Solve a linear system with LU decomposition.linearSolve a linear system with LU decomposition, using the vector's h! instance to provide an index.linear&Invert a matrix with LU decomposition.linear:Invert a matrix with LU decomposition, using the vector's h! instance to provide an index.linear;Compute the determinant of a matrix using LU decomposition.linearCompute the determinant of a matrix using LU decomposition, using the vector's h instance to provide an index.9976677777(C) 2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Safe-InferredslinearBuild a look at view matrixlinear7Build a matrix for a symmetric perspective-view frustumlinear#Build an inverse perspective matrixlinear+Build a perspective matrix per the classic  glFrustum arguments.linearBuild a matrix for a symmetric perspective-view frustum with a far plane at infinitelinearBuild an orthographic perspective matrix from 6 clipping planes. This matrix takes the region delimited by these planes and maps it to normalized device coordinates between [-1,1] provisionalportable Safe-Inferred>?tlinear.A coassociative counital coalgebra over a ringlinear)An associative unital algebra over a ring   BSD-style (see the file LICENSE)Edward Kmett  provisionalportable Safe-Inferred>?ulinearLinear functionals from elements of an (infinite) free module to a scalar0 BSD-style (see the file LICENSE)Edward Kmett  provisionalportable Trustworthy235678>?yv linearA handy wrapper to help distinguish points from vectors at the type levellinearAn affine space is roughly a vector space in which we have forgotten or at least pretend to have forgotten the origin. a .+^ (b .-. a) = b@ (a .+^ u) .+^ v = a .+^ (u ^+^ v)@ (a .-. b) ^+^ v = (a .+^ v) .-. q@linear9Get the difference between two points as a vector offset.linearAdd a vector offset to a point.linear&Subtract a vector offset from a point.linearCompute the quadrance of the difference (the square of the distance)linear.Distance between two points in an affine spacelinearVector spaces have origins.linearAn isomorphism between points and vectors, given a reference point.666(C) 2012-2015 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  experimental non-portable Safe-Inferredzo%&,021/-.3456789:;<=>?RXWVUSTYZ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}}~                                                                                                                                                                                                                                                                                                                                                                                                                                             $linear-1.21.7-IzWO6CJjX3S2AHSSrHBQyLLinear.V Linear.BinaryLinear.ConjugateLinear.Epsilon Linear.Vector Linear.Metric Linear.V1 Linear.V2 Linear.V3 Linear.V4 Linear.V0Linear.QuaternionLinear.Plucker Linear.TraceLinear.Plucker.Coincides Linear.MatrixLinear.ProjectionLinear.AlgebraLinear.Covector Linear.AffineLinear.InstancesLinear&reflection-2.1.6-CzOlI803nFuvt8AikdOutData.Reflectionint putLinear getLinearTrivialConjugate Conjugate conjugate$fTrivialConjugateCDouble$fTrivialConjugateCFloat$fTrivialConjugateFloat$fTrivialConjugateDouble$fTrivialConjugateWord8$fTrivialConjugateWord16$fTrivialConjugateWord32$fTrivialConjugateWord64$fTrivialConjugateWord$fTrivialConjugateInt8$fTrivialConjugateInt16$fTrivialConjugateInt32$fTrivialConjugateInt64$fTrivialConjugateInt$fTrivialConjugateInteger$fConjugateComplex$fConjugateCDouble$fConjugateCFloat$fConjugateFloat$fConjugateDouble$fConjugateWord8$fConjugateWord16$fConjugateWord32$fConjugateWord64$fConjugateWord$fConjugateInt8$fConjugateInt16$fConjugateInt32$fConjugateInt64$fConjugateInt$fConjugateIntegerEpsilonnearZero$fEpsilonComplex$fEpsilonCDouble$fEpsilonCFloat$fEpsilonDouble$fEpsilonFloatAdditivezero^+^^-^lerpliftU2liftI2EelnegatedsumV*^^*^/basisbasisForscaledunitouter$fGAdditivePar1 $fGAdditiveM1$fGAdditive:*: $fGAdditiveU1$fAdditiveIdentity$fAdditiveComplex $fAdditive->$fAdditiveHashMap $fAdditiveMap$fAdditiveIntMap $fAdditive[]$fAdditiveMaybe$fAdditiveVector$fAdditiveZipList$fAdditiveCompose$fAdditiveProduct$fGAdditiveRec1$fGAdditive:.:Metricdot quadranceqddistancenormsignorm normalizeproject$fMetricVector$fMetricHashMap $fMetricMap$fMetricIntMap$fMetricZipList $fMetricMaybe $fMetric[]$fMetricIdentity$fMetricCompose$fMetricProductVtoVectorFiniteSizetoVfromVDim reflectDim_V_V'dim reifyDimNatreifyVectorNatreifyDim reifyVector fromVector $fDimNatn $fField19VVaa $fField18VVaa $fField17VVaa $fField16VVaa $fField15VVaa $fField14VVaa $fField13VVaa $fField12VVaa $fField11VVaa $fField10VVaa $fField9VVaa $fField8VVaa $fField7VVaa $fField6VVaa $fField5VVaa $fField4VVaa $fField3VVaa $fField2VVaa $fField1VVaa$fVectorVectorV$fMVectorMVectorV$fUnboxV$fRead1V$fShow1V$fOrd1V$fEq1V $fSerializeV $fBinaryV $fSerialV $fSerial1V$fDataV $fBoundedV $fEachVVab $fMonadFixV $fMonadZipV$fIxedV$fRepresentableV $fMetricV $fEpsilonV $fStorableV $fHashable1V $fHashableV$fDistributiveV $fFloatingV $fFractionalV$fNumV $fAdditiveV$fMonadV$fBindV$fApplicativeV$fApplyV$fTraversableWithIndexIntV$fTraversableV$fFoldableWithIndexIntV $fFoldableV$fFunctorWithIndexIntV $fFunctorV $fMonoidV $fSemigroupV $fDimTYPEV $fRandomV $fFiniteV$fFiniteComplex$fDimTYPEReifiedDim$fEqV$fOrdV$fShowV$fReadV $fNFDataV $fGenericV$fGeneric1TYPEVR1_xV1ex $fMonoidV1 $fSemigroupV1$fField1V1V1ab $fRead1V1 $fShow1V1$fOrd1V1$fEq1V1 $fRandomV1 $fSerializeV1 $fBinaryV1 $fSerialV1 $fSerial1V1 $fBoundedV1 $fMonadFixV1 $fMonadZipV1$fVectorVectorV1$fMVectorMVectorV1 $fUnboxV1 $fEachV1V1ab$fIxedV1$fTraversableWithIndexEV1$fFoldableWithIndexEV1$fFunctorWithIndexEV1$fRepresentableV1$fIxV1$fDistributiveV1 $fMetricV1 $fHashable1V1 $fHashableV1 $fFloatingV1$fFractionalV1$fNumV1 $fMonadV1$fBindV1 $fAdditiveV1$fApplicativeV1 $fApplyV1$fTraversable1V1 $fFoldable1V1 $fFiniteV1 $fFoldableV1 $fR1Identity$fR1V1$fEqV1$fOrdV1$fShowV1$fReadV1$fDataV1 $fFunctorV1$fTraversableV1 $fEpsilonV1 $fStorableV1 $fNFDataV1 $fGenericV1$fGeneric1TYPEV1$fLiftLiftedRepV1R2_y_xyV2_yxeyperpangleunanglecrossZ $fMonoidV2 $fSemigroupV2$fField2V2V2aa$fField1V2V2aa $fShow1V2 $fRead1V2$fOrd1V2$fEq1V2 $fSerializeV2 $fBinaryV2 $fSerialV2 $fSerial1V2 $fNFDataV2 $fBoundedV2 $fMonadFixV2 $fMonadZipV2$fVectorVectorV2$fMVectorMVectorV2 $fUnboxV2 $fEachV2V2ab$fIxedV2$fTraversableWithIndexEV2$fFoldableWithIndexEV2$fFunctorWithIndexEV2$fRepresentableV2$fIxV2 $fStorableV2 $fEpsilonV2$fDistributiveV2$fR1V2 $fMetricV2 $fFloatingV2$fFractionalV2$fNumV2 $fMonadV2$fBindV2 $fAdditiveV2 $fHashable1V2 $fHashableV2$fApplicativeV2 $fApplyV2$fTraversable1V2 $fFoldable1V2$fTraversableV2 $fFoldableV2 $fFunctorV2 $fRandomV2 $fFiniteV2$fR2V2$fEqV2$fOrdV2$fShowV2$fReadV2$fDataV2 $fGenericV2$fGeneric1TYPEV2$fLiftLiftedRepV2R3_z_xyzV3_xz_yz_zx_zy_xzy_yxz_yzx_zxy_zyxezcrosstriple $fMonoidV3 $fSemigroupV3$fField3V3V3aa$fField2V3V3aa$fField1V3V3aa $fShow1V3 $fRead1V3$fOrd1V3$fEq1V3 $fSerializeV3 $fBinaryV3 $fSerialV3 $fSerial1V3 $fNFDataV3 $fBoundedV3 $fMonadFixV3 $fMonadZipV3$fVectorVectorV3$fMVectorMVectorV3 $fUnboxV3 $fEachV3V3ab$fIxedV3$fTraversableWithIndexEV3$fFoldableWithIndexEV3$fFunctorWithIndexEV3$fRepresentableV3$fIxV3 $fEpsilonV3 $fStorableV3$fR2V3$fR1V3$fDistributiveV3 $fMetricV3 $fHashable1V3 $fHashableV3 $fFloatingV3$fFractionalV3$fNumV3 $fMonadV3$fBindV3 $fAdditiveV3$fApplicativeV3 $fApplyV3$fTraversable1V3 $fFoldable1V3$fTraversableV3 $fRandomV3 $fFoldableV3 $fFunctorV3 $fFiniteV3$fR3V3$fEqV3$fOrdV3$fShowV3$fReadV3$fDataV3 $fGenericV3$fGeneric1TYPEV3$fLiftLiftedRepV3R4_w_xyzwV4_xw_yw_zw_wx_wy_wz_xyw_xzw_xwy_xwz_yxw_yzw_ywx_ywz_zxw_zyw_zwx_zwy_wxy_wxz_wyx_wyz_wzx_wzy_xywz_xzyw_xzwy_xwyz_xwzy_yxzw_yxwz_yzxw_yzwx_ywxz_ywzx_zxyw_zxwy_zyxw_zywx_zwxy_zwyx_wxyz_wxzy_wyxz_wyzx_wzxy_wzyxewvectorpointnormalizePoint $fMonoidV4 $fSemigroupV4$fField4V4V4aa$fField3V4V4aa$fField2V4V4aa$fField1V4V4aa $fShow1V4 $fRead1V4$fOrd1V4$fEq1V4 $fSerializeV4 $fBinaryV4 $fSerialV4 $fSerial1V4 $fNFDataV4 $fBoundedV4 $fMonadFixV4 $fMonadZipV4$fVectorVectorV4$fMVectorMVectorV4 $fUnboxV4 $fEachV4V4ab$fIxedV4$fTraversableWithIndexEV4$fFoldableWithIndexEV4$fFunctorWithIndexEV4$fRepresentableV4$fIxV4 $fEpsilonV4 $fStorableV4$fR3V4$fR2V4$fR1V4 $fHashable1V4 $fHashableV4$fDistributiveV4 $fMetricV4 $fFloatingV4$fFractionalV4$fNumV4 $fMonadV4$fBindV4 $fAdditiveV4 $fApplyV4$fApplicativeV4$fTraversable1V4 $fFoldable1V4$fTraversableV4 $fRandomV4 $fFoldableV4 $fFunctorV4 $fFiniteV4$fR4V4$fEqV4$fOrdV4$fShowV4$fReadV4$fDataV4 $fGenericV4$fGeneric1TYPEV4$fLiftLiftedRepV4V0 $fRead1V0 $fShow1V0$fOrd1V0$fEq1V0 $fNFDataV0 $fBoundedV0 $fMonadFixV0 $fMonadZipV0$fVectorVectorV0$fMVectorMVectorV0 $fUnboxV0 $fEachV0V0ab$fIxedV0$fRepresentableV0$fTraversableWithIndexEV0$fFoldableWithIndexEV0$fFunctorWithIndexEV0 $fStorableV0 $fEpsilonV0 $fHashable1V0 $fHashableV0$fDistributiveV0 $fMetricV0 $fFloatingV0$fFractionalV0$fNumV0 $fMonadV0$fBindV0 $fAdditiveV0 $fMonoidV0 $fSemigroupV0$fApplicativeV0 $fApplyV0$fTraversableV0 $fFoldableV0 $fFunctorV0 $fSerializeV0 $fBinaryV0 $fSerialV0 $fSerial1V0 $fRandomV0 $fFiniteV0$fEqV0$fOrdV0$fShowV0$fReadV0$fIxV0$fEnumV0$fDataV0 $fGenericV0$fGeneric1TYPEV0$fLiftLiftedRepV0 Hamiltonian_j_k_ijk Complicated_e_i Quaternioneeeiejekabsipowasinqacosqatanqasinhqacoshqatanhqslerprotate axisAngle$fR4Quaternion$fR3Quaternion$fR2Quaternion$fR1Quaternion$fMonoidQuaternion$fSemigroupQuaternion$fField4QuaternionQuaternionaa$fField3QuaternionQuaternionaa$fField2QuaternionQuaternionaa$fField1QuaternionQuaternionaa$fRead1Quaternion$fShow1Quaternion$fOrd1Quaternion$fEq1Quaternion$fSerializeQuaternion$fBinaryQuaternion$fSerialQuaternion$fSerial1Quaternion$fNFDataQuaternion$fMonadFixQuaternion$fMonadZipQuaternion$fVectorVectorQuaternion$fMVectorMVectorQuaternion$fUnboxQuaternion$fEpsilonQuaternion$fFloatingQuaternion$fConjugateQuaternion$fDistributiveQuaternion$fMetricQuaternion$fFractionalQuaternion$fHashable1Quaternion$fHashableQuaternion$fNumQuaternion$fStorableQuaternion$fTraversableQuaternion$fFoldableQuaternion$fEachQuaternionQuaternionab$fIxedQuaternion!$fTraversableWithIndexEQuaternion$fFoldableWithIndexEQuaternion$fFunctorWithIndexEQuaternion$fRepresentableQuaternion$fIxQuaternion$fMonadQuaternion$fBindQuaternion$fAdditiveQuaternion$fApplicativeQuaternion$fApplyQuaternion$fFunctorQuaternion$fRandomQuaternion$fFiniteQuaternion$fComplicatedQuaternion$fComplicatedComplex$fHamiltonianQuaternion$fEqQuaternion$fOrdQuaternion$fReadQuaternion$fShowQuaternion$fDataQuaternion$fGenericQuaternion$fGeneric1TYPEQuaternion$fLiftLiftedRepQuaternionLinePassCoplanar ClockwiseCounterclockwisePluckerplucker plucker3Dp01p02p03p23p31p12p10p20p30p32p13p21e01e02e03e23e31e12 squaredError>< isotropic intersectspassesparallel coincides coincides'quadranceToOriginclosestToOriginisLine$fMonoidPlucker$fSemigroupPlucker$fField6PluckerPluckeraa$fField5PluckerPluckeraa$fField4PluckerPluckeraa$fField3PluckerPluckeraa$fField2PluckerPluckeraa$fField1PluckerPluckeraa$fShow1Plucker$fRead1Plucker $fOrd1Plucker $fEq1Plucker$fSerializePlucker$fBinaryPlucker$fSerialPlucker$fSerial1Plucker$fNFDataPlucker$fMonadFixPlucker$fMonadZipPlucker$fVectorVectorPlucker$fMVectorMVectorPlucker$fUnboxPlucker$fEachPluckerPluckerab $fIxedPlucker$fTraversableWithIndexEPlucker$fFoldableWithIndexEPlucker$fFunctorWithIndexEPlucker$fEpsilonPlucker$fMetricPlucker$fStorablePlucker$fHashablePlucker$fFloatingPlucker$fFractionalPlucker $fNumPlucker $fIxPlucker$fTraversable1Plucker$fFoldable1Plucker$fTraversablePlucker$fFoldablePlucker$fRepresentablePlucker$fDistributivePlucker$fMonadPlucker $fBindPlucker$fAdditivePlucker$fApplicativePlucker$fApplyPlucker$fFunctorPlucker$fRandomPlucker$fFinitePlucker $fEqLinePass$fShowLinePass$fGenericLinePass $fEqPlucker $fOrdPlucker $fShowPlucker $fReadPlucker$fGenericPlucker$fGeneric1TYPEPlucker$fLiftLiftedRepPluckerTracetracediagonal frobenius$fTraceCompose$fTraceProduct$fTraceComplex$fTraceQuaternion$fTracePlucker $fTraceV4 $fTraceV3 $fTraceV2 $fTraceV1 $fTraceV0$fTraceV$fTraceHashMap $fTraceMap $fTraceIntMap CoincidesLineRay $fEqCoincidesM44M43M42M34M33M32M24M23M22column!*!!+!!-!!**!*!!!!*!!/adjointfromQuaternionmkTransformationMatmkTransformation m43_to_m44 m33_to_m44identity translation_m22_m23_m24_m32_m33_m34_m42_m43_m44det22det33det44inv22inv33 transposeinv44luluFinite forwardSubforwardSubFinite backwardSubbackwardSubFiniteluSolve luSolveFiniteluInv luInvFiniteluDet luDetFinitelookAt perspectiveinversePerspectivefrustuminverseFrustuminfinitePerspectiveinverseInfinitePerspectiveortho inverseOrtho CoalgebracomultcounitalAlgebramultunitalmultRep unitalRep comultRep counitalRep $fAlgebrarE $fAlgebrarE0 $fAlgebrar(,) $fAlgebrar() $fAlgebrarE1 $fAlgebrarE2$fAlgebrarVoid$fCoalgebrar(,) $fCoalgebrarE$fCoalgebrarE0$fCoalgebrarE1$fCoalgebrarE2$fCoalgebrarE3$fCoalgebrarE4$fCoalgebrarE5$fCoalgebrar()$fCoalgebrarVoidCovector runCovector$* $fNumCovector$fMonadPlusCovector$fAlternativeCovector$fPlusCovector $fAltCovector$fMonadCovector$fBindCovector$fApplicativeCovector$fApplyCovector$fFunctorCovectorPointPAffineDiff.-..+^.-^qdA distanceAlensP_Point.##.unPoriginrelative $fAffineV$fAffineHashMap $fAffineMap $fAffine->$fAffineQuaternion$fAffinePlucker $fAffineV4 $fAffineV3 $fAffineV2 $fAffineV1 $fAffineV0$fAffineVector$fAffineIdentity$fAffineIntMap $fAffineMaybe$fAffineZipList$fAffineComplex $fAffine[]$fAffineProduct$fVectorVectorPoint$fMVectorMVectorPoint $fUnboxPoint $fAffinePoint $fR4Point $fR3Point $fR2Point $fR1Point$fEachPointPointab $fIxedPoint$fRepresentablePoint$fDistributivePoint $fBindPoint$fWrappedPoint$fRewrappedPointt$fHashable1Point$fSerializePoint $fBinaryPoint $fSerialPoint$fSerial1Point $fNFDataPoint $fFinitePoint $fEqPoint $fOrdPoint $fShowPoint $fReadPoint $fMonadPoint$fFunctorPoint$fApplicativePoint$fFoldablePoint $fEq1Point $fOrd1Point $fShow1Point $fRead1Point$fTraversablePoint $fApplyPoint$fAdditivePoint $fMetricPoint$fFractionalPoint $fNumPoint $fIxPoint$fStorablePoint$fEpsilonPoint$fSemigroupPoint $fMonoidPoint $fRandomPoint$fHashablePoint$fGenericPoint$fGeneric1TYPEPoint $fDataPointbaseGHC.BaseidGHC.Numabsghc-prim GHC.Classes<=liftA2containers-0.6.2.1Data.IntMap.Internal unionWithintersectionWith GHC.Floatasinacosatanasinhacoshatanh lens-5.0.1-5NplE4uOsgxHfpKX6aCZ3Control.Lens.TypeLens'Num==EqControl.Lens.LensinsideFunctor&adjunctions-4.4-8yH2rGaUZ6mH32HMbe9xgYData.Functor.Rep RepresentableLens+distributive-0.6.2.1-8UGfUtJRQ3dKOtQaHLX6nBData.Distributive distributeControl.Lens.AtIndexGHC.RealIntegral&vector-0.12.3.0-FAegvypcPGJ29YWm4lHTiaData.Vector.Unboxed.BaseVectorV_PMVectorMV_P