a68g-lib.h

You can download the current version of Algol 68 Genie and its documentation here.

   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 .
   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 .
  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_16 (DOUBLE_T, DOUBLE_T, DOUBLE_T);
  98 extern DOUBLE_T a68_cot_16 (DOUBLE_T);
  99 extern DOUBLE_T a68_csc_16 (DOUBLE_T);
 100 extern DOUBLE_T a68_sec_16 (DOUBLE_T);
 101 extern DOUBLE_T a68_acot_16 (DOUBLE_T);
 102 extern DOUBLE_T a68_acsc_16 (DOUBLE_T);
 103 extern DOUBLE_T a68_asec_16 (DOUBLE_T);
 104 extern DOUBLE_T a68_sindg_16 (DOUBLE_T);
 105 extern DOUBLE_T a68_cosdg_16 (DOUBLE_T);
 106 extern DOUBLE_T a68_tandg_16 (DOUBLE_T);
 107 extern DOUBLE_T a68_asindg_16 (DOUBLE_T);
 108 extern DOUBLE_T a68_acosdg_16 (DOUBLE_T);
 109 extern DOUBLE_T a68_atandg_16 (DOUBLE_T);
 110 extern DOUBLE_T a68_cotdg_16 (DOUBLE_T);
 111 extern DOUBLE_T a68_acotdg_16 (DOUBLE_T);
 112 extern DOUBLE_T a68_sinpi_16 (DOUBLE_T); 
 113 extern DOUBLE_T a68_cospi_16 (DOUBLE_T); 
 114 extern DOUBLE_T a68_tanpi_16 (DOUBLE_T);
 115 extern DOUBLE_T a68_cotpi_16 (DOUBLE_T);
 116 
 117 #endif