Skip to content

Commit d93681d

Browse files
committed
add: normal float32 generator
1 parent e52e47b commit d93681d

1 file changed

Lines changed: 85 additions & 14 deletions

File tree

tests/GraphBLAS-sharp.Tests/Helpers.fs

Lines changed: 85 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ module CustomDatatypes =
4242
module Generators =
4343
let logger = Log.create "Generators"
4444

45-
// TODO уточнить, что пустые матрицы тоже генерятся
45+
/// <remarks>
46+
/// Generates empty matrices as well.
47+
/// </remarks>
4648
let dimension2DGenerator =
4749
Gen.sized
4850
<| fun size -> Gen.choose (1, size) |> Gen.two
@@ -51,6 +53,19 @@ module Generators =
5153
Gen.sized
5254
<| fun size -> Gen.choose (1, size) |> Gen.three
5355

56+
let rec normalFloat32Generator (random: System.Random) =
57+
gen {
58+
let buffer = Array.zeroCreate<byte> 4
59+
random.NextBytes buffer
60+
61+
let result = System.BitConverter.ToSingle(buffer, 0)
62+
63+
if System.Single.IsNormal result then
64+
return result
65+
else
66+
return! normalFloat32Generator random
67+
}
68+
5469
let genericSparseGenerator zero valuesGen handler =
5570
let maxSparsity = 100
5671
let sparsityGen = Gen.choose (0, maxSparsity)
@@ -97,6 +112,11 @@ module Generators =
97112
|> Gen.map float)
98113
|> Arb.fromGen
99114

115+
static member Float32Type() =
116+
matrixGenerator
117+
|> genericSparseGenerator 0.0f (normalFloat32Generator <| System.Random())
118+
|> Arb.fromGen
119+
100120
static member SByteType() =
101121
matrixGenerator
102122
|> genericSparseGenerator 0y Arb.generate<sbyte>
@@ -149,6 +169,11 @@ module Generators =
149169
|> Gen.map float)
150170
|> Arb.fromGen
151171

172+
static member Float32Type() =
173+
matrixGenerator
174+
|> genericSparseGenerator 0.0f (normalFloat32Generator <| System.Random())
175+
|> Arb.fromGen
176+
152177
static member SByteType() =
153178
matrixGenerator
154179
|> genericSparseGenerator 0y Arb.generate<sbyte>
@@ -197,6 +222,11 @@ module Generators =
197222
|> Gen.map float)
198223
|> Arb.fromGen
199224

225+
static member Float32Type() =
226+
pairOfMatricesOfEqualSizeGenerator
227+
|> genericSparseGenerator 0.0f (normalFloat32Generator <| System.Random())
228+
|> Arb.fromGen
229+
200230
static member SByteType() =
201231
pairOfMatricesOfEqualSizeGenerator
202232
|> genericSparseGenerator 0y Arb.generate<sbyte>
@@ -246,6 +276,11 @@ module Generators =
246276
|> Gen.map float)
247277
|> Arb.fromGen
248278

279+
static member Float32Type() =
280+
pairOfMatrixAndVectorOfCompatibleSizeGenerator
281+
|> genericSparseGenerator 0.0f (normalFloat32Generator <| System.Random())
282+
|> Arb.fromGen
283+
249284
static member SByteType() =
250285
pairOfMatrixAndVectorOfCompatibleSizeGenerator
251286
|> genericSparseGenerator 0y Arb.generate<sbyte>
@@ -302,6 +337,11 @@ module Generators =
302337
|> Gen.map float)
303338
|> Arb.fromGen
304339

340+
static member Float32Type() =
341+
pairOfVectorAndMatrixOfCompatibleSizeGenerator
342+
|> genericSparseGenerator 0.0f (normalFloat32Generator <| System.Random())
343+
|> Arb.fromGen
344+
305345
static member SByteType() =
306346
pairOfVectorAndMatrixOfCompatibleSizeGenerator
307347
|> genericSparseGenerator 0y Arb.generate<sbyte>
@@ -357,6 +397,11 @@ module Generators =
357397
|> Gen.map float)
358398
|> Arb.fromGen
359399

400+
static member Float32Type() =
401+
pairOfMatricesOfCompatibleSizeGenerator
402+
|> genericSparseGenerator 0.0f (normalFloat32Generator <| System.Random())
403+
|> Arb.fromGen
404+
360405
static member SByteType() =
361406
pairOfMatricesOfCompatibleSizeGenerator
362407
|> genericSparseGenerator 0y Arb.generate<sbyte>
@@ -416,6 +461,11 @@ module Generators =
416461
|> Gen.map float)
417462
|> Arb.fromGen
418463

464+
static member Float32Type() =
465+
pairOfMatricesOfCompatibleSizeWithMaskGenerator
466+
|> genericSparseGenerator 0.0f (normalFloat32Generator <| System.Random())
467+
|> Arb.fromGen
468+
419469
static member SByteType() =
420470
pairOfMatricesOfCompatibleSizeWithMaskGenerator
421471
|> genericSparseGenerator 0y Arb.generate<sbyte>
@@ -481,6 +531,12 @@ module Generators =
481531
|> Gen.map float)
482532
|> Arb.fromGen
483533

