Better hints for float array operations
parent
f79041545a
commit
5bc173b9cf
|
@ -64,29 +64,29 @@ M: float-array pprint-delims drop \ F{ \ } ;
|
||||||
M: float-array >pprint-sequence ;
|
M: float-array >pprint-sequence ;
|
||||||
M: float-array pprint* pprint-object ;
|
M: float-array pprint* pprint-object ;
|
||||||
|
|
||||||
! Rice
|
! Specializer hints
|
||||||
USING: hints math.vectors arrays ;
|
USING: hints math.vectors arrays ;
|
||||||
|
|
||||||
HINTS: vneg { float-array } { array } ;
|
HINTS: vneg { array } { float-array } ;
|
||||||
HINTS: v*n { float-array float } { array object } ;
|
HINTS: v*n { array object } { float-array float } ;
|
||||||
HINTS: n*v { float float-array } { array object } ;
|
HINTS: n*v { array object } { float float-array } ;
|
||||||
HINTS: v/n { float-array float } { array object } ;
|
HINTS: v/n { array object } { float-array float } ;
|
||||||
HINTS: n/v { float float-array } { object array } ;
|
HINTS: n/v { object array } { float float-array } ;
|
||||||
HINTS: v+ { float-array float-array } { array array } ;
|
HINTS: v+ { array array } { float-array float-array } ;
|
||||||
HINTS: v- { float-array float-array } { array array } ;
|
HINTS: v- { array array } { float-array float-array } ;
|
||||||
HINTS: v* { float-array float-array } { array array } ;
|
HINTS: v* { array array } { float-array float-array } ;
|
||||||
HINTS: v/ { float-array float-array } { array array } ;
|
HINTS: v/ { array array } { float-array float-array } ;
|
||||||
HINTS: vmax { float-array float-array } { array array } ;
|
HINTS: vmax { array array } { float-array float-array } ;
|
||||||
HINTS: vmin { float-array float-array } { array array } ;
|
HINTS: vmin { array array } { float-array float-array } ;
|
||||||
HINTS: v. { float-array float-array } { array array } ;
|
HINTS: v. { array array } { float-array float-array } ;
|
||||||
HINTS: norm-sq { float-array } { array } ;
|
HINTS: norm-sq { array } { float-array } ;
|
||||||
HINTS: norm { float-array } { array } ;
|
HINTS: norm { array } { float-array } ;
|
||||||
HINTS: normalize { float-array } { array } ;
|
HINTS: normalize { array } { float-array } ;
|
||||||
|
HINTS: distance { array array } { float-array float-array } ;
|
||||||
|
|
||||||
! More rice. Experimental, currently causes a slowdown in raytracer
|
! Type functions
|
||||||
! for some odd reason.
|
USING: words classes.algebra compiler.tree.propagation.info
|
||||||
|
math.intervals ;
|
||||||
USING: words classes.algebra compiler.tree.propagation.info ;
|
|
||||||
|
|
||||||
{ v+ v- v* v/ vmax vmin } [
|
{ v+ v- v* v/ vmax vmin } [
|
||||||
[
|
[
|
||||||
|
@ -114,10 +114,15 @@ USING: words classes.algebra compiler.tree.propagation.info ;
|
||||||
] each
|
] each
|
||||||
|
|
||||||
\ norm-sq [
|
\ norm-sq [
|
||||||
class>> float-array class<= float object ? <class-info>
|
class>> float-array class<= [ float 0. 1/0. [a,b] <class/interval-info> ] [ object-info ] if
|
||||||
] "outputs" set-word-prop
|
] "outputs" set-word-prop
|
||||||
|
|
||||||
\ v. [
|
\ v. [
|
||||||
[ class>> float-array class<= ] both?
|
[ class>> float-array class<= ] both?
|
||||||
float object ? <class-info>
|
float object ? <class-info>
|
||||||
] "outputs" set-word-prop
|
] "outputs" set-word-prop
|
||||||
|
|
||||||
|
\ distance [
|
||||||
|
[ class>> float-array class<= ] both?
|
||||||
|
[ float 0. 1/0. [a,b] <class/interval-info> ] [ object-info ] if
|
||||||
|
] "outputs" set-word-prop
|
||||||
|
|
Loading…
Reference in New Issue