home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / src / mappers.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  3KB  |  105 lines

  1. // mappers.h                                           -*- C++ -*-
  2. /*
  3.  
  4. Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton
  5.  
  6. This file is part of Octave.
  7.  
  8. Octave is free software; you can redistribute it and/or modify it
  9. under the terms of the GNU General Public License as published by the
  10. Free Software Foundation; either version 2, or (at your option) any
  11. later version.
  12.  
  13. Octave is distributed in the hope that it will be useful, but WITHOUT
  14. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  15. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  16. for more details.
  17.  
  18. You should have received a copy of the GNU General Public License
  19. along with Octave; see the file COPYING.  If not, write to the Free
  20. Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  
  22. */
  23.  
  24. #if !defined (octave_mappers_h)
  25. #define octave_mappers_h 1
  26.  
  27. template <class T> class complex;
  28. typedef complex<double> Complex;
  29.  
  30. typedef double (*d_d_Mapper)(double);
  31. typedef double (*d_c_Mapper)(const Complex&);
  32. typedef Complex (*c_c_Mapper)(const Complex&);
  33.  
  34. // If can_return_complex_for_real_arg is 1, lower_limit and
  35. // upper_limit specify the range of values for which a real arg
  36. // returns a real value.  Outside that range, we have to convert args
  37. // to complex, and call the complex valued function.
  38. //
  39. // If can_return_complex_for_real_arg is 0, lower_limit and
  40. // upper_limit are ignored.
  41.  
  42. struct Mapper_fcn
  43. {
  44.   char *name;
  45.   int can_return_complex_for_real_arg;
  46.   double lower_limit;
  47.   double upper_limit;
  48.   d_d_Mapper d_d_mapper;
  49.   d_c_Mapper d_c_mapper;
  50.   c_c_Mapper c_c_mapper;
  51. };
  52.  
  53. struct builtin_mapper_function
  54. {
  55.   char *name;
  56.   int can_return_complex_for_real_arg;
  57.   double lower_limit;
  58.   double upper_limit;
  59.   d_d_Mapper d_d_mapper;
  60.   d_c_Mapper d_c_mapper;
  61.   c_c_Mapper c_c_mapper;
  62.   char *help_string;
  63. };
  64.  
  65. extern double arg (double x);
  66. extern double conj (double x);
  67. extern double fix (double x);
  68. extern double imag (double x);
  69. extern double real (double x);
  70. extern double round (double x);
  71. extern double signum (double x);
  72. extern double xisnan (double x);
  73. extern double xfinite (double x);
  74. extern double xisinf (double x);
  75.  
  76. extern double xisnan (const Complex& x);
  77. extern double xfinite (const Complex& x);
  78. extern double xisinf (const Complex& x);
  79.  
  80. extern Complex acos (const Complex& x);
  81. extern Complex acosh (const Complex& x);
  82. extern Complex asin (const Complex& x);
  83. extern Complex asinh (const Complex& x);
  84. extern Complex atan (const Complex& x);
  85. extern Complex atanh (const Complex& x);
  86. extern Complex ceil (const Complex& x);
  87. extern Complex fix (const Complex& x);
  88. extern Complex floor (const Complex& x);
  89. extern Complex log10 (const Complex& x);
  90. extern Complex round (const Complex& x);
  91. extern Complex signum (const Complex& x);
  92. extern Complex tan (const Complex& x);
  93. extern Complex tanh (const Complex& x);
  94.  
  95. extern void install_mapper_functions (void);
  96.  
  97. #endif
  98.  
  99. /*
  100. ;;; Local Variables: ***
  101. ;;; mode: C++ ***
  102. ;;; page-delimiter: "^/\\*" ***
  103. ;;; End: ***
  104. */
  105.