a68g-lib.h
1 //! @file a68g-lib.h
2 //! @author J. Marcel van der Veer
3 //!
4 //! @section Copyright
5 //!
6 //! This file is part of Algol68G - an Algol 68 compiler-interpreter.
7 //! Copyright 2001-2023 J. Marcel van der Veer [algol68g@xs4all.nl].
8 //!
9 //! @section License
10 //!
11 //! This program is free software; you can redistribute it and/or modify it
12 //! under the terms of the GNU General Public License as published by the
13 //! Free Software Foundation; either version 3 of the License, or
14 //! (at your option) any later version.
15 //!
16 //! This program is distributed in the hope that it will be useful, but
17 //! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 //! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 //! more details. You should have received a copy of the GNU General Public
20 //! License along with this program. If not, see [http://www.gnu.org/licenses/].
21
22 #if !defined __A68G_LIB_H__
23 #define __A68G_LIB_H__
24
25 #define MATH_EPSILON DBL_EPSILON
26
27 #define A68_INVALID(c)\
28 if (c) {\
29 errno = EDOM;\
30 return 0;\
31 }
32
33 #define A68_OVERFLOW(c)\
34 if (c) {\
35 errno = ERANGE;\
36 return 0;\
37 }
38
39 #define A68_MAX_FAC 170
40
41 extern INT_T a68_add_int (INT_T, INT_T);
42 extern INT_T a68_mod_int (INT_T, INT_T);
43 extern INT_T a68_mul_int (INT_T, INT_T);
44 extern INT_T a68_m_up_n (INT_T, INT_T);
45 extern INT_T a68_over_int (INT_T, INT_T);
46 extern INT_T a68_round (REAL_T);
47 extern INT_T a68_sub_int (INT_T, INT_T);
48 extern REAL_T a68_abs (REAL_T);
49 extern REAL_T a68_acosdg (REAL_T);
50 extern REAL_T a68_acosh (REAL_T);
51 extern REAL_T a68_acotdg (REAL_T);
52 extern REAL_T a68_acot (REAL_T);
53 extern REAL_T a68_acsc (REAL_T);
54 extern REAL_T a68_asec (REAL_T);
55 extern REAL_T a68_asindg (REAL_T);
56 extern REAL_T a68_asinh (REAL_T);
57 extern REAL_T a68_atan2 (REAL_T, REAL_T);
58 extern REAL_T a68_atandg (REAL_T);
59 extern REAL_T a68_atanh (REAL_T);
60 extern REAL_T a68_beta (REAL_T, REAL_T);
61 extern REAL_T a68_choose (INT_T, INT_T);
62 extern REAL_T a68_cosdg (REAL_T);
63 extern REAL_T a68_cospi (REAL_T);
64 extern REAL_T a68_cotdg (REAL_T);
65 extern REAL_T a68_cotpi (REAL_T);
66 extern REAL_T a68_cot (REAL_T);
67 extern REAL_T a68_csc (REAL_T);
68 extern REAL_T a68_sec (REAL_T);
69 extern REAL_T a68_div_int (INT_T, INT_T);
70 extern REAL_T a68_exp (REAL_T);
71 extern REAL_T a68_fact (INT_T);
72 extern REAL_T a68_fdiv (REAL_T, REAL_T);
73 extern REAL_T a68_hypot (REAL_T, REAL_T);
74 extern REAL_T a68_int (REAL_T);
75 extern REAL_T a68_inverfc (REAL_T);
76 extern REAL_T a68_inverf (REAL_T);
77 extern REAL_T a68_ln1p (REAL_T);
78 extern REAL_T a68_ln1p (REAL_T);
79 extern REAL_T a68_ln_beta (REAL_T, REAL_T);
80 extern REAL_T a68_ln_choose (INT_T, INT_T);
81 extern REAL_T a68_ln_fact (INT_T);
82 extern REAL_T a68_ln (REAL_T);
83 extern REAL_T a68_max (REAL_T, REAL_T);
84 extern REAL_T a68_min (REAL_T, REAL_T);
85 extern REAL_T a68_nan (void);
86 extern REAL_T a68_neginf (void);
87 extern REAL_T a68_posinf (void);
88 extern REAL_T a68_psi (REAL_T);
89 extern REAL_T a68_sign (REAL_T);
90 extern REAL_T a68_sindg (REAL_T);
91 extern REAL_T a68_sinpi (REAL_T);
92 extern REAL_T a68_tandg (REAL_T);
93 extern REAL_T a68_tanpi (REAL_T);
94 extern REAL_T a68_x_up_n (REAL_T, INT_T);
95 extern REAL_T a68_x_up_y (REAL_T, REAL_T);
96 extern REAL_T a68_beta_inc (REAL_T, REAL_T, REAL_T);
97 extern DOUBLE_T a68_beta_inc_double_real (DOUBLE_T, DOUBLE_T, DOUBLE_T);
98 extern DOUBLE_T cot_double_real (DOUBLE_T);
99 extern DOUBLE_T csc_double_real (DOUBLE_T);
100 extern DOUBLE_T sec_double_real (DOUBLE_T);
101 extern DOUBLE_T acot_double_real (DOUBLE_T);
102 extern DOUBLE_T acsc_double_real (DOUBLE_T);
103 extern DOUBLE_T asec_double_real (DOUBLE_T);
104 extern DOUBLE_T sindg_double_real (DOUBLE_T);
105 extern DOUBLE_T cosdg_double_real (DOUBLE_T);
106 extern DOUBLE_T tandg_double_real (DOUBLE_T);
107 extern DOUBLE_T asindg_double_real (DOUBLE_T);
108 extern DOUBLE_T acosdg_double_real (DOUBLE_T);
109 extern DOUBLE_T atandg_double_real (DOUBLE_T);
110 extern DOUBLE_T cotdg_double_real (DOUBLE_T);
111 extern DOUBLE_T acotdg_double_real (DOUBLE_T);
112 extern DOUBLE_T sinpi_double_real (DOUBLE_T);
113 extern DOUBLE_T cospi_double_real (DOUBLE_T);
114 extern DOUBLE_T tanpi_double_real (DOUBLE_T);
115 extern DOUBLE_T cotpi_double_real (DOUBLE_T);
116
117 #endif