@@ -97,14 +97,17 @@ import Data.Word
97
97
-- import qualified ArrayFire as A
98
98
--
99
99
-- main :: IO ()
100
- -- main = print $ A.matrix @Double (2 ,2) [[1,2],[3,4 ]]
100
+ -- main = print $ A.matrix @Double (3 ,2) [[1,2,3],[4,5,6 ]]
101
101
-- @
102
102
--
103
+ -- Each 'Array' is constructed and displayed in column-major order.
104
+ --
103
105
-- @
104
106
-- ArrayFire Array
105
- -- [2 2 1 1]
106
- -- 1.0000 2.0000
107
- -- 3.0000 4.0000
107
+ -- [3 2 1 1]
108
+ -- 1.0000 4.0000
109
+ -- 2.0000 5.0000
110
+ -- 3.0000 6.0000
108
111
-- @
109
112
110
113
-- $modules
@@ -128,7 +131,7 @@ import Data.Word
128
131
-- main = A.printArray action \`catch\` (\\(e :: A.AFException) -> print e)
129
132
-- where
130
133
-- action =
131
- -- A.matrix \@Double (3,3) [[[ 1..],[1..],[1..] ]]
134
+ -- A.matrix \@Double (3,3) [[1..],[1..],[1..]]
132
135
-- \`A.mul\` A.matrix \@Double (2,2) [[1..],[1..]]
133
136
-- @
134
137
--
@@ -140,6 +143,8 @@ import Data.Word
140
143
-- $construction
141
144
-- An 'Array' can be constructed using the following smart constructors:
142
145
--
146
+ -- /Note/: All smart constructors (and ArrayFire internally) assume column-major order.
147
+ --
143
148
-- @
144
149
-- >>> scalar \@Double 2.0
145
150
-- ArrayFire Array
@@ -151,15 +156,24 @@ import Data.Word
151
156
-- >>> vector \@Double 10 [1..]
152
157
-- ArrayFire Array
153
158
-- [10 1 1 1]
154
- -- 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000
159
+ -- 1.0000
160
+ -- 2.0000
161
+ -- 3.0000
162
+ -- 4.0000
163
+ -- 5.0000
164
+ -- 6.0000
165
+ -- 7.0000
166
+ -- 8.0000
167
+ -- 9.0000
168
+ -- 10.0000
155
169
-- @
156
170
--
157
171
-- @
158
172
-- >>> matrix \@Double (2,2) [[1,2],[3,4]]
159
173
-- ArrayFire Array
160
174
-- [2 2 1 1]
161
- -- 1.0000 2 .0000
162
- -- 3 .0000 4.0000
175
+ -- 1.0000 3 .0000
176
+ -- 2 .0000 4.0000
163
177
-- @
164
178
--
165
179
-- @
@@ -193,18 +207,27 @@ import Data.Word
193
207
--
194
208
-- Array construction can use Haskell's lazy lists, since 'take' is called on each dimension before sending to the C API.
195
209
--
196
- -- >>> mkArray @Double [2,2 ] [ [ 1..], [1..] ]
210
+ -- >>> mkArray @Double [5,3 ] [1..]
197
211
-- ArrayFire Array
198
- -- [10 1 1 1]
199
- -- 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000
200
- --
201
- -- Specifying up to 4 dimensions is allowed (anything high is ignored).
212
+ -- [5 3 1 1]
213
+ -- 1.0000 6.0000 11.0000
214
+ -- 2.0000 7.0000 12.0000
215
+ -- 3.0000 8.0000 13.0000
216
+ -- 4.0000 9.0000 14.0000
217
+ -- 5.0000 10.0000 15.0000
218
+ --
219
+ -- Specifying up to 4 dimensions is allowed (anything higher is ignored).
202
220
203
221
-- $laws
204
- -- Every 'Array' is an instance of 'Eq', 'Num', 'Fractional', 'Floating'
222
+ -- Every 'Array' has an instance of 'Eq', 'Num', 'Fractional', 'Floating' and 'Show '
205
223
--
206
224
-- 'Num'
207
225
--
226
+ -- >>> 2.0 :: Array Double
227
+ -- ArrayFire Array
228
+ -- [1 1 1 1]
229
+ -- 2.0000
230
+ --
208
231
-- >>> scalar @Int 1 + scalar @Int 1
209
232
-- ArrayFire Array
210
233
-- [1 1 1 1]
@@ -240,17 +263,40 @@ import Data.Word
240
263
-- >>> scalar @Double 1 [10] /= scalar @Double 1 [10]
241
264
-- False
242
265
--
243
- --
244
266
-- 'Floating'
245
267
--
246
268
-- >>> pi :: Array Double
247
269
-- ArrayFire Array
248
270
-- [1 1 1 1]
249
271
-- 3.1416
250
272
--
273
+ -- >>> A.sqrt pi :: Array Double
274
+ -- ArrayFire Array
275
+ -- [1 1 1 1]
276
+ -- 1.7725
277
+ --
278
+ -- 'Fractional'
279
+ --
280
+ -- >>> (pi :: Array Double) / pi
281
+ -- ArrayFire Array
282
+ -- [1 1 1 1]
283
+ -- 1.000
284
+ --
285
+ -- >>> recip 0.5 :: Array Double
286
+ -- ArrayFire Array
287
+ -- [1 1 1 1]
288
+ -- 2.000
289
+ --
290
+ -- 'Show'
291
+ --
292
+ -- >>> 0.0 :: Array Double
293
+ -- ArrayFire Array
294
+ -- [1 1 1 1]
295
+ -- 0.000
296
+ --
251
297
252
298
-- $conversion
253
- -- 'Array' can be exported into Haskell using `toVector'. This will create a Storable vector suitable for use in other C programs.
299
+ -- Any 'Array' can be exported into Haskell using `toVector'. This will create a Storable vector suitable for use in other C programs.
254
300
--
255
301
-- >>> vector :: Vector Double <- toVector <$> randu @Double [10,10]
256
302
--
@@ -271,9 +317,9 @@ import Data.Word
271
317
-- array <- A.'readArrayKey' "file.array" "key"
272
318
-- 'print' array
273
319
--
274
- -- ArrayFire Array
275
- -- [ 1 1 1 1 ]
276
- -- 10
320
+ -- -- ArrayFire Array
321
+ -- -- [ 1 1 1 1 ]
322
+ -- -- 10
277
323
-- @
278
324
--
279
325
@@ -287,6 +333,6 @@ import Data.Word
287
333
--
288
334
289
335
-- $visualization
290
- -- The ArrayFire API is able to visualize
336
+ -- The ArrayFire API is able to display visualizations using the Forge library
291
337
-- >>> window <- createWindow 800 600 "Histogram"
292
338
--
0 commit comments