planetarium: Cool it with the integration and other declarations.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Wed, 24 Apr 2013 18:26:14 +0000 (11:26 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Wed, 24 Apr 2013 18:26:14 +0000 (11:26 -0700)
Internal (declare)s are still used, but top-level declarations
(usual-integrations) and (integrate-external) are already made by
compile-file, so are just another barrier to portabimini.

Procedures like project and make-x-rotation-matrix need not be inlined
as they already use flo:vectors to pass 2, 3 and 9 flonums around
efficiently.  Not inlining these reduces matrices.scm to zero
integrable definitions (no .ext file)!

src/gtk/gtk.pkg
src/planetarium/compile.scm
src/planetarium/earth.scm
src/planetarium/geometry.scm
src/planetarium/matrices.scm
src/planetarium/mit-scheme-graphics.scm
src/planetarium/mit-scheme-x.scm
src/planetarium/mit-scheme.scm
src/planetarium/solar.scm
src/planetarium/tellurion.scm
src/planetarium/time.scm

index 57a5d06d152b0d1dccc5ada8b83d6bb28d000928..007183d0c6168767ffceb1c8a83cf6604ebe4dcf 100644 (file)
@@ -418,6 +418,7 @@ USA.
          gtk-graphics/draw-text
          gtk-graphics/draw-circle
          gtk-graphics/fill-polygon-list
+         gtk-graphics/clear
          gtk-graphics/flush
          gtk-graphics/make))
 
