h$;4       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        Safe-Inferred5= Safe-Inferred567 nonlinear*Class of vectors of statically known size.Conceptually, this is    , but with a  and  constraint instead of just . This makes it a catch-all class for things that we would normally think of as vectors of statically known size. The Monad constraint might seem weird, but since we can implement the normal (diagonal) Monad instance in terms of (, it doesn't actually preclude anything. nonlinear Compute the negation of a vectornegated (V2 2 4) V2 (-2) (-4) nonlinearCompute the left scalar product 2 *^ V2 3 4V2 6 8 nonlinear Compute the right scalar product V2 3 4 ^* 2V2 6 8 nonlinear*Compute division by a scalar on the right. nonlinearProduce a default basis for a vector space. If the dimensionality of the vector space is not statically known, see . nonlinearProduce a default basis for a vector space from which the argument is drawn. nonlinear0Produce a diagonal (scale) matrix from a vector.scaled (V2 2 3)V2 (V2 2 0) (V2 0 3)  nonlinearCreate a unit vector.unit _x :: V2 IntV2 1 0  nonlinear%Outer (tensor) product of two vectors  nonlinearCompute 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 411  nonlinearCompute the squared norm. The name quadrance arises from Norman J. Wildberger's rational trigonometry.  nonlinear'Compute the quadrance of the difference nonlinear:Compute the distance between two vectors in a metric space nonlinear.Compute the norm of a vector in a metric space nonlinear)Convert a non-zero vector to unit vector. nonlinear Normalize a Metric functor to have unit 4. This function does not change the functor if its  is 0 or 1. nonlinear project u v computes the projection of v onto u.  777None 35678<=gNone 35678<9 nonlinear*the counter-clockwise perpendicular vectorperp $ V2 10 20 V2 (-20) 10< nonlinearThe Z-component of the cross product of two vectors in the XY-plane.crossZ (V2 1 0) (V2 0 1)1= nonlinear V2 1 2 ^. _yxV2 2 1 24356879:;<= 56879:;<243=None 35678<a nonlinear cross productb nonlinearscalar triple productY[Z\]`_^abcdefghijk\]`_^abY[ZcdefghijkNone 35678<e88None 35678 nonlinear0A vector space that includes the basis elements , ,  and  nonlinear0A vector space that includes the basis elements  and  nonlinear Quaternions nonlinearnorm of the imaginary component nonlinearraise a  to a scalar power nonlinear with a specified branch cut. nonlinear with a specified branch cut. nonlinear with a specified branch cut. nonlinear with a specified branch cut. nonlinear with a specified branch cut. nonlinear with a specified branch cut. nonlinear7Spherical linear interpolation between two quaternions. nonlinearApply a rotation to a vector. nonlinear axis theta builds a  representing a rotation of theta radians about axis.None!" nonlinear*A 4x4 matrix with row-major representation nonlinear*A 4x3 matrix with row-major representation nonlinear*A 4x2 matrix with row-major representation nonlinear*A 3x4 matrix with row-major representation nonlinear*A 3x3 matrix with row-major representation nonlinear*A 3x2 matrix with row-major representation nonlinear*A 2x4 matrix with row-major representation nonlinear*A 2x3 matrix with row-major representation nonlinear*A 2x2 matrix with row-major representation nonlinear'This is more restrictive than linear's >LensLike (Context a b) s t a b -> Lens (f s) (f t) (f a) (f b), but in return we get a much simpler implementation which should suffice in 99% of cases. nonlinearMatrix product: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) nonlinearMatrix * column vector$V2 (V3 1 2 3) (V3 4 5 6) !* V3 7 8 9 V2 50 122 nonlinearRow vector * matrix"V2 1 2 *! V2 (V3 3 4 5) (V3 6 7 8) V3 15 18 21 nonlinearScalar-matrix product5 *!! V2 (V2 1 2) (V2 3 4)V2 (V2 5 10) (V2 15 20) nonlinearMatrix-scalar productV2 (V2 1 2) (V2 3 4) !!* 5V2 (V2 5 10) (V2 15 20) nonlinearMatrix-scalar division nonlinear$Build a rotation matrix from a unit . nonlinear-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) nonlinearExtract a 2x2 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 2x3 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 2x4 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 3x2 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 3x3 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 3x4 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 4x2 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 4x3 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinearExtract a 4x4 matrix from a matrix of higher dimensions by dropping excess rows and columns. nonlinear2x2 matrix determinant.det22 (V2 (V2 a b) (V2 c d)) a * d - b * c nonlinear3x3 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) nonlinear4x4 matrix determinant. nonlinear2x2 matrix inverse.inv22 $ V2 (V2 1 2) (V2 3 4)"V2 (V2 (-2.0) 1.0) (V2 1.5 (-0.5)) nonlinear3x3 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)) nonlinear is just an alias for  distribute )transpose (V3 (V2 1 2) (V2 3 4) (V2 5 6))V2 (V3 1 3 5) (V3 2 4 6) nonlinear4x4 matrix inverse.$$777777None/o nonlinearConvert from a 4x3 matrix to a 4x4 matrix, extending it with the  [ 0 0 0 1 ] column vector nonlinearConvert a 3-dimensional affine vector into a 4-dimensional homogeneous vector, i.e. sets the w coordinate to 0. nonlinearConvert a 3-dimensional affine point into a 4-dimensional homogeneous vector, i.e. sets the w coordinate to 1. nonlinearConvert 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)0 where the projective, homogeneous, coordinate  [x:y:z:w]/ is one of many associated with a single point (x/w, y/w, z/w). nonlinearConvert a 3x3 matrix to a 4x4 matrix extending it with 0's in the new row and column. nonlinearExtract the translation vector (first three entries of the last column) from a 3x4 or 4x4 matrix. nonlinearBuild a transformation matrix from a rotation matrix and a translation vector. nonlinear?Build a transformation matrix from a rotation expressed as a  and a translation vector. nonlinearBuild a look at view matrix nonlinear7Build a matrix for a symmetric perspective-view frustum nonlinear#Build an inverse perspective matrix nonlinear+Build a perspective matrix per the classic  glFrustum arguments. nonlinearBuild a matrix for a symmetric perspective-view frustum with a far plane at infinite nonlinearBuild 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]?@ABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghhijklmnopqrstuvwxyz{|}~             %nonlinear-0.1.0-dd7wbAvLl3JZC37BHOks3Nonlinear.Vector Nonlinear.V1 Nonlinear.V2 Nonlinear.V3 Nonlinear.V4Nonlinear.QuaternionNonlinear.MatrixNonlinear.Projective.Hom3Nonlinear.Projective.Hom2Nonlinear.InternalData.Functor.Rep Representable NonlinearVec constructnegated*^^*^/basisbasisForscaledunitouterdot quadranceqddistancenormsignorm normalizeprojectR1_xV1v1x$fR1V1$fVecV1$fEqV1$fShowV1$fReadV1 $fFunctorV1 $fFoldableV1$fTraversableV1 $fGenericV1$fGeneric1TYPEV1$fDataV1 $fStorableV1 $fBoundedV1$fOrdV1$fNumV1$fFractionalV1 $fFloatingV1 $fSemigroupV1 $fMonoidV1$fIxV1$fEq1V1 $fRead1V1 $fShow1V1$fOrd1V1$fApplicativeV1 $fMonadV1R2_y_xyV2v2xv2yperpangleunanglecrossZ_yx$fIxV2 $fStorableV2$fR1V2 $fShow1V2 $fRead1V2$fOrd1V2$fEq1V2 $fFloatingV2$fFractionalV2$fNumV2 $fMonoidV2 $fSemigroupV2 $fMonadV2$fApplicativeV2$fR2V2$fVecV2$fEqV2$fShowV2$fReadV2 $fBoundedV2$fOrdV2 $fFunctorV2 $fFoldableV2$fTraversableV2 $fGenericV2$fGeneric1TYPEV2$fDataV2R3_z_xyzV3v3xv3yv3zcrosstriple_xz_yz_zx_zy_xzy_yxz_yzx_zxy_zyx$fIxV3 $fStorableV3$fR2V3$fR1V3 $fShow1V3 $fRead1V3$fOrd1V3$fEq1V3 $fFloatingV3$fFractionalV3$fNumV3 $fMonoidV3 $fSemigroupV3 $fMonadV3$fApplicativeV3$fR3V3$fVecV3$fEqV3$fShowV3$fReadV3 $fBoundedV3$fOrdV3 $fFunctorV3 $fFoldableV3$fTraversableV3 $fGenericV3$fGeneric1TYPEV3$fDataV3R4_w_xyzwV4v4xv4yv4zv4w_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_wzyx$fIxV4 $fStorableV4$fR3V4$fR2V4$fR1V4 $fShow1V4 $fRead1V4$fOrd1V4$fEq1V4 $fFloatingV4$fFractionalV4$fNumV4 $fMonoidV4 $fSemigroupV4 $fMonadV4$fApplicativeV4$fR4V4$fVecV4$fEqV4$fShowV4$fReadV4 $fBoundedV4$fOrdV4 $fFunctorV4 $fFoldableV4$fTraversableV4 $fGenericV4$fGeneric1TYPEV4$fDataV4 Hamiltonian_j_k_ijk Complicated_e_i Quaternionabsipowasinqacosqatanqasinhqacoshqatanhqslerprotate axisAngle$fR4Quaternion$fR3Quaternion$fR2Quaternion$fR1Quaternion$fMonoidQuaternion$fSemigroupQuaternion$fRead1Quaternion$fShow1Quaternion$fOrd1Quaternion$fEq1Quaternion$fMonadFixQuaternion$fMonadZipQuaternion$fFloatingQuaternion$fFractionalQuaternion$fNumQuaternion$fStorableQuaternion$fIxQuaternion$fVecQuaternion$fMonadQuaternion$fApplicativeQuaternion$fComplicatedQuaternion$fComplicatedComplex$fHamiltonianQuaternion$fEqQuaternion$fOrdQuaternion$fReadQuaternion$fShowQuaternion$fDataQuaternion$fGenericQuaternion$fGeneric1TYPEQuaternion$fFunctorQuaternion$fFoldableQuaternion$fTraversableQuaternionM44M43M42M34M33M32M24M23M22columndiagonaltrace!*!!**!*!!!!*!!/fromQuaternionidentity_m22_m23_m24_m32_m33_m34_m42_m43_m44det22det33det44inv22inv33 transposeinv44 m43_to_m44vectorpointnormalizePoint m33_to_m44 translationmkTransformationMatmkTransformationlookAt perspectiveinversePerspectivefrustuminverseFrustuminfinitePerspectiveinverseInfinitePerspectiveortho inverseOrtho rotateRad m22_to_m33ASetter'Lens'imapsetviewlensbaseData.Traversable TraversableGHC.BaseMonadFunctor GHC.Floatasinacosatanasinhacoshatanh