added functions; still no support for constant vectors though (e.g. dp3(varVector3, ivec3(1,2,3)) will produce invalid code