index c3c0c17fcc69c69dd17c79811f5b7f54621606ea..a60dee72613d244eadae65cb59b7c883f183f42f 100644 (file)
@@ -25,6 +25,7 @@ USA.
 (compile-system "planetarium" (directory-pathname (current-load-pathname))
                'dependencies
                `(("solar" "geometry")
-                 ("earth" "geometry" "matrices")
-                 ("mit-scheme-cil" "earth" ,@(directory-read "cil-*.txt"))
-                 ("tellurion" "geometry" "matrices")))
\ No newline at end of file
+                 ("earth" "geometry")
+                 ("mit-scheme-cil"
+                  "mit-scheme-syntax" ,@(directory-read "cil-*.txt"))
+                 ("tellurion" "geometry")))
\ No newline at end of file
index e058cea2ccaa4c8093ff6d1c11dea6ae1941bc7d..7b21859097a7f08aba62d6dbe8220aa92fa5389c 100644 (file)
@@ -24,9 +24,6 @@ USA.
 ;;; Much of this is stolen from Arthur's WorldMap.java, which he
 ;;; mistakenly lent me.
 
-(declare (usual-integrations)
-        (integrate-external "geometry" "matrices"))
-
 (define (draw-earth device orientation solar-lat/long)
   (let ((solar-orientation
         (let ((Mx (make-x-rotation-matrix
@@ -92,7 +89,7 @@ USA.
              (draw-segment device start end color))
          (loop (flo:+ i 1.) end)))))
 
-(define-integrable-operator (project latitude longitude orientation)
+(define (project latitude longitude orientation)
   (let ((point (make-3d-point
                (flo:* (flo:cos latitude) (flo:sin longitude))
                (flo:sin latitude)
index b7cc02a989897b412c0d2eb715b97b36e4654e7e..fabdf65d24b9371b8380801f5a4bf4729b8d7945 100644 (file)
@@ -21,8 +21,6 @@ USA.
 
 |#
 
-(declare (usual-integrations))
-
 (define-integrable pi (flo:* 4. (flo:atan2 1. 1.)))
 (define-integrable 2pi (flo:* 8. (flo:atan2 1. 1.)))
 (define-integrable pi/2 (flo:* 2. (flo:atan2 1. 1.)))
@@ -77,7 +75,7 @@ USA.
                   ":"(string-pad-left (number->string (car min.r)) 2 #\0)
                   ":"(string-pad-left (number->string (cdr min.r)) 2 #\0))))
 
-(define-integrable-operator (lesser-angle a b)
+(define (lesser-angle a b)
   ;; Angle B translated to (not more than 2pi) numerically less than A.
   (let loop ((b b))
     (cond ((flo:< b (flo:- a 2pi))
@@ -87,7 +85,7 @@ USA.
          (else
           (loop (flo:- b 2pi))))))
 
-(define-integrable-operator (greater-angle a b)
+(define (greater-angle a b)
   ;; Angle B translated to (not more than 2pi) numerically greater than A.
   (let loop ((b b))
     (cond ((flo:< a (flo:- b 2pi))
index e598983bd04c93df23316afb53428005e289a13f..fa38e983e262fdb7e80ab38636ebaf29568a4427 100644 (file)
@@ -21,9 +21,9 @@ USA.
 
 |#
 
-(declare (usual-integrations) (no-type-checks) (no-range-checks))
+(declare (no-type-checks) (no-range-checks))
 
-(define-integrable-operator (3d-transform! point transform projection)
+(define (3d-transform! point transform projection)
   ;; point X transform => projection  The projection may be eq point.
   (define-integrable (t i j)
     (flo:vector-ref transform (fix:+ (fix:* i 3) j)))
@@ -38,7 +38,7 @@ USA.
     (flo:vector-set! projection 1 (f 1))
     (flo:vector-set! projection 2 (f 2))))
 
-(define-integrable-operator (3d-multiply! A B C)
+(define (3d-multiply! A B C)
   ;; A X B => C  C may be eq A or B.
   (define-integrable (ref m row col)
     (flo:vector-ref m (fix:+ (fix:* (fix:-1+ row) 3) (fix:-1+ col))))
@@ -64,12 +64,12 @@ USA.
   (flo:vector-set! C 7 (f+ (f* A31 B12) (f* A32 B22) (f* A33 B32)))
   (flo:vector-set! C 8 (f+ (f* A31 B13) (f* A32 B23) (f* A33 B33)))))
 
-(define-integrable (make-3d-identity-matrix)
+(define (make-3d-identity-matrix)
   (flo:3d-matrix 1. 0. 0.
                 0. 1. 0.
                 0. 0. 1.))
 
-(define-integrable-operator (make-x-rotation-matrix radians)
+(define (make-x-rotation-matrix radians)
   (let ((cos (flo:cos radians))
        (sin (flo:sin radians)))
     (let ((-sin (flo:negate sin)))
@@ -77,7 +77,7 @@ USA.
                     0. cos -sin
                     0. sin  cos))))
 
-(define-integrable-operator (make-y-rotation-matrix radians)
+(define (make-y-rotation-matrix radians)
   (let ((cos (flo:cos radians))
        (sin (flo:sin radians)))
     (let ((-sin (flo:negate sin)))
@@ -85,7 +85,7 @@ USA.
                     0.  1.  0.
                     -sin  0. cos))))
 
-(define-integrable-operator (make-z-rotation-matrix radians)
+(define (make-z-rotation-matrix radians)
   (let ((cos (flo:cos radians))
        (sin (flo:sin radians)))
     (let ((-sin (flo:negate sin)))
index 69883f43ba2465ec6033da1558d570fbcd0f70ca..798c8efd3675fe17ee9113906fbdb0c2ae441621 100644 (file)
@@ -23,8 +23,6 @@ USA.
 
 ;;;; System specific code for MIT Scheme with simple graphics.
 
-(declare (usual-integrations))
-
 (define (make-suitable-graphics-device)
   (let ((device (make-graphics-device)))
     (graphics-set-coordinate-limits device -1.1 -1.1 1.1 1.1)
index d7f38788fa72e8d567d63a0f92aaf7160fee7df2..de385b8b2ca815f3fa43f325c89b5c4e8d8d19b7 100644 (file)
@@ -23,8 +23,6 @@ USA.
 
 ;;;; System specific code for MIT Scheme with X graphics.
 
-(declare (usual-integrations))
-
 (define (make-suitable-graphics-device)
   (let ((device (make-graphics-device 'x)))
     (graphics-set-coordinate-limits device -1.1 -1.1 1.1 1.1)
index 17d0bc951b81c0c388f47fc08228ae284dde2be3..d57a495d7c68bf0828dd3ef5b523d952a686284d 100644 (file)
@@ -30,17 +30,14 @@ USA.
   (lambda ()
     (let ((env (->environment '(planetarium))))
 
-      (define (compile-load file #!optional dependencies declarations)
+      (define (compile-load file #!optional dependencies)
        (let ((deps (if (default-object? dependencies) '() dependencies)))
          (fluid-let (;;(compile-file:sf-only? #t)
-                     (sf/default-declarations
-                      (if (default-object? declarations)
-                          '()
-                          declarations)))
+                     (compiler:generate-lap-files? #t))
            (compile-file file deps env))
          (load file env)))
 
-      (define ignore-errors?
+      (define errors-ignored?
        (let ((ok "ok"))
          (lambda (thunk)
            (let ((v (ignore-errors (lambda () (thunk) ok))))
@@ -50,15 +47,15 @@ USA.
 
       (compile-load "mit-scheme-syntax")
       (compile-load "geometry")
-      (compile-load "matrices" '() '((no-range-checks)(no-type-checks)))
+      (compile-load "matrices")
       (compile-load "time")
       (compile-load "solar" '("geometry"))
-      (compile-load "earth" '("matrices" "geometry"))
-      (compile-load "mit-scheme-cil" (cons "earth"
+      (compile-load "earth" '("geometry"))
+      (compile-load "mit-scheme-cil" (cons "mit-scheme-syntax"
                                           (directory-read "cil-*.txt")))
-      (compile-load "tellurion" '("geometry" "matrices"))
+      (compile-load "tellurion" '("geometry"))
       (environment-link-name (->environment '()) env 'make-tellurion)
-      (cond ((not (ignore-errors? (lambda () (load-option 'gtk))))
+      (cond ((not (errors-ignored? (lambda () (load-option 'gtk))))
             (compile-load "mit-scheme-gtk"))
            ((graphics-type-available? 'x)
             (compile-load "mit-scheme-x"))
index 768c0972f4a03d4b1ee337c71e4ad11626ec6311..792e4633187d61ed4f465692eec1461fabc71577 100644 (file)
@@ -25,8 +25,7 @@ USA.
 ;;; specifically the second English edition (1998) "with corrections
 ;;; as of August 10, 2009" of _Astronomical_Algorithms_ by Jean Meeus.
 
-(declare (integrate-external "geometry")
-        (reduce-operator (* flo:*)
+(declare (reduce-operator (* flo:*)
                          (sin flo:sin) (cos flo:cos)
                          (asin flo:asin) (atan2 flo:atan2)
                          (- flo:- (null-value 0. single) (group left))
index f238dea84feada8fdf5b39424bc4cd4b4f0a867b..f8343e5672ee57caf256eccd125a0c42d3385f99 100644 (file)
@@ -21,9 +21,6 @@ USA.
 
 |#
 
-(declare (usual-integrations)
-        (integrate-external "geometry" "matrices"))
-
 (define (make-tellurion)
   (test-julian-day)
   (test-greenwich-mean-sidereal-time)
index d5f95ed3ed198f8c326b6456a91d8fe08e8e87d8..6cf9129ecda68be613504f925cdf7aabd03c096d 100644 (file)
@@ -25,8 +25,6 @@ USA.
 ;;; specifically the second English edition (1998) "with corrections
 ;;; as of August 10, 2009" of _Astronomical_Algorithms_ by Jean Meeus.
 
-(declare (usual-integrations))
-
 (define (universal-time->julian-day time)
   ;; The Julian Ephemeris Day (JDE) corresponding to TIME.
   (let ((decoded (universal-time->global-decoded-time time)))