Navigation

dot_product

EXPRESS specification:

FUNCTION dot_product
(arg1, arg2 : direction) : REAL;
   LOCAL
 scalar : REAL;
 vec1, vec2: direction;
 ndim : INTEGER;
   END_LOCAL;
 
   IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN
 scalar := ?;
 
   ELSE
 IF (arg1.dim <> arg2.dim) THEN
 scalar := ?;
 
 ELSE
 BEGIN
 vec1 := normalise(arg1);
 vec2 := normalise(arg2);
 ndim := arg1.dim;
 scalar := 0.0;
 REPEAT i := 1 TO ndim;
scalar := scalar + vec1.direction_ratios[i]*vec2.direction_ratios[i];
 END_REPEAT;
 END;
 END_IF;
   END_IF;
 RETURN (scalar);
END_FUNCTION;