M: A v*n A-with v* ; inline
M: A v/n A-with v/ ; inline
M: A norm-sq dup v. assert-positive ; inline
-M: A norm norm-sq sqrt ; inline
-M: A distance v- norm ; inline
+M: A distance v- norm ; inline
M: A >pprint-sequence ;
M: A pprint* pprint-object ;
GENERIC: norm-sq ( v -- x )
M: object norm-sq [ absq ] [ + ] map-reduce ;
-GENERIC: norm ( v -- x )
-M: object norm norm-sq sqrt ;
+: norm ( v -- x ) norm-sq sqrt ; inline
: normalize ( u -- v ) dup norm v/n ; inline
HINTS: M\ object vneg { array } ;
HINTS: M\ object norm-sq { array } ;
-HINTS: M\ object norm { array } ;
+HINTS: norm { array } ;
HINTS: M\ object distance { array array } ;
HINTS: M\ object n*v { object array } ;
M: cord v*n '[ _ v*n ] cord-map ; inline
M: cord v/n '[ _ v/n ] cord-map ; inline
-M: cord norm-sq dup v. ; inline
-M: cord norm norm-sq sqrt ; inline
+M: cord norm-sq [ norm-sq ] cord-both + ; inline
M: cord distance v- norm ; inline