diff --git a/basis/float-arrays/float-arrays.factor b/basis/float-arrays/float-arrays.factor index 411643ddc0..b5951997f0 100644 --- a/basis/float-arrays/float-arrays.factor +++ b/basis/float-arrays/float-arrays.factor @@ -64,6 +64,7 @@ M: float-array pprint-delims drop \ F{ \ } ; M: float-array >pprint-sequence ; M: float-array pprint* pprint-object ; +! Rice USING: hints math.vectors arrays ; HINTS: vneg { float-array } { array } ; @@ -81,3 +82,42 @@ HINTS: v. { float-array float-array } { array array } ; HINTS: norm-sq { float-array } { array } ; HINTS: norm { float-array } { array } ; HINTS: normalize { float-array } { array } ; + +! More rice. Experimental, currently causes a slowdown in raytracer +! for some odd reason. + +! USING: words classes.algebra compiler.tree.propagation.info ; +! +! { v+ v- v* v/ vmax vmin } [ +! [ +! [ class>> float-array class<= ] both? +! float-array object ? +! ] "outputs" set-word-prop +! ] each +! +! { n*v n/v } [ +! [ +! nip class>> float-array class<= float-array object ? +! ] "outputs" set-word-prop +! ] each +! +! { v*n v/n } [ +! [ +! drop class>> float-array class<= float-array object ? +! ] "outputs" set-word-prop +! ] each +! +! { vneg normalize } [ +! [ +! class>> float-array class<= float-array object ? +! ] "outputs" set-word-prop +! ] each +! +! \ norm-sq [ +! class>> float-array class<= float object ? +! ] "outputs" set-word-prop +! +! \ v. [ +! [ class>> float-array class<= ] both? +! float object ? +! ] "outputs" set-word-prop