/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 7 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġtemplates Ċ Ċ object ĠNumeric Ġ: ĠTemplate Group Base () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsequence Classification ( Sequence Class . terminal ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : Ġuse Ġjust Ġnumeric Primitives ĊĠĠĠ Ġprivate Ġval Ġnumeric Primitives Default Order Ġ= ĠPrimitive Type . default Primitives Ġintersect ĠPrimitive Type . numeric Primitives ĊĊĠĠĠ Ġval Ġf _ sum Ġ= Ġfn (" sum () ") Ġ{ ĊĠĠĠĠĠĠĠ ĠFamily . default F amilies . forEach Ġ{ Ġfamily Ġ-> Ġinclude ( family , Ġnumeric Primitives Default Order ) Ġ} ĊĠĠĠ Ġ} Ġbuilder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdoc Ġ{ Ġ" Returns Ġthe Ġsum Ġof Ġall Ġelements Ġin Ġthe Ġ${ f . collection } ." Ġ} ĊĠĠĠĠĠĠĠ Ġreturns (" SUM ") ĊĠĠĠĠĠĠĠ Ġplatform Name (" sum Of < T >") ĊĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum : ĠSUM Ġ= ĠZERO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġf _ average Ġ= Ġfn (" average () ") Ġ{ ĊĠĠĠĠĠĠĠ ĠFamily . default F amilies . forEach Ġ{ Ġfamily Ġ-> Ġinclude ( family , Ġnumeric Primitives Default Order ) Ġ} ĊĠĠĠ Ġ} Ġbuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġdoc Ġ{ Ġ" Returns Ġan Ġaverage Ġvalue Ġof Ġelements Ġin Ġthe Ġ${ f . collection } ." } ĊĠĠĠĠĠĠĠ Ġreturns (" Double ") ĊĠĠĠĠĠĠĠ Ġplatform Name (" average Of < T >") ĊĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum : ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( count Ġ== Ġ 0 ) ĠDouble . NaN Ġelse Ġsum Ġ/ Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