Commit b44e35c9 authored by Bart's avatar Bart
Browse files

fix #88

parent ebe8e32b
Loading
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
	* Use Rcpp::stop (#88)

Version 4.2.7

	* Fix tests on CRAN failing on dist class
+1 −1
Original line number Diff line number Diff line
@@ -48,5 +48,5 @@ Imports:
    xml2,
    Rcpp
LinkingTo: Rcpp
RoxygenNote: 7.2.3
RoxygenNote: 7.3.3
VignetteBuilder: knitr
+1 −0
Original line number Diff line number Diff line
#include <Rcpp.h>
#include <R.h>
#include <stdlib.h>
#include <math.h>
+7 −6
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
//=======================================================================================

#include "min_cost_flow.h"
#include "Rcpp.h"
#include "R.h"
#include <set>
#include <limits>
@@ -34,7 +35,7 @@ NUM_T emd_hat_gd_metric<NUM_T,FLOW_TYPE>::operator()(const std::vector<NUM_T>& P

    if (FLOW_TYPE!=NO_FLOW) fillFWithZeros(*F);
        
    if(!( (F!=NULL) || (FLOW_TYPE==NO_FLOW) )) Rf_error("emd internal error7");
    if(!( (F!=NULL) || (FLOW_TYPE==NO_FLOW) )) Rcpp::stop("emd internal error7");
    
    std::vector<NUM_T> P= Pc;
    std::vector<NUM_T> Q= Qc;
@@ -98,7 +99,7 @@ struct emd_hat_impl_integral_types {

    //-------------------------------------------------------
    NODE_T N= Pc.size();
    if(Qc.size()!=N) Rf_error("emd internal error8");
    if(Qc.size()!=N) Rcpp::stop("emd internal error8");
// toc timp; timp.tic();
    // Ensuring that the supplier - P, have more mass.
    std::vector<NUM_T> P;
@@ -152,7 +153,7 @@ struct emd_hat_impl_integral_types {
    NUM_T maxC= 0;
    {for (NODE_T i=0; i<N; ++i) {
        {for (NODE_T j=0; j<N; ++j) {
                if(C[i][j]<0) Rf_error("emd internal error9");
                if(C[i][j]<0) Rcpp::stop("emd internal error9");
                if ( C[i][j]>maxC ) maxC= C[i][j];
        }}
    }}
@@ -277,7 +278,7 @@ struct emd_hat_impl_integral_types {
    #ifndef NDEBUG
    NUM_T DEBUG_sum_bb= 0;
    for (NODE_T i=0; i<bb.size(); ++i) DEBUG_sum_bb+= bb[i];
    if(DEBUG_sum_bb!=0) Rf_error("emd internal error 10");
    if(DEBUG_sum_bb!=0) Rcpp::stop("emd internal error 10");
    #endif

    //-------------------------------------------------------
@@ -313,7 +314,7 @@ struct emd_hat_impl_integral_types {
                    j= nodes_old_names[new_name_from]-N;
                }
                if (flow!=0&&(int) new_name_from!=nodes_new_names[THRESHOLD_NODE]&& (int) it->_to!=nodes_new_names[THRESHOLD_NODE]) {
                    if(!(i<N&&j<N)) Rf_error("emd internal error 11");
                    if(!(i<N&&j<N)) Rcpp::stop("emd internal error 11");
                    if (needToSwapFlow) std::swap(i,j);
                    if (!reverseEdge) {
                        (*F)[i][j]+= flow;
@@ -411,7 +412,7 @@ struct emd_hat_impl<double,FLOW_TYPE> {
        std::vector< std::vector<NUM_T> >* F) {
        
    // TODO: static assert
    if(!(sizeof(CONVERT_TO_T)>=8)) Rf_error("emd internal error 12");
    if(!(sizeof(CONVERT_TO_T)>=8)) Rcpp::stop("emd internal error 12");
    
    // This condition should hold:
    // ( 2^(sizeof(CONVERT_TO_T*8)) >= ( MULT_FACTOR^2 )
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ NUM_T emd_hat_signature_interface(signature_tt<NUM_T>* Signature1, signature_tt<
    {for (int i=0; i<Signature1->n; ++i) {
        {for (int j=0; j<Signature2->n; ++j) {
            NUM_T dist= func( (Signature1->Features+i) , (Signature2->Features+j) );
            if(dist<0) Rf_error("emd internal error");
            if(dist<0) Rcpp::stop("emd internal error");
            C[i][j+Signature1->n]= dist;
            C[j+Signature1->n][i]= dist;
        }}
Loading