package Ġcom . s ud oplay . jo ise . module Ċ Ċ class ĠModule Combin er ( ĊĠĠĠ Ġprivate Ġvar Ġtype : ĠCombin er Type Ċ ) Ġ: ĠModule () Ġ{ ĊĊĠĠĠ Ġvar Ġsources Ġ= ĠarrayOf Null s < Scalar Parameter >( Module . MAX _ SOURCES ) ĊĊĠĠĠ Ġfun Ġset Source ( index : ĠInt , Ġsource : ĠModule ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsources [ index ] Ġ= ĠScalar Parameter ( source ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Source ( index : ĠInt , Ġsource : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsources [ index ] Ġ= ĠScalar Parameter ( source ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear All Sources () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsources [ i ] Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( x : ĠDouble , Ġy : ĠDouble ): ĠDouble Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCombin er Type . ADD Ġ-> Ġadd Get ( x , Ġy ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . AVG Ġ-> Ġavg Get ( x , Ġy ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MAX Ġ-> Ġmax Get ( x , Ġy ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MIN Ġ-> Ġmin Get ( x , Ġy ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MULT Ġ-> Ġmult Get ( x , Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠDouble Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCombin er Type . ADD Ġ-> Ġadd Get ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . AVG Ġ-> Ġavg Get ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MAX Ġ-> Ġmax Get ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MIN Ġ-> Ġmin Get ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MULT Ġ-> Ġmult Get ( x , Ġy , Ġz ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble ): ĠDouble Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCombin er Type . ADD Ġ-> Ġadd Get ( x , Ġy , Ġz , Ġw ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . AVG Ġ-> Ġavg Get ( x , Ġy , Ġz , Ġw ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MAX Ġ-> Ġmax Get ( x , Ġy , Ġz , Ġw ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MIN Ġ-> Ġmin Get ( x , Ġy , Ġz , Ġw ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MULT Ġ-> Ġmult Get ( x , Ġy , Ġz , Ġw ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( ĊĠĠĠĠĠĠĠ Ġx : ĠDouble , ĊĠĠĠĠĠĠĠ Ġy : ĠDouble , ĊĠĠĠĠĠĠĠ Ġz : ĠDouble , ĊĠĠĠĠĠĠĠ Ġw : ĠDouble , ĊĠĠĠĠĠĠĠ Ġu : ĠDouble , ĊĠĠĠĠĠĠĠ Ġv : ĠDouble ĊĠĠĠ Ġ): ĠDouble Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCombin er Type . ADD Ġ-> Ġadd Get ( x , Ġy , Ġz , Ġw , Ġu , Ġv ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . AVG Ġ-> Ġavg Get ( x , Ġy , Ġz , Ġw , Ġu , Ġv ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MAX Ġ-> Ġmax Get ( x , Ġy , Ġz , Ġw , Ġu , Ġv ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MIN Ġ-> Ġmin Get ( x , Ġy , Ġz , Ġw , Ġu , Ġv ) ĊĠĠĠĠĠĠĠ ĠCombin er Type . MULT Ġ-> Ġmult Get ( x , Ġy , Ġz , Ġw , Ġu , Ġv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Get ( x : ĠDouble , Ġy : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠADD ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠADD ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġfun Ġadd Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy , Ġz ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy , Ġz , Ġw ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Get ( ĊĠĠĠĠĠĠĠ Ġx : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble , Ġu : ĠDouble , ĊĠĠĠĠĠĠĠ Ġv : ĠDouble ĊĠĠĠ Ġ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy , Ġz , Ġw , Ġu , Ġv ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġavg Get ( x : ĠDouble , Ġy : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( count Ġ== Ġ 0 ) Ġ 0 . 0 Ġelse Ġvalue Ġ/ Ġcount . toDouble () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠAV G ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠAV G ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġfun Ġavg Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy , Ġz ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( count Ġ== Ġ 0 ) Ġ 0 . 0 Ġelse Ġvalue Ġ/ Ġcount . toDouble () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġavg Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy , Ġz , Ġw ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( count Ġ== Ġ 0 ) Ġ 0 . 0 Ġelse Ġvalue Ġ/ Ġcount . toDouble () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġavg Get ( ĊĠĠĠĠĠĠĠ Ġx : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble , Ġu : ĠDouble , ĊĠĠĠĠĠĠĠ Ġv : ĠDouble ĊĠĠĠ Ġ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ+= Ġsources [ i ] ! ![ x , Ġy , Ġz , Ġw , Ġu , Ġv ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( count Ġ== Ġ 0 ) Ġ 0 . 0 Ġelse Ġvalue Ġ/ Ġcount . toDouble () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmax Get ( x : ĠDouble , Ġy : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmx : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmx Ġ= Ġsources [ c ] ! ![ x , Ġy ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ> Ġmx ) Ġmx Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmx ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠMAX ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠMAX ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġfun Ġmax Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmx : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmx Ġ= Ġsources [ c ] ! ![ x , Ġy , Ġz ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy , Ġz ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ> Ġmx ) Ġmx Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmx ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmax Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmx : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmx Ġ= Ġsources [ c ] ! ![ x , Ġy , Ġz , Ġw ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy , Ġz , Ġw ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ> Ġmx ) Ġmx Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmx ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmax Get ( ĊĠĠĠĠĠĠĠ Ġx : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble , Ġu : ĠDouble , ĊĠĠĠĠĠĠĠ Ġv : ĠDouble ĊĠĠĠ Ġ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmx : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmx Ġ= Ġsources [ c ] ! ![ x , Ġy , Ġz , Ġw , Ġu , Ġv ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy , Ġz , Ġw , Ġu , Ġv ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ> Ġmx ) Ġmx Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmx ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin Get ( x : ĠDouble , Ġy : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmn : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmn Ġ= Ġsources [ c ] ! ![ x , Ġy ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< Ġmn ) Ġmn Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠMIN ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠMIN ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġfun Ġmin Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmn : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmn Ġ= Ġsources [ c ] ! ![ x , Ġy , Ġz ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy , Ġz ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< Ġmn ) Ġmn Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmn : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmn Ġ= Ġsources [ c ] ! ![ x , Ġy , Ġz , Ġw ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy , Ġz , Ġw ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< Ġmn ) Ġmn Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin Get ( ĊĠĠĠĠĠĠĠ Ġx : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble , Ġu : ĠDouble , ĊĠĠĠĠĠĠĠ Ġv : ĠDouble ĊĠĠĠ Ġ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmn : ĠDouble ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( c Ġ< ĠModule . MAX _ SOURCES Ġ&& Ġsources [ c ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( c Ġ== ĠModule . MAX _ SOURCES ) Ġreturn Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġmn Ġ= Ġsources [ c ] ! ![ x , Ġy , Ġz , Ġw , Ġu , Ġv ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġc Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ d ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġsources [ d ] ! ![ x , Ġy , Ġz , Ġw , Ġu , Ġv ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< Ġmn ) Ġmn Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmult Get ( x : ĠDouble , Ġy : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ*= Ġsources [ i ] ! ![ x , Ġy ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠM ULT ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġ// Ġ= ĠM ULT ĊĠĠĠ Ġ// Ġ================================================================= ========= ĊĠĠĠ Ġfun Ġmult Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ*= Ġsources [ i ] ! ![ x , Ġy , Ġz ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmult Get ( x : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ*= Ġsources [ i ] ! ![ x , Ġy , Ġz , Ġw ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmult Get ( ĊĠĠĠĠĠĠĠ Ġx : ĠDouble , Ġy : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble , Ġu : ĠDouble , ĊĠĠĠĠĠĠĠ Ġv : ĠDouble ĊĠĠĠ Ġ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠModule . MAX _ SOURCES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sources [ i ] Ġ!= Ġnull ) Ġvalue Ġ*= Ġsources [ i ] ! ![ x , Ġy , Ġz , Ġw , Ġu , Ġv ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠCombin er Type Ġ{ ĊĠĠĠĠĠĠĠ ĠADD , ĠM ULT , ĠMAX , ĠMIN , ĠAV G ĊĠĠĠ Ġ} Ċ Ċ } Ċ