úÎ]rWÔF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE non-portable experimental jed@59A2.orgF)Hack so that norms have a sensible type. GWe need this type class to distinguish between different tuples of Ix. I There are Shapable instances for homogenous Int tuples, but may Haddock  doesn' t see them. JAbsolutely equivalent representation, but used for the mutable interface. The immutable array type. 1The pointer to the array contents is obtained by  .  The idea is similar to F (used internally here). 9 The pointer should be used only during execution of the GH action / retured by the function passed as argument to  . 2If you want to use it afterwards, ensure that you   touchCArray$ after the last use of the pointer, & so the array is not freed too early. O(1) Construct a   from an arbitrary F . It is  the caller'$s responsibility to ensure that the F points to 8 an area of memory sufficient for the specified bounds. O(1) Construct a   from an arbitrary F . It is  the caller'$s responsibility to ensure that the F points to 8 an area of memory sufficient for the specified bounds. O(1)# Extract ForeignPtr from a CArray. O(1): Turn a CArray into a ByteString. Unsafe because it uses  I' and thus is not platform independent. O(1): Turn a ByteString into a CArray. Unsafe because it uses  I0 and thus is not platform independent. Returns J if O the range specified is larger than the size of the ByteString or the start of K the ByteString does not fulfil the alignment requirement of the resulting 1 CArray (as specified by the Storable instance). 9Hackish way to get the zero element for a Storable type. IO(1) reshape an array. The number of elements in the new shape must not L exceed the number in the old shape. The elements are in C-style ordering. 2O(1) make a rank 1 array from an arbitrary shape.  It has the property that '&reshape (0, size a - 1) a == flatten a'. ! Determine the rank of an array. "'Canonical representation of the shape.  The following properties hold:  'length . shape = rank'  'product . shape = size' #CHow much the offset changes when you move one element in the given 2 direction. Since arrays are in row-major order, 'last . shapeToStride = const 1' $!Number of elements in the Array. %EGeneric slice and map. This takes the new range, the inverse map on L indices, and function to produce the next element. It is the most general  operation in its class. &Less polymorphic version. 'EPerform an operation on the elements, independent of their location. (Less polymorphic version. )More polymorphic version of K. */More friendly sub-arrays with element mapping. +Less polymorphic version. ,+Strided sub-array without element mapping. -Less polymorphic version. .+Contiguous sub-array with element mapping. /Less polymorphic version. 0.Contiguous sub-array without element mapping. 1Less polymorphic version. 2+In-place map on CArray. Note that this is IN PLACE so you should not I retain any reference to the original. It flagrantly breaks referential  transparency! 345678&p-norm on the array taken as a vector 9D2-norm on the array taken as a vector (Frobenius norm for matrices) :(Sup norm on the array taken as a vector ;Polymorphic version of amap. <0Equivalent to amap. Here for consistency only. =Polymorphic 2-array lift. >Less polymorphic version. ?Polymorphic 3-array lift. @Less polymorphic version. AThis variant of L is quite mind-bogglingly unsafe. It M unstitches the dependency chain that holds the IO monad together and breaks K all your ordinary intuitions about IO, sequencing and side effects. Avoid / it unless you really know what you are doing. BIt is only safe for operations which are genuinely pure (not just E externally pure) for example reading from an immutable foreign data H structure. In particular, you should do no memory allocation inside an  A4 block. This is because an allocation is a constant M and is likely to be floated out and shared. More generally, any part of any G IO action that does not depend on a function argument is likely to be 6 floated to the top level and have its result shared. <It is more efficient because in addition to the checks that  unsafeDupablePerformIO/ omits, we also inline. Additionally we do not K pretend that the body is lazy which allows the strictness analyser to see E the strictness in the body. In turn this allows some re-ordering of 0 operations and any corresponding side-effects. GWith GHC it compiles to essentially no code and it exposes the body to  further inlining. BNAllocate an array which is 16-byte aligned. Essential for SIMD instructions. CFAllocate memory which is 16-byte aligned. This is essential for SIMD O instructions. We know that mallocPlainForeignPtrBytes will give word-aligned L memory, so we pad enough to be able to return the desired amount of memory  after aligning our pointer. D%Make a new CArray with an IO action. EF  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF  !"#$%&'()*+,-./0123456789:;<=>?@ABCDE non-portable experimental jed@59A2.orgMNOPQRSTUVWXYZ[\]^_`   non-portable experimental jed@59A2.org7MNOPQKabcdefghijklm  !"$%&'()*+,-./0189:;<=>?@D$ !"$%&'()*+,-./01;<=>?@89: Dn        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMKLMHINHOPQRSHTUHVWHVXHVYHVZHV[QR\QR]QR^QR_QR`QRaQRbQRcQRdQReQRfQRgQRhQRiQRjQRkQRlQRmQRnQRoQRpQRqQRrQRsQRtQRuQRvHVwx carray-0.1.3Data.Array.CArray.BaseData.Array.IOCArrayData.Array.CArrayAbsabs_ShapablesRanksShapesBoundsIOCArrayCArray withCArray withIOCArray touchIOCArrayunsafeForeignPtrToCArrayunsafeForeignPtrToIOCArray toForeignPtrunsafeCArrayToByteStringunsafeByteStringToCArraycopyfreezeIOCArrayunsafeFreezeIOCArray thawIOCArrayunsafeThawIOCArrayzeroElemunsafeArrayCArrayunsafeReplaceCArrayunsafeAccumCArrayunsafeAccumArrayCArrayeqCArray cmpCArray cmpIntCArrayreshapeflattenrankshape shapeToStridesize ixmapWithIndP ixmapWithInd ixmapWithP ixmapWithixmapPsliceStrideWithPsliceStrideWith sliceStrideP sliceStride sliceWithP sliceWithslicePslicemapCArrayInPlaceindexesoffsetShapeFromThenTooffsetShapeFromTooffsetShapeFromTo'offsetsnormpnorm2normSup liftArrayP liftArray liftArray2P liftArray2 liftArray3P liftArray3unsafeInlinePerformIOmallocForeignPtrArrayAlignedmallocForeignPtrBytesAligned createCArrayunsafeCreateCArraybaseGHC.ForeignPtr ForeignPtrghc-prim GHC.TypesIOcastForeignPtr Data.MaybeNothing array-0.3.0.1Data.Array.BaseixmapGHC.IOunsafePerformIOGHC.ArrIxrangeindexinRange rangeSize unsafeThawthaw unsafeFreezefreeze mapIndicesmapArray getAssocsgetElems writeArray readArray newListArray newArray_newArray getBoundsMArrayamapaccum// accumArrayassocselemsindices! listArrayarrayboundsIArrayArray