]> gitweb.factorcode.org Git - factor.git/commitdiff
math.matrices: vectorizable definition of cross
authorJoe Groff <arcata@gmail.com>
Thu, 22 Oct 2009 21:26:25 +0000 (16:26 -0500)
committerJoe Groff <arcata@gmail.com>
Thu, 22 Oct 2009 21:26:25 +0000 (16:26 -0500)
basis/math/matrices/matrices.factor
basis/math/vectors/vectors.factor

index 4a76a20598e7957081b09f2e0b9f680ec8253aa4..8f75cb94421d27146c446daf9a0196faba2b7f01 100644 (file)
@@ -122,7 +122,9 @@ IN: math.matrices
 
 PRIVATE>
 
-: cross ( vec1 vec2 -- vec3 ) [ [ i ] [ j ] [ k ] 2tri ] keep 3sequence ;
+: cross ( vec1 vec2 -- vec3 )
+    [ [ { 1 2 1 } vshuffle ] [ { 2 0 0 } vshuffle ] bi* v* ]
+    [ [ { 2 0 0 } vshuffle ] [ { 1 2 1 } vshuffle ] bi* v* ] 2bi v- ; inline
 
 : proj ( v u -- w )
     [ [ v. ] [ norm-sq ] bi / ] keep n*v ;
index 81af5c12d2ad36cd2c74435842765cff16a55b11..63564f064d5756bd226e23d72ab40c07a52f49bc 100644 (file)
@@ -96,6 +96,7 @@ PRIVATE>
 :: vbroadcast ( u n -- v ) u length n u nth <repetition> u like ;
 
 : vshuffle-elements ( u perm -- v )
+    over length 0 pad-tail
     swap [ '[ _ nth ] ] keep map-as ;
 
 : vshuffle-bytes ( u perm -- v )