public override double Dot(BaseVector y) { if (y is SparseFloatVector) { return(SparseFloatVector.Dot(this, (SparseFloatVector)y)); } if (y is SparseBoolVector) { return(SparseBoolVector.Dot(this, (SparseBoolVector)y)); } if (y is DoubleArrayVector) { return(Dot(this, (DoubleArrayVector)y)); } if (y is BoolArrayVector) { return(BoolArrayVector.Dot((BoolArrayVector)y, this)); } return(Dot(this, (FloatArrayVector)y)); }