File: floatproperties.lisp

package info (click to toggle)
maxima-sage 5.45.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 113,788 kB
  • sloc: lisp: 440,833; fortran: 14,665; perl: 14,369; tcl: 10,997; sh: 4,475; makefile: 2,520; ansic: 447; python: 262; xml: 59; awk: 37; sed: 17
file content (30 lines) | stat: -rw-r--r-- 1,060 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
;; Expose some properties of double floating point numbers to Maxima.
;; Note: floatbits is one plus the number of bits in the fractional part.

(defun $float_eps ()
  flonum-epsilon)

(defmvar $largest_float most-positive-flonum)
(setf (get '$largest_float 'assign) 'neverset)

(defmvar $largest_negative_float most-negative-flonum)
(setf (get '$largest_negative_float 'assign) 'neverset)

(defmvar $least_positive_float least-positive-flonum)
(setf (get '$least_positive_float 'assign) 'neverset)

(defmvar $least_negative_float least-negative-flonum)
(setf (get '$least_negative_float 'assign) 'neverset)

(defmvar $least_positive_normalized_float least-positive-normalized-flonum)
(setf (get '$least_positive_normalized_float 'assign) 'neverset)

(defmvar $least_negative_normalized_float least-negative-normalized-flonum)
(setf (get '$least_negative_normalized_float 'assign) 'neverset)

(defun $float_bits ()
  (float-digits 0.0))

(defun $bigfloat_eps ()
  (let ((r ($bfloat (div 1 (expt 2 fpprec)))))
    (list (first r) (incf (second r)) (third r))))