Skip to content

Commit faee0d8

Browse files
authored
Document API according to column-major ordering. (#41)
Adjust various typos / infelicities in documentation.
1 parent 426aca1 commit faee0d8

File tree

18 files changed

+1107
-296
lines changed

18 files changed

+1107
-296
lines changed

src/ArrayFire.hs

Lines changed: 66 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,17 @@ import Data.Word
9797
-- import qualified ArrayFire as A
9898
--
9999
-- 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]]
101101
-- @
102102
--
103+
-- Each 'Array' is constructed and displayed in column-major order.
104+
--
103105
-- @
104106
-- 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
108111
-- @
109112

110113
-- $modules
@@ -128,7 +131,7 @@ import Data.Word
128131
-- main = A.printArray action \`catch\` (\\(e :: A.AFException) -> print e)
129132
-- where
130133
-- action =
131-
-- A.matrix \@Double (3,3) [[[1..],[1..],[1..]]]
134+
-- A.matrix \@Double (3,3) [[1..],[1..],[1..]]
132135
-- \`A.mul\` A.matrix \@Double (2,2) [[1..],[1..]]
133136
-- @
134137
--
@@ -140,6 +143,8 @@ import Data.Word
140143
-- $construction
141144
-- An 'Array' can be constructed using the following smart constructors:
142145
--
146+
-- /Note/: All smart constructors (and ArrayFire internally) assume column-major order.
147+
--
143148
-- @
144149
-- >>> scalar \@Double 2.0
145150
-- ArrayFire Array
@@ -151,15 +156,24 @@ import Data.Word
151156
-- >>> vector \@Double 10 [1..]
152157
-- ArrayFire Array
153158
-- [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
155169
-- @
156170
--
157171
-- @
158172
-- >>> matrix \@Double (2,2) [[1,2],[3,4]]
159173
-- ArrayFire Array
160174
-- [2 2 1 1]
161-
-- 1.0000 2.0000
162-
-- 3.0000 4.0000
175+
-- 1.0000 3.0000
176+
-- 2.0000 4.0000
163177
-- @
164178
--
165179
-- @
@@ -193,18 +207,27 @@ import Data.Word
193207
--
194208
-- Array construction can use Haskell's lazy lists, since 'take' is called on each dimension before sending to the C API.
195209
--
196-
-- >>> mkArray @Double [2,2] [ [1..], [1..] ]
210+
-- >>> mkArray @Double [5,3] [1..]
197211
-- 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).
202220

203221
-- $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'
205223
--
206224
-- 'Num'
207225
--
226+
-- >>> 2.0 :: Array Double
227+
-- ArrayFire Array
228+
-- [1 1 1 1]
229+
-- 2.0000
230+
--
208231
-- >>> scalar @Int 1 + scalar @Int 1
209232
-- ArrayFire Array
210233
-- [1 1 1 1]
@@ -240,17 +263,40 @@ import Data.Word
240263
-- >>> scalar @Double 1 [10] /= scalar @Double 1 [10]
241264
-- False
242265
--
243-
--
244266
-- 'Floating'
245267
--
246268
-- >>> pi :: Array Double
247269
-- ArrayFire Array
248270
-- [1 1 1 1]
249271
-- 3.1416
250272
--
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+
--
251297

252298
-- $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.
254300
--
255301
-- >>> vector :: Vector Double <- toVector <$> randu @Double [10,10]
256302
--
@@ -271,9 +317,9 @@ import Data.Word
271317
-- array <- A.'readArrayKey' "file.array" "key"
272318
-- 'print' array
273319
--
274-
-- ArrayFire Array
275-
-- [ 1 1 1 1 ]
276-
-- 10
320+
-- -- ArrayFire Array
321+
-- -- [ 1 1 1 1 ]
322+
-- -- 10
277323
-- @
278324
--
279325

@@ -287,6 +333,6 @@ import Data.Word
287333
--
288334

289335
-- $visualization
290-
-- The ArrayFire API is able to visualize
336+
-- The ArrayFire API is able to display visualizations using the Forge library
291337
-- >>> window <- createWindow 800 600 "Histogram"
292338
--

0 commit comments

Comments
 (0)