// ĠCopyright Ġ 2 0 1 0 Ġthe ĠV 8 Ġproject Ġauthors . ĠAll Ġrights Ġreserved . Ċ // ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ċ // Ġmodification , Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ċ // Ġmet : Ċ // Ċ // ĠĠĠĠ Ġ* ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ċ // ĠĠĠĠĠĠ Ġnotice , Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ // ĠĠĠĠ Ġ* ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ċ // ĠĠĠĠĠĠ Ġcopyright Ġnotice , Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ċ // ĠĠĠĠĠĠ Ġdisclaimer Ġin Ġthe Ġdocumentation Ġand / or Ġother Ġmaterials Ġprovided Ċ // ĠĠĠĠĠĠ Ġwith Ġthe Ġdistribution . Ċ // ĠĠĠĠ Ġ* ĠNeither Ġthe Ġname Ġof ĠGoogle ĠInc . Ġnor Ġthe Ġnames Ġof Ġits Ċ // ĠĠĠĠĠĠ Ġcontributors Ġmay Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts Ġderived Ċ // ĠĠĠĠĠĠ Ġfrom Ġthis Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten Ġpermission . Ċ // Ċ // ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ċ // Ġ" AS ĠIS " ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT Ċ // ĠLIMITED ĠTO , ĠTHE ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR Ċ // ĠA ĠPARTICULAR ĠPURPOSE ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT Ċ // ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , Ċ // ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT Ċ // ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , Ċ // ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON ĠANY Ċ // ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ċ // Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE Ċ // ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ċ package Ġcom . ree va js . ree va . m fb t . impl Ċ Ċ import Ġcom . ree va js . ree va . m fb t . impl . ED o uble . Companion . DEN ORMAL _ EXP ONENT Ċ import Ġcom . ree va js . ree va . m fb t . impl . ED o uble . Companion . EXP ONENT _ BI AS Ċ import Ġcom . ree va js . ree va . m fb t . impl . ED o uble . Companion . HIDDEN _ BIT Ċ import Ġcom . ree va js . ree va . m fb t . impl . ED o uble . Companion . MAX _ EXP ONENT Ċ import Ġcom . ree va js . ree va . m fb t . impl . ED o uble . Companion . PHYSICAL _ SIGN IFIC AND _ SIZE Ċ import Ġcom . ree va js . ree va . m fb t . impl . ED o uble . Companion . SIGN IFIC AND _ MASK Ċ Ċ class ĠDi y Fp ( var Ġsignific and : ĠU Long , Ġvar Ġexponent : ĠInt ) Ġ{ ĊĠĠĠ Ġconstructor () Ġ: Ġthis ( 0 UL , Ġ 0 ) ĊĊĠĠĠ Ġoperator Ġfun Ġminus ( other : ĠDi y Fp ): ĠDi y Fp Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDi y Fp ( sign ific and Ġ- Ġother . sign ific and , Ġexponent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġtimes ( other : ĠDi y Fp ): ĠDi y Fp Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġsignific and Ġshr Ġ 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġsignific and Ġand ĠM 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġother . sign ific and Ġshr Ġ 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġother . sign ific and Ġand ĠM 3 2 ĊĠĠĠĠĠĠĠ Ġval Ġac Ġ= Ġa Ġ* Ġc ĊĠĠĠĠĠĠĠ Ġval Ġbc Ġ= Ġb Ġ* Ġc ĊĠĠĠĠĠĠĠ Ġval Ġad Ġ= Ġa Ġ* Ġd ĊĠĠĠĠĠĠĠ Ġval Ġbd Ġ= Ġb Ġ* Ġd ĊĊĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= Ġ( bd Ġshr Ġ 3 2 ) Ġ+ Ġ( ad Ġand ĠM 3 2 ) Ġ+ Ġ( bc Ġand ĠM 3 2 ) Ġ+ Ġ( 1 U Ġshl Ġ 3 1 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠDi y Fp ( ac Ġ+ Ġ( ad Ġshr Ġ 3 2 ) Ġ+ Ġ( bc Ġshr Ġ 3 2 ) Ġ+ Ġ( tmp Ġshr Ġ 3 2 ), Ġexponent Ġ+ Ġother . exponent Ġ+ Ġ 6 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnormalize () Ġ{ ĊĠĠĠĠĠĠĠ Ġexpect ( sign ific and Ġ!= Ġ 0 UL ) ĊĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġsignific and ĊĠĠĠĠĠĠĠ Ġvar Ġe Ġ= Ġexponent ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(( s Ġand ĠMS 1 0 BITS ) Ġ== Ġ 0 UL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ= Ġs Ġshl Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe Ġ-= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(( s Ġand ĠUINT 6 4 MSB ) Ġ== Ġ 0 UL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ= Ġs Ġshl Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe -- ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsignific and Ġ= Ġs ĊĠĠĠĠĠĠĠ Ġexponent Ġ= Ġe ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġieee . h : ĠDi y Fp ToU in 6 4 ĊĠĠĠ Ġfun Ġto UL ong (): ĠU Long Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġsignific and ĊĠĠĠĠĠĠĠ Ġvar Ġe Ġ= Ġexponent ĊĠĠĠĠĠĠĠ Ġwhile Ġ( s Ġ> ĠHID DEN _ BIT Ġ+ ĠSIGN IFIC AND _ MASK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ= Ġs Ġshr Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( e Ġ>= ĠMAX _ EXP ONENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠE Double . INFINITY ĊĠĠĠĠĠĠĠ Ġif Ġ( e Ġ< ĠD EN ORMAL _ EXP ONENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 UL ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( e Ġ> ĠD EN ORMAL _ EXP ONENT Ġ&& Ġ( s Ġand ĠHID DEN _ BIT ) Ġ== Ġ 0 UL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ= Ġs Ġshl Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe -- ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbi ased Exponent Ġ= Ġif Ġ( e Ġ== ĠD EN ORMAL _ EXP ONENT Ġ&& Ġ( s Ġand ĠHID DEN _ BIT ) Ġ== Ġ 0 UL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 UL ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ( e Ġ+ ĠEXP ONENT _ BI AS ). to UL ong () ĊĠĠĠĠĠĠĠ Ġreturn Ġ( s Ġand ĠSIGN IFIC AND _ MASK ) Ġor Ġ( bi ased Exponent Ġshl ĠPHY S ICAL _ SIGN IFIC AND _ SIZE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSIGN IFIC AND _ SIZE Ġ= Ġ 6 4 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠM 3 2 Ġ= Ġ 0 xFFFFFFFF UL ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMS 1 0 BITS Ġ= Ġ 0 xFF C 0 0 0 0 0 0 0 0 0 0 0 0 0 UL ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUINT 6 4 MSB Ġ= Ġ 0 x 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 UL ĊĊĠĠĠ Ġ} Ċ }