@@ -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