added dotProduct() and crossProduct(), defined operator* and operator^ in terms of these