Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defmethod (setf mref) ((value double-float) (matrix matrix-dfr) i j)
- (declare
- (type double-float value)
- (type fixnum i j)
- (optimize (debug 0) (safety 0) (speed 3)))
- (with-matrix-indexes (matrix i j)
- (multiple-value-bind (segment-id element-id) (floor j (the fixnum (segment-width matrix)))
- (let ((segment (aref (the (simple-array (simple-array double-float)) (segments matrix))
- (+ (the fixnum (* i (the fixnum (number-of-segments matrix)))) segment-id))))
- (declare
- (type fixnum segment-id element-id)
- (type (simple-array double-float) segment))
- (setf (aref segment element-id) value)))))
- ;;;;;
- ; in: DEFMETHOD (SETF MREF) (DOUBLE-FLOAT MATRIX-DFR T T)
- ; (SETF (AREF LINEAR-ALGEBRA::SEGMENT LINEAR-ALGEBRA::ELEMENT-ID)
- ; LINEAR-ALGEBRA::VALUE)
- ; --> LET* FUNCALL SB-C::%FUNCALL (SETF AREF) SB-KERNEL:HAIRY-DATA-VECTOR-SET
- ; --> MULTIPLE-VALUE-BIND MULTIPLE-VALUE-CALL
- ; ==>
- ; #'(LAMBDA (&OPTIONAL (ARRAY) (SB-INT:INDEX) &REST #:G21)
- ; (DECLARE (IGNORE #:G21))
- ; (DECLARE (TYPE (SIMPLE-ARRAY DOUBLE-FLOAT 1) ARRAY)
- ; (TYPE DOUBLE-FLOAT SB-C::NEW-VALUE))
- ; (SB-KERNEL:DATA-VECTOR-SET ARRAY SB-INT:INDEX SB-C::NEW-VALUE))
- ;
- ; note: doing float to pointer coercion (cost 13) to "<return value>"
- ;
- ; compilation unit finished
- ; printed 1 note
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement