package Ġio . kot est . property . ar bitrary Ċ Ċ import Ġio . kot est . property . Ar b Ċ import Ġio . kot est . property . Gen Ċ import Ġio . kot est . property . Shrink er Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . round Ċ Ċ private Ġval Ġnumeric Edge Cases Ġ= ĠlistOf (- 1 . 0 F , Ġ- Float . MIN _ VALUE , Ġ- 0 . 0 F , Ġ 0 . 0 F , ĠFloat . MIN _ VALUE , Ġ 1 . 0 F ) Ċ Ċ private Ġval Ġnon Finite Edge Cases Ġ= ĠlistOf ( Float . NEGATIVE _ INFINITY , ĠFloat . NaN , ĠFloat . POSITIVE _ INFINITY ) Ċ Ċ object ĠFloat Shrink er Ġ: ĠSh rink er < Float > Ġ{ ĊĠĠ Ġoverride Ġfun Ġshrink ( value : ĠFloat ): ĠList < Float > Ġ{ ĊĠĠĠĠĠ Ġif Ġ( value Ġ== Ġ 0 f Ġ|| Ġ! value . is Finite ()) ĊĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĊĠĠĠĠĠ Ġval Ġbits Ġ= Ġvalue . to Bits () ĊĊĠĠĠĠĠ Ġreturn Ġif Ġ( bits Ġand Ġ 0 x 0 0 7 F _ FFFF Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠ ĠlistOf ( Float . from Bits ( bits Ġand Ġ( bits Ġ- Ġ 1 ))) ĊĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġan Ġ[ Ar b ] Ġthat Ġproduces Ġ[ Float ] s Ġfrom Ġ[ min ] Ġto Ġ[ max ] Ġ( inclusive ). Ċ Ġ* ĠThe Ġedge Ġcases Ġare Ġ[ Float . NEGATIVE _ INFINITY ], Ġ[ min ], Ġ- 1 . 0 , Ġ- [ Float . MIN _ VALUE ], Ġ- 0 . 0 , Ġ 0 . 0 , Ġ[ Float . MIN _ VALUE ], Ġ 1 . 0 , Ċ Ġ* Ġ[ max ], Ġ[ Float . POSITIVE _ INFINITY ] Ġand Ġ[ Float . NaN ] Ġwhich Ġare Ġonly Ġincluded Ġif Ġthey Ġare Ġin Ġthe Ġprovided Ġrange . Ċ Ġ* Ċ Ġ* Ġ@ see Ġnumeric Float Ġto Ġonly Ġproduce Ġnumeric Ġ[ Float ] s Ċ Ġ*/ Ċ fun ĠA rb . Companion . float ( min : ĠFloat Ġ= Ġ- Float . MAX _ VALUE , Ġmax : ĠFloat Ġ= ĠFloat . MAX _ VALUE ): ĠA rb < Float > Ġ= Ġfloat ( min .. max ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġan Ġ[ Ar b ] Ġthat Ġproduces Ġ[ Float ] s Ġin Ġ[ range ]. Ċ Ġ* ĠThe Ġedge Ġcases Ġare Ġ[ Float . NEGATIVE _ INFINITY ], Ġ[ Closed Floating Point Range . start ], Ġ- 1 . 0 , Ġ- [ Float . MIN _ VALUE ], Ġ- 0 . 0 , Ċ Ġ* Ġ 0 . 0 , Ġ[ Float . MIN _ VALUE ], Ġ 1 . 0 , Ġ[ Closed Floating Point Range . end Inclusive ], Ġ[ Float . POSITIVE _ INFINITY ] Ġand Ġ[ Float . NaN ] Ġwhich Ċ Ġ* Ġare Ġonly Ġincluded Ġif Ġthey Ġare Ġin Ġthe Ġprovided Ġrange . Ċ Ġ*/ Ċ fun ĠA rb . Companion . float ( range : ĠClosed Floating Point Range < Float > Ġ= Ġ- Float . MAX _ VALUE .. Float . MAX _ VALUE ): ĠA rb < Float > Ġ= ĊĠĠ Ġarbitrary ( ĊĠĠĠĠĠ Ġ( numeric Edge Cases . filter Ġ{ Ġit Ġin Ġrange Ġ} Ġ+ Ġnon Finite Edge Cases Ġ+ ĠlistOf ( range . start , Ġrange . end Inclusive )) ĊĠĠĠĠĠĠĠĠ Ġ. distinct (), ĊĠĠĠĠĠ ĠFloat Shrink er ĊĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġit . random . next Double ( range . start . toDouble (), Ġrange . end Inclusive . toDouble ()). toFloat () ĊĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠReturns Ġan Ġ[ Ar b ] Ġthat Ġproduces Ġpositive Ġ[ Float ] s Ġfrom Ġ[ Float . MIN _ VALUE ] Ġto Ġ[ max ] Ġ( inclusive ). Ċ Ġ* ĠThe Ġedge Ġcases Ġare Ġ[ Float . MIN _ VALUE ], Ġ 1 . 0 , Ġ[ max ] Ġand Ġ[ Float . POSITIVE _ INFINITY ] Ġwhich Ġare Ġonly Ġincluded Ġif Ġthey Ġare Ċ Ġ* Ġin Ġthe Ġprovided Ġrange . Ċ Ġ*/ Ċ fun ĠA rb . Companion . positive Float (): ĠA rb < Float > Ġ= Ġfloat ( Float . MIN _ VALUE , ĠFloat . MAX _ VALUE ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġan Ġ[ Ar b ] Ġthat Ġproduces Ġnegative Ġ[ Float ] s Ġfrom Ġ[ min ] Ġto Ġ- [ Float . MIN _ VALUE ] Ġ( inclusive ). Ċ Ġ* ĠThe Ġedge Ġcases Ġare Ġ[ Float . NEGATIVE _ INFINITY ], Ġ[ min ], Ġ- 1 . 0 Ġand Ġ- [ Float . MIN _ VALUE ] Ġwhich Ġare Ġonly Ġincluded Ġif Ġthey Ċ Ġ* Ġare Ġin Ġthe Ġprovided Ġrange . Ċ Ġ*/ Ċ fun ĠA rb . Companion . negative Float (): ĠA rb < Float > Ġ= Ġfloat (- Float . MAX _ VALUE , Ġ- Float . MIN _ VALUE ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġan Ġ[ Ar b ] Ġthat Ġproduces Ġnumeric Ġ[ Float ] s Ġfrom Ġ[ min ] Ġto Ġ[ max ] Ġ( inclusive ). Ċ Ġ* ĠThe Ġedge Ġcases Ġare Ġ[ min ], Ġ- 1 . 0 , Ġ- [ Float . MIN _ VALUE ], Ġ- 0 . 0 , Ġ 0 . 0 , Ġ[ Float . MIN _ VALUE ], Ġ 1 . 0 Ġand Ġ[ max ] Ġwhich Ġare Ġonly Ċ Ġ* Ġincluded Ġif Ġthey Ġare Ġin Ġthe Ġprovided Ġrange . Ċ Ġ* Ċ Ġ* Ġ@ see Ġfloat Ġto Ġalso Ġhave Ġnon Ġnumeric Ġ[ Float ] s Ġas Ġedge Ġcases . Ċ Ġ*/ Ċ fun ĠA rb . Companion . numeric Float ( ĊĠĠ Ġmin : ĠFloat Ġ= Ġ- Float . MAX _ VALUE , ĊĠĠ Ġmax : ĠFloat Ġ= ĠFloat . MAX _ VALUE Ċ ): ĠA rb < Float > Ġ= Ġarbitrary (( numeric Edge Cases . filter Ġ{ Ġit Ġin Ġmin .. max Ġ} Ġ+ ĠlistOf ( min , Ġmax )). distinct (), ĠFloat Shrink er ) Ġ{ ĊĠĠ Ġit . random . next Double ( min . toDouble (), Ġmax . toDouble ()). toFloat () Ċ } Ċ Ċ @ Deprecated (" use Ġnumeric Float ", ĠReplace With (" numeric Float ( from , Ġto ) ")) Ċ fun ĠA rb . Companion . numeric Float s ( from : ĠFloat Ġ= Ġ- Float . MAX _ VALUE , Ġto : ĠFloat Ġ= ĠFloat . MAX _ VALUE ): ĠA rb < Float > Ġ= ĊĠĠ Ġnumeric Float ( from , Ġto ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġan Ġ[ Ar b ] Ġthat Ġproduces Ġ[ Float Array ] s Ġwhere Ġ[ length ] Ġproduces Ġthe Ġlength Ġof Ġthe Ġarrays Ġand Ċ Ġ* Ġ[ content ] Ġproduces Ġthe Ġcontent Ġof Ġthe Ġarrays . Ċ Ġ*/ Ċ fun ĠA rb . Companion . float Array ( length : ĠGen < Int >, Ġcontent : ĠA rb < Float >): ĠA rb < Float Array > Ġ= ĊĠĠ Ġto Primitive Array ( length , Ġcontent , ĠCollection < Float >:: toFloat Array ) Ċ