@@ -51,7 +51,8 @@ constant
51
51
-> Array Double
52
52
constant dims val =
53
53
unsafePerformIO . mask_ $ do
54
- ptr <- alloca $ \ ptrPtr ->
54
+ ptr <- alloca $ \ ptrPtr -> do
55
+ zeroOutArray ptrPtr
55
56
withArray (fromIntegral <$> dims) $ \ dimArray -> do
56
57
throwAFError =<< af_constant ptrPtr val n dimArray typ
57
58
peek ptrPtr
@@ -76,7 +77,8 @@ constantComplex
76
77
-- ^ Scalar value
77
78
-> Array (Complex Double )
78
79
constantComplex dims val = unsafePerformIO . mask_ $ do
79
- ptr <- alloca $ \ ptrPtr -> mask_ $ do
80
+ ptr <- alloca $ \ ptrPtr -> do
81
+ zeroOutArray ptrPtr
80
82
withArray (fromIntegral <$> dims) $ \ dimArray -> do
81
83
throwAFError =<< af_constant_complex ptrPtr (realPart val) (imagPart val) n dimArray typ
82
84
peek ptrPtr
@@ -101,7 +103,8 @@ constantLong
101
103
-- ^ Scalar value
102
104
-> Array Int
103
105
constantLong dims val = unsafePerformIO . mask_ $ do
104
- ptr <- alloca $ \ ptrPtr ->
106
+ ptr <- alloca $ \ ptrPtr -> do
107
+ zeroOutArray ptrPtr
105
108
withArray (fromIntegral <$> dims) $ \ dimArray -> do
106
109
throwAFError =<< af_constant_long ptrPtr (fromIntegral val) n dimArray
107
110
peek ptrPtr
@@ -123,7 +126,8 @@ constantULong
123
126
-> Word64
124
127
-> Array Word64
125
128
constantULong dims val = unsafePerformIO . mask_ $ do
126
- ptr <- alloca $ \ ptrPtr -> mask_ $ do
129
+ ptr <- alloca $ \ ptrPtr -> do
130
+ zeroOutArray ptrPtr
127
131
withArray (fromIntegral <$> dims) $ \ dimArray -> do
128
132
throwAFError =<< af_constant_ulong ptrPtr (fromIntegral val) n dimArray
129
133
peek ptrPtr
@@ -142,6 +146,7 @@ range
142
146
-> IO (Array a )
143
147
range dims (fromIntegral -> k) = do
144
148
ptr <- alloca $ \ ptrPtr -> mask_ $ do
149
+ zeroOutArray ptrPtr
145
150
withArray (fromIntegral <$> dims) $ \ dimArray -> do
146
151
throwAFError =<< af_range ptrPtr n dimArray k typ
147
152
peek ptrPtr
157
162
:: forall a . AFType a
158
163
=> [Int ] -> [Int ] -> IO (Array a )
159
164
iota dims tdims = do
160
- ptr <- alloca $ \ ptrPtr -> mask_ $
165
+ ptr <- alloca $ \ ptrPtr -> mask_ $ do
166
+ zeroOutArray ptrPtr
161
167
withArray (fromIntegral <$> dims) $ \ dimArray ->
162
168
withArray (fromIntegral <$> tdims) $ \ tdimArray -> do
163
169
throwAFError =<< af_iota ptrPtr n dimArray tn tdimArray typ
@@ -184,6 +190,7 @@ identity
184
190
-> Array a
185
191
identity dims = unsafePerformIO . mask_ $ do
186
192
ptr <- alloca $ \ ptrPtr -> mask_ $ do
193
+ zeroOutArray ptrPtr
187
194
withArray (fromIntegral <$> dims) $ \ dimArray -> do
188
195
throwAFError =<< af_identity ptrPtr n dimArray typ
189
196
peek ptrPtr
@@ -229,6 +236,7 @@ joinMany (fromIntegral -> n) arrays = unsafePerformIO . mask_ $ do
229
236
forM_ fptrs $ \ fptr ->
230
237
withForeignPtr fptr (poke fPtrsPtr)
231
238
alloca $ \ aPtr -> do
239
+ zeroOutArray aPtr
232
240
throwAFError =<< af_join_many aPtr n nArrays fPtrsPtr
233
241
peek aPtr
234
242
Array <$>
@@ -274,6 +282,7 @@ moddims
274
282
moddims dims (Array fptr) =
275
283
unsafePerformIO . mask_ . withForeignPtr fptr $ \ ptr -> do
276
284
newPtr <- alloca $ \ aPtr -> do
285
+ zeroOutArray aPtr
277
286
withArray (fromIntegral <$> dims) $ \ dimsPtr -> do
278
287
throwAFError =<< af_moddims aPtr ptr n dimsPtr
279
288
peek aPtr
0 commit comments