úÎrðm]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\portable provisionalAlberto Ruiz <aruiz@um.es>6]^_`a.Class of compatible indices for contractions.  ;A multidimensional array with index type i and elements t. b 4Get detailed dimension information about the array. %Get the coordinates of an array as a 0 flattened structure (in the order specified by  ). Dimension descriptor. ;indices are denoted by strings, (frequently single-letter) ;Types that can be elements of the multidimensional arrays. c3development function not intended for the end user "Create a 0-dimensional structure. \ the indices with single-letter names. Equal indices of compatible type are contracted out.  new indices 2Rename indices. Equal indices are contracted out.  new names d Index names. Dimension of given index. Type of given index. 6The number of dimensions of a multidimensional array. 7Create a list of the substructures at the given level. index to expand +Change the internal layout of coordinates. ? The array, considered as an abstract object, does not change. E (transpose) the dimensions of the array (with single letter names). rOperations are defined by named indices, so the transposed array is operationally equivalent to the original one. %Apply a function (defined on hmatrix e#s) to all elements of a structure.  Use mapArray (mapVector f) for general functions. hTensor product with automatic contraction of repeated indices, following Einstein summation convention. -Check if two arrays have the same structure. AApply a function on vectors to conformant arrays. Two arrays are  conformant if U the dimensional structure of one of them is contained in the other one. The smaller S structure is replicated along the extra dimensions. The result has the same index O order as the largest structure (or as the first argument, if they are equal). transformation fg!4Show a multidimensional array as a nested 2D table. format function (eg. printf "5.2f") "QPrint the array as a nested table with the desired format (e.g. %7.2f) (see also !, and #). #:Show the array as a nested table with autoscaled entries. number of of decimal places $(Show the array as a nested table with a "%.nf" format. If all entries G are approximate integers the array is shown without the .00.. digits. number of of decimal places %:Create an array from a list of subarrays. (The inverse of .)  index type &PInsert a dummy index of dimension 1 at a given level (for formatting purposes). '?Rename indices so that they are not shown in formatted output. ('Obtain a canonical base for the array. h1obtains the common value of a property of a list ) Extract the i+ corresponding to a two-dimensional array,  in the rows,cols order. * Extract the e+ corresponding to a one-dimensional array. +CExtract the scalar element corresponding to a 0-dimensional array. ,&Create a rank-1 array from an hmatrix e. -&Create a rank-2 array from an hmatrix i. .GSelect some parts of a tensor, taking into account position and value. /AApply a list function to the parts of an array at a given index. 0EObtains most general structure of a list of dimension specifications 11Converts a list of arrays to a common structure. 0 cjd k!"#$%&'(h)*+,-./01.    cd !"#$%&'(h)*+,-./01portable provisionalAlberto Ruiz <aruiz@um.es>1  !#$%&'()*+,-./013  % ./!$#&'01(+*),-portable provisionalAlberto Ruiz <aruiz@um.es>2:Multidimensional array with unespecified coordinate type. 30Unespecified coordinate type. Contractions only  require equal dimension. 45Construction of an 2J from a list of dimensions and a list of elements in left to right order.  dimensions  elements 234523445portable provisionalAlberto Ruiz <aruiz@um.es>6 Create an 2 from a list of parts (index = % 43). 7Element by element product. "234567 342567"67 experimentalAlberto Ruiz <aruiz@um.es>89:;<FCreates a tensor from a list of dimensions and a list of coordinates. ] A positive dimension means that the index is assumed to be contravariant (vector-like), and ³ a negative dimension means that the index is assumed to be covariant (like a linear function, or covector). Contractions can only be performed between indices of different type.  dimensions  coordinates = Create an ;2 from a list of parts with a contravariant index ( superindex = % 9). > Create an ;. from a list of parts with a covariant index ( subindex = % :). ? Change the 80 nature of all dimensions to the opposite ones. @Make all dimensions covariant. A#Make all dimensions contravariant. B Remove the 8 nature of coordinates. CACreate a contravariant rank-1 tensor from a list of coordinates. D=Create a covariant rank-1 tensor from a list of coordinates. EWCreate a 1-contravariant, 1-covariant rank-2 tensor from list of lists of coordinates. "23456789:;<=>?@ABCDE;8:9<=>CDE?@AB8:99:;<=>?@ABCDE experimentalAlberto Ruiz <aruiz@um.es>FlGmHIJKThe reversion operator. nBShow the non zero coordinates of a multivector in a nicer format. LCreates a scalar multivector. M=Creates a grade 1 multivector of from a list of coordinates. opqNThe k-th basis element. OThe exterior (outer) product. PThe contractive inner product. QiThe full space of the given dimension. This is the leviCivita simbol, and the basis of the pseudoscalar. RIntersection of subspaces. S0The rotor operator, used in a sandwich product. dimension of the space angle axis result TGExtract a multivector representation from a full antisymmetric tensor. =(We do not check that the tensor is actually antisymmetric.) UXApply a linear transformation, expressed as the image of the element i-th of the basis. (This is a monadic bind!) FGHIJKLMNOPQRSTUFGGLMNOPRKQSUIHJTFGGHIJKLMNOPQRSTU experimentalAlberto Ruiz <aruiz@um.es> rsVMThe exterior (wedge) product of two tensors. Obtains the union of subspaces. =Implemented as the antisymmetrization of the tensor product. WAThe full antisymmetric tensor of rank n (contravariant version). XThe "meet"2 operator. Obtains the intersection of subspaces. a \/ b = dual (dual a /\ dual b)Y2Inner product of a r-vector with the whole space. dual t = inner (leviCivita n) tZ)Euclidean inner product of multivectors. [OExtract a compact multivector representation from a full antisymmetric tensor. asMultivector = Multivector.T. =(We do not check that the tensor is actually antisymmetric.) \!Create an explicit antisymmetric ;8 from the components of a Multivector of a given grade. "23456789:;<=>?@ABCDEVWXYZ[\VZWYX[\VWXYZ[\t        !"#$%&'()*+,-./0123456789:;<<=>?@ABCDEFGHIJKLMNOPQRKSTUVWXYZT[W\]^_``abcdefghijklmnopqrstuvwx hTensor-0.1.0 Numeric.LinearAlgebra.Array.UtilNumeric.LinearAlgebra.ArrayNumeric.LinearAlgebra.Tensor!Numeric.LinearAlgebra.MultivectorNumeric.LinearAlgebra.Exterior$Numeric.LinearAlgebra.Array.Internal"Numeric.LinearAlgebra.Array.Simplehmatrix-0.5.1.1 Data.Packedcomplexrealconjcomp fromComplex toComplex ContainerCompatcompatNArraydimscoordsIdxiDimiNameiTypeNameCoordscalar!renamenamessizetypeOfrankpartsreorder~>mapArray|*| sameStructurezipArray formatArrayprintA formatScaled formatFixednewIndexdummyAtnoIdxbasisOfasMatrixasVectorasScalar fromVector fromMatrixextractonIndex conformablemakeConformantArrayNone listArrayindex.*VariantContraCoTensor listTensor superindexsubindexswitchcovcontravforgetvectorcovectortransf MultivectormaxGradegrademaxDimrevere/\-|full\/rotor fromTensorapply leviCivitadualinner asMultivectorfromMultivectorRectlicoelsAmkNArraymapTypesData.Packed.Internal.VectorVectordispHdispVcommonData.Packed.Internal.MatrixMatrix renameRaw showBasesMVbaseshowMVr1r2r3 interchanges signature