diff --git a/basis/math/vectors/vectors-docs.factor b/basis/math/vectors/vectors-docs.factor index 252cc4216e..2d9a70ad58 100644 --- a/basis/math/vectors/vectors-docs.factor +++ b/basis/math/vectors/vectors-docs.factor @@ -209,11 +209,13 @@ HELP: vbitxor HELP: vlshift { $values { "u" "a sequence of integers" } { "n" "a non-negative integer" } { "w" "a sequence of integers" } } -{ $description "Shifts each element of " { $snippet "u" } " to the left by " { $snippet "n" } " bits." } ; +{ $description "Shifts each element of " { $snippet "u" } " to the left by " { $snippet "n" } " bits." } +{ $notes "Undefined behavior will result if " { $snippet "n" } " is negative." } ; HELP: vrshift { $values { "u" "a sequence of integers" } { "n" "a non-negative integer" } { "w" "a sequence of integers" } } -{ $description "Shifts each element of " { $snippet "u" } " to the right by " { $snippet "n" } " bits." } ; +{ $description "Shifts each element of " { $snippet "u" } " to the right by " { $snippet "n" } " bits." } +{ $notes "Undefined behavior will result if " { $snippet "n" } " is negative." } ; HELP: norm-sq { $values { "v" "a sequence of numbers" } { "x" "a non-negative real number" } } diff --git a/basis/math/vectors/vectors-tests.factor b/basis/math/vectors/vectors-tests.factor index 712c5e4c60..91c5c0326f 100644 --- a/basis/math/vectors/vectors-tests.factor +++ b/basis/math/vectors/vectors-tests.factor @@ -24,11 +24,3 @@ SPECIALIZED-ARRAY: int [ { 0 3 2 5 4 } ] [ { 1 2 3 4 5 } { 1 1 1 1 1 } v+- ] unit-test [ 1 ] [ { C{ 0 1 } } dup v. ] unit-test - -! Make sure vector shifts behave the same as hardware SIMD vector shifts -[ int-array{ 0 0 0 0 } ] [ int-array{ 10 20 30 40 } -1 vlshift ] unit-test - -[ int-array{ 0 0 0 0 } ] [ - int-array{ 10 20 30 40 } - [ { int-array } declare -1 vlshift ] compile-call -] unit-test \ No newline at end of file diff --git a/basis/math/vectors/vectors.factor b/basis/math/vectors/vectors.factor index e3e4f51e28..a40506f980 100644 --- a/basis/math/vectors/vectors.factor +++ b/basis/math/vectors/vectors.factor @@ -61,8 +61,8 @@ PRIVATE> : vbitor ( u v -- w ) over '[ _ [ bitor ] fp-bitwise-op ] 2map ; : vbitxor ( u v -- w ) over '[ _ [ bitxor ] fp-bitwise-op ] 2map ; -: vlshift ( u n -- w ) HEX: ffffffff bitand '[ _ shift ] map ; -: vrshift ( u n -- w ) HEX: ffffffff bitand neg '[ _ shift ] map ; +: vlshift ( u n -- w ) '[ _ shift ] map ; +: vrshift ( u n -- w ) neg '[ _ shift ] map ; : vfloor ( u -- v ) [ floor ] map ; : vceiling ( u -- v ) [ ceiling ] map ;