[Rd] Linking to the BH package introduces CRAN warnings
kaveh
vakili.kaveh.email at gmail.com
Wed Nov 5 00:55:15 CET 2014
Dear all,
the simple code in below, when send to the
win-builder returns the following (and no other)
warning:
* checking compiled code ... WARNING
File 'quicky/libs/i386/quicky.dll':
Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
Object: 'quicky.o'
Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
Object: 'quicky.o'
File 'quicky/libs/x64/quicky.dll':
Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
Object: 'quicky.o'
Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
Object: 'quicky.o'
Compiled code should not call entry points which might terminate R nor
write to stdout/stderr instead of to the console, nor the C RNG.
See 'Writing portable packages' in the 'Writing R Extensions' manual.
Here is the source:
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <functional>
#include <fstream>
#include <iostream>
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sstream>
#include <vector>
#include <random>
#include <boost/math/distributions/normal.hpp>
#include <boost/math/distributions/chi_squared.hpp>
#include <Eigen/Dense>
using namespace std;
using namespace Eigen;
using Eigen::MatrixXd;
using Eigen::VectorXd;
using Eigen::VectorXi;
using Eigen::RowVectorXd;
using boost::math::chi_squared;
using boost::math::quantile;
using boost::math::complement;
using boost::math::normal_distribution;
using namespace boost::math::policies;
typedef policy<
promote_double<true>
> my_policy_norm;
typedef policy<
promote_double<true>
> my_policy_chi2;
typedef boost::math::normal_distribution<double,my_policy_norm> my_norm;
typedef boost::math::chi_squared_distribution<double,my_policy_chi2>
my_chi2;
VectorXd GetQs(const VectorXd& x){
const int n=x.size();
double mytol=1e-8;
double the_max=x.maxCoeff();
double the_min=x.minCoeff();
double the_rag=(the_max-the_min);
if(the_rag<mytol) return(x);
if(1.0-the_max<mytol) return(x);
if(the_min<mytol) return(x);
VectorXd y=x.array();
for(int i=0;i<n;i++)
y(i)=sqrt(quantile(complement(my_chi2(1.0),x(i))));
return(y);
}
extern "C"{
void quicky(int* rn,double* xi,double* yi){
const int n=*rn;
VectorXd x=Map<VectorXd>(xi,n);
Map<VectorXd>(yi,n)=GetQs(x);
}
}
So I guess, I should fill a bug report with the
BH maintainer?
Best regards,
On 2014-11-04 23:52, Dirk Eddelbuettel wrote:
> Gentlemen,
>
> On 4 November 2014 at 23:36, kaveh wrote:
> | Dear Hadley,
> |
> | Thank you for this information, maybe the CRAN gods
> | will look favourably on this case too,
>
> You seemed to have missed a point my earlier email tried to stress: Inclusion
> of BH does not lead to the warning.
>
> All this depends on WHICH headers are included, and the OP will need to sort
> this out by modifying his code.
>
> Dirk
>
> | Best regards,
> |
> | On 2014-11-04 23:32, Hadley Wickham wrote:
> | >>> | However, it seems some of the codes in the BH package
> | >>> | might. At any rate, when I include some boost headers such as
> | >>> | boost/math/distributions/ through BH, I get the following warnings
> | >>> | when submitting to the win-builder page:
> | >>> |
> | >>> |
> | >>> | Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
> | >>> |
> | >>> | Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
> | >>> |
> | >>> | Found '_ZSt4cerr', possibly from 'std::cerr' (C++)
> | >>> |
> | >>> | Found 'abort', possibly from 'abort' (C), 'runtime' (Fortran)
> | >> You’re kind of out of luck. These functions are both:
> | >> - used by the boost headers
> | >> - forbidden by R, well at least forbidden by CRAN
> | > Maaaaybe - I had this note in RSQLite, and CRAN seemed ok with my explanation:
> | >
> | > * checking compiled code ... NOTE
> | > File ‘/Users/hadley/Documents/databases/RSQLite.Rcheck/RSQLite/libs/RSQLite.so’:
> | > Found ‘___stderrp’, possibly from ‘stderr’ (C)
> | > Object: ‘sqlite-all.o’
> | >
> | > This is in C code from the embedded SQLite database.
> | >
> | >
> | > Hadley
> | >
> |
>
More information about the R-devel
mailing list