@@ -8331,6 +8331,59 @@ SEXP R_igraph_incident_edges(SEXP pgraph, SEXP pe, SEXP pmode) {
83318331 return result ;
83328332}
83338333
8334+ SEXP R_igraph_power_law_fit_new (SEXP data , SEXP xmin , SEXP force_continuous , SEXP pvalue )
8335+ {
8336+ igraph_vector_t c_data ;
8337+ igraph_plfit_result_t c_res ;
8338+ igraph_real_t c_xmin ;
8339+ igraph_bool_t c_force_continuous , c_compute_pvalue ;
8340+ SEXP result , names ;
8341+
8342+ SEXP r_result ;
8343+
8344+ R_SEXP_to_vector (data , & c_data );
8345+ IGRAPH_R_CHECK_REAL (xmin );
8346+ c_xmin = REAL (xmin )[0 ];
8347+ IGRAPH_R_CHECK_BOOL (force_continuous );
8348+ c_force_continuous = LOGICAL (force_continuous )[0 ];
8349+ IGRAPH_R_CHECK_BOOL (pvalue );
8350+ c_compute_pvalue = LOGICAL (pvalue )[0 ];
8351+
8352+ IGRAPH_R_CHECK (igraph_power_law_fit (& c_data , & c_res , c_xmin , c_force_continuous ));
8353+
8354+ if (c_compute_pvalue ) {
8355+ igraph_real_t p ;
8356+ igraph_plfit_result_calculate_p_value (& c_res , & p , 0.001 );
8357+
8358+ PROTECT (result = NEW_LIST (6 ));
8359+ PROTECT (names = NEW_CHARACTER (6 ));
8360+
8361+ SET_VECTOR_ELT (result , 5 , Rf_ScalarReal (p ));
8362+ SET_STRING_ELT (names , 5 , Rf_mkChar ("KS.p" ));
8363+ } else {
8364+ PROTECT (result = NEW_LIST (5 ));
8365+ PROTECT (names = NEW_CHARACTER (5 ));
8366+ }
8367+
8368+ SET_VECTOR_ELT (result , 0 , Rf_ScalarLogical (c_res .continuous ));
8369+ SET_VECTOR_ELT (result , 1 , Rf_ScalarReal (c_res .alpha ));
8370+ SET_VECTOR_ELT (result , 2 , Rf_ScalarReal (c_res .xmin ));
8371+ SET_VECTOR_ELT (result , 3 , Rf_ScalarReal (c_res .L ));
8372+ SET_VECTOR_ELT (result , 4 , Rf_ScalarReal (c_res .D ));
8373+
8374+ SET_STRING_ELT (names , 0 , Rf_mkChar ("continuous" ));
8375+ SET_STRING_ELT (names , 1 , Rf_mkChar ("alpha" ));
8376+ SET_STRING_ELT (names , 2 , Rf_mkChar ("xmin" ));
8377+ SET_STRING_ELT (names , 3 , Rf_mkChar ("logLik" ));
8378+ SET_STRING_ELT (names , 4 , Rf_mkChar ("KS.stat" ));
8379+ SET_NAMES (result , names );
8380+
8381+ r_result = result ;
8382+
8383+ UNPROTECT (2 );
8384+ return (r_result );
8385+ }
8386+
83348387/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++C */
83358388/* C */
83368389/* Given a HIERARCHIC CLUSTERING, described as a sequence of C */
0 commit comments