This file is indexed.

/usr/share/gnucash/scm/gnc-numeric.scm is in gnucash-common 1:2.6.1-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; gnc-numeric.scm : rational number representation for gnucash
;; Copyright 2000 Bill Gribble <grib@gnumatic.com>
;; Copyright 2001 Christian Stimming <stimming@tu-harburg.de>
;; 
;; This program is free software; you can redistribute it and/or    
;; modify it under the terms of the GNU General Public License as   
;; published by the Free Software Foundation; either version 2 of   
;; the License, or (at your option) any later version.              
;;                                                                  
;; This program is distributed in the hope that it will be useful,  
;; but WITHOUT ANY WARRANTY; without even the implied warranty of   
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    
;; GNU General Public License for more details.                     
;;                                                                  
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, contact:
;;
;; Free Software Foundation           Voice:  +1-617-542-5942
;; 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652
;; Boston, MA  02110-1301,  USA       gnu@gnu.org
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; use 'logior' in guile to bit-combine RND and DENOM flags.

(define GNC-RND-FLOOR           1)
(define GNC-RND-CEIL            2)
(define GNC-RND-TRUNC           3)
(define GNC-RND-PROMOTE         4)
(define GNC-RND-ROUND-HALF-DOWN 5)
(define GNC-RND-ROUND-HALF-UP   6)
(define GNC-RND-ROUND           7)
(define GNC-RND-NEVER           8)

(define GNC-DENOM-AUTO          0)
(define GNC-DENOM-REDUCE       32)
(define GNC-DENOM-FIXED        64)
(define GNC-DENOM-LCD          48)
(define GNC-DENOM-SIGFIG       80)

(define (GNC-DENOM-SIGFIGS n)
  (logior GNC-DENOM-SIGFIG (* n 256)))

(define GNC-ERROR-OK            0)
(define GNC-ERROR-ARG          -1)
(define GNC-ERROR-OVERFLOW     -2)
(define GNC-ERROR-DENOM-DIFF   -3)
(define GNC-ERROR-REMAINDER    -4)

(define <gnc-numeric>
  (make-record-type "<gnc-numeric>" 
                    '(num denom)))

(define gnc:make-gnc-numeric 
  (record-constructor <gnc-numeric>))

(define gnc:gnc-numeric? 
  (record-predicate <gnc-numeric>))

(define gnc:gnc-numeric-num
  (record-accessor <gnc-numeric> 'num))

(define gnc:gnc-numeric-denom
  (record-accessor <gnc-numeric> 'denom))

(define (gnc:gnc-numeric-denom-reciprocal arg)
  (- arg))



(define <gnc-monetary> 
  (make-record-type "<gnc-monetary>" 
		    '(commodity amount)))

;; Constructor; takes one <gnc:commodity*> and one <gnc-numeric>
(define (gnc:make-gnc-monetary c a)
  ;;FIXME: we used to type-check the values, like:
  ;; (gw:wcp-is-of-type? <gnc:commodity*> c)
  (if (and #t (gnc:gnc-numeric? a))
      ((record-constructor <gnc-monetary>) c a)
      (warn "wrong arguments for gnc:make-gnc-monetary: " c a)))

(define gnc:gnc-monetary? 
  (record-predicate <gnc-monetary>))

(define gnc:gnc-monetary-commodity
  (record-accessor <gnc-monetary> 'commodity))

(define gnc:gnc-monetary-amount
  (record-accessor <gnc-monetary> 'amount))

(define (gnc:monetary-neg a)
  (if (gnc:gnc-monetary? a)
      (gnc:make-gnc-monetary 
       (gnc:gnc-monetary-commodity a)
       (gnc-numeric-neg (gnc:gnc-monetary-amount a)))
      (warn "wrong arguments for gnc:monetary-neg: " a)))