performance measurements

Each table row shows performance measurements for this Lisp SBCL program with a particular command-line input value N.

 N  CPU secs Elapsed secs Memory KB Code B ≈ CPU Load
250,0000.040.05?2343  20% 0% 100% 0%
2,500,0000.350.352602343  0% 6% 100% 6%
25,000,0002.992.999,8042343  1% 2% 100% 0%

Read the ↓ make, command line, and program output logs to see how this program was run.

Read fasta-redux benchmark to see what this program should do.

 notes

This is SBCL 1.2.5, an implementation of ANSI Common Lisp.

NOT ACCEPTED: Caches the recurrent random number sequence instead of creating a random number each time a nucleotide needs to be selected.

 fasta-redux Lisp SBCL #5 program source code

;;   The Computer Language Benchmarks Game

;;   http://benchmarksgame.alioth.debian.org/

;;;

;;; By Jon Smith (rev 3)

;;; Fixed a bug in my use of write-sequence, which wasn't apparent on 

;;; my machine, for whatever reason.

;;; Based off of java implementation. 

;;;

;;; To compile

;;; sbcl --load fasta.lisp --eval "(save-lisp-and-die \"fasta.core\" :purify t :toplevel (lambda () (main) (quit)))"

;;; To run

;;; sbcl --noinform --core fastab.core %A

;(setf *efficiency-note-cost-threshold* 1)


(defmacro define-constant (name value &optional doc)
  `(defconstant ,name (if (boundp ',name) (symbol-value ',name) ,value)
     ,@(when doc (list doc))))

(declaim (optimize (speed 3) (safety 0) (debug 0)))

(defconstant line-length 60)
(defconstant out-buffer-size (* 256 1024))
(defconstant lookup-size (* 4 1024))
(defconstant lookup-scale (the double-float (* 1.0d0 (- lookup-size 1))))
(defconstant lim (- out-buffer-size (* 2 line-length) 1))

(eval-when (:load-toplevel :compile-toplevel :execute)

  (deftype cbyte () '(unsigned-byte 8))

  (defmacro cbyte (form)
    (cond ((stringp form)
	   (map '(simple-array cbyte (*)) #'char-code form))
	  ((characterp form)
	   (char-code form))))
  

  (defstruct freq 
    (c 0 :type cbyte)
    (m 0.0d0 :type double-float))

  (defmacro frequify (&rest freq-pairs)
    `(frequify-fn ',(mapcar (lambda (s)
			      (destructuring-bind (b f) s
				(list (char-code b) f)))
			    freq-pairs)))

  (defun frequify-fn (parsed-freq-pairs)
    (declare (type list parsed-freq-pairs))
    (let ((i 0)
	  (array (make-array (length parsed-freq-pairs))))
      (dolist (pair parsed-freq-pairs)
	(destructuring-bind (byte double) pair
	  (let ((fr (make-freq :c byte :m double)))
	    (setf (aref array i) fr)))
	(incf i))
      array))

  (defun sum-and-scale (a)
    (declare (type (simple-array freq (*)) a)) 
    (let ((p 0.0d0))
      (loop for i from 0 below (length a)
	 do (setf (freq-m (aref a i))
		  (* (incf p (freq-m (aref a i))) lookup-scale)))
      (setf (freq-m (aref a (- (length a) 1))) lookup-scale))
    a)

  (defun random-fasta-make-lookup (a)
    (declare (type (simple-array freq (*)) a))
    (let ((lookup-byte (make-array lookup-size
				   :element-type 'cbyte
				   :initial-element 0))
	  (lookup-float (make-array lookup-size
				    :element-type 'double-float
				    :initial-element 0.0d0)))
      
      (let ((j 0))
	(loop for i from 0 below lookup-size
	   do (loop while (< (freq-m (aref a j)) (* 1.0d0 i))  do (incf j))
	   do (setf (aref lookup-float i) (freq-m (aref a j)))
	   do (setf (aref lookup-byte i) (freq-c (aref a j)))))
      (list lookup-float lookup-byte)))

