@@ -42,7 +42,9 @@ module CustomDatatypes =
4242module 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.0 f ( normalFloat32Generator <| System.Random())
118+ |> Arb.fromGen
119+
100120 static member SByteType () =
101121 matrixGenerator
102122 |> genericSparseGenerator 0 y 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.0 f ( normalFloat32Generator <| System.Random())
175+ |> Arb.fromGen
176+
152177 static member SByteType () =
153178 matrixGenerator
154179 |> genericSparseGenerator 0 y 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.0 f ( normalFloat32Generator <| System.Random())
228+ |> Arb.fromGen
229+
200230 static member SByteType () =
201231 pairOfMatricesOfEqualSizeGenerator
202232 |> genericSparseGenerator 0 y 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.0 f ( normalFloat32Generator <| System.Random())
282+ |> Arb.fromGen
283+
249284 static member SByteType () =
250285 pairOfMatrixAndVectorOfCompatibleSizeGenerator
251286 |> genericSparseGenerator 0 y 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.0 f ( normalFloat32Generator <| System.Random())
343+ |> Arb.fromGen
344+
305345 static member SByteType () =
306346 pairOfVectorAndMatrixOfCompatibleSizeGenerator
307347 |> genericSparseGenerator 0 y 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.0 f ( normalFloat32Generator <| System.Random())
403+ |> Arb.fromGen
404+
360405 static member SByteType () =
361406 pairOfMatricesOfCompatibleSizeGenerator
362407 |> genericSparseGenerator 0 y 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.0 f ( normalFloat32Generator <| System.Random())
467+ |> Arb.fromGen
468+
419469 static member SByteType () =
420470 pairOfMatricesOfCompatibleSizeWithMaskGenerator
421471 |> genericSparseGenerator 0 y 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