/usr/include/gnuastro/arithmetic.h is in libgnuastro-dev 0.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | /*********************************************************************
Arithmetic -- Preform arithmetic operations on datasets.
This is part of GNU Astronomy Utilities (Gnuastro) package.
Original author:
Mohammad Akhlaghi <akhlaghi@gnu.org>
Contributing author(s):
Copyright (C) 2017, Free Software Foundation, Inc.
Gnuastro is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.
Gnuastro is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with Gnuastro. If not, see <http://www.gnu.org/licenses/>.
**********************************************************************/
#ifndef __GAL_ARITHMETIC_H__
#define __GAL_ARITHMETIC_H__
/* Include other headers if necessary here. Note that other header files
must be included before the C++ preparations below */
#include <gnuastro/data.h>
/* When we are within Gnuastro's building process, `IN_GNUASTRO_BUILD' is
defined. In the build process, installation information (in particular
`GAL_CONFIG_ARITH_CHAR' and the rest of the types that we needed in the
arithmetic function) is kept in `config.h'. When building a user's
programs, this information is kept in `gnuastro/config.h'. Note that all
`.c' files must start with the inclusion of `config.h' and that
`gnuastro/config.h' is only created at installation time (not present
during the building of Gnuastro).*/
#ifndef IN_GNUASTRO_BUILD
#include <gnuastro/config.h>
#endif
/* C++ Preparations */
#undef __BEGIN_C_DECLS
#undef __END_C_DECLS
#ifdef __cplusplus
# define __BEGIN_C_DECLS extern "C" {
# define __END_C_DECLS }
#else
# define __BEGIN_C_DECLS /* empty */
# define __END_C_DECLS /* empty */
#endif
/* End of C++ preparations */
/* Actual header contants (the above were for the Pre-processor). */
__BEGIN_C_DECLS /* From C++ preparations */
/* Arithmetic flags. */
#define GAL_ARITHMETIC_INPLACE 0x1
#define GAL_ARITHMETIC_FREE 0x2
#define GAL_ARITHMETIC_NUMOK 0x4
#define GAL_ARITHMETIC_FLAGS_ALL ( GAL_ARITHMETIC_INPLACE \
| GAL_ARITHMETIC_FREE \
| GAL_ARITHMETIC_NUMOK )
/* Identifiers for each operator. */
enum gal_arithmetic_operators
{
GAL_ARITHMETIC_OP_INVALID, /* Invalid (=0 by C standard). */
GAL_ARITHMETIC_OP_PLUS, /* + */
GAL_ARITHMETIC_OP_MINUS, /* - */
GAL_ARITHMETIC_OP_MULTIPLY, /* * */
GAL_ARITHMETIC_OP_DIVIDE, /* / */
GAL_ARITHMETIC_OP_MODULO, /* % */
GAL_ARITHMETIC_OP_LT, /* < */
GAL_ARITHMETIC_OP_LE, /* <= */
GAL_ARITHMETIC_OP_GT, /* > */
GAL_ARITHMETIC_OP_GE, /* >= */
GAL_ARITHMETIC_OP_EQ, /* == */
GAL_ARITHMETIC_OP_NE, /* != */
GAL_ARITHMETIC_OP_AND, /* && */
GAL_ARITHMETIC_OP_OR, /* || */
GAL_ARITHMETIC_OP_NOT, /* ! */
GAL_ARITHMETIC_OP_ISBLANK, /* Similar to isnan() for floats. */
GAL_ARITHMETIC_OP_WHERE, /* ?: */
GAL_ARITHMETIC_OP_BITAND, /* & */
GAL_ARITHMETIC_OP_BITOR, /* | */
GAL_ARITHMETIC_OP_BITXOR, /* ^ */
GAL_ARITHMETIC_OP_BITLSH, /* << */
GAL_ARITHMETIC_OP_BITRSH, /* >> */
GAL_ARITHMETIC_OP_BITNOT, /* ~ */
GAL_ARITHMETIC_OP_ABS, /* abs() */
GAL_ARITHMETIC_OP_POW, /* pow() */
GAL_ARITHMETIC_OP_SQRT, /* sqrt() */
GAL_ARITHMETIC_OP_LOG, /* log() */
GAL_ARITHMETIC_OP_LOG10, /* log10() */
GAL_ARITHMETIC_OP_MINVAL, /* Minimum value of array. */
GAL_ARITHMETIC_OP_MAXVAL, /* Maximum value of array. */
GAL_ARITHMETIC_OP_NUMVAL, /* Number of (non-blank) elements. */
GAL_ARITHMETIC_OP_SUMVAL, /* Sum of (non-blank) elements. */
GAL_ARITHMETIC_OP_MEANVAL, /* Mean value of array. */
GAL_ARITHMETIC_OP_STDVAL, /* Standard deviation value of array. */
GAL_ARITHMETIC_OP_MEDIANVAL, /* Median value of array. */
GAL_ARITHMETIC_OP_MIN, /* Minimum per pixel of multiple arrays. */
GAL_ARITHMETIC_OP_MAX, /* Maximum per pixel of multiple arrays. */
GAL_ARITHMETIC_OP_NUM, /* Non-blank number of pixels in arrays. */
GAL_ARITHMETIC_OP_SUM, /* Sum per pixel of multiple arrays. */
GAL_ARITHMETIC_OP_MEAN, /* Mean per pixel of multiple arrays. */
GAL_ARITHMETIC_OP_STD, /* STD per pixel of multiple arrays. */
GAL_ARITHMETIC_OP_MEDIAN, /* Median per pixel of multiple arrays. */
GAL_ARITHMETIC_OP_TO_UINT8, /* Convert to uint8_t. */
GAL_ARITHMETIC_OP_TO_INT8, /* Convert to int8_t. */
GAL_ARITHMETIC_OP_TO_UINT16, /* Convert to uint16_t. */
GAL_ARITHMETIC_OP_TO_INT16, /* Convert to int16_t. */
GAL_ARITHMETIC_OP_TO_UINT32, /* Convert to uint32_t. */
GAL_ARITHMETIC_OP_TO_INT32, /* Convert to int32_t. */
GAL_ARITHMETIC_OP_TO_UINT64, /* Convert to uint64_t. */
GAL_ARITHMETIC_OP_TO_INT64, /* Convert to int64_t. */
GAL_ARITHMETIC_OP_TO_FLOAT32, /* Convert to float32. */
GAL_ARITHMETIC_OP_TO_FLOAT64, /* Convert to float64. */
GAL_ARITHMETIC_OP_LAST_CODE, /* Last code of the library operands. */
};
gal_data_t *
gal_arithmetic(int operator, int flags, ...);
__END_C_DECLS /* From C++ preparations */
#endif /* __GAL_ARITHMETIC_H__ */
|