@@ -1484,29 +1484,39 @@ end
14841484#
14851485# ##############################################################################
14861486
1487- function rand (rng:: AbstractRNG , S:: LaurentSeriesRing , val_range:: UnitRange{Int} , v... )
1487+ const LaurentSeriesRingOrField = Union{LaurentSeriesRing,LaurentSeriesField}
1488+
1489+ RandomExtensions. maketype (S:: LaurentSeriesRingOrField , :: UnitRange{Int} , _) = elem_type (S)
1490+
1491+ function RandomExtensions. make (S:: LaurentSeriesRingOrField , val_range:: UnitRange{Int} , vs... )
14881492 R = base_ring (S)
1489- f = S ( )
1490- x = gen (S)
1491- for i = 0 : S . prec_max - 1
1492- f += rand (rng, R, v ... )* x ^ i
1493+ if length (vs) == 1 && elem_type (R) == Random . gentype (vs[ 1 ] )
1494+ Make (S, val_range, vs[ 1 ]) # forward to default Make constructor
1495+ else
1496+ make (S, val_range, make ( R, vs ... ))
14931497 end
1494- return shift_left (f, rand (rng, val_range))
14951498end
14961499
1497- function rand (rng:: AbstractRNG , S:: LaurentSeriesField , val_range:: UnitRange{Int} , v... )
1500+ function rand (rng:: AbstractRNG ,
1501+ sp:: SamplerTrivial {<: Make3 {<: RingElement ,
1502+ <: LaurentSeriesRingOrField ,
1503+ UnitRange{Int}}})
1504+ S, val_range, v = sp[][1 : end ]
14981505 R = base_ring (S)
14991506 f = S ()
15001507 x = gen (S)
15011508 for i = 0 : S. prec_max - 1
1502- f += rand (rng, R, v ... )* x^ i
1509+ f += rand (rng, v )* x^ i
15031510 end
15041511 return shift_left (f, rand (rng, val_range))
15051512end
15061513
1507- function rand (S:: Union{LaurentSeriesRing,LaurentSeriesField} , val_range, v... )
1508- rand (Random. GLOBAL_RNG, S, val_range, v... )
1509- end
1514+ rand (rng:: AbstractRNG , S:: LaurentSeriesRingOrField , val_range:: UnitRange{Int} , v... ) =
1515+ rand (rng, make (S, val_range, v... ))
1516+
1517+ rand (S:: LaurentSeriesRingOrField , val_range, v... ) =
1518+ rand (GLOBAL_RNG, S, val_range, v... )
1519+
15101520
15111521# ##############################################################################
15121522#
0 commit comments