]>
Commit | Line | Data |
---|---|---|
1eee94d3 GM |
1 | (* MathLib0.mod provides access to math functions. |
2 | ||
a945c346 | 3 | Copyright (C) 2003-2024 Free Software Foundation, Inc. |
1eee94d3 GM |
4 | Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>. |
5 | ||
6 | This file is part of GNU Modula-2. | |
7 | ||
8 | GNU Modula-2 is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 3, or (at your option) | |
11 | any later version. | |
12 | ||
13 | GNU Modula-2 is distributed in the hope that it will be useful, but | |
14 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 | General Public License for more details. | |
17 | ||
18 | Under Section 7 of GPL version 3, you are granted additional | |
19 | permissions described in the GCC Runtime Library Exception, version | |
20 | 3.1, as published by the Free Software Foundation. | |
21 | ||
22 | You should have received a copy of the GNU General Public License and | |
23 | a copy of the GCC Runtime Library Exception along with this program; | |
24 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
25 | <http://www.gnu.org/licenses/>. *) | |
26 | ||
27 | IMPLEMENTATION MODULE MathLib0 ; | |
28 | ||
29 | IMPORT cbuiltin, libm ; | |
30 | ||
31 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sqrt)) sqrt (x: REAL): REAL; | |
32 | BEGIN | |
33 | RETURN cbuiltin.sqrt (x) | |
34 | END sqrt ; | |
35 | ||
36 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sqrtl)) sqrtl (x: LONGREAL): LONGREAL; | |
37 | BEGIN | |
38 | RETURN cbuiltin.sqrtl (x) | |
39 | END sqrtl ; | |
40 | ||
41 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sqrts)) sqrts (x: SHORTREAL) : SHORTREAL ; | |
42 | BEGIN | |
43 | RETURN cbuiltin.sqrtf (x) | |
44 | END sqrts ; | |
45 | ||
46 | PROCEDURE exp (x: REAL) : REAL ; | |
47 | BEGIN | |
48 | RETURN libm.exp (x) | |
49 | END exp ; | |
50 | ||
51 | PROCEDURE exps (x: SHORTREAL) : SHORTREAL ; | |
52 | BEGIN | |
53 | RETURN libm.expf (x) | |
54 | END exps ; | |
55 | ||
56 | PROCEDURE expl (x: LONGREAL) : LONGREAL ; | |
57 | BEGIN | |
58 | RETURN libm.expl (x) | |
59 | END expl ; | |
60 | ||
61 | ||
62 | (* | |
63 | log (b) | |
64 | log (b) = c | |
65 | a ------ | |
66 | log (a) | |
67 | c | |
68 | *) | |
69 | ||
70 | PROCEDURE ln (x: REAL) : REAL ; | |
71 | BEGIN | |
72 | RETURN libm.log (x) / libm.log (exp1) | |
73 | END ln ; | |
74 | ||
75 | PROCEDURE lns (x: SHORTREAL) : SHORTREAL ; | |
76 | BEGIN | |
77 | RETURN libm.logf (x) / libm.logf (exp1) | |
78 | END lns ; | |
79 | ||
80 | PROCEDURE lnl (x: LONGREAL) : LONGREAL ; | |
81 | BEGIN | |
82 | RETURN libm.logl (x) / libm.logl (exp1) | |
83 | END lnl ; | |
84 | ||
85 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sin)) sin (x: REAL) : REAL ; | |
86 | BEGIN | |
87 | RETURN cbuiltin.sin (x) | |
88 | END sin ; | |
89 | ||
90 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sinl)) sinl (x: LONGREAL) : LONGREAL ; | |
91 | BEGIN | |
92 | RETURN cbuiltin.sinl (x) | |
93 | END sinl ; | |
94 | ||
95 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_sinf)) sins (x: SHORTREAL) : SHORTREAL ; | |
96 | BEGIN | |
97 | RETURN cbuiltin.sinf (x) | |
98 | END sins ; | |
99 | ||
100 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cos)) cos (x: REAL) : REAL ; | |
101 | BEGIN | |
102 | RETURN cbuiltin.cos (x) | |
103 | END cos ; | |
104 | ||
105 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cosf)) coss (x: SHORTREAL) : SHORTREAL ; | |
106 | BEGIN | |
107 | RETURN cbuiltin.cosf (x) | |
108 | END coss ; | |
109 | ||
110 | PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_cosl)) cosl (x: LONGREAL) : LONGREAL ; | |
111 | BEGIN | |
112 | RETURN cbuiltin.cosl (x) | |
113 | END cosl ; | |
114 | ||
115 | PROCEDURE tan (x: REAL) : REAL ; | |
116 | BEGIN | |
117 | RETURN libm.tan (x) | |
118 | END tan ; | |
119 | ||
120 | PROCEDURE tanl (x: LONGREAL) : LONGREAL ; | |
121 | BEGIN | |
122 | RETURN libm.tanl (x) | |
123 | END tanl ; | |
124 | ||
125 | PROCEDURE tans (x: SHORTREAL) : SHORTREAL ; | |
126 | BEGIN | |
127 | RETURN libm.tanf (x) | |
128 | END tans ; | |
129 | ||
130 | PROCEDURE arctan (x: REAL) : REAL ; | |
131 | BEGIN | |
132 | RETURN libm.atan (x) | |
133 | END arctan ; | |
134 | ||
135 | PROCEDURE arctans (x: SHORTREAL) : SHORTREAL ; | |
136 | BEGIN | |
137 | RETURN libm.atanf (x) | |
138 | END arctans ; | |
139 | ||
140 | PROCEDURE arctanl (x: LONGREAL) : LONGREAL ; | |
141 | BEGIN | |
142 | RETURN libm.atanl (x) | |
143 | END arctanl ; | |
144 | ||
145 | PROCEDURE entier (x: REAL) : INTEGER ; | |
146 | BEGIN | |
147 | RETURN TRUNC (libm.floor (x)) | |
148 | END entier ; | |
149 | ||
150 | PROCEDURE entiers (x: SHORTREAL) : INTEGER ; | |
151 | BEGIN | |
152 | RETURN TRUNC (libm.floorf (x)) | |
153 | END entiers ; | |
154 | ||
155 | PROCEDURE entierl (x: LONGREAL) : INTEGER ; | |
156 | BEGIN | |
157 | RETURN TRUNC (libm.floorl (x)) | |
158 | END entierl ; | |
159 | ||
160 | ||
161 | END MathLib0. |