17:46:31mrcode_yeah, i guess you're right. i was driven more for sake of completeness of understanding of how the types get propagated and how to specify them
17:49:01stassatsoh, what am i thinking, (double-float (0d0))
18:00:45mrcode_so a somewhat related problem is how to inline an ftruncate of a double ? i have note saying that (result (truncate corr)) can't be inlined. corr is (+ 0.5d0 r) where r is a double-float
18:02:34mrcode_basically i have this piece that is giving me trouble, since it's my first time trying to optimize lisp code : https://pastebin.com/UWQ8bSZE
18:02:45stassats(truncate (the (double-float #.(float most-negative-fixnum 1d0) #.(float most-positive-fixnum 1d0)) x))
18:05:52mrcode_nice. black magic, but it works. thanks a lot stassats
18:06:15Bikeit's not black magic, it's just that if the float is too big there's extra code to make a bignum
18:09:14mrcode_so does specifying the most-*-fixnum get rid of that code ?
18:10:56Bikeyou're declaring that the float is not too big.
18:22:25mrcode_so now a lot of stuff is inlined, and i'm looking at the disassemble output, i see sb-kernel:two-arg-/ suggesting i still get some un-inlined divisions, even though i am declaring arguments as fixnums
1:11:52stassatsdon't know, starting from wrong premises or something?
1:26:38saturn2could you explain why sbcl doesn't warn about a type error when compiling that code, but it does with this? (defun foo () (labels ((a (x) (if (< x 5) 5 x))) (the (mod 4) (a 0))))
1:27:39stassatsbecause it doesn't derive the type of that function