]> gitweb.factorcode.org Git - factor.git/commitdiff
move more stuff to contrib/math/
authorSlava Pestov <slava@factorcode.org>
Fri, 21 Oct 2005 07:42:38 +0000 (07:42 +0000)
committerSlava Pestov <slava@factorcode.org>
Fri, 21 Oct 2005 07:42:38 +0000 (07:42 +0000)
contrib/math/load.factor
contrib/math/utils.factor [new file with mode: 0644]
library/compiler/architecture.factor
library/math/complex.factor
library/math/constants.factor
library/math/integer.factor
library/math/pow.factor
library/math/vectors.factor
library/opengl/opengl-utils.factor
library/ui/paint.factor

index aae78c49251292869a65733e18d762fc1ac3e293..ca0a05e95a3a4c3fec5321e6edaa7b0f1d0bd23e 100644 (file)
@@ -1,6 +1,7 @@
 IN: dimensions
 USING: parser sequences words compiler ;
 [
+    "contrib/math/utils.factor"
     "contrib/math/combinatorics.factor"
     "contrib/math/analysis.factor"
     "contrib/math/polynomial.factor"
diff --git a/contrib/math/utils.factor b/contrib/math/utils.factor
new file mode 100644 (file)
index 0000000..70de6b0
--- /dev/null
@@ -0,0 +1,33 @@
+IN: math
+USING: errors kernel sequences ;
+
+: deg>rad pi * 180 / ; inline
+: rad>deg 180 * pi / ; inline
+
+: lcm ( a b -- c )
+    #! Smallest integer such that c/a and c/b are both integers.
+    2dup gcd nip >r * r> /i ; foldable
+
+: mod-inv ( x n -- y )
+    #! Compute the multiplicative inverse of x mod n.
+    gcd 1 = [ "Non-trivial divisor found" throw ] unless ;
+    foldable
+
+: (^mod) ( n z w -- z^w )
+    1 swap [
+        1 number= [ dupd * pick mod ] when >r sq over mod r>
+    ] each-bit 2nip ; inline
+
+: ^mod ( z w n -- z^w )
+    #! Compute z^w mod n.
+    over 0 < [
+        [ >r neg r> ^mod ] keep mod-inv
+    ] [
+        -rot (^mod)
+    ] if ; foldable
+
+: ** ( u v -- u*v' ) conjugate * ; inline
+
+: c. ( v v -- x )
+    #! Complex inner product.
+    0 [ ** + ] 2reduce ;
index 34b4704ba911edbe228482c48852aa1f11923969..dc816692bbb51c068bc5a63b495cafb7fc06fccc 100644 (file)
@@ -10,3 +10,7 @@ DEFER: fixnum-imm? ( -- ? )
 
 DEFER: vregs ( -- n )
 #! Number of vregs
+
+DEFER: dual-fp/int-regs? ( -- ? )
+#! Should fp parameters to fastcalls be loaded in integer
+#! registers too? Only for PowerPC.
index 273a9d465e51b1c9dea793ffdce3e5f5e787062c..c6d46dbe07aa714463e54b620590eab062a0f21a 100644 (file)
@@ -28,8 +28,6 @@ M: number = ( n n -- ? ) number= ;
 
 : conjugate ( z -- z* ) >rect neg rect> ; inline
 
-: ** ( u v -- u*v' ) conjugate * ; inline
-
 : arg ( z -- arg )
     #! Compute the complex argument.
     >rect swap fatan2 ; inline
index 876fcf4bc54b8c2730440daa59dd256cdc2fbb4b..da511f9ca254bd476dd9184aaccb23d7f25ebf22 100644 (file)
@@ -1,7 +1,6 @@
 ! Copyright (C) 2004, 2005 Slava Pestov.
 ! See http://factor.sf.net/license.txt for BSD license.
 IN: math
-USE: kernel
 
 : i #{ 0 1 }# ; inline
 : -i #{ 0 -1 }# ; inline
@@ -9,6 +8,3 @@ USE: kernel
 : -inf -1.0 0.0 / ; inline
 : e 2.7182818284590452354 ; inline
 : pi 3.14159265358979323846 ; inline
-
-: deg>rad pi * 180 / ; inline
-: rad>deg 180 * pi / ; inline
index 9bc6255bad19d924e260f49f468d8d58b84c7ab1..ca3d5ec548ebe76d708107902f94578f00bc6996 100644 (file)
@@ -21,15 +21,6 @@ UNION: integer fixnum bignum ;
     #! such that a*x=d mod y.
     swap 0 1 2swap (gcd) abs ; foldable
 
-: lcm ( a b -- c )
-    #! Smallest integer such that c/a and c/b are both integers.
-    2dup gcd nip >r * r> /i ; foldable
-
-: mod-inv ( x n -- y )
-    #! Compute the multiplicative inverse of x mod n.
-    gcd 1 = [ "Non-trivial divisor found" throw ] unless ;
-    foldable
-
 : (next-power-of-2) ( i n -- n )
     2dup >= [
         drop
index fbe07b343d66b58269468b1e6e44a1b0cfed1989..b7140304ff6cf928fd7f955cebafe0907ef56f0a 100644 (file)
@@ -45,16 +45,3 @@ M: integer ^ ( z w -- z^w )
     ] [
         dup 0 < [ neg ^ recip ] [ (integer^) ] if
     ] if ;
-
-: (^mod) ( n z w -- z^w )
-    1 swap [
-        1 number= [ dupd * pick mod ] when >r sq over mod r>
-    ] each-bit 2nip ; inline
-
-: ^mod ( z w n -- z^w )
-    #! Compute z^w mod n.
-    over 0 < [
-        [ >r neg r> ^mod ] keep mod-inv
-    ] [
-        -rot (^mod)
-    ] if ; foldable
index 2f3a54d558b18c42040004d06f18b82781b8b2d1..d019fe2132a3db098ef1dcd5899ab27d055a8a02 100644 (file)
@@ -25,20 +25,19 @@ USING: arrays generic kernel sequences ;
     2dup v* >r >r drop dup r> v* v- r> v+ ;
 
 : v. ( v v -- x )
-    #! Real inner product.
+    #! Dot product.
     0 [ * + ] 2reduce ;
 
-: c. ( v v -- x )
-    #! Complex inner product.
-    0 [ ** + ] 2reduce ;
-
 : norm-sq ( v -- n ) 0 [ absq + ] reduce ;
 
-: norm ( vec -- n ) norm-sq sqrt ;
+: norm ( vec -- n )
+    #! Length of a vector.
+    norm-sq sqrt ;
 
-: normalize ( vec -- vec ) dup norm v/n ;
+: normalize ( vec -- uvec )
+    #! Unit vector with same direction as vec.
+    dup norm v/n ;
 
 : proj ( u v -- w )
     #! Orthogonal projection of u onto v.
     [ [ v. ] keep norm-sq v/n ] keep n*v ;
-
index 04476efbef77e419de3c5dc5382fbe6b90147f25..148c33d8c8ef2025fcc2e1d5a9ccb303d1a8fe16 100644 (file)
@@ -86,7 +86,7 @@ USING: alien errors kernel math namespaces opengl sdl sequences ;
     swap glMatrixMode glPushMatrix call glPopMatrix ; inline
 
 : gl-set-clip ( loc dim -- )
-    dup first2 >r >r
+    dup first2 1+ >r >r
     over second swap second + height get swap - >r
     first r> r> r> glScissor ;
 
index 5fb21c19b9feb02b7c2e2dd724634d6d0825ff5e..80d25462851683d28510225b0c24d56cda3bc490 100644 (file)
@@ -77,14 +77,14 @@ TUPLE: solid ;
 
 : rect>screen ( shape -- x1 y1 x2 y2 )
     >r origin get dup r> rect-dim v+
-    [ first2 ] 2apply [ 1 - ] 2apply ;
+    [ first2 ] 2apply ( [ 1 - ] 2apply ) ;
 
 ! Solid pen
 M: solid draw-interior
     drop dup bg gl-color rect-dim gl-fill-rect ;
 
 M: solid draw-boundary
-    drop dup fg gl-color rect-dim @{ 1 1 0 }@ v- gl-rect ;
+    drop dup fg gl-color rect-dim ( @{ 1 1 0 }@ v- ) gl-rect ;
 
 ! Rollover only
 TUPLE: rollover-only ;