00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef OBITFARRAY_H
00029 #define OBITFARRAY_H
00030
00031 #include "Obit.h"
00032 #include "ObitErr.h"
00033 #include "ObitInfoList.h"
00034 #include "ObitThread.h"
00035
00036
00064
00066 typedef struct {
00067 #include "ObitFArrayDef.h"
00068 } ObitFArray;
00069
00070
00076 #define ObitFArrayUnref(in) ObitUnref (in)
00077
00083 #define ObitFArrayRef(in) ObitRef (in)
00084
00091 #define ObitFArrayIsA(in) ObitIsA (in, ObitFArrayGetClass())
00092
00094 #ifndef MAXFARRAYDIM
00095 #define MAXFARRAYDIM 10
00096 #endif
00097
00098
00100 void ObitFArrayClassInit (void);
00101
00103 ObitFArray* newObitFArray (gchar* name);
00104
00106 ObitFArray* ObitFArrayCreate (gchar* name, glong ndim, glong *naxis);
00108 typedef void (*ObitFArrayCreateFP) (gchar* name, glong ndim, glong *naxis);
00109
00111 gconstpointer ObitFArrayGetClass (void);
00112
00114 ObitFArray* ObitFArrayCopy (ObitFArray *in, ObitFArray *out, ObitErr *err);
00115
00117 void ObitFArrayClone (ObitFArray *in, ObitFArray *out, ObitErr *err);
00118
00120 ObitFArray* ObitFArraySubArr (ObitFArray *in, glong *blc, glong *trc,
00121 ObitErr *err);
00122 typedef ObitFArray* (*ObitFArraySubArrFP) (ObitFArray *in, glong *blc, glong *trc,
00123 ObitErr *err);
00124
00126 ObitFArray* ObitFArrayTranspose (ObitFArray *in, glong *order, ObitErr *err);
00127 typedef ObitFArray* (*ObitFArrayTransposeFP) (ObitFArray *in, glong *order,
00128 ObitErr *err);
00129
00131 gboolean ObitFArrayIsCompatable (ObitFArray *in1, ObitFArray *in2);
00132 typedef gboolean (*ObitFArrayIsCompatableFP) (ObitFArray *in1, ObitFArray *in2);
00133
00135 ObitFArray* ObitFArrayRealloc (ObitFArray* in, glong ndim, glong *naxis);
00136 typedef void (*ObitFArrayReallocFP) (ObitFArray* in, glong ndim, glong *naxis);
00137
00139 gfloat* ObitFArrayIndex (ObitFArray* in, glong *pos);
00140 typedef gfloat* (*ObitFArrayIndexFP) (ObitFArray* in, glong *pos);
00141
00143 gfloat ObitFArrayMax (ObitFArray* in, glong *pos);
00144 typedef gfloat (*ObitFArrayMaxFP) (ObitFArray* in, glong *pos);
00145
00147 gfloat ObitFArrayMaxAbs (ObitFArray* in, glong *pos);
00148 typedef gfloat (*ObitFArrayMaxAbsFP) (ObitFArray* in, glong *pos);
00149
00151 gfloat ObitFArrayMin (ObitFArray* in, glong *pos);
00152 typedef gfloat (*ObitFArrayMinFP) (ObitFArray* in, glong *pos);
00153
00155 void ObitFArrayDeblank (ObitFArray* in, gfloat scalar);
00156 typedef void (*ObitFArrayDeblankFP) (ObitFArray* in, gfloat scalar);
00157
00159 gfloat ObitFArrayRMS (ObitFArray* in);
00160 typedef gfloat (*ObitFArrayRMSFP) (ObitFArray* in);
00161
00163 gfloat ObitFArrayRawRMS (ObitFArray* in);
00164 typedef gfloat (*ObitFArrayRawRMSFP) (ObitFArray* in);
00165
00167 gfloat ObitFArrayRMS0 (ObitFArray* in);
00168 typedef gfloat (*ObitFArrayRMS0FP) (ObitFArray* in);
00169
00171 gfloat ObitFArrayRMSQuant (ObitFArray* in);
00172 typedef gfloat (*ObitFArrayRMSQuantFP) (ObitFArray* in);
00173
00175 void ObitFArrayQuant (ObitFArray* in, gfloat *quant, gfloat *zero);
00176 typedef void (*ObitFArrayQuantFP) (ObitFArray* in, gfloat *quant, gfloat *zero);
00177
00179 gfloat ObitFArrayMode (ObitFArray* in);
00180 typedef gfloat (*ObitFArrayModeFP) (ObitFArray* in);
00181
00183 gfloat ObitFArrayMean (ObitFArray* in);
00184 typedef gfloat (*ObitFArrayMeanFP) (ObitFArray* in);
00185
00187 void ObitFArrayFill (ObitFArray* in, gfloat scalar);
00188 typedef void (*ObitFArrayFillFP) (ObitFArray* in, gfloat scalar);
00189
00191 void ObitFArrayNeg (ObitFArray* in);
00192 typedef void (*ObitFArrayNegFP) (ObitFArray* in);
00193
00195 void ObitFArraySin (ObitFArray* in);
00196 typedef void (*ObitFArraySinFP) (ObitFArray* in);
00197
00199 void ObitFArrayCos (ObitFArray* in);
00200 typedef void (*ObitFArrayCosFP) (ObitFArray* in);
00201
00203 gfloat ObitFArraySum (ObitFArray* in);
00204 typedef gfloat (*ObitFArraySumFP) (ObitFArray* in);
00205
00207 glong ObitFArrayCount (ObitFArray* in);
00208 typedef glong (*ObitFArrayCountFP) (ObitFArray* in);
00209
00211 void ObitFArraySAdd (ObitFArray* in, gfloat scalar);
00212 typedef void (*ObitFArraySAddFP) (ObitFArray* in, gfloat scalar);
00213
00215 void ObitFArraySMul (ObitFArray* in, gfloat scalar);
00216 typedef void (*ObitFArraySMulFP) (ObitFArray* in, gfloat scalar);
00217
00219 void ObitFArraySDiv (ObitFArray* in, gfloat scalar);
00220 typedef void (*ObitFArraySDivFP) (ObitFArray* in, gfloat scalar);
00221
00223 void ObitFArrayClip (ObitFArray* in, gfloat minVal,gfloat maxVal, gfloat newVal);
00224 typedef void (*ObitFArrayClipFP) (ObitFArray* in, gfloat minVal, gfloat maxVal,
00225 gfloat newVal);
00226
00228 void ObitFArrayInClip (ObitFArray* in, gfloat minVal,gfloat maxVal, gfloat newVal);
00229 typedef void (*ObitFArrayInClipFP) (ObitFArray* in, gfloat minVal, gfloat maxVal,
00230 gfloat newVal);
00231
00233 void ObitFArrayBlank (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00234 typedef void (*ObitFArrayBlankFP) (ObitFArray* in1, ObitFArray* in2,
00235 ObitFArray* out);
00236
00238 void ObitFArrayMaxArr (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00239 typedef void (*ObitFArrayMaxArrFP) (ObitFArray* in1, ObitFArray* in2,
00240 ObitFArray* out);
00241
00243 void ObitFArrayMinArr (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00244 typedef void (*ObitFArrayMinArrFP) (ObitFArray* in1, ObitFArray* in2,
00245 ObitFArray* out);
00246
00248 void ObitFArraySumArr (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00249 typedef void (*ObitFArraySumArrFP) (ObitFArray* in1, ObitFArray* in2,
00250 ObitFArray* out);
00251
00253 void ObitFArrayAvgArr (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00254 typedef void (*ObitFArrayAvgArrFP) (ObitFArray* in1, ObitFArray* in2,
00255 ObitFArray* out);
00256
00258 void ObitFArrayAdd (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00259 typedef void (*ObitFArrayAddFP) (ObitFArray* in1, ObitFArray* in2,
00260 ObitFArray* out);
00261
00263 void ObitFArraySub (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00264 typedef void (*ObitFArraySubFP) (ObitFArray* in1, ObitFArray* in2,
00265 ObitFArray* out);
00266
00268 void ObitFArrayMul (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00269 typedef void (*ObitFArrayMulFP) (ObitFArray* in1, ObitFArray* in2,
00270 ObitFArray* out);
00271
00273 void ObitFArrayDiv (ObitFArray* in1, ObitFArray* in2, ObitFArray* out);
00274 typedef void (*ObitFArrayDivFP) (ObitFArray* in1, ObitFArray* in2,
00275 ObitFArray* out);
00276
00278 void ObitFArrayDivClip (ObitFArray* in1, ObitFArray* in2, gfloat minVal, ObitFArray* out);
00279 typedef void (*ObitFArrayDivClipFP) (ObitFArray* in1, ObitFArray* in2,
00280 gfloat minVal, ObitFArray* out);
00281
00283 gfloat ObitFArrayDot (ObitFArray* in1, ObitFArray* in2);
00284 typedef gfloat (*ObitFArrayDotFP) (ObitFArray* in1, ObitFArray* in2);
00285
00287 void ObitFArrayMulColRow (ObitFArray* in, ObitFArray* row, ObitFArray* col,
00288 ObitFArray* out);
00289 typedef void (*ObitFArrayMulColRowFP) (ObitFArray* in, ObitFArray* row,
00290 ObitFArray* col, ObitFArray* out);
00291
00293 void ObitFArray1DCenter (ObitFArray* in);
00294 typedef void (*ObitFArray1DCenterFP) (ObitFArray* in);
00295
00297 void ObitFArray2DCenter (ObitFArray* in);
00298 typedef void (*ObitFArray2DCenterFP) (ObitFArray* in);
00299
00301 void ObitFArray2DSymInv (ObitFArray* in, gint *ierr);
00302 typedef void (*ObitFArray2DSymInvFP) (ObitFArray* in, gint *ierr);
00303
00305 void ObitFArray2DCGauss (ObitFArray* in, glong Cen[2], gfloat FWHM);
00306 typedef void (*ObitFArray2DCGaussFP) (ObitFArray* in, glong Cen[2], gfloat FWHM);
00307
00309 void ObitFArray2DEGauss (ObitFArray* in, gfloat amp, gfloat Cen[2], gfloat GauMod[3]);
00310 typedef void (*ObitFArray2DEGaussFP) (ObitFArray* in, gfloat amp, gfloat Cen[2],
00311 gfloat GauMod[3] );
00312
00314 void ObitFArrayShiftAdd (ObitFArray* in1, glong *pos1,
00315 ObitFArray* in2, glong *pos2,
00316 gfloat scalar, ObitFArray* out);
00317 typedef void
00318 (*ObitFArrayShiftAddFP) (ObitFArray* in1, glong *pos1,
00319 ObitFArray* in2, glong *pos2,
00320 gfloat scalar, ObitFArray* out);
00321
00323 void ObitFArrayPad (ObitFArray* in, ObitFArray* out, gfloat factor);
00324 typedef void (*ObitFArrayPadFP) (ObitFArray* in, ObitFArray* out,
00325 gfloat factor);
00326
00328 void ObitFArrayConvGaus (ObitFArray* in, ObitFArray* list, glong ncomp,
00329 gfloat gauss[3]);
00330 typedef void (*ObitFArrayConvGausFP) (ObitFArray* in, ObitFArray* list,
00331 glong ncomp, gfloat gauss[3]);
00332
00334 void ObitFArraySelInc (ObitFArray* in, ObitFArray* out, glong *blc, glong *trc,
00335 glong* inc, ObitErr *err);
00336 typedef void (*ObitFArraySelIncFP) (ObitFArray* in, ObitFArray* out,
00337 glong *blc, glong *trc, glong* inc, ObitErr *err);
00338
00339
00345 typedef struct {
00346 #include "ObitFArrayClassDef.h"
00347 } ObitFArrayClassInfo;
00348
00349 #endif