úÎEÈ@M      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLD(c) 2001 The University of Glasgow (c) 2008 Jed Brown BSD-style jed@59A2.org experimental non-portableNone+3579'(Hack so that norms have a sensible type.IAbsolutely 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 MR (used internally here). The pointer should be used only during execution of the N7 action retured by the function passed as argument to  . 3If you want to use it afterwards, ensure that you  touchCArrayI after the last use of the pointer, so the array is not freed too early. O(1) Construct a  from an arbitrary M9. It is the caller's responsibility to ensure that the MB points to an area of memory sufficient for the specified bounds.O(1) Construct a  from an arbitrary M9. It is the caller's responsibility to ensure that the MB points to 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 O& and thus is not platform independent.O(1); Turn a ByteString into a CArray. Unsafe because it uses O0 and thus is not platform independent. Returns PÎ if the range specified is larger than the size of the ByteString or the start of the ByteString does not fulfil the alignment requirement of the resulting CArray (as specified by the Storable instance).8Hackish way to get the zero element for a Storable type.”O(1) reshape an array. The number of elements in the new shape must not exceed the number in the old shape. The elements are in C-style ordering. uO(1) make a rank 1 array from an arbitrary shape. It has the property that 'reshape (0, size a - 1) a == flatten a'.!©Generic slice and map. This takes the new range, the inverse map on indices, and function to produce the next element. It is the most general operation in its class."Less polymorphic version.#DPerform an operation on the elements, independent of their location.$Less polymorphic version.%More polymorphic version of ixmap.&.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.,-Contiguous sub-array without element mapping.-Less polymorphic version..+In-place map on CArray. Note that this is IN PLACEj so you should not retain any reference to the original. It flagrantly breaks referential transparency!4%p-norm on the array taken as a vector5C2-norm on the array taken as a vector (Frobenius norm for matrices)6'Sup norm on the array taken as a vector7Polymorphic version of amap.8/Equivalent to amap. Here for consistency only.9Polymorphic 2-array lift.:Less polymorphic version.;Polymorphic 3-array lift.<Less polymorphic version.=MAllocate an array which is 16-byte aligned. Essential for SIMD instructions.>ýAllocate memory which is 16-byte aligned. This is essential for SIMD instructions. We know that mallocPlainForeignPtrBytes will give word-aligned memory, so we pad enough to be able to return the desired amount of memory after aligning our pointer.?$Make a new CArray with an IO action.I  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL=  !"#$%&'()*+,-./0123456789:;<=>?@I L KJIH !"#$%&'()*+,-./0123456789:;<GFED=>?@CBAF  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL(c) 2008 Jed Brown BSD-style jed@59A2.org experimental non-portableNoneQRSTUVWXYZ[\]^_`ab  (c) 2008 Jed Brown BSD-style jed@59A2.org experimental non-portableNone7QRSTUcdefghijklmnop  !"#$%&'()*+,-456789:;<?$ !"#$%&'()*+,-789:;<456 ?q        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVQRWQXYQZ[QZ\QZ]QZ^QZ_`ab`ac`ad`ae`af`ag`ah`ai`aj`ak`al`am`an`ao`ap`aq`ar`as`at`au`av`aw`ax`ay`az`a{QZ|}carra_0knEbHaWNfXHhjHWPqudFhData.Array.CArrayData.Array.CArray.BaseData.Array.IOCArrayixsha_JGZV7QGlLDx4kOUEIV0i8TData.Ix.ShapablesizeshaperankShapableAbsabs_IOCArrayCArray withCArray withIOCArray touchIOCArrayunsafeForeignPtrToCArrayunsafeForeignPtrToIOCArray toForeignPtrunsafeCArrayToByteStringunsafeByteStringToCArraycopyfreezeIOCArrayunsafeFreezeIOCArray thawIOCArrayunsafeThawIOCArrayzeroElemunsafeArrayCArrayunsafeReplaceCArrayunsafeAccumCArrayunsafeAccumArrayCArrayeqCArray cmpCArray cmpIntCArrayreshapeflatten ixmapWithIndP ixmapWithInd ixmapWithP ixmapWithixmapPsliceStrideWithPsliceStrideWith sliceStrideP sliceStride sliceWithP sliceWithslicePslicemapCArrayInPlaceindexesoffsetShapeFromThenTooffsetShapeFromTooffsetShapeFromTo'offsetsnormpnorm2normSup liftArrayP liftArray liftArray2P liftArray2 liftArray3P liftArray3mallocForeignPtrArrayAlignedmallocForeignPtrBytesAligned createCArrayunsafeCreateCArray$fCoArbitraryCArray$fArbitraryCArray$fBinaryCArray$fAbsFloatFloat$fAbsDoubleDouble$fAbsComplexFloat$fAbsComplexDouble $fShowCArray $fOrdCArray $fEqCArray$fIArrayCArraye$fMArrayIOCArrayeIObaseGHC.ForeignPtr ForeignPtrghc-prim GHC.TypesIOcastForeignPtrGHC.BaseNothingGHC.ArrIxrangeindexinRange rangeSizearray_E0sTtauuKsGDLZoT7lTbgZData.Array.Basethawfreeze mapIndicesmapArray getAssocsgetElems writeArray readArray newListArray newArray_newArray getBoundsMArrayixmapamapaccum// accumArrayassocselemsindices! listArrayarrayboundsIArrayArray