package Ġcom . ree va js . ree va . runtime . sing letons Ċ Ċ import Ġcom . ree va js . ree va . core . Agent Ċ import Ġcom . ree va js . ree va . core . realm . Realm Ċ import Ġcom . ree va js . ree va . runtime . JS Value Ċ import Ġcom . ree va js . ree va . runtime . Operations Ċ import Ġcom . ree va js . ree va . runtime . annotations . EC MA Impl Ċ import Ġcom . ree va js . ree va . runtime . builtins . Re ev a Builtin Ċ import Ġcom . ree va js . ree va . runtime . collections . JS Arguments Ċ import Ġcom . ree va js . ree va . runtime . objects . JS Object Ċ import Ġcom . ree va js . ree va . runtime . primitives . JS Number Ċ import Ġcom . ree va js . ree va . runtime . to Number Ċ import Ġcom . ree va js . ree va . runtime . to Uint 3 2 Ċ import Ġcom . ree va js . ree va . utils . to Value Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . random . Random Ċ Ċ @ Opt In ( Experimental Unsigned Types :: class ) Ċ class ĠJ SM ath Object Ġprivate Ġconstructor ( realm : ĠRealm ) Ġ: ĠJS Object ( realm , Ġrealm . object Proto ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init () ĊĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" E ", ĠJS Number ( 2 . 7 1 8 2 8 1 8 2 8 4 5 9 0 4 5 2 3 5 4 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" LN 1 0 ", ĠJS Number ( 2 . 3 0 2 5 8 5 0 9 2 9 9 4 0 4 6 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" LN 2 ", ĠJS Number ( 0 . 6 9 3 1 4 7 1 8 0 5 5 9 9 4 5 3 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" LOG 1 0 E ", ĠJS Number ( 0 . 4 3 4 2 9 4 4 8 1 9 0 3 2 5 1 8 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" LOG 2 E ", ĠJS Number ( 1 . 4 4 2 6 9 5 0 4 0 8 8 8 9 6 3 4 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" PI ", ĠJS Number ( 3 . 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" SQ RT 1 _ 2 ", ĠJS Number ( 0 . 7 0 7 1 0 6 7 8 1 1 8 6 5 4 7 6 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty (" SQ RT 2 ", ĠJS Number ( 1 . 4 1 4 2 1 3 5 6 2 3 7 3 0 9 5 1 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġdefine OwnProperty ( Realm . Well Known Symbols . toString Tag , Ġ" Math ". to Value (), Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġdefine Builtin (" abs ", Ġ 1 , ĠRe ev a Builtin . Math Abs ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" acos ", Ġ 1 , ĠRe ev a Builtin . Math A cos ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" ac osh ", Ġ 1 , ĠRe ev a Builtin . Math A co sh ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" asin ", Ġ 1 , ĠRe ev a Builtin . Math As in ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" as inh ", Ġ 1 , ĠRe ev a Builtin . Math As inh ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" atan ", Ġ 1 , ĠRe ev a Builtin . Math At an ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" atan h ", Ġ 1 , ĠRe ev a Builtin . Math At anh ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" atan 2 ", Ġ 2 , ĠRe ev a Builtin . Math At an 2 ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" c br t ", Ġ 1 , ĠRe ev a Builtin . Math C br t ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" ceil ", Ġ 1 , ĠRe ev a Builtin . Math Ce il ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" cl z 3 2 ", Ġ 1 , ĠRe ev a Builtin . Math Cl z 3 2 ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" cos ", Ġ 1 , ĠRe ev a Builtin . Math Cos ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" co sh ", Ġ 1 , ĠRe ev a Builtin . Math C osh ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" exp ", Ġ 1 , ĠRe ev a Builtin . Math Exp ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" exp m 1 ", Ġ 1 , ĠRe ev a Builtin . Math Exp m 1 ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" floor ", Ġ 1 , ĠRe ev a Builtin . Math Floor ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" f round ", Ġ 1 , ĠRe ev a Builtin . Math F round ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" h ypot ", Ġ 1 , ĠRe ev a Builtin . Math H ypot ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" im ul ", Ġ 1 , ĠRe ev a Builtin . Math Im ul ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" log ", Ġ 1 , ĠRe ev a Builtin . Math Log ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" log 1 p ", Ġ 1 , ĠRe ev a Builtin . Math Log 1 p ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" log 1 0 ", Ġ 1 , ĠRe ev a Builtin . Math Log 1 0 ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" log 2 ", Ġ 1 , ĠRe ev a Builtin . Math Log 2 ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" max ", Ġ 1 , ĠRe ev a Builtin . Math Max ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" min ", Ġ 1 , ĠRe ev a Builtin . Math Min ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" pow ", Ġ 1 , ĠRe ev a Builtin . Math Pow ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" random ", Ġ 1 , ĠRe ev a Builtin . Math Random ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" round ", Ġ 1 , ĠRe ev a Builtin . Math Round ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" sign ", Ġ 1 , ĠRe ev a Builtin . Math Sign ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" sin ", Ġ 1 , ĠRe ev a Builtin . Math Sin ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" sin h ", Ġ 1 , ĠRe ev a Builtin . Math S inh ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" sqrt ", Ġ 1 , ĠRe ev a Builtin . Math Sqrt ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" tan ", Ġ 1 , ĠRe ev a Builtin . Math Tan ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" tanh ", Ġ 1 , ĠRe ev a Builtin . Math T anh ) ĊĠĠĠĠĠĠĠ Ġdefine Builtin (" trunc ", Ġ 1 , ĠRe ev a Builtin . Math Trunc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( realm : ĠRealm Ġ= ĠAgent . active Agent . getActive Realm ()) Ġ= ĠJ SM ath Object ( realm ). also Ġ{ Ġit . init () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġabs ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . abs ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġa cos ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . acos ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 3 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġa co sh ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . ac osh ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 4 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġas in ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . asin ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 5 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġas inh ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . as inh ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 6 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġatan ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . atan ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 7 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġat anh ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . atan h ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 8 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġatan 2 ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 1 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . atan 2 ( y . as Double , Ġx . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 9 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġc br t ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble Val Ġ= Ġx . as Double ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double Val . isNaN () Ġ|| Ġdouble Val Ġ== Ġ 0 . 0 Ġ|| Ġdouble Val . isIn finite ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdouble Val . pow ( 1 . 0 Ġ/ Ġ 3 . 0 ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 0 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġceil ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . ceil ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 1 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcl z 3 2 ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Uint 3 2 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġx . as Int . to UInt (). count Leading Zero Bits (). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 2 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcos ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . cos ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 3 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcos h ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . co sh ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 4 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġexp ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . exp ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 5 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġexp m 1 ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . exp m 1 ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 6 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġfloor ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . floor ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 7 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġf round ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġx . as Double . toFloat (). toDouble (). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 8 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġh ypot ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġco er ced Ġ= Ġarguments . map Ġ{ Ġit . to Number () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġonly Zero Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġspec Ġsays Ġthe Ġfirst Ġparameter Ġthat Ġis ĠNaN Ġor ĠInfinity Ġshould Ġbe Ġreturned , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbut Ġfor Ġsome Ġreason Ġtest 2 6 2 Ġsays Ġdifferently . ĠApp arent ly Ġinfinity Ġshould Ġalways ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbe Ġpriorit ized ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( co er ced . any Ġ{ Ġit . isIn finite Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJS Number . POSITIVE _ INFINITY ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġco er ced . forEach Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . isNaN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! value . is Zero ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġonly Zero Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Zero ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJS Number . ZERO ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . sqrt ( co er ced . sum Of Ġ{ Ġit . as Double . pow ( 2 . 0 ) Ġ}). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 1 9 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġim ul ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġarguments . argument ( 0 ). to Uint 3 2 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġarguments . argument ( 1 ). to Uint 3 2 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= Ġ( a . as Int Ġ* Ġb . as Int ) Ġ% ĠOperations . MAX _ 3 2 BIT _ INT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( product Ġ>= ĠOperations . MAX _ 3 1 BIT _ INT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( product Ġ- ĠOperations . MAX _ 3 2 BIT _ INT ). to Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproduct . to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 0 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlog ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . ln ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 1 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlog 1 p ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . ln 1 p ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 2 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlog 1 0 ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . log 1 0 ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 3 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlog 2 ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . log 2 ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 4 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmax ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJS Number . NEGATIVE _ INFINITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġco er ced Ġ= Ġarguments . map Ġ{ Ġit . to Number () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġco er ced . max Of Ġ{ Ġit . as Double Ġ}. to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 5 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmin ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJS Number . POSITIVE _ INFINITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġco er ced Ġ= Ġarguments . map Ġ{ Ġit . to Number () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġco er ced . min Of Ġ{ Ġit . as Double Ġ}. to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 6 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġpow ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġarguments . argument ( 1 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbase . as Double . pow ( exp . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 7 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġrandom ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRandom . next Double (). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 8 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġround ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble Val Ġ= Ġx . as Double ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( double Val Ġ< Ġ 0 . 0 Ġ&& Ġdouble Val Ġ>= Ġ- 0 . 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJS Number . NEGATIVE _ ZERO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfrac Ġ= Ġkotlin . math . abs ( double Val Ġ- Ġdouble Val . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( frac Ġ== Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( double Val Ġ+ Ġ 0 . 5 ). toInt (). to Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . round ( double Val ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 2 9 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġsign ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . sign ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 3 0 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġsin ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . sin ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 3 1 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġsin h ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . sin h ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 3 2 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġsqrt ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . sqrt ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 3 3 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtan ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . tan ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 3 4 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġt anh ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . tanh ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ EC MA Impl (" 2 1 . 3 . 2 . 3 5 ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtrunc ( arguments : ĠJS Arguments ): ĠJS Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġarguments . argument ( 0 ). to Number () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkotlin . math . truncate ( x . as Double ). to Value () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