534+
static member Float32Type() =
535+
arrayOfDistinctKeysGenerator
536+
<| Arb.generate<int>
537+
<| (normalFloat32Generator <| System.Random())
538+
|> Arb.fromGen
539+
484540
static member SByteType() =
485541
arrayOfDistinctKeysGenerator
486542
<| Arb.generate<int>
@@ -542,13 +598,18 @@ module Generators =
542598
arrayOfAscendingKeysGenerator <| Arb.generate<int>
543599
|> Arb.fromGen
544600

545-
static member FloatType() =
601+
static member FloatType() = // (float32Generator <| System.Random())
546602
arrayOfAscendingKeysGenerator
547603
<| (Arb.Default.NormalFloat()
548604
|> Arb.toGen
549605
|> Gen.map float)
550606
|> Arb.fromGen
551607

608+
static member Float32Type() =
609+
arrayOfAscendingKeysGenerator
610+
<| (normalFloat32Generator <| System.Random())
611+
|> Arb.fromGen
612+
552613
static member SByteType() =
553614
arrayOfAscendingKeysGenerator
554615
<| Arb.generate<sbyte>
@@ -585,7 +646,7 @@ module Generators =
585646
|> Arb.fromGen
586647

587648
type BufferCompatibleVector() =
588-
static let pairOfVectorsOfEqualSize (valuesGenerator: Gen<'a>) =
649+
static let compatibleVector (valuesGenerator: Gen<'a>) =
589650
gen {
590651
let! length = Gen.sized <| fun size -> Gen.choose (1, size)
591652

@@ -595,42 +656,47 @@ module Generators =
595656
}
596657

597658
static member IntType() =
598-
pairOfVectorsOfEqualSize <| Arb.generate<int>
659+
compatibleVector <| Arb.generate<int>
599660
|> Arb.fromGen
600661

601662
static member FloatType() =
602-
pairOfVectorsOfEqualSize
663+
compatibleVector
603664
<| (Arb.Default.NormalFloat()
604665
|> Arb.toGen
605666
|> Gen.map float)
606667
|> Arb.fromGen
607668

669+
static member Float32Type() =
670+
compatibleVector
671+
<| (normalFloat32Generator <| System.Random())
672+
|> Arb.fromGen
673+
608674
static member SByteType() =
609-
pairOfVectorsOfEqualSize <| Arb.generate<sbyte>
675+
compatibleVector <| Arb.generate<sbyte>
610676
|> Arb.fromGen
611677

612678
static member ByteType() =
613-
pairOfVectorsOfEqualSize <| Arb.generate<byte>
679+
compatibleVector <| Arb.generate<byte>
614680
|> Arb.fromGen
615681

616682
static member Int16Type() =
617-
pairOfVectorsOfEqualSize <| Arb.generate<int16>
683+
compatibleVector <| Arb.generate<int16>
618684
|> Arb.fromGen
619685

620686
static member UInt16Type() =
621-
pairOfVectorsOfEqualSize <| Arb.generate<uint16>
687+
compatibleVector <| Arb.generate<uint16>
622688
|> Arb.fromGen
623689

624690
static member Int32Type() =
625-
pairOfVectorsOfEqualSize <| Arb.generate<int32>
691+
compatibleVector <| Arb.generate<int32>
626692
|> Arb.fromGen
627693

628694
static member UInt32Type() =
629-
pairOfVectorsOfEqualSize <| Arb.generate<uint32>
695+
compatibleVector <| Arb.generate<uint32>
630696
|> Arb.fromGen
631697

632698
static member BoolType() =
633-
pairOfVectorsOfEqualSize <| Arb.generate<bool>
699+
compatibleVector <| Arb.generate<bool>
634700
|> Arb.fromGen
635701

636702
type PairOfVectorsOfEqualSize() =
@@ -656,6 +722,11 @@ module Generators =
656722
|> Gen.map float)
657723
|> Arb.fromGen
658724

725+
static member Float32Type() =
726+
pairOfVectorsOfEqualSize
727+
<| (normalFloat32Generator <| System.Random())
728+
|> Arb.fromGen
729+
659730
static member SByteType() =
660731
pairOfVectorsOfEqualSize <| Arb.generate<sbyte>
661732
|> Arb.fromGen
@@ -812,7 +883,7 @@ module Context =
812883
.ToString())
813884
|> Seq.filter
814885
(fun device ->
815-
let isAvaliable =
886+
let isAvailable =
816887
Cl
817888
.GetDeviceInfo(device, DeviceInfo.Available, &e)
818889
.CastTo<bool>()
@@ -828,7 +899,7 @@ module Context =
828899
.ToString()
829900

830901
(Regex platformRegex).IsMatch platformName
831-
&& isAvaliable)
902+
&& isAvailable)
832903
|> Seq.map
833904
(fun device ->
834905
let platform =

0 commit comments

Comments
 (0)