00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00033 #ifndef LIBSAKURA_LIBSAKURA_SAKURA_H_
00034 #define LIBSAKURA_LIBSAKURA_SAKURA_H_
00035
00036 #include <stddef.h>
00037 #include <stdbool.h>
00038 #include <stdint.h>
00039 #include <sys/types.h>
00040
00041 #include <libsakura/config.h>
00042
00043 #if defined(__GNUC__) || defined(__GNUG__)
00044 # define LIBSAKURA_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
00045 #else
00046 # define LIBSAKURA_WARN_UNUSED_RESULT
00047 #endif
00048
00049 #define LIBSAKURA_NOEXCEPT
00050
00051 #ifdef __cplusplus
00052 extern "C" {
00053
00054 #if __cplusplus >= 201103L
00055 # undef LIBSAKURA_NOEXCEPT
00056 # define LIBSAKURA_NOEXCEPT noexcept
00057 #endif
00058
00059 #endif
00060
00064 typedef enum {LIBSAKURA_SYMBOL(Status_kOK) = 0,LIBSAKURA_SYMBOL(Status_kNG) = 1,LIBSAKURA_SYMBOL(Status_kInvalidArgument) = 2,LIBSAKURA_SYMBOL(Status_kNoMemory) = 3,LIBSAKURA_SYMBOL(Status_kUnknownError) = 99
00082 }LIBSAKURA_SYMBOL (Status);
00083
00097 typedef void *(*LIBSAKURA_SYMBOL(UserAllocator))(size_t size);
00098
00111 typedef void (*LIBSAKURA_SYMBOL(UserDeallocator))(void *pointer);
00112 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(Initialize)(
00126 LIBSAKURA_SYMBOL(UserAllocator) allocator,
00127 LIBSAKURA_SYMBOL(UserDeallocator) deallocator)
00128 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
00129
00137 void LIBSAKURA_SYMBOL(CleanUp)() LIBSAKURA_NOEXCEPT;
00138
00146 double LIBSAKURA_SYMBOL(GetCurrentTime)() LIBSAKURA_NOEXCEPT;
00147
00148
00149
00150
00160 bool LIBSAKURA_SYMBOL(IsAligned)(void const *ptr) LIBSAKURA_NOEXCEPT;
00161
00169 size_t LIBSAKURA_SYMBOL (GetAlignment)() LIBSAKURA_NOEXCEPT;
00170
00184 void *LIBSAKURA_SYMBOL(AlignAny)(size_t size_of_arena, void *arena,
00185 size_t size_required) LIBSAKURA_NOEXCEPT;
00199 float *LIBSAKURA_SYMBOL(AlignFloat)(size_t elements_in_arena, float *arena,
00200 size_t elements_required) LIBSAKURA_NOEXCEPT;
00201
00205 double *LIBSAKURA_SYMBOL(AlignDouble)(size_t elements_in_arena, double *arena,
00206 size_t elements_required) LIBSAKURA_NOEXCEPT;
00207
00217 typedef struct {
00221 size_t count;
00225 double sum;
00229 double square_sum;
00233 float min;
00237 float max;
00241 ssize_t index_of_min;
00245 ssize_t index_of_max;
00246 }LIBSAKURA_SYMBOL(StatisticsResultFloat);
00247 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(ComputeStatisticsFloat)(
00264 size_t num_data, float const data[], bool const is_valid[],
00265 LIBSAKURA_SYMBOL(StatisticsResultFloat) *result) LIBSAKURA_NOEXCEPT;
00266 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(ComputeAccurateStatisticsFloat)(
00274 size_t num_data, float const data[], bool const is_valid[],
00275 LIBSAKURA_SYMBOL(StatisticsResultFloat) *result) LIBSAKURA_NOEXCEPT;
00276 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SortValidValuesDenselyFloat)(
00290 size_t num_data, bool const is_valid[], float data[],
00291 size_t *new_num_data) LIBSAKURA_NOEXCEPT;
00292
00315 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(ComputeMedianAbsoluteDeviationFloat)(
00316 size_t num_data, float const data[], float new_data[])
00317 LIBSAKURA_NOEXCEPT;
00318 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(GridConvolvingFloat)(
00376 size_t num_spectra, size_t start_spectrum, size_t end_spectrum,
00377 bool const spectrum_mask[],
00378 double const x[], double const y[],
00379 size_t support, size_t sampling, size_t num_polarizations,
00380 uint32_t const polarization_map[],
00381 size_t num_channels, uint32_t const channel_map[],
00382 bool const mask[],
00383 float const value[],
00384 float const weight[], bool weight_only,
00385 size_t num_convolution_table,
00386 float const convolution_table[],
00387 size_t num_polarizations_for_grid, size_t num_channels_for_grid,
00388 size_t width, size_t height,
00389 double weight_sum[],
00390 float weight_of_grid[],
00391 float grid[])
00392 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
00393 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfInRangesInclusiveFloat)(
00428 size_t num_data, float const data[], size_t num_condition,
00429 float const lower_bounds[],
00430 float const upper_bounds[], bool result[])
00431 LIBSAKURA_NOEXCEPT;
00432 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfInRangesInclusiveInt)(
00437 size_t num_data, int const data[], size_t num_condition,
00438 int const lower_bounds[],
00439 int const upper_bounds[], bool result[])
00440 LIBSAKURA_NOEXCEPT;
00441 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfInRangesExclusiveFloat)(
00477 size_t num_data, float const data[], size_t num_condition,
00478 float const lower_bounds[],
00479 float const upper_bounds[], bool result[])
00480 LIBSAKURA_NOEXCEPT;
00481 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfInRangesExclusiveInt)(
00486 size_t num_data, int const data[], size_t num_condition,
00487 int const lower_bounds[],
00488 int const upper_bounds[], bool result[])
00489 LIBSAKURA_NOEXCEPT;
00490 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfGreaterThanFloat)(
00516 size_t num_data, float const data[], float threshold,
00517 bool result[]) LIBSAKURA_NOEXCEPT;
00518 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfGreaterThanInt)(
00523 size_t num_data, int const data[], int threshold,
00524 bool result[]) LIBSAKURA_NOEXCEPT;
00525 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfGreaterThanOrEqualsFloat)(
00551 size_t num_data, float const data[], float threshold,
00552 bool result[]) LIBSAKURA_NOEXCEPT;
00553 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfGreaterThanOrEqualsInt)(
00558 size_t num_data, int const data[], int threshold,
00559 bool result[]) LIBSAKURA_NOEXCEPT;
00560 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfLessThanFloat)(
00586 size_t num_data, float const data[], float threshold,
00587 bool result[]) LIBSAKURA_NOEXCEPT;
00588 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfLessThanInt)(
00593 size_t num_data, int const data[], int threshold,
00594 bool result[]) LIBSAKURA_NOEXCEPT;
00595 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfLessThanOrEqualsFloat)(
00621 size_t num_data, float const data[], float threshold,
00622 bool result[]) LIBSAKURA_NOEXCEPT;
00623 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetTrueIfLessThanOrEqualsInt)(
00628 size_t num_data, int const data[], int threshold,
00629 bool result[]) LIBSAKURA_NOEXCEPT;
00630 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SetFalseIfNanOrInfFloat)(
00648 size_t num_data, float const data[],
00649 bool result[]) LIBSAKURA_NOEXCEPT;
00650 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(Uint8ToBool)(size_t num_data,
00666 uint8_t const data[], bool result[])
00667 LIBSAKURA_NOEXCEPT;
00668 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(Uint32ToBool)(size_t num_data,
00673 uint32_t const data[], bool result[])
00674 LIBSAKURA_NOEXCEPT;
00675 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(InvertBool)(size_t num_data,
00692 bool const data[], bool result[])
00693 LIBSAKURA_NOEXCEPT;
00694 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseAndUint8)(
00731 uint8_t bit_mask, size_t num_data, uint8_t const data[],
00732 bool const edit_mask[], uint8_t result[])
00733 LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseAndUint32)(
00738 uint32_t bit_mask, size_t num_data, uint32_t const data[],
00739 bool const edit_mask[], uint32_t result[])
00740 LIBSAKURA_NOEXCEPT;
00741 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseConverseNonImplicationUint8)(
00779 uint8_t bit_mask, size_t num_data, uint8_t const data[],
00780 bool const edit_mask[], uint8_t result[])
00781 LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseConverseNonImplicationUint32)(
00786 uint32_t bit_mask, size_t num_data, uint32_t const data[],
00787 bool const edit_mask[], uint32_t result[])
00788 LIBSAKURA_NOEXCEPT;
00789 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseImplicationUint8)(
00826 uint8_t bit_mask, size_t num_data, uint8_t const data[],
00827 bool const edit_mask[], uint8_t result[])
00828 LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseImplicationUint32)(
00833 uint32_t bit_mask, size_t num_data, uint32_t const data[],
00834 bool const edit_mask[], uint32_t result[])
00835 LIBSAKURA_NOEXCEPT;
00836 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseNotUint8)(
00865 size_t num_data, uint8_t const data[],
00866 bool const edit_mask[], uint8_t result[])
00867 LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseNotUint32)(
00872 size_t num_data, uint32_t const data[],
00873 bool const edit_mask[], uint32_t result[])
00874 LIBSAKURA_NOEXCEPT;
00875 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseOrUint8)(
00912 uint8_t bit_mask, size_t num_data, uint8_t const data[],
00913 bool const edit_mask[], uint8_t result[])
00914 LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseOrUint32)(
00919 uint32_t bit_mask, size_t num_data, uint32_t const data[],
00920 bool const edit_mask[], uint32_t result[])
00921 LIBSAKURA_NOEXCEPT;
00922 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseXorUint8)(
00959 uint8_t bit_mask, size_t num_data, uint8_t const data[],
00960 bool const edit_mask[], uint8_t result[])
00961 LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(OperateBitwiseXorUint32)(
00966 uint32_t bit_mask, size_t num_data, uint32_t const data[],
00967 bool const edit_mask[], uint32_t result[])
00968 LIBSAKURA_NOEXCEPT;
00969
00973 typedef enum {LIBSAKURA_SYMBOL(InterpolationMethod_kNearest),
00977 LIBSAKURA_SYMBOL(InterpolationMethod_kLinear),
00981 LIBSAKURA_SYMBOL(InterpolationMethod_kPolynomial),
00985 LIBSAKURA_SYMBOL(InterpolationMethod_kSpline),
00989 LIBSAKURA_SYMBOL(InterpolationMethod_kNumElements)
00993 }LIBSAKURA_SYMBOL(InterpolationMethod);
00994 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(InterpolateXAxisFloat)(
01083 LIBSAKURA_SYMBOL(InterpolationMethod) interpolation_method,
01084 uint8_t polynomial_order, size_t num_base,
01085 double const base_position[], size_t num_array,
01086 float const base_data[],
01087 bool const base_mask[], size_t num_interpolated,
01088 double const interpolated_position[],
01089 float interpolated_data[],
01090 bool interpolated_mask[])
01091 LIBSAKURA_NOEXCEPT;
01092 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(InterpolateYAxisFloat)(
01097 LIBSAKURA_SYMBOL(InterpolationMethod) interpolation_method,
01098 uint8_t polynomial_order, size_t num_base,
01099 double const base_position[], size_t num_array,
01100 float const base_data[],
01101 bool const base_mask[], size_t num_interpolated,
01102 double const interpolated_position[],
01103 float interpolated_data[],
01104 bool interpolated_mask[])
01105 LIBSAKURA_NOEXCEPT;
01106
01146 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CalibrateDataWithArrayScalingFloat)(
01147 size_t num_data, float const scaling_factor[],
01148 float const data[], float const reference[],
01149 float result[]) LIBSAKURA_NOEXCEPT;
01150
01187 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CalibrateDataWithConstScalingFloat)(
01188 float scaling_factor, size_t num_data, float const data[],
01189 float const reference[], float result[])
01190 LIBSAKURA_NOEXCEPT;
01191
01195 struct LIBSAKURA_SYMBOL(Convolve1DContextFloat);
01196
01228 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CreateGaussianKernelFloat)(
01229 float kernel_width, size_t num_kernel, float kernel[])
01230 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01231
01249 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CreateConvolve1DContextFFTFloat)(
01250 size_t num_kernel, float const kernel[],
01251 struct LIBSAKURA_SYMBOL(Convolve1DContextFloat) **context)
01252 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01253 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(Convolve1DFloat)(size_t num_kernel,
01295 float const kernel[], size_t num_data,
01296 float const input_data[],
01297 bool const input_mask[], float output_data[],
01298 float output_weight[]) LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(Convolve1DFFTFloat)(
01320 struct LIBSAKURA_SYMBOL(Convolve1DContextFloat) const *context,
01321 size_t num_data, float const input_data[],
01322 float output_data[]) LIBSAKURA_NOEXCEPT;LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(DestroyConvolve1DContextFloat)(
01333 struct LIBSAKURA_SYMBOL(Convolve1DContextFloat) *context)
01334 LIBSAKURA_NOEXCEPT;
01335 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(GetLSQCoefficientsDouble)(
01405 size_t const num_data, float const data[],
01406 bool const mask[], size_t const num_model_bases,
01407 double const basis_data[],
01408 size_t const num_lsq_bases,
01409 size_t const use_bases_idx[],
01410 double lsq_matrix[],
01411 double lsq_vector[])
01412 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01413 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(UpdateLSQCoefficientsDouble)(
01484 size_t const num_data, float const data[],
01485 bool const mask[], size_t const num_exclude_indices,
01486 size_t const exclude_indices[],
01487 size_t const num_model_bases,
01488 double const basis_data[],
01489 size_t const num_lsq_bases,
01490 size_t const use_bases_idx[],
01491 double lsq_matrix[],
01492 double lsq_vector[])
01493 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01494 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SolveSimultaneousEquationsByLUDouble)(
01522 size_t num_equations,
01523 double const in_matrix[],
01524 double const in_vector[],
01525 double out[])
01526 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01527
01528
01560 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(LMFitGaussianFloat)(
01561 size_t const num_data, float const data[],
01562 bool const mask[], size_t const num_peaks,
01563 double height[], double err_height[],
01564 double center[], double err_center[],
01565 double sigma[], double err_sigma[])
01566 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01567
01571 typedef enum {LIBSAKURA_SYMBOL(LSQFitStatus_kOK) = 0,
01575 LIBSAKURA_SYMBOL(LSQFitStatus_kNG) = 1,
01579 LIBSAKURA_SYMBOL(LSQFitStatus_kNotEnoughData) = 2,
01583 LIBSAKURA_SYMBOL(LSQFitStatus_kNumElements)
01587 }LIBSAKURA_SYMBOL(LSQFitStatus);
01588
01592 typedef enum {LIBSAKURA_SYMBOL(LSQFitType_kPolynomial),
01596 LIBSAKURA_SYMBOL(LSQFitType_kChebyshev),
01600 LIBSAKURA_SYMBOL(LSQFitType_kNumElements)
01604 }LIBSAKURA_SYMBOL(LSQFitType);
01605
01609 struct LIBSAKURA_SYMBOL(LSQFitContextFloat);
01610 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CreateLSQFitContextPolynomialFloat)(
01636 LIBSAKURA_SYMBOL(LSQFitType) const lsqfit_type, uint16_t order, size_t num_data,
01637 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) **context)
01638 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01639 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CreateLSQFitContextCubicSplineFloat)(
01660 uint16_t npiece, size_t num_data,
01661 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) **context)
01662 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01663 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CreateLSQFitContextSinusoidFloat)(
01685 uint16_t nwave, size_t num_data,
01686 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) **context)
01687 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01688 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(DestroyLSQFitContextFloat)(
01700 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) *context)
01701 LIBSAKURA_NOEXCEPT;
01702 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(LSQFitPolynomialFloat)(
01772 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) const *context,
01773 uint16_t order, size_t num_data, float const data[],
01774 bool const mask[], float clip_threshold_sigma,
01775 uint16_t num_fitting_max, size_t num_coeff, double coeff[],
01776 float best_fit[], float residual[],
01777 bool final_mask[], float *rms,
01778 LIBSAKURA_SYMBOL(LSQFitStatus) *lsqfit_status)
01779 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01780 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(LSQFitCubicSplineFloat)(
01858 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) const *context,
01859 size_t num_pieces, size_t num_data, float const data[],
01860 bool const mask[], float clip_threshold_sigma,
01861 uint16_t num_fitting_max, double coeff[][4],
01862 float best_fit[], float residual[],
01863 bool final_mask[], float *rms,
01864 size_t boundary[],
01865 LIBSAKURA_SYMBOL(LSQFitStatus) *lsqfit_status)
01866 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01867 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(LSQFitSinusoidFloat)(
01946 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) const *context,
01947 size_t num_nwave, size_t const nwave[], size_t num_data,
01948 float const data[], bool const mask[],
01949 float clip_threshold_sigma, uint16_t num_fitting_max, size_t num_coeff,
01950 double coeff[], float best_fit[],
01951 float residual[], bool final_mask[], float *rms,
01952 LIBSAKURA_SYMBOL(LSQFitStatus) *lsqfit_status)
01953 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01954 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SubtractPolynomialFloat)(
01980 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) const *context,
01981 size_t num_data, float const data[], size_t num_coeff,
01982 double const coeff[], float out[])
01983 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
01984 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SubtractCubicSplineFloat)(
02017 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) const *context,
02018 size_t num_data, float const data[], size_t num_pieces,
02019 double const coeff[][4],
02020 size_t const boundary[], float out[])
02021 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
02022 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(SubtractSinusoidFloat)(
02058 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) const *context,
02059 size_t num_data, float const data[], size_t num_nwave,
02060 size_t const nwave[], size_t num_coeff,
02061 double const coeff[], float out[])
02062 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
02063 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(GetNumberOfCoefficientsFloat)(
02083 struct LIBSAKURA_SYMBOL(LSQFitContextFloat) const *context,
02084 uint16_t order, size_t *num_coeff)
02085 LIBSAKURA_NOEXCEPT LIBSAKURA_WARN_UNUSED_RESULT;
02086
02131 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(FlipArrayFloat)(
02132 bool inner_most_untouched, size_t dims, size_t const elements[],
02133 float const src[], float dst[]) LIBSAKURA_NOEXCEPT;
02134
02171 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(UnflipArrayFloat)(
02172 bool inner_most_untouched, size_t dims, size_t const elements[],
02173 float const src[], float dst[]) LIBSAKURA_NOEXCEPT;
02174
02178 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(FlipArrayDouble)(
02179 bool inner_most_untouched, size_t dims, size_t const elements[],
02180 double const src[], double dst[]) LIBSAKURA_NOEXCEPT;
02181
02185 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(UnflipArrayDouble)(
02186 bool inner_most_untouched, size_t dims, size_t const elements[],
02187 double const src[], double dst[]) LIBSAKURA_NOEXCEPT;
02188
02192 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(FlipArrayDouble2)(
02193 bool inner_most_untouched, size_t dims, size_t const elements[],
02194 double const src[][2], double dst[][2]) LIBSAKURA_NOEXCEPT;
02195
02199 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(UnflipArrayDouble2)(
02200 bool inner_most_untouched, size_t dims, size_t const elements[],
02201 double const src[][2], double dst[][2]) LIBSAKURA_NOEXCEPT;
02202
02291 LIBSAKURA_SYMBOL(Status) LIBSAKURA_SYMBOL(CreateMaskNearEdgeDouble)(
02292 float fraction, double pixel_size, size_t num_data, double const x[],
02293 double const y[], double const *blc_x, double const *blc_y,
02294 double const *trc_x, double const *trc_y, bool mask[]);
02295
02296 #ifdef __cplusplus
02297 }
02298
02299 #endif
02300
02301 #endif