package Ġorg . open rnd r . k art if ex Ċ Ċ import Ġorg . open rnd r . utils . Hashes Ċ Ċ class ĠVec 1 ( val Ġx : ĠDouble ) Ġ: ĠVec < Vec 1 > Ġ{ ĊĠĠĠ Ġfun Ġvec 2 ( y : ĠDouble ): ĠVec 2 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 2 ( x , Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvec 3 ( y : ĠDouble , Ġz : ĠDouble ): ĠVec 3 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 3 ( x , Ġy , Ġz ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvec 3 ( v : ĠVec 2 ): ĠVec 3 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 3 ( x , Ġv . x , Ġv . y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvec 4 ( y : ĠDouble , Ġz : ĠDouble , Ġw : ĠDouble ): ĠVec 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 4 ( x , Ġy , Ġz , Ġw ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvec 4 ( v : ĠVec 3 ): ĠVec 4 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 4 ( x , Ġv . x , Ġv . y , Ġv . z ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmap ( f : ĠDouble Unary Operator ): ĠVec 1 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 1 ( f ( x )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreduce ( f : ĠDouble Binary Operator , Ġinit : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġf ( init , Ġx ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreduce ( f : ĠDouble Binary Operator ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġzip ( v : ĠVec 1 , Ġf : ĠDouble Binary Operator ): ĠVec 1 Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠVec 1 ( f ( x , Ġv . x )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġevery ( f : ĠDouble Predicate ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġf ( x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġany ( f : ĠDouble Predicate ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġf ( x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnth ( idx : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( idx Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdim (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġarray (): ĠDouble Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdouble ArrayOf ( x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHas hes . hash ( x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġis ĠVec 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġx Ġ== Ġother . x ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġcompare To ( other : ĠVec 1 ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġx . compareTo ( other . x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Vec 1 ( x =$ x )" ĊĠĠĠ Ġ} Ċ } Ċ