@@ -39,11 +39,13 @@ import ArrayFire.Internal.Defines
39
39
import ArrayFire.Internal.Types
40
40
import ArrayFire.Arith
41
41
42
- -- | Creates an 'Array' 'Double' from a scalar value
42
+ -- | Creates an 'Array' from a scalar value from given dimensions
43
43
--
44
- -- @
45
- -- >>> 'constant' \@'Double' [2,2] 2.0
46
- -- @
44
+ -- >>> constant @Double [2,2] 2.0
45
+ -- ArrayFire Array
46
+ -- [2 2 1 1]
47
+ -- 2.0000 2.0000
48
+ -- 2.0000 2.0000
47
49
constant
48
50
:: forall a . AFType a
49
51
=> [Int ]
@@ -356,6 +358,7 @@ joinMany (fromIntegral -> n) arrays = unsafePerformIO . mask_ $ do
356
358
-- 22.0000 22.0000 22.0000 22.0000 22.0000
357
359
-- 22.0000 22.0000 22.0000 22.0000 22.0000
358
360
-- 22.0000 22.0000 22.0000 22.0000 22.0000
361
+ --
359
362
tile
360
363
:: Array (a :: * )
361
364
-> [Int ]
@@ -375,6 +378,7 @@ tile _ _ = error "impossible"
375
378
-- 22.0000 22.0000 22.0000 22.0000 22.0000
376
379
-- 22.0000 22.0000 22.0000 22.0000 22.0000
377
380
-- 22.0000 22.0000 22.0000 22.0000 22.0000
381
+ --
378
382
reorder
379
383
:: Array (a :: * )
380
384
-> [Int ]
@@ -384,10 +388,12 @@ reorder a (take 4 . (++ repeat 0) -> [x,y,z,w]) =
384
388
reorder _ _ = error " impossible"
385
389
386
390
-- | Shift elements in an Array along a specified dimension (elements will wrap).
391
+ --
387
392
-- >>> shift (vector @Double 4 [1..]) 2 0 0 0
388
393
-- ArrayFire Array
389
394
-- [4 1 1 1]
390
395
-- 3.0000 4.0000 1.0000 2.0000
396
+ --
391
397
shift
392
398
:: Array (a :: * )
393
399
-> Int
@@ -406,6 +412,7 @@ shift a (fromIntegral -> x) (fromIntegral -> y) (fromIntegral -> z) (fromIntegra
406
412
-- 1.0000
407
413
-- 2.0000
408
414
-- 3.0000
415
+ --
409
416
moddims
410
417
:: forall a
411
418
. Array (a :: * )
@@ -433,6 +440,7 @@ moddims (Array fptr) dims =
433
440
-- ArrayFire Array
434
441
-- [8 1 1 1]
435
442
-- 1 1 1 1 1 1 1 1
443
+ --
436
444
flat
437
445
:: Array a
438
446
-> Array a
@@ -451,29 +459,58 @@ flat = (`op1` af_flat)
451
459
-- [2 2 1 1]
452
460
-- 3.0000 3.0000
453
461
-- 2.0000 2.0000
462
+ --
454
463
flip
455
464
:: Array a
456
465
-> Int
457
466
-> Array a
458
467
flip a (fromIntegral -> dim) =
459
468
a `op1` (\ p k -> af_flip p k dim)
460
469
470
+ -- | Create a lower triangular matrix from input array.
471
+ --
472
+ -- >>> lower (constant [2,2] 10 :: Array Double) True
473
+ -- ArrayFire Array
474
+ -- [2 2 1 1]
475
+ -- 1.0000 10.0000
476
+ -- 0.0000 1.0000
477
+ --
461
478
lower
462
479
:: Array a
480
+ -- ^ is the input matrix
463
481
-> Bool
482
+ -- ^ 'is_unit_diag' is a boolean parameter specifying if the diagonal elements should be 1
464
483
-> Array a
465
484
lower a (fromIntegral . fromEnum -> b) =
466
485
a `op1` (\ p k -> af_lower p k b)
467
486
487
+ -- | Create an upper triangular matrix from input array.
488
+ --
489
+ -- >>> upper (constant [2,2] 10 :: Array Double) True
490
+ -- ArrayFire Array
491
+ -- [2 2 1 1]
492
+ -- 1.0000 0.0000
493
+ -- 10.0000 1.0000
494
+ --
468
495
upper
469
496
:: Array a
470
497
-> Bool
471
498
-> Array a
472
499
upper a (fromIntegral . fromEnum -> b) =
473
500
a `op1` (\ p k -> af_upper p k b)
474
501
502
+ -- | Selects elements from two arrays based on the values of a binary conditional array.
503
+ --
504
+ -- >>> cond = vector @CBool 5 [1,0,1,0,1]
505
+ -- >>> arr1 = vector @Double 5 (repeat 1)
506
+ -- >>> arr2 = vector @Double 5 (repeat 2)
507
+ -- >>> select cond arr1 arr2
508
+ -- ArrayFire Array
509
+ -- [5 1 1 1]
510
+ -- 1.0000 2.0000 1.0000 2.0000 1.0000
511
+ --
475
512
select
476
- :: Array a
513
+ :: Array CBool
477
514
-> Array a
478
515
-> Array a
479
516
-> Array a
0 commit comments