clem 0.4.1, ch-asdf 0.2.8, ch-util 0.2.2, lift 1.3.1, darcs ignored, smarkup 0.3.3
[CommonLispStat.git] / external / clem / src / scalar.lisp
blob80512fa53d8fe76aa9e90107b5cc2a1c1a2b7cd0
2 (in-package :clem)
4 (defclass scalar (matrix) ())
6 (defun scalar (val &key (matrix-class 'scalar))
7 (let ((m (make-instance matrix-class)))
8 (scalar-set-val m val)
9 m))
11 (defgeneric scalar-val (s))
12 (defmethod scalar-val ((s scalar)) (aref (matrix-vals s) 0 0))
14 (defgeneric scalar-set-val (s v))
15 (defmethod scalar-set-val ((s scalar) v) (setf (matrix-vals s) v))
17 (defmethod dim ((s scalar)) '(1 1))
18 (defmethod val ((s scalar) i j) (declare (ignore i) (ignore j)) (scalar-val s))
19 (defmethod set-val ((s scalar) i j v &key (coerce t))
20 (declare (ignore i) (ignore j))
21 (scalar-set-val s (if coerce (coerce v (element-type (class-of s))) v)))
24 (defclass bit-scalar (bit-matrix scalar)
25 ((initial-element :accessor initial-element
26 :initarg :initial-element :initform 0))
27 (:metaclass standard-matrix-class)
28 (:element-type (unsigned-byte 1))
29 (:accumulator-type (unsigned-byte 32))
30 (:minval 0)
31 (:maxval 1))
33 (defclass ub8-scalar (ub8-matrix scalar)
34 ((initial-element :accessor initial-element
35 :initarg :initial-element :initform 0))
36 (:metaclass standard-matrix-class)
37 (:element-type (unsigned-byte 8))
38 (:accumulator-type (unsigned-byte 32))
39 (:minval 0)
40 (:maxval #.(- (expt 2 8) 1)))
42 (defclass sb8-scalar (sb8-matrix scalar)
43 ((initial-element :accessor initial-element
44 :initarg :initial-element :initform 0))
45 (:metaclass standard-matrix-class)
46 (:element-type (signed-byte 8))
47 (:accumulator-type (signed-byte 32))
48 (:minval #.(- (expt 2 7)))
49 (:maxval #.(- (expt 2 7) 1)))