package Ġnl . j ol an ren sen . efficient ly Discover ing T ernary L agged Corre lations . na ive Ċ Ċ import Ġorg . jetbrains . bio . vik tor . F 6 4 Flat Array Ċ import Ġjava . io . Serializable Ċ Ċ abstract Ġclass ĠAbstract Correlation Ġ: ĠSerializable Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġcorrelation Function ( ĊĠĠĠĠĠĠĠ Ġseries : ĠArray < F 6 4 Flat Array >, ĊĠĠĠĠĠĠĠ Ġextra Args : ĠArray < Correlation Extra Data >? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠDouble ĊĊĠĠĠ Ġabstract Ġfun Ġcorrelation Function ( ĊĠĠĠĠĠĠĠ Ġfirst Series : ĠF 6 4 Flat Array , ĊĠĠĠĠĠĠĠ Ġsecond Series : ĠF 6 4 Flat Array , ĊĠĠĠĠĠĠĠ Ġextra Args : ĠArray < Correlation Extra Data >? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠDouble ĊĊĠĠĠ Ġfun Ġcorrelation Function ( ĊĠĠĠĠĠĠĠ Ġfirst Series : ĠF 6 4 Flat Array , ĊĠĠĠĠĠĠĠ Ġvar arg Ġother Series : ĠF 6 4 Flat Array , ĊĠĠĠĠĠĠĠ Ġextra Args : ĠArray < Correlation Extra Data >? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠDouble Ġ= Ġcorrelation Function ( ĊĠĠĠĠĠĠĠ Ġseries Ġ= ĠarrayOf ( first Series , Ġ* other Series ), ĊĠĠĠĠĠĠĠ Ġextra Args Ġ= Ġextra Args , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// ĠReturn Ġtrue Ġof Ġthe Ġcorrelation Ġneeds Ġthese Ġvalues Ġin Ġthe ĠCorre lation Extra Data ĊĠĠĠ Ġabstract Ġval Ġneeds Mean : ĠBoolean ĊĠĠĠ Ġabstract Ġval Ġneeds Min : ĠBoolean ĊĠĠĠ Ġabstract Ġval Ġneeds Max : ĠBoolean ĊĠĠĠ Ġabstract Ġval Ġneeds Entropy : ĠBoolean ĊĊĠĠĠ Ġ// ĠNull Ġif Ġthere Ġisn 't Ġa Ġmax ĊĠĠĠ Ġabstract Ġval Ġmax Amount Of Series : ĠInt ? ĊĊĠĠĠ Ġ@ Throws ( IllegalArgumentException :: class ) ĊĠĠĠ Ġprotected Ġfun Ġcheck Requirements ( series : ĠArray < F 6 4 Flat Array >, Ġextra Args : ĠArray < Correlation Extra Data > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġseries . first (). length ĊĠĠĠĠĠĠĠ Ġrequire ( series . all Ġ{ Ġit . length Ġ== Ġn Ġ}) Ġ{ Ġ" All Ġseries Ġshould Ġhave Ġequal Ġlengths ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġmax Amount Of Series ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( series . size Ġ<= Ġit ) Ġ{ Ġ" Max Ġamount Ġof Ġtime Ġseries Ġfor Ġthis Ġcorrelation Ġfunction Ġis Ġ$ max Amount Of Series ." Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( needs Mean ) Ġrequire ( extra Args !!. all Ġ{ Ġit . mean Ġ!= Ġnull Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ( needs Min ) Ġrequire ( extra Args !!. all Ġ{ Ġit . min Ġ!= Ġnull Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ( needs Max ) Ġrequire ( extra Args !!. all Ġ{ Ġit . max Ġ!= Ġnull Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ( needs Entropy ) Ġrequire ( extra Args !!. all Ġ{ Ġit . entropy Ġ!= Ġnull Ġ}) ĊĠĠĠ Ġ} Ċ }