/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġkotlin . js Ċ Ċ // ĠTODO Ġuse Ġdeclarations Ġfrom Ġstdlib Ċ private Ġexternal Ġclass ĠArray Buffer ( size : ĠInt ) Ċ private Ġexternal Ġclass ĠFloat 6 4 Array ( buffer : ĠArray Buffer ) Ċ private Ġexternal Ġclass ĠFloat 3 2 Array ( buffer : ĠArray Buffer ) Ċ private Ġexternal Ġclass ĠInt 3 2 Array ( buffer : ĠArray Buffer ) Ċ Ċ private Ġval Ġbuf Ġ= ĠArray Buffer ( 8 ) Ċ // ĠTODO Ġuse Ġone ĠData View Ġinstead Ġof Ġbunch Ġof Ġtyped Ġviews . Ċ private Ġval Ġbuf Float 6 4 Ġ= ĠFloat 6 4 Array ( buf ). unsafe Cast < Double Array >() Ċ private Ġval Ġbuf Float 3 2 Ġ= ĠFloat 3 2 Array ( buf ). unsafe Cast < Float Array >() Ċ private Ġval Ġbuf Int 3 2 Ġ= ĠInt 3 2 Array ( buf ). unsafe Cast < IntArray >() Ċ Ċ private Ġval Ġlow Index Ġ= Ġrun Ġ{ ĊĠĠĠ Ġbuf Float 6 4 [ 0 ] Ġ= Ġ- 1 . 0 Ġ Ġ// Ġb ff 0 0 0 0 0 _ 0 0 0 0 0 0 0 0 ĊĠĠĠ Ġif Ġ( buf Int 3 2 [ 0 ] Ġ!= Ġ 0 ) Ġ 1 Ġelse Ġ 0 Ċ } Ċ private Ġval Ġhigh Index Ġ= Ġ 1 Ġ- Ġlow Index Ċ Ċ internal Ġfun Ġdouble To Raw Bits ( value : ĠDouble ): ĠLong Ġ{ ĊĠĠĠ Ġbuf Float 6 4 [ 0 ] Ġ= Ġvalue ĊĠĠĠ Ġreturn ĠLong ( buf Int 3 2 [ low Index ], Ġbuf Int 3 2 [ high Index ]) Ċ } Ċ Ċ @ Published Api Ċ internal Ġfun Ġdouble From Bits ( value : ĠLong ): ĠDouble Ġ{ ĊĠĠĠ Ġbuf Int 3 2 [ low Index ] Ġ= Ġvalue . low ĊĠĠĠ Ġbuf Int 3 2 [ high Index ] Ġ= Ġvalue . high ĊĠĠĠ Ġreturn Ġbuf Float 6 4 [ 0 ] Ċ } Ċ Ċ internal Ġfun Ġfloat To Raw Bits ( value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠ Ġbuf Float 3 2 [ 0 ] Ġ= Ġvalue ĊĠĠĠ Ġreturn Ġbuf Int 3 2 [ 0 ] Ċ } Ċ Ċ @ Published Api Ċ internal Ġfun Ġfloat From Bits ( value : ĠInt ): ĠFloat Ġ{ ĊĠĠĠ Ġbuf Int 3 2 [ 0 ] Ġ= Ġvalue ĊĠĠĠ Ġreturn Ġbuf Float 3 2 [ 0 ] Ċ } Ċ Ċ // Ġreturns Ġzero Ġvalue Ġfor Ġnumber Ġwith Ġpositive Ġsign Ġbit Ġand Ġnon - zero Ġvalue Ġfor Ġnumber Ġwith Ġnegative Ġsign Ġbit . Ċ internal Ġfun Ġdouble Sign Bit ( value : ĠDouble ): ĠInt Ġ{ ĊĠĠĠ Ġbuf Float 6 4 [ 0 ] Ġ= Ġvalue ĊĠĠĠ Ġreturn Ġbuf Int 3 2 [ high Index ] Ġand ĠInt . MIN _ VALUE Ċ } Ċ Ċ internal Ġfun Ġget Number HashCode ( obj : ĠDouble ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( js Bit wise Or ( obj , Ġ 0 ). unsafe Cast < Double >() Ġ=== Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobj . toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbuf Float 6 4 [ 0 ] Ġ= Ġobj ĊĠĠĠ Ġreturn Ġbuf Int 3 2 [ high Index ] Ġ* Ġ 3 1 Ġ+ Ġbuf Int 3 2 [ low Index ] Ċ } Ċ