/** One-sided autocovariance. * @source R\_mth\_var.c * @author Copyright (c), 1988, 2006 Insightful Corp. All rights reserved. * @usage #.Call( "RS_math_acvs", time.series, biased, recenter))# * @return An R ... containing ... * @param time.series Pointer to an R object containing ... time.series * @param biased Pointer to an R object containing ... biased * @param recenter Pointer to an R object containing ... recenter * @see fra_spectral_density_function_direct */ EXTERN_R SEXP RS_math_acvs( SEXP pr_time_series, SEXP pr_biased, SEXP pr_recenter ) { SEXP pr_ret_result; boolean biased; boolean recenter; mutil_data_type type; mutil_errcode err; univ_mat result; univ_mat time_series; void *VPNULL = NULL; memlist list; /* Avoid lint warning */ (void) whatssi; /* initialize memory list */ MEMLIST_INIT( list ); /* Conversion of input data ... */ /* ... pr_time_series to time_series */ READ_MATRIX_REGISTER( pr_time_series, &time_series ); /* ... pr_biased to biased */ BOOLEAN_FROM_R( pr_biased, &biased ); /* ... pr_recenter to recenter */ BOOLEAN_FROM_R( pr_recenter, &recenter ); /* Call the function */ err = mthuniv_acvs( &time_series, biased, recenter, VPNULL, &result ); CONVERT_MATRIX_AND_RETURN( mthuniv_acvs, &result, &pr_ret_result ); }
/** The modulus maxima tree of a continuous wavelet transform. * @source RRS\_wav\_wtmm.c * @author Copyright (c), 1988, 2006 Insightful Corp. All rights reserved. * @usage #.Call( "RS_wavelets_transform_continuous_wavelet_modulus_maxima_tree", wtmm.time.index, wtmm.scale.index, cwt, cwt.time, cwt.scale, bridge.gaps, n.octave.min, wtmm.strength.min))# * @return An R ... containing ... * @param wtmm.time.index Pointer to an R object containing ... wtmm.time.index * @param wtmm.scale.index Pointer to an R object containing ... wtmm.scale.index * @param cwt Pointer to an R object containing ... cwt * @param cwt.time Pointer to an R object containing ... cwt.time * @param cwt.scale Pointer to an R object containing ... cwt.scale * @param bridge.gaps Pointer to an R object containing ... bridge.gaps * @param n.octave.min Pointer to an R object containing ... n.octave.min * @param wtmm.strength.min Pointer to an R object containing ... wtmm.strength.min * @see wavuniv_transform_continuous_wavelet * @see wavuniv_transform_continuous_wavelet_modulus_maxima */ EXTERN_R SEXP RS_wavelets_transform_continuous_wavelet_modulus_maxima_tree( SEXP pr_wtmm_time_index, SEXP pr_wtmm_scale_index, SEXP pr_cwt, SEXP pr_cwt_time, SEXP pr_cwt_scale, SEXP pr_bridge_gaps, SEXP pr_n_octave_min, SEXP pr_wtmm_strength_min ) { boolean bridge_gaps; double n_octave_min; double wtmm_strength_min; mat_set result; memlist list; mutil_data_type type; mutil_errcode err; SEXP pr_ret_result; univ_mat cwt; univ_mat cwt_scale; univ_mat cwt_time; univ_mat wtmm_scale_index; univ_mat wtmm_time_index; void *VPNULL = NULL; /* Avoid lint warning */ (void) whatssi; /* initialize memory list */ MEMLIST_INIT( list ); /* Conversion of input data ... */ READ_MATRIX_REGISTER( pr_wtmm_time_index, &wtmm_time_index ); READ_MATRIX_REGISTER( pr_wtmm_scale_index, &wtmm_scale_index ); READ_MATRIX_REGISTER( pr_cwt, &cwt ); READ_MATRIX_REGISTER( pr_cwt_scale, &cwt_scale ); READ_MATRIX_REGISTER( pr_cwt_time, &cwt_time ); /* ... pr_bridge_gaps to bridge_gaps */ BOOLEAN_FROM_R( pr_bridge_gaps, &bridge_gaps ); /* ... pr_n_octave_min to n_octave_min */ DOUBLE_FROM_R( pr_n_octave_min, &n_octave_min ); /* ... pr_wtmm_strength_min to wtmm_strength_min */ DOUBLE_FROM_R( pr_wtmm_strength_min, &wtmm_strength_min ); /* Call the function */ err = wavuniv_transform_continuous_wavelet_modulus_maxima_tree( &(wtmm_time_index.mat.s32mat), &(wtmm_scale_index.mat.s32mat), &(cwt.mat.cpxmat), &(cwt_time.mat.dblmat), &(cwt_scale.mat.dblmat), bridge_gaps, n_octave_min, wtmm_strength_min, VPNULL, &result ); CONVERT_MATSET_AND_RETURN( wavuniv_transform_continuous_wavelet_modulus_maxima_tree, &result, &pr_ret_result ); }
/** The gain functions for Daubechies wavelet and scaling filters. * @source RS\_wav\_filt.c * @author Copyright (c), 1988, 2006 Insightful Corp. All rights reserved. * @usage #itCall( "RS_wavelets_filters_daubechies_gain", filter.type, filter.length, num.levels, num.fft, normalize))# * @return An R ... containing ... * @param filter.type Pointer to an R object containing ... filter.type * @param filter.length Pointer to an R object containing ... filter.length * @param num.levels Pointer to an R object containing ... num.levels * @param num.fft Pointer to an R object containing ... num.fft * @param normalize Pointer to an R object containing ... normalize * @see _wav_filter_type * @see wavuniv_filters_daubechies * @see wavuniv_filters_zero_phase */ EXTERN_R SEXP RS_wavelets_filters_daubechies_gain( SEXP pr_filter_type, SEXP pr_filter_length, SEXP pr_num_levels, SEXP pr_num_fft, SEXP pr_normalize ) { SEXP pr_ret_gain_frequency; SEXP pr_ret_gain_scaling; SEXP pr_ret_gain_wavelet; SEXP pr_ret_obj; boolean normalize; mutil_errcode err; sint32 filter_length; sint32 num_fft; sint32 num_levels; univ_mat gain_frequency; univ_mat gain_scaling; univ_mat gain_wavelet; void *VPNULL = NULL; wav_filter_type filter_type; memlist list; /* Avoid lint warning */ (void) whatssi; /* initialize memory list */ MEMLIST_INIT( list ); /* Conversion of input data ... */ /* ... pr_filter_type to filter_type */ WAV_FILTER_TYPE_FROM_R( pr_filter_type, &filter_type ); /* ... pr_filter_length to filter_length */ SINT32_FROM_R( pr_filter_length, &filter_length ); /* ... pr_num_levels to num_levels */ SINT32_FROM_R( pr_num_levels, &num_levels ); /* ... pr_num_fft to num_fft */ SINT32_FROM_R( pr_num_fft, &num_fft ); /* ... pr_normalize to normalize */ BOOLEAN_FROM_R( pr_normalize, &normalize ); /* Call the function */ err = wavuniv_filters_daubechies_gain( filter_type, filter_length, num_levels, num_fft, normalize, VPNULL, &gain_frequency, &gain_wavelet, &gain_scaling ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Problem calling wavuniv_filters_daubechies_gain() function" ); err = memlist_member_register( &list, &gain_frequency, MEMTYPE_MATUNIV); MEMLIST_FREE_ON_ERROR_REGISTER( err, &list ); err = memlist_member_register( &list, &gain_wavelet, MEMTYPE_MATUNIV); MEMLIST_FREE_ON_ERROR_REGISTER( err, &list ); err = memlist_member_register( &list, &gain_scaling, MEMTYPE_MATUNIV); MEMLIST_FREE_ON_ERROR_REGISTER( err, &list ); /* create the output R object */ err = matuniv_to_R( &gain_frequency, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_gain_frequency ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" ); err = matuniv_to_R( &gain_wavelet, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_gain_wavelet ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" ); err = matuniv_to_R( &gain_scaling, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_gain_scaling ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" ); PROTECT( pr_ret_obj = allocVector( VECSXP, 3 ) ); SET_VECTOR_ELT( pr_ret_obj, 0, pr_ret_gain_frequency ); SET_VECTOR_ELT( pr_ret_obj, 1, pr_ret_gain_wavelet ); SET_VECTOR_ELT( pr_ret_obj, 2, pr_ret_gain_scaling ); UNPROTECT(1); /* free registered local memory */ MUTIL_FREE_WARN( memlist, &list ); return pr_ret_obj; }
/** Find the nearest neighbors of a multidimensional embedding of data in the phase space. * @source RS\_fra\_neig.c * @author Copyright (c), 1988, 2006 Insightful Corp. All rights reserved. * @usage #.Call( "RS_fractal_neighbor_find", embedding, n.neighbor, distance.max, distance.metric, pdmatrix, sort.distances, orbital.lag))# * @return An R ... containing ... * @param embedding Pointer to an R object containing ... embedding * @param n.neighbor Pointer to an R object containing ... n.neighbor * @param distance.max Pointer to an R object containing ... distance.max * @param distance.metric Pointer to an R object containing ... distance.metric * @param pdmatrix Pointer to an R object containing ... pdmatrix * @param sort.distances Pointer to an R object containing ... sort.distances * @param orbital.lag Pointer to an R object containing ... orbital.lag * @see _fra_distance_metric * @see frauniv_embed_neighbors */ EXTERN_R SEXP RS_fractal_neighbor_find( SEXP pr_embedding, SEXP pr_n_neighbor, SEXP pr_distance_max, SEXP pr_distance_metric, SEXP pr_sort_distances, SEXP pr_orbital_lag ) { SEXP pr_ret_neighbor_distances; SEXP pr_ret_neighbor_indices; SEXP pr_ret_obj; SEXP pr_ret_original_indices; boolean sort_distances; double distance_max; fra_distance_metric distance_metric; mutil_data_type type; mutil_errcode err; sint32 n_neighbor; sint32 orbital_lag; univ_mat embedding; univ_mat neighbor_distances; univ_mat neighbor_indices; univ_mat original_indices; void *VPNULL = NULL; memlist list; /* Avoid lint warning */ (void) whatssi; /* initialize memory list */ MEMLIST_INIT( list ); /* Conversion of input data ... */ /* ... pr_time_series to time_series */ READ_MATRIX_REGISTER( pr_embedding, &embedding ); /* ... pr_n_neighbor to n_neighbor */ SINT32_FROM_R( pr_n_neighbor, &n_neighbor ); /* ... pr_distance_max to distance_max */ DOUBLE_FROM_R( pr_distance_max, &distance_max ); /* ... pr_distance_metric to distance_metric */ DISTANCE_METRIC_FROM_R( pr_distance_metric, &distance_metric ); /* ... pr_sort_distances to sort_distances */ BOOLEAN_FROM_R( pr_sort_distances, &sort_distances ); /* ... pr_orbital_lag to orbital_lag */ SINT32_FROM_R( pr_orbital_lag, &orbital_lag ); /* Call the function */ err = frauniv_neighbor_find( &embedding, n_neighbor, distance_max, distance_metric, (univ_mat*) NULL, sort_distances, orbital_lag, VPNULL, &original_indices, &neighbor_indices, &neighbor_distances ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Problem calling frauniv_neighbor_find() function" ); err = memlist_member_register( &list, &original_indices, MEMTYPE_MATUNIV); MEMLIST_FREE_ON_ERROR_REGISTER( err, &list ); err = memlist_member_register( &list, &neighbor_indices, MEMTYPE_MATUNIV); MEMLIST_FREE_ON_ERROR_REGISTER( err, &list ); err = memlist_member_register( &list, &neighbor_distances, MEMTYPE_MATUNIV); MEMLIST_FREE_ON_ERROR_REGISTER( err, &list ); /* create the output R object */ err = matuniv_to_R( &original_indices, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_original_indices ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" ); err = matuniv_to_R( &neighbor_indices, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_neighbor_indices ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" ); err = matuniv_to_R( &neighbor_distances, (mutil_R_class_type) MUTIL_R_MATRIX, &pr_ret_neighbor_distances ); MEMLIST_FREE_ON_ERROR_SPLUS( err, &list, "Unable to convert output data to R format" ); PROTECT( pr_ret_obj = allocVector( VECSXP, 3 ) ); SET_VECTOR_ELT( pr_ret_obj, 0, pr_ret_original_indices ); SET_VECTOR_ELT( pr_ret_obj, 1, pr_ret_neighbor_indices ); SET_VECTOR_ELT( pr_ret_obj, 2, pr_ret_neighbor_distances ); UNPROTECT(1); /* free registered local memory */ MUTIL_FREE_WARN( memlist, &list ); return pr_ret_obj; }