(defmacro fx (a)
    `(the fixnum ,a)))

(defconstant IM 139968)
(defconstant IA 3877)
(defconstant IC 29573)
(defconstant scale (/ lookup-scale IM))

(define-constant rand-array 
  (let ((a (make-array IM :initial-element 0.0d0 :element-type 'double-float))
	(last 42))
    (labels ((random-next-sub ()
			      (* scale (setf last (mod (+ (* last IA) IC) IM)))))
      (dotimes (i 139968)
	(setf (aref a i) (random-next-sub)))
      a)))

(define-constant ai-array 
    (let ((a (make-array IM :initial-element 0 :element-type 'fixnum)))
      (dotimes (i 139968)
	(setf (aref a i) (truncate (aref rand-array i))))
      a))

(defparameter *c* 0)
(declaim (type fixnum *c*))

(defmacro random-next (c)
  (assert (symbolp c))
  (let ((g (gensym)))
    `(if (= ,c 139968)
	 (progn
	   (setf ,c 1)
	   (values ,(aref rand-array 0) ,(aref ai-array 0)))
	 (let ((,g ,c)) 
	   (incf ,c)
	   (values (aref rand-array ,g) (aref ai-array ,g))))))

(define-constant ALU (map '(simple-array cbyte (*)) #'char-code 
			  (concatenate 'string
				       "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"
				       "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"
				       "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"
				       "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"
				       "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"
				       "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"
				       "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA")))



(define-constant IUB (random-fasta-make-lookup
		      (sum-and-scale
		       (frequify 
			(#\a 0.27d0) (#\c 0.12d0) (#\g 0.12d0) (#\t 0.27d0)
			(#\B 0.02d0) (#\D 0.02d0) (#\H 0.02d0) (#\K 0.02d0)
			(#\M 0.02d0) (#\N 0.02d0) (#\R 0.02d0) (#\S 0.02d0)
			(#\V 0.02d0) (#\W 0.02d0) (#\Y 0.02d0)))))

(define-constant homo-sapiens 
    (random-fasta-make-lookup 
     (sum-and-scale 
      (frequify 
       (#\a 0.3029549426680d0)
       (#\c 0.1979883004921d0)
       (#\g 0.1975473066391d0)
       (#\t 0.3015094502008d0)))))

(define-constant out-buf (make-array out-buffer-size :element-type 'cbyte))

(let ((ct 0))
  (declare (type fixnum ct))

  (let (out)
    (defun set-out (stream)
      (setf out stream))

    (defun out-check-flush ()
      (when (>= ct lim)
	(write-sequence out-buf out :start 0 :end ct) (setf ct 0)))

    (defun out-close ()
      (write-sequence out-buf out :start 0 :end ct)
      (setf ct 0)
      (close out)
      ))

  (defun random-fasta-add-line (bytes lookup-float lookup-byte)
    (declare (type fixnum bytes)
	     (type (simple-array double-float (#.lookup-size)) lookup-float)
	     (type (simple-array cbyte (#.lookup-size)) lookup-byte))
    (out-check-flush)
    (let ((lct ct)
	  (c *c*))
      (declare (type fixnum lct)
	       (type fixnum c))
      (loop while (< lct (fx (+ ct bytes)))
	 do (multiple-value-bind (r ai) (random-next c)
	      (loop while (< (aref lookup-float ai) r)
		 do (incf ai))
	      (setf (aref out-buf lct) (aref lookup-byte ai))
	      (incf lct)))

      (setf (aref out-buf lct) (cbyte #\NEWLINE))
      (incf lct)
      (setf ct lct)
      (setf *c* c)
      (values)))

  (defun random-fasta-make (desc lookup-float lookup-byte n)
    (declare (type (simple-array cbyte (*)) desc)
	     (type fixnum n))
    (let ((len (length desc)))
      (replace out-buf desc :start1 ct :start2 0 :end1 (fx (incf ct len)) :end2 len))
    (setf (aref out-buf ct) (cbyte #\NEWLINE))
    (incf ct)
    (loop while (> n 0)
       do (let ((bytes (min line-length n)))
	    (random-fasta-add-line bytes lookup-float lookup-byte)
	    (decf n bytes)))
    (values))

  (defun repeat-fasta-make (desc n)
    (declare (type (simple-array cbyte (*)) desc)
	     (type fixnum n))
    (replace out-buf desc :start1 ct :end2 (length desc))
    (incf ct (length desc))
    (setf (aref out-buf ct) (cbyte #\NEWLINE))
    (incf ct)
    (let ((buf (make-array (+ (length alu) line-length))))
      (loop for i of-type fixnum from 0 below (length buf) by (length alu)
	 do (replace buf alu :start1 i :end2 (min (length alu) (- (length buf) 1))))
      (let ((pos 0))
	(loop while (> n 0)
	   do (let ((bytes (min line-length n)))
		(out-check-flush)
		(replace out-buf buf :start2 pos :start1 ct :end2 (the fixnum (+ pos bytes)))
		(incf ct bytes)
		(setf (aref out-buf ct) (cbyte #\NEWLINE))
		(incf ct)
		(setf pos (mod (the fixnum (+ pos bytes)) (length alu)))
		(decf n bytes)))))
    (values)))

(defun main (&optional in-n)
  (let ((n (or in-n
	       (ignore-errors
		 (parse-integer (car (last #+sbcl sb-ext:*posix-argv*
					   #+cmu  extensions:*command-line-strings*
					   #+gcl  si::*command-args*
					   #+clisp nil)))))))
    (declare (type fixnum n))
    (set-out (open #p"/dev/stdout" :direction :output :if-exists :append :element-type 'cbyte))
    (unwind-protect (progn
		      (repeat-fasta-make (cbyte ">ONE Homo sapiens alu") (the fixnum (* n 2)))
		      (random-fasta-make (cbyte ">TWO IUB ambiguity codes") 
					 (first IUB)
					 (second IUB)
					 (the fixnum (* n 3)))
		      (random-fasta-make 
		       (cbyte ">THREE Homo sapiens frequency")
		       (first homo-sapiens)
		       (second homo-sapiens)
		       (the fixnum (* n 5))))
      (out-close))))

 make, command-line, and program output logs

Tue, 25 Nov 2014 22:23:08 GMT

MAKE:
cp: ‘fastaredux.sbcl-5.sbcl’ and ‘./fastaredux.sbcl-5.sbcl’ are the same file
SBCL built with: /usr/local/bin/sbcl --userinit /dev/null --batch --eval '(load "fastaredux.sbcl-5.sbcl_compile")'
### START fastaredux.sbcl-5.sbcl_compile
(handler-bind ((sb-ext:defconstant-uneql      (lambda (c) (abort c))))      (load (compile-file "fastaredux.sbcl-5.sbcl" ))) (save-lisp-and-die "sbcl.core" :purify t)
### END fastaredux.sbcl-5.sbcl_compile

; compiling file "/home/dunham/benchmarksgame/bench/fastaredux/fastaredux.sbcl-5.sbcl" (written 24 JAN 2013 02:01:15 PM):
; compiling (DEFMACRO DEFINE-CONSTANT ...)
; compiling (DECLAIM (OPTIMIZE # ...))
; compiling (DEFCONSTANT LINE-LENGTH ...)
; compiling (DEFCONSTANT OUT-BUFFER-SIZE ...)
; compiling (DEFCONSTANT LOOKUP-SIZE ...)
; compiling (DEFCONSTANT LOOKUP-SCALE ...)
; compiling (DEFCONSTANT LIM ...)
; compiling (DEFTYPE CBYTE ...)
; compiling (DEFMACRO CBYTE ...)
; compiling (DEFSTRUCT FREQ ...)
; file: /home/dunham/benchmarksgame/bench/fastaredux/fastaredux.sbcl-5.sbcl
; in: DEFSTRUCT FREQ
;     (DEFSTRUCT FREQ (C 0 :TYPE CBYTE) (M 0.0d0 :TYPE DOUBLE-FLOAT))
; --> PROGN SB-KERNEL::DELAY-DEFSTRUCT-FUNCTIONS PROGN DEFUN PROGN 
; ==>
;   (SB-IMPL::%DEFUN 'FREQ-M
;                    (SB-INT:NAMED-LAMBDA FREQ-M
;                        (SB-KERNEL:INSTANCE)
;                      (BLOCK FREQ-M
;                        (TRULY-THE DOUBLE-FLOAT
;                                   (SB-KERNEL:%RAW-INSTANCE-REF/DOUBLE # 0))))
;                    NIL 'NIL (SB-C:SOURCE-LOCATION))
; 
; note: doing float to pointer coercion (cost 13) to "<return value>"

; ==>
;   (SB-IMPL::%DEFUN '(SETF FREQ-M)
;                    (SB-INT:NAMED-LAMBDA (SETF FREQ-M)
;                        (SB-KERNEL::VALUE SB-KERNEL:INSTANCE)
;                      (BLOCK FREQ-M (SETF # #)))
;                    NIL 'NIL (SB-C:SOURCE-LOCATION))
; 
; note: doing float to pointer coercion (cost 13) to "<return value>"

; compiling (DEFMACRO FREQUIFY ...)
; compiling (DEFUN FREQUIFY-FN ...)
; compiling (DEFUN SUM-AND-SCALE ...)
; compiling (DEFUN RANDOM-FASTA-MAKE-LOOKUP ...)
; compiling (DEFMACRO FX ...)
; compiling (DEFCONSTANT IM ...)
; compiling (DEFCONSTANT IA ...)
; compiling (DEFCONSTANT IC ...)
; compiling (DEFCONSTANT SCALE ...)
; compiling (DEFINE-CONSTANT RAND-ARRAY ...)
; file: /home/dunham/benchmarksgame/bench/fastaredux/fastaredux.sbcl-5.sbcl
; in: DEFINE-CONSTANT RAND-ARRAY
;     (* LAST IA)
; 
; note: unable to
;   convert x*2^k to shift
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0 0.0d0)
;                               (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                               (SINGLE-FLOAT -139968.0 279936.0)
;                               (RATIONAL (-139968) (279936))), not a INTEGER.
; 
; note: unable to
;   associate */* of constants
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0 0.0d0)
;                               (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                               (SINGLE-FLOAT -139968.0 279936.0)
;                               (RATIONAL (-139968) (279936))), not a RATIONAL.
; 
; note: unable to
;   associate *// of constants
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0 0.0d0)
;                               (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                               (SINGLE-FLOAT -139968.0 279936.0)
;                               (RATIONAL (-139968) (279936))), not a RATIONAL.
; 
; note: unable to
;   recode as leas, shifts and adds
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0 0.0d0)
;                               (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                               (SINGLE-FLOAT -139968.0 279936.0)
;                               (RATIONAL (-139968)
;                                         (279936))), not a (UNSIGNED-BYTE 32).
;   The result is a (VALUES
;                    (OR (MEMBER 0.0 0.0d0) (RATIONAL (-542655936) (1085311872))
;                        (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                        (DOUBLE-FLOAT -5.42655936d8 1.085311872d9))
;                    &OPTIONAL), not a (VALUES (UNSIGNED-BYTE 32) &REST T).
; 
; note: unable to
;   recode as leas, shifts and adds
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0 0.0d0)
;                               (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                               (SINGLE-FLOAT -139968.0 279936.0)
;                               (RATIONAL (-139968) (279936))), not a FIXNUM.
;   The result is a (VALUES
;                    (OR (MEMBER 0.0 0.0d0) (RATIONAL (-542655936) (1085311872))
;                        (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                        (DOUBLE-FLOAT -5.42655936d8 1.085311872d9))
;                    &OPTIONAL), not a (VALUES FIXNUM &REST T).

;     (+ (* LAST IA) IC)
; 
; note: unable to
;   associate +/+ of constants
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0 0.0d0)
;                               (RATIONAL (-542655936) (1085311872))
;                               (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                               (DOUBLE-FLOAT -5.42655936d8
;                                1.085311872d9)), not a RATIONAL.
; 
; note: unable to
;   associate +/- of constants
; due to type uncertainty:
;   The first argument is a (OR (MEMBER 0.0 0.0d0)
;                               (RATIONAL (-542655936) (1085311872))
;                               (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                               (DOUBLE-FLOAT -5.42655936d8
;                                1.085311872d9)), not a RATIONAL.

;     (MOD (+ (* LAST IA) IC) IM)
; --> LET REM NTH-VALUE MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL 
; ==>
;   (TRUNCATE NUMBER SB-C::DIVISOR)
; 
; note: unable to
;   convert integer division to multiplication
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-542626363) (1085341445))
;                               (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                               (SINGLE-FLOAT -5.4262637e8
;                                1.0853414e9)), not a (UNSIGNED-BYTE 32).
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-542626363) (1085341445))
;                               (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                               (SINGLE-FLOAT -5.4262637e8
;                                1.0853414e9)), not a SINGLE-FLOAT.
; 
; note: unable to
;   optimize
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-542626363) (1085341445))
;                               (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                               (SINGLE-FLOAT -5.4262637e8
;                                1.0853414e9)), not a DOUBLE-FLOAT.
; 
; note: unable to
;   convert division by 2^k to shift
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-542626363) (1085341445))
;                               (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                               (SINGLE-FLOAT -5.4262637e8
;                                1.0853414e9)), not a INTEGER.

; --> LET IF AND IF NOT IF ZEROP 
; ==>
;   (= REM 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-139968) (139968))
;                               (DOUBLE-FLOAT -139968.0d0 139968.0d0)
;                               (SINGLE-FLOAT -139968.0 139968.0)), not a FLOAT.
; 
; note: unable to open code because: The operands might not be the same type.

; --> LET IF 
; ==>
;   (+ REM SB-C::DIVISOR)
; 
; note: unable to
;   associate +/+ of constants
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-139968) (139968))
;                               (DOUBLE-FLOAT -139968.0d0 139968.0d0)
;                               (SINGLE-FLOAT -139968.0
;                                139968.0)), not a RATIONAL.
; 
; note: unable to
;   associate +/- of constants
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-139968) (139968))
;                               (DOUBLE-FLOAT -139968.0d0 139968.0d0)
;                               (SINGLE-FLOAT -139968.0
;                                139968.0)), not a RATIONAL.

; --> LET IF AND IF AND THE IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: unable to
;   open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
;   The first argument is a (OR (RATIONAL (-542626363) (1085341445))
;                               (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                               (SINGLE-FLOAT -5.4262637e8
;                                1.0853414e9)), not a FLOAT.

;     (* LAST IA)
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline fixnum arithmetic (cost 3) because:
;       The first argument is a (OR (MEMBER 0.0 0.0d0)
;                                   (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                                   (SINGLE-FLOAT -139968.0 279936.0)
;                                   (RATIONAL (-139968) (279936))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (MEMBER 0.0 0.0d0)
;                            (RATIONAL (-542655936) (1085311872))
;                            (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                            (DOUBLE-FLOAT -5.42655936d8 1.085311872d9))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 4) because:
;       The first argument is a (OR (MEMBER 0.0 0.0d0)
;                                   (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                                   (SINGLE-FLOAT -139968.0 279936.0)
;                                   (RATIONAL (-139968) (279936))), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (MEMBER 0.0 0.0d0)
;                            (RATIONAL (-542655936) (1085311872))
;                            (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                            (DOUBLE-FLOAT -5.42655936d8 1.085311872d9))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (+ (* LAST IA) IC)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (MEMBER 0.0 0.0d0)
;                                   (RATIONAL (-542655936) (1085311872))
;                                   (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                                   (DOUBLE-FLOAT -5.42655936d8 1.085311872d9)), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (RATIONAL (-542626363) (1085341445))
;                            (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                            (SINGLE-FLOAT -5.4262637e8 1.0853414e9))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (MEMBER 0.0 0.0d0)
;                                   (RATIONAL (-542655936) (1085311872))
;                                   (SINGLE-FLOAT -5.4265594e8 1.0853119e9)
;                                   (DOUBLE-FLOAT -5.42655936d8 1.085311872d9)), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (RATIONAL (-542626363) (1085341445))
;                            (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                            (SINGLE-FLOAT -5.4262637e8 1.0853414e9))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (MOD (+ (* LAST IA) IC) IM)
; --> LET IF AND IF AND THE IF MINUSP 
; ==>
;   (< NUMBER 0)
; 
; note: forced to do GENERIC-< (cost 10)
;       unable to do inline fixnum comparison (cost 3) because:
;       The first argument is a (OR (RATIONAL (-542626363) (1085341445))
;                                   (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                                   (SINGLE-FLOAT -5.4262637e8 1.0853414e9)), not a FIXNUM.
;       unable to do inline fixnum comparison (cost 4) because:
;       The first argument is a (OR (RATIONAL (-542626363) (1085341445))
;                                   (DOUBLE-FLOAT -5.42626363d8 1.085341445d9)
;                                   (SINGLE-FLOAT -5.4262637e8 1.0853414e9)), not a FIXNUM.
;       etc.

; --> LET IF 
; ==>
;   (+ REM SB-C::DIVISOR)
; 
; note: forced to do GENERIC-+ (cost 10)
;       unable to do inline fixnum arithmetic (cost 1) because:
;       The first argument is a (OR (RATIONAL (-139968) (139968))
;                                   (DOUBLE-FLOAT -139968.0d0 139968.0d0)
;                                   (SINGLE-FLOAT -139968.0 139968.0)), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (MEMBER 0.0 0.0d0) (DOUBLE-FLOAT (0.0d0) 279936.0d0)
;                            (SINGLE-FLOAT (0.0) 279936.0)
;                            (RATIONAL (0) (279936)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       unable to do inline fixnum arithmetic (cost 2) because:
;       The first argument is a (OR (RATIONAL (-139968) (139968))
;                                   (DOUBLE-FLOAT -139968.0d0 139968.0d0)
;                                   (SINGLE-FLOAT -139968.0 139968.0)), not a FIXNUM.
;       The result is a (VALUES
;                        (OR (MEMBER 0.0 0.0d0) (DOUBLE-FLOAT (0.0d0) 279936.0d0)
;                            (SINGLE-FLOAT (0.0) 279936.0)
;                            (RATIONAL (0) (279936)))
;                        &OPTIONAL), not a (VALUES FIXNUM &REST T).
;       etc.

;     (* SCALE (SETF LAST (MOD (+ # IC) IM)))
; 
; note: forced to do GENERIC-* (cost 30)
;       unable to do inline float arithmetic (cost 3) because:
;       The first argument is a (OR (MEMBER 0.0 0.0d0)
;                                   (DOUBLE-FLOAT -139968.0d0 279936.0d0)
;                                   (SINGLE-FLOAT -139968.0 279936.0)
;                                   (RATIONAL (-139968) (279936))), not a DOUBLE-FLOAT.

; compiling (DEFINE-CONSTANT AI-ARRAY ...)
; file: /home/dunham/benchmarksgame/bench/fastaredux/fastaredux.sbcl-5.sbcl
; in: DEFINE-CONSTANT AI-ARRAY
;     (TRUNCATE (AREF RAND-ARRAY I))
; --> TRUNCATE LET 
; ==>
;   (SB-KERNEL:%UNARY-TRUNCATE/DOUBLE-FLOAT SB-C::X)
; 
; note: forced to do full call
;       unable to do inline float truncate (cost 5) because:
;       The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES
;                                                          (SIGNED-BYTE 32) &REST
;                                                          T).
;       unable to do inline float truncate (cost 5) because:
;       The result is a (VALUES INTEGER &OPTIONAL), not a (VALUES
;                                                          (UNSIGNED-BYTE 32)
;                                                          &REST T).

; --> TRUNCATE LET VALUES - 
; ==>
;   (SB-KERNEL:%DOUBLE-FLOAT SB-C::RES)
; 
; note: forced to do full call
;       unable to do inline float coercion (cost 5) because:
;       The first argument is a INTEGER, not a (SIGNED-BYTE 32).
;       unable to do inline float coercion (cost 6) because:
;       The first argument is a INTEGER, not a (UNSIGNED-BYTE 32).

; --> TRUNCATE LET 
; ==>
;   (SB-KERNEL:%UNARY-TRUNCATE/DOUBLE-FLOAT SB-C::X)
; 
; note: doing float to pointer coercion (cost 13)

; compiling (DEFPARAMETER *C* ...)
; compiling (DECLAIM (TYPE FIXNUM ...))
; compiling (DEFMACRO RANDOM-NEXT ...)
; compiling (DEFINE-CONSTANT ALU ...)
; compiling (DEFINE-CONSTANT IUB ...)
; compiling (DEFINE-CONSTANT HOMO-SAPIENS ...)
; compiling (DEFINE-CONSTANT OUT-BUF ...)
; compiling (LET (#) ...)
; compiling (DEFUN MAIN ...); 
; compilation unit finished
;   printed 26 notes


; /home/dunham/benchmarksgame_quadcore/fastaredux/tmp/fastaredux.sbcl-5.fasl written
; compilation finished in 0:00:00.180
[undoing binding stack and other enclosing state... done]
[saving current Lisp image into sbcl.core:
writing 3496 bytes from the read-only space at 0x1000000
writing 2240 bytes from the static space at 0x1100000
writing 34734080 bytes from the dynamic space at 0x9000000
done]
### START fastaredux.sbcl-5.sbcl_run
(main) (quit)
### END fastaredux.sbcl-5.sbcl_run

0.97s to complete and log all make actions

COMMAND LINE:
/usr/local/bin/sbcl  --noinform --core sbcl.core --userinit /dev/null --load fastaredux.sbcl-5.sbcl_run 25000000

(TRUNCATED) PROGRAM OUTPUT:
>ONE Homo sapiens alu
GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA
TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT
AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG
GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG
CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT
GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA
GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA
TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG
AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA
GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT
AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC
AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG
GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC
CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG
AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT
TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA
TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT
GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG
TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT
CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG
CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG
TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA
CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG
AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG
GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC
TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA
TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA
GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT
GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC
ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT
TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC
CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG
CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG
GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC
CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT
GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC
GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA
GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA
GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA
GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG
AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT
CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA
GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA
AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC
GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT
ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG
GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC
GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC
GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG
TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA
AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG
GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT
CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC
TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG
ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC
GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA
ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA
CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA
CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA
ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG
CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG
AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC
CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG
AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC
CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG
CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG
CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG
CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC
ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA
AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC
TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC
ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG
CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG
AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT
AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA
TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC
CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA
TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG
CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT
GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG
GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG
CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG
GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG
GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT
AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT
GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT
CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG
GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC
TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT
CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG
ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG
CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG
AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA
CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG
CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC
ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC
GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC
GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG
GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT
TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG
CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA
GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG
CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC
GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG
CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA
CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG
CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA
ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC
CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT
GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA
AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG
ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC
TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA
GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC
GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG
TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC
AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA
ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA
GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC
AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG
TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC
CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT
GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC
CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA
GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT
TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC
ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC
TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG
GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG
TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG
GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC
GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT
ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC
GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC
GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC
CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA
ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG
AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC
TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT
CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG
TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG
CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC
GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT
GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC
CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC
TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG
CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG
AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG
AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG
AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT
GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA
TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC
AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA
AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG
CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC
TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG
GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT
CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG
CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG
GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA
AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA
GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC
TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC
CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA
GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG
CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG
AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG
ACAGAGCGAGACTCCGTCTCAAAAAGGCCGG

Revised BSD license

  Home   Conclusions   License   Play