math.vectors: adding p-norm.
parent
ffeaf448a7
commit
95b82eecfa
|
@ -43,6 +43,7 @@ ARTICLE: "math-vectors-arithmetic" "Vector arithmetic"
|
|||
norm
|
||||
norm-sq
|
||||
normalize
|
||||
p-norm
|
||||
}
|
||||
"Comparing entire vectors:"
|
||||
{ $subsections
|
||||
|
@ -456,6 +457,10 @@ HELP: norm
|
|||
{ $values { "v" "a sequence of numbers" } { "x" "a non-negative real number" } }
|
||||
{ $description "Computes the length of a mathematical vector." } ;
|
||||
|
||||
HELP: p-norm
|
||||
{ $values { "v" "a sequence of numbers" } { "p" "a positive real number" } { "x" "a non-negative real number" } }
|
||||
{ $description "Computes the length of a mathematical vector in " { $snippet "L^p" } " space." } ;
|
||||
|
||||
HELP: normalize
|
||||
{ $values { "u" "a sequence of numbers, not all zero" } { "v" "a sequence of numbers" } }
|
||||
{ $description "Outputs a vector with the same direction as " { $snippet "u" } " but length 1." } ;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
IN: math.vectors.tests
|
||||
USING: math.vectors tools.test kernel specialized-arrays compiler
|
||||
kernel.private alien.c-types ;
|
||||
kernel.private alien.c-types math.functions ;
|
||||
SPECIALIZED-ARRAY: int
|
||||
|
||||
[ { 1 2 3 } ] [ 1/2 { 2 4 6 } n*v ] unit-test
|
||||
|
@ -11,9 +11,12 @@ SPECIALIZED-ARRAY: int
|
|||
[ 5 ] [ { 1 2 } norm-sq ] unit-test
|
||||
[ 13 ] [ { 2 3 } norm-sq ] unit-test
|
||||
|
||||
[ { 1.0 2.5 } ] [ { 1.0 2.5 } { 2.5 1.0 } 0.0 vnlerp ] unit-test
|
||||
[ { 2.5 1.0 } ] [ { 1.0 2.5 } { 2.5 1.0 } 1.0 vnlerp ] unit-test
|
||||
[ { 1.75 1.75 } ] [ { 1.0 2.5 } { 2.5 1.0 } 0.5 vnlerp ] unit-test
|
||||
{ t } [ { 1 2 3 } [ norm ] [ 2 p-norm ] bi = ] unit-test
|
||||
{ t } [ { 1 2 3 } 3 p-norm 3.301927248894626 1e-10 ~ ] unit-test
|
||||
|
||||
[ { 1.0 2.5 } ] [ { 1.0 2.5 } { 2.5 1.0 } 0.0 vnlerp ] unit-test
|
||||
[ { 2.5 1.0 } ] [ { 1.0 2.5 } { 2.5 1.0 } 1.0 vnlerp ] unit-test
|
||||
[ { 1.75 1.75 } ] [ { 1.0 2.5 } { 2.5 1.0 } 0.5 vnlerp ] unit-test
|
||||
|
||||
[ { 1.75 2.125 } ] [ { 1.0 2.5 } { 2.5 1.0 } { 0.5 0.25 } vlerp ] unit-test
|
||||
|
||||
|
|
|
@ -218,6 +218,9 @@ M: object norm-sq [ absq ] [ + ] map-reduce ; inline
|
|||
|
||||
: norm ( v -- x ) norm-sq sqrt ; inline
|
||||
|
||||
: p-norm ( v p -- x )
|
||||
[ [ [ abs ] dip ^ ] curry map-sum ] keep recip ^ ; inline
|
||||
|
||||
: normalize ( u -- v ) dup norm v/n ; inline
|
||||
|
||||
GENERIC: distance ( u v -- x )
|
||||
|
|
Loading…
Reference in New Issue