+#+end_src
+
+We do not need to include a method on (signum -1), as the standard
+=no-applicable-method= protocol will automatically apply to negative
+real or non-real arguments.
+
+Benchmarketing: we chose to benchmark 20! because that is the largest
+factorial whose answer fits in SBCL's 63-bit fixnums, so as to attempt
+to measure the maximum effect of dispatch (unobscured by allocation /
+gc issues)
+
+| fact (signum-gf) | %fact (fun) | %%fact (gf / 1meth) | fact (signum-gf / 1arg hash-special-case) |
+|------------------+-------------+---------------------+-------------------------------------------|
+| 0.284 | 0.004 | 0.016 | 0.032 |
+| 0.076 | 0.008 | 0.012 | 0.024 |
+| 0.072 | 0.004 | 0.012 | 0.116 |
+| 0.264 | 0.004 | 0.008 | 0.120 |
+| 0.292 | 0.008 | 0.012 | 0.120 |
+| 0.264 | 0.004 | 0.016 | 0.084 |
+| 0.276 | 0.008 | 0.012 | 0.092 |
+| 0.264 | 0.008 | 0.012 | 0.036 |
+| 0.276 | 0.008 | 0.004 | 0.104 |
+| 0.272 | 0.004 | 0.012 | 0.020 |
+
+#+begin_src lisp
+(progn (gc :full t) (time (dotimes (i 10000) (%fact 20))))