mmaul / clml

Common Lisp Machine Learning Library
Other
259 stars 36 forks source link

clml load failed on lispworks 7.1.1 #37

Closed hufengtao closed 4 years ago

hufengtao commented 5 years ago

(ql:quickload :clml) load failed on lispworks 7.1.1.

Error information as belowed: **++++ Error in CLML.NONPARAMETRIC.STATISTICS:JACKUP-LOGGED-PROB: Object #<pointer out of memory bounds: 40862E42FEFA39EF> is of type SYSTEM::MARKER which is not externalizable to #<STREAM::LATIN-1-FILE-STREAM /home/hft/.cache/common-lisp/lw-7.1.1-linux-x64/home/hft/quicklisp/local-projects/clml-master/nonparametric/src/t_statistics-tmpACU4ZVG7.64ufasl>.

mmaul commented 5 years ago

I do not have Lispworks 7.1 so it might be a little difficut for me to troubleshoot, but I have a hunch that the optimizations might be allowing this to happen. If you could replace the definition of jackup-logged-prob in clml/src/nonparametric/src/statistics.lisp with the definition below. Let me know if it works and I'll check it in.

(defun jackup-logged-prob (logged-prob p-max &optional (index (length logged-prob)))
  (declare #- lispworks (optimize (speed 3) (safety 0) (debug 0))
           (type (array double-float (*)) logged-prob)
           (type double-float p-max)
           (type fixnum index))
  (let ((jack (- #.(/ (log most-positive-double-float) 2) p-max))
        (sum 0d0))
    (declare (type double-float jack sum))
    (loop for i of-type fixnum from 0 below index
        for upp of-type double-float = (if (zerop (aref logged-prob i))
                                   0d0
                                 (safe-exp (+ (aref logged-prob i) jack))) do
          (incf sum upp)
          (setf (aref logged-prob i) upp))
    sum))
hufengtao commented 5 years ago

this fix have no effection. same error occur when (ql:quickload :clml) .

hufengtao commented 5 years ago

when execute (ql:quickload :clml) on lispworks, another error also occur: The variable +MOST-POSITIVE-EXP-ABLE-FLOAT+ is unbound.

mmaul commented 4 years ago

So it's been awhile, but if you are still interested in getting this working, as I don't have lispworks, I'm willing to work with you over a webex or other screen share platform to sort out the issue. If you your interested open another issue and well make arrangements to connect.