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