Index: trunk/npstat/swig/stat/DistributionsND.i =================================================================== --- trunk/npstat/swig/stat/DistributionsND.i (revision 923) +++ trunk/npstat/swig/stat/DistributionsND.i (revision 924) @@ -1,63 +1,66 @@ %include stddecls.i %include numpy.i %include stat/AbsDistribution1D.i %include stat/AbsDistributionND.i %include stat/GridRandomizer.i %include nm/SimpleFunctors.i %include nm/Matrix.i %include nm/ArrayND.i %{ #include "npstat/stat/DistributionsND.hh" %} // grep "^ class" DistributionsND.hh | cut -f1 -d":" | sed 's/ class /%feature("notabstract") npstat::/g' | sed 's/ $/;/g' %feature("notabstract") npstat::ProductDistributionND; %feature("notabstract") npstat::GaussND; %feature("notabstract") npstat::UniformND; %feature("notabstract") npstat::ScalableSymmetricBetaND; %feature("notabstract") npstat::ScalableHuberND; %feature("notabstract") npstat::RadialProfileND; %feature("notabstract") npstat::BinnedDensityND; %feature("notabstract") npstat::LinTransformedDistroND; +%feature("notabstract") npstat::DirichletDistribution; %apply (double* IN_ARRAY1, int DIM1) { (const double* location1, unsigned dim1), (const double* scale2, unsigned dim2), (const double* x, unsigned dim), (const double* shift, unsigned i_dim), (const double* data1, unsigned dataLen1) }; %apply (double* IN_ARRAY2, int DIM1, int DIM2) { (const double* covmat, unsigned nrows, unsigned ncols) }; %ignore npstat::ProductDistributionND::random; %ignore npstat::GaussND::random; %ignore npstat::UniformND::random; %ignore npstat::ScalableSymmetricBetaND::random; %ignore npstat::ScalableHuberND::random; %ignore npstat::RadialProfileND::random; %ignore npstat::BinnedDensityND::random; %ignore npstat::LinTransformedDistroND::random; +%ignore npstat::DirichletDistribution::random; %include "npstat/stat/DistributionsND.hh" %clear (const double* location1, unsigned dim1), (const double* scale2, unsigned dim2), (const double* x, unsigned dim), (const double* shift, unsigned i_dim), (const double* data1, unsigned dataLen1), (const double* covmat, unsigned nrows, unsigned ncols); ENABLEARCHIVEIO(ProductDistributionND, npstat::ProductDistributionND) ENABLEARCHIVEIO(GaussND, npstat::GaussND) ENABLEARCHIVEIO(UniformND, npstat::UniformND) ENABLEARCHIVEIO(ScalableSymmetricBetaND, npstat::ScalableSymmetricBetaND) ENABLEARCHIVEIO(ScalableHuberND, npstat::ScalableHuberND) ENABLEARCHIVEIO(RadialProfileND, npstat::RadialProfileND) ENABLEARCHIVEIO(BinnedDensityND, npstat::BinnedDensityND) ENABLEARCHIVEIO(LinTransformedDistroND, npstat::LinTransformedDistroND) +ENABLEARCHIVEIO(DirichletDistribution, npstat::DirichletDistribution) Index: trunk/npstat/stat/DistributionsND.cc =================================================================== --- trunk/npstat/stat/DistributionsND.cc (revision 923) +++ trunk/npstat/stat/DistributionsND.cc (revision 924) @@ -1,1267 +1,1392 @@ #include #include #include #include "geners/GenericIO.hh" #include "geners/vectorIO.hh" #include "geners/IOException.hh" #include "geners/CPP11_auto_ptr.hh" #include "npstat/nm/interpolate.hh" #include "npstat/nm/SpecialFunctions.hh" #include "npstat/nm/SimpleFunctors.hh" #include "npstat/rng/convertToSphericalRandom.hh" #include "npstat/stat/DistributionsND.hh" #include "npstat/stat/StatUtils.hh" #include "npstat/stat/distributionReadError.hh" #define SQRTTWOPI 2.5066282746310005 namespace npstat { bool ProductDistributionND::isEqual(const AbsDistributionND& other) const { const ProductDistributionND& r = static_cast(other); if (dim_ != r.dim_) return false; for (unsigned i=0; i()); current.ensureSameId(id); std::vector marg; gs::restore_item(in, &marg); ProductDistributionND* p = new ProductDistributionND(marg.size()); p->marginals_ = marg; return p; } bool ProductDistributionND::isScalable() const { for (unsigned i=0; i(marginals_[i]); if (!d) return false; } return true; } ProductDistributionND::ProductDistributionND( const AbsDistribution1D** marginals, const unsigned nMarginals) : AbsDistributionND(nMarginals) { if (!nMarginals) throw std::invalid_argument( "In npstat::ProductDistributionND constructor: " "no marginals provided"); assert(marginals); marginals_.reserve(nMarginals); for (unsigned i=0; iclone()); } } ProductDistributionND::ProductDistributionND( const ProductDistributionND& r) : AbsDistributionND(r.dim_) { marginals_.reserve(r.dim_); for (unsigned i=0; iclone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0) : AbsDistributionND(1U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1) : AbsDistributionND(2U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2) : AbsDistributionND(3U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3) : AbsDistributionND(4U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); marginals_.push_back(m3.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4) : AbsDistributionND(5U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); marginals_.push_back(m3.clone()); marginals_.push_back(m4.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5) : AbsDistributionND(6U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); marginals_.push_back(m3.clone()); marginals_.push_back(m4.clone()); marginals_.push_back(m5.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6) : AbsDistributionND(7U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); marginals_.push_back(m3.clone()); marginals_.push_back(m4.clone()); marginals_.push_back(m5.clone()); marginals_.push_back(m6.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6, const AbsDistribution1D& m7) : AbsDistributionND(8U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); marginals_.push_back(m3.clone()); marginals_.push_back(m4.clone()); marginals_.push_back(m5.clone()); marginals_.push_back(m6.clone()); marginals_.push_back(m7.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6, const AbsDistribution1D& m7, const AbsDistribution1D& m8) : AbsDistributionND(9U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); marginals_.push_back(m3.clone()); marginals_.push_back(m4.clone()); marginals_.push_back(m5.clone()); marginals_.push_back(m6.clone()); marginals_.push_back(m7.clone()); marginals_.push_back(m8.clone()); } ProductDistributionND::ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6, const AbsDistribution1D& m7, const AbsDistribution1D& m8, const AbsDistribution1D& m9) : AbsDistributionND(10U) { marginals_.reserve(dim_); marginals_.push_back(m0.clone()); marginals_.push_back(m1.clone()); marginals_.push_back(m2.clone()); marginals_.push_back(m3.clone()); marginals_.push_back(m4.clone()); marginals_.push_back(m5.clone()); marginals_.push_back(m6.clone()); marginals_.push_back(m7.clone()); marginals_.push_back(m8.clone()); marginals_.push_back(m9.clone()); } ProductDistributionND& ProductDistributionND::operator=( const ProductDistributionND& r) { if (this != &r) { AbsDistributionND::operator=(r); cleanup(); marginals_.resize(r.dim_); for (unsigned i=0; iclone(); } return *this; } void ProductDistributionND::cleanup() { for (int i=marginals_.size()-1; i>=0; --i) { delete marginals_[i]; marginals_[i] = 0; } } ProductDistributionND::~ProductDistributionND() { cleanup(); } double ProductDistributionND::density( const double* x, const unsigned i_dim) const { if (i_dim != dim_) throw std::invalid_argument( "In npstat::ProductDistributionND::density: " "incompatible input point dimensionality"); assert(x); double prod = 1.0; for (unsigned i=0; idensity(x[i]); return prod; } void ProductDistributionND::unitMap( const double* rnd, const unsigned bufLen, double* x) const { if (bufLen) { if (bufLen > dim_) throw std::out_of_range( "In npstat::ProductDistributionND::unitMap: " "input point dimensionality is out of range"); assert(rnd); assert(x); for (unsigned i=0; iquantile(rnd[i]); } } double GaussND::density(const double* x, const unsigned i_dim) const { if (i_dim != dim_) throw std::invalid_argument( "In npstat::GaussND::density: " "incompatible input point dimensionality"); assert(x); double* b0 = &buf_[0]; for (unsigned i=0; i(sum)/2.0); } void GaussND::unitMap( const double* rnd, const unsigned bufLen, double* x) const { if (bufLen) { if (bufLen < dim_) throw std::invalid_argument( "In npstat::GaussND::unitMap: insufficient " "length of the random buffer"); if (bufLen > dim_) throw std::out_of_range( "In npstat::GaussND::unitMap: " "input point dimensionality is out of range"); assert(rnd); assert(x); if (!sqrt_.nRows()) { const SquareRoot sq; #ifdef USE_LAPACK_QUAD Matrix tmp(covmat_); sqrt_ = tmp.symFcn(sq); #else sqrt_ = covmat_.symFcn(sq); #endif } Gauss1D g(0.0, 1.0); for (unsigned i=0; i(other); return dim_ == r.dim_ && location_ == r.location_ && covmat_ == r.covmat_; } bool GaussND::write(std::ostream& os) const { gs::write_pod(os, dim_); gs::write_pod_vector(os, location_); gs::write_item(os, covmat_); return !os.fail(); } GaussND* GaussND::read(const gs::ClassId& id, std::istream& in) { static const gs::ClassId current(gs::ClassId::makeId()); current.ensureSameId(id); unsigned dim; gs::read_pod(in, &dim); std::vector loc; gs::read_pod_vector(in, &loc); Matrix cov; gs::restore_item(in, &cov); if (!(dim && loc.size() == dim)) throw gs::IOInvalidData( "In npstat::GaussND::read: corrupted record"); return new GaussND(&loc[0], dim, cov); } void GaussND::initialize() { if (!(dim_ && dim_ == covmat_.nRows())) throw std::invalid_argument( "In npstat::GaussND::initialize: " "the locations and the covariance matrix are incompatible"); #ifdef USE_LAPACK_QUAD Matrix tmp(covmat_); #endif const InverseSquareRoot invsq; try { #ifdef USE_LAPACK_QUAD invsqrt_ = tmp.symFcn(invsq); #else invsqrt_ = covmat_.symFcn(invsq); #endif } catch (const std::domain_error& e) { throw std::invalid_argument( "In npstat::GaussND::initialize: " "covariance matrix is not positive-definite"); } #ifdef USE_LAPACK_QUAD const double det = tmp.det(); #else const double det = covmat_.det(); #endif norm_ = 1.0/pow(SQRTTWOPI, dim_)/std::sqrt(det); } GaussND::GaussND(const double* location, const unsigned i_dim, const Matrix& covmat) : AbsDistributionND(i_dim), location_(location, location+i_dim), buf_(i_dim), covmat_((covmat + covmat.T())/2.0) { assert(location); initialize(); } const Matrix& GaussND::getCorrMat() const { if (!corrmat_.nRows()) corrmat_ = covmat_.covarToCorr(); return corrmat_; } double UniformND::unscaledDensity(const double* x) const { for (unsigned i=0; i 1.0) return 0.0; return 1.0; } void UniformND::unscaledUnitMap( const double* rnd, const unsigned bufLen, double* x) const { for (unsigned i=0; i()); current.ensureSameId(id); unsigned dim = 0; std::vector locations, scales; if (AbsScalableDistributionND::read(is, &dim, &locations, &scales)) if (dim && locations.size() == dim && scales.size() == dim) return new UniformND(&locations[0], &scales[0], dim); distributionReadError(is, classname()); return 0; } bool ScalableSymmetricBetaND::isEqual(const AbsDistributionND& ri) const { const ScalableSymmetricBetaND& o = static_cast(ri); return AbsScalableDistributionND::isEqual(o) && power_ == o.power_; } ScalableSymmetricBetaND::ScalableSymmetricBetaND( const double* location, const double* scale, const unsigned dim, const double power) : AbsScalableDistributionND(location, scale, dim), power_(power) { initialize(); } void ScalableSymmetricBetaND::initialize() { if (power_ < 0.0) throw std::invalid_argument( "In npstat::ScalableSymmetricBetaND::initialize: " "invalid power parameter"); norm_ = Gamma(1 + power_ + dim_/2.0)/pow(M_PI,dim_/2.0)/Gamma(1 + power_); } double ScalableSymmetricBetaND::unscaledDensity(const double* x) const { double rsquare = 0.0; for (unsigned i=0; i= 1.0) return 0.0; else return norm_*pow(1.0-rsquare, power_); } double ScalableSymmetricBetaND::radialQuantile(const double cdf) const { const double asq = inverseIncompleteBeta(dim_/2.0, power_+1.0, cdf); return sqrt(asq); } void ScalableSymmetricBetaND::unscaledUnitMap( const double* rnd, const unsigned bufLen, double* x) const { if (bufLen != dim_) throw std::invalid_argument( "In npstat::ScalableSymmetricBetaND::unscaledUnitMap: " "incompatible dimensionality of the random vector"); const double cdf = convertToSphericalRandom(rnd, dim_, x); const double r = radialQuantile(cdf); for (unsigned i=0; i()); current.ensureSameId(id); unsigned dim = 0; std::vector locations, scales; if (AbsScalableDistributionND::read(in, &dim, &locations, &scales)) if (dim && locations.size() == dim && scales.size() == dim) { double p; gs::read_pod(in, &p); if (!in.fail()) return new ScalableSymmetricBetaND(&locations[0], &scales[0], dim, p); } distributionReadError(in, classname()); return 0; } bool ScalableHuberND::write(std::ostream& os) const { AbsScalableDistributionND::write(os); gs::write_pod(os, tWeight_); return !os.fail(); } ScalableHuberND* ScalableHuberND::read( const gs::ClassId& id, std::istream& in) { static const gs::ClassId current( gs::ClassId::makeId()); current.ensureSameId(id); unsigned dim = 0; std::vector locations, scales; if (AbsScalableDistributionND::read(in, &dim, &locations, &scales)) if (dim && locations.size() == dim && scales.size() == dim) { double p; gs::read_pod(in, &p); if (!in.fail()) return new ScalableHuberND(&locations[0], &scales[0], dim, p); } distributionReadError(in, classname()); return 0; } bool ScalableHuberND::isEqual(const AbsDistributionND& ri) const { const ScalableHuberND& o = static_cast(ri); return AbsScalableDistributionND::isEqual(o) && tWeight_ == o.tWeight_; } ScalableHuberND::ScalableHuberND( const double* location, const double* scales, const unsigned dim, const double alpha) : AbsScalableDistributionND(location, scales, dim), tWeight_(alpha) { initialize(); } void ScalableHuberND::initialize() { if (!(tWeight_ >= 0.0 && tWeight_ < 1.0)) throw std::invalid_argument( "In npstat::ScalableHuberND constructor: " "tail weight not inside [0, 1) interval"); const1_ = pow(2.0*M_PI, dim_/2.0); const2_ = 2.0*pow(M_PI, dim_/2.0)*Gamma(dim_)/Gamma(dim_/2.0); if (tWeight_ == 0.0) { a_ = DBL_MAX; normfactor_ = 1.0/const1_; } else { const double relative_eps = 5.0e-13; unsigned i = 0; double a, bf, n1, n2, amin, amax = 0.0; const double scale = sqrt(static_cast(dim_)); do { amin = amax; amax = scale*pow(2.0, i++); n1 = norm1(amax); n2 = norm2(amax); bf = n2/(n1+n2); } while (bf > tWeight_); do { a = (amax + amin)/2.0; n1 = norm1(a); n2 = norm2(a); bf = n2/(n1+n2); if (bf > tWeight_) amin = a; else amax = a; } while ((amax - amin)/a > relative_eps); a_ = a; normfactor_ = 1.0/(n1+n2); } } double ScalableHuberND::norm1(const double a) const { return const1_*incompleteGamma(dim_/2.0, a*a/2.0); } double ScalableHuberND::norm2(const double a) const { const double d = dim_; return const2_*pow(a, -d)*exp(a*a/2.0)*incompleteGammaC(d, a*a); } double ScalableHuberND::unscaledDensity(const double* x) const { double rsquare = 0.0; for (unsigned i=0; i locaton(dim); std::vector scale(dim); const double p = marginals_[0].power(); for (unsigned i=0; i()); current.ensureSameId(id); unsigned dim = 0; std::vector locations, scales; double p; gs::read_pod(in, &dim); gs::read_pod_vector(in, &locations); gs::read_pod_vector(in, &scales); gs::read_pod(in, &p); if (dim && locations.size() == dim && scales.size() == dim && !in.fail()) return new ProductSymmetricBetaND(&locations[0], &scales[0], dim, p); distributionReadError(in, classname()); return 0; } ProductSymmetricBetaND::ProductSymmetricBetaND( const double* location, const double* scale, const unsigned dim, const double power) : HomogeneousProductDistroND(dim) { if (!dim) throw std::invalid_argument( "In npstat::ProductSymmetricBetaND constructor: " "dimensionality must be positive"); assert(location); assert(scale); for (unsigned i=0; i(ri); const unsigned sz1 = sizeof(xg_)/sizeof(xg_[0]); for (unsigned i=0; i()); curr.ensureSameId(id); unsigned dim = 0; std::vector locations, scales; if (AbsScalableDistributionND::read(is, &dim, &locations, &scales)) if (dim && locations.size() == dim && scales.size() == dim) { CPP11_auto_ptr rp( new RadialProfileND(&locations[0], &scales[0], dim)); gs::read_pod_vector(is, &rp->profile_); gs::read_pod_vector(is, &rp->cdf_); gs::read_pod(is, &rp->ndSphereVol_); gs::read_pod(is, &rp->step_); gs::read_pod(is, &rp->len_); gs::read_pod(is, &rp->deg_); gs::read_pod_array(is, &rp->xg_[0], sizeof(rp->xg_)/sizeof(rp->xg_[0])); gs::read_pod_array(is, &rp->wg_[0], sizeof(rp->wg_)/sizeof(rp->wg_[0])); if (!is.fail()) return rp.release(); } distributionReadError(is, classname()); return 0; } bool RadialProfileND::write(std::ostream& of) const { const bool ok = AbsScalableDistributionND::write(of); if (ok) { gs::write_pod_vector(of, profile_); gs::write_pod_vector(of, cdf_); gs::write_pod(of, ndSphereVol_); gs::write_pod(of, step_); gs::write_pod(of, len_); gs::write_pod(of, deg_); gs::write_pod_array(of, &xg_[0], sizeof(xg_)/sizeof(xg_[0])); gs::write_pod_array(of, &wg_[0], sizeof(wg_)/sizeof(wg_[0])); } return ok && !of.fail(); } // The following function calculates the interval integral // exactly (up to rounding errors) in arbitrary dimension double RadialProfileND::intervalInteg(const unsigned i, const double stepFraction) const { double coeffs[4]; unsigned ncoeffs = 0; switch (deg_) { case 0: { const double r0 = step_*i; const double rmax = r0 + step_*stepFraction; const double rmed = r0 + step_/2.0; const double powr0 = pow(r0, dim_); const double powrmax = pow(rmax, dim_); if (rmax <= rmed) return ndSphereVol_*profile_[i]*(powrmax - powr0); else { const double powrmed = pow(rmed, dim_); return ndSphereVol_*(profile_[i]*(powrmed - powr0) + profile_[i+1]*(powrmax - powrmed)); } } case 1: ncoeffs = interpolation_coefficients( coeffs, sizeof(coeffs)/sizeof(coeffs[0]), profile_[i], profile_[i+1]); coeffs[0] -= coeffs[1]*i; break; case 2: if (i == 0) { ncoeffs = interpolation_coefficients( coeffs, sizeof(coeffs)/sizeof(coeffs[0]), profile_[i], profile_[i+1], profile_[i+2]); coeffs[1] -= 2*coeffs[2]*i; coeffs[0] -= (coeffs[2]*i + coeffs[1])*i; } else if (i == len_-2) { ncoeffs = interpolation_coefficients( coeffs, sizeof(coeffs)/sizeof(coeffs[0]), profile_[i-1], profile_[i], profile_[i+1]); const double rbase = i - 1.0; coeffs[1] -= 2*coeffs[2]*rbase; coeffs[0] -= (coeffs[2]*rbase + coeffs[1])*rbase; } else { double cset1[3], cset2[3]; ncoeffs = interpolation_coefficients( cset1, 3, profile_[i], profile_[i+1], profile_[i+2]); cset1[1] -= 2*cset1[2]*i; cset1[0] -= (cset1[2]*i + cset1[1])*i; ncoeffs = interpolation_coefficients( cset2, 3, profile_[i-1], profile_[i], profile_[i+1]); const double rbase = i - 1.0; cset2[1] -= 2*cset2[2]*rbase; cset2[0] -= (cset2[2]*rbase + cset2[1])*rbase; for (unsigned j=0; j<3; ++j) coeffs[j] = (cset1[j] + cset2[j])/2.0; } break; case 3: { double rb; if (i == 0) { ncoeffs = interpolation_coefficients( coeffs, sizeof(coeffs)/sizeof(coeffs[0]), profile_[i], profile_[i+1], profile_[i+2], profile_[i+3]); rb = i; } else if (i == len_-2) { ncoeffs = interpolation_coefficients( coeffs, sizeof(coeffs)/sizeof(coeffs[0]), profile_[i-2], profile_[i-1], profile_[i], profile_[i+1]); rb = i - 2.0; } else { ncoeffs = interpolation_coefficients( coeffs, sizeof(coeffs)/sizeof(coeffs[0]), profile_[i-1], profile_[i], profile_[i+1], profile_[i+2]); rb = i - 1.0; } coeffs[2] -= 3*coeffs[3]*rb; coeffs[1] -= rb*(2*coeffs[2] + 3*coeffs[3]*rb); coeffs[0] -= rb*(coeffs[1] + rb*(coeffs[2] + coeffs[3]*rb)); } break; default: assert(0); return 0.0; } assert(ncoeffs == deg_ + 1U); long double sum = 0.0L; for (unsigned j=0; j(sum)*dim_*ndSphereVol_*pow(step_, dim_); } void RadialProfileND::calculateQuadratureCoeffs() { xg_[0] = sqrt((3.0 - 2.0*sqrt(6.0/5.0))/7.0); xg_[1] = -xg_[0]; xg_[2] = sqrt((3.0 + 2.0*sqrt(6.0/5.0))/7.0); xg_[3] = -xg_[2]; wg_[0] = (18.0 + sqrt(30.0))/36.0; wg_[1] = wg_[0]; wg_[2] = (18.0 - sqrt(30.0))/36.0; wg_[3] = wg_[2]; } double RadialProfileND::intervalIntegLowD(const unsigned i, const double stepFraction) const { const double halfstep = step_*stepFraction/2.0; const double midpoint = i*step_ + halfstep; long double sum = 0.0L; for (unsigned j=0; j(sum)*dim_*halfstep*ndSphereVol_; } void RadialProfileND::normalize() { step_ = 1.0/(len_ - 1); cdf_.reserve(len_); cdf_.push_back(0.0); long double sum = 0.0L; const bool useGaussRule = deg_ && (dim_ + deg_ <= 2*sizeof(xg_)/sizeof(xg_[0])); for (unsigned i=0; i(sum)); } const double norm = cdf_[len_ - 1]; assert(norm > 0.0); for (unsigned i=0; i 1.0) return 0.0; if (x == 0.0) return profile_[0]; if (x == 1.0) return profile_[len_ - 1]; unsigned idx = static_cast(x/step_); if (idx >= len_ - 1) idx = len_ - 2; const double dx = x/step_ - idx; switch (deg_) { case 0: if (dx < 0.5) return profile_[idx]; else return profile_[idx + 1]; case 1: return interpolate_linear(dx, profile_[idx], profile_[idx + 1]); case 2: if (idx == 0) return interpolate_quadratic(dx, profile_[idx], profile_[idx + 1], profile_[idx + 2]); else if (idx == len_ - 2) return interpolate_quadratic(dx+1.0, profile_[idx - 1], profile_[idx], profile_[idx + 1]); else { const double v0 = interpolate_quadratic( dx, profile_[idx], profile_[idx + 1], profile_[idx + 2]); const double v1 = interpolate_quadratic( dx+1.0, profile_[idx - 1], profile_[idx], profile_[idx + 1]); return (v0 + v1)/2.0; } case 3: if (idx == 0) return interpolate_cubic(dx, profile_[idx], profile_[idx + 1], profile_[idx + 2], profile_[idx + 3]); else if (idx == len_ - 2) return interpolate_cubic(dx+2.0, profile_[idx-2], profile_[idx-1], profile_[idx], profile_[idx + 1]); else return interpolate_cubic(dx+1.0, profile_[idx - 1], profile_[idx], profile_[idx + 1], profile_[idx + 2]); default: assert(0); return 0.0; } } double RadialProfileND::unscaledDensity(const double* x) const { double sum = 0.0; for (unsigned i=0; i= 1.0) return 1.0; const unsigned ibin = quantileBinFromCdf(&cdf_[0], len_, rnd); const double base = step_*ibin; const double ydelta = rnd - cdf_[ibin]; assert(ydelta >= 0.0); if (ydelta == 0.0) return base; const double eps = 8.0*DBL_EPSILON; const bool useGaussRule = deg_ && (dim_ + deg_ <= 2*sizeof(xg_)/sizeof(xg_[0])); double xlow = base; double xhi = base + step_; double half = (xlow + xhi)/2.0; double integ; while ((xhi - xlow)/(half + step_) > eps) { const double ds = (half - base)/step_; if (useGaussRule) integ = intervalIntegLowD(ibin, ds); else integ = intervalInteg(ibin, ds); if (integ > ydelta) xhi = half; else xlow = half; half = (xlow + xhi)/2.0; } return half; } void RadialProfileND::unscaledUnitMap( const double* rnd, const unsigned bufLen, double* x) const { if (bufLen != dim_) throw std::invalid_argument( "In npstat::RadialProfileND::unscaledUnitMap: " "incompatible dimensionality of the random vector"); const double cdf = convertToSphericalRandom(rnd, dim_, x); const double r = radialQuantile(cdf); for (unsigned i=0; i()); current.ensureSameId(id); unsigned dim = 0, interpolationDeg = 0; std::vector locations, scales; if (AbsScalableDistributionND::read(in, &dim, &locations, &scales)) if (dim && locations.size() == dim && scales.size() == dim) { gs::read_pod(in, &interpolationDeg); gs::ClassId arrid(in, 1); ArrayND gridData; ArrayND::restore(arrid, in, &gridData); if (!in.fail()) return new BinnedDensityND( &locations[0], &scales[0], dim, gridData, interpolationDeg); } distributionReadError(in, classname()); return 0; } bool BinnedDensityND::isEqual(const AbsDistributionND& ri) const { const BinnedDensityND& o = static_cast(ri); return AbsScalableDistributionND::isEqual(o) && randomizer_ == o.randomizer_; } void LinTransformedDistroND::initialize() { if (!(dim_ && dim_ == shift_.size() && dim_ == S_.nRows() && dim_ == S_.nColumns())) throw std::invalid_argument( "In npstat::LinTransformedDistroND::initialize: " "the shifts and the transformation matrix are incompatible"); const double mnorm = S_.frobeniusNorm(); if (mnorm == 0.0) throw std::invalid_argument( "In npstat::LinTransformedDistroND::initialize: " "zero transformation matrix"); try { Matrix tmp(S_); const double denom = std::abs(tmp.det()); if (denom <= DBL_EPSILON*mnorm) throw std::invalid_argument("bad matrix, bad"); norm_ = 1.0/denom; invS_ = tmp.inv(); } catch (const std::exception& e) { throw std::invalid_argument( "In npstat::LinTransformedDistroND::initialize: " "transform matrix appears to be degenerate"); } } double LinTransformedDistroND::density(const double* x, const unsigned i_dim) const { if (i_dim != dim_) throw std::invalid_argument( "In npstat::LinTransformedDistroND::density: " "incompatible input point dimensionality"); assert(x); double* b0 = &buf_[0]; for (unsigned i=0; idensity(b1, i_dim); } void LinTransformedDistroND::unitMap( const double* rnd, const unsigned bufLen, double* x) const { if (bufLen) { if (bufLen < dim_) throw std::invalid_argument( "In npstat::LinTransformedDistroND::unitMap: insufficient " "length of the random buffer"); if (bufLen > dim_) throw std::out_of_range( "In npstat::LinTransformedDistroND::unitMap: " "input point dimensionality is out of range"); assert(rnd); assert(x); double* b0 = &buf_[0]; distro_->unitMap(rnd, bufLen, b0); double* b1 = b0 + dim_; S_.timesVector(b0, dim_, b1, dim_); for (unsigned i=0; iclone()), shift_(r.shift_), buf_(r.buf_), S_(r.S_), invS_(r.invS_), norm_(r.norm_) { } LinTransformedDistroND& LinTransformedDistroND::operator=( const LinTransformedDistroND& r) { if (this != &r) { AbsDistributionND::operator=(r); delete distro_; distro_ = r.distro_->clone(); shift_ = r.shift_; buf_ = r.buf_; S_.uninitialize(); S_ = r.S_; invS_.uninitialize(); invS_ = r.invS_; norm_ = r.norm_; } return *this; } bool LinTransformedDistroND::isEqual(const AbsDistributionND& other) const { const LinTransformedDistroND& r = static_cast(other); return dim_ == r.dim_ && *distro_ == *r.distro_ && shift_ == r.shift_ && S_ == r.S_; } bool LinTransformedDistroND::write(std::ostream& os) const { gs::write_pod(os, dim_); gs::write_item(os, *distro_); gs::write_pod_vector(os, shift_); gs::write_item(os, S_); return !os.fail(); } LinTransformedDistroND* LinTransformedDistroND::read( const gs::ClassId& id, std::istream& in) { static const gs::ClassId current( gs::ClassId::makeId()); current.ensureSameId(id); unsigned dim; gs::read_pod(in, &dim); CPP11_auto_ptr pd = gs::read_item(in); std::vector shift; gs::read_pod_vector(in, &shift); Matrix S; gs::restore_item(in, &S); if (!(dim && shift.size() == dim)) throw gs::IOInvalidData( "In npstat::LinTransformedDistroND::read: corrupted record"); return new LinTransformedDistroND(*pd, &shift[0], dim, S); } + + void DirichletDistribution::initialize() + { + const unsigned sz = powers_.size(); + if (sz < 2U) throw std::invalid_argument( + "In npstat::DirichletDistribution::initialize: " + "the dimensionality must be at least 2"); + + if (eps_ <= 0.0) throw std::invalid_argument( + "In npstat::DirichletDistribution::initialize: " + "the tolerance parameter must be positive"); + + long double psum = 0.0L, gprod = 1.0L; + for (unsigned i=0; i 0.0); + for (unsigned i=0; i()); + current.ensureSameId(id); + + unsigned dim = 0; + std::vector locations, scales; + if (AbsScalableDistributionND::read(in, &dim, &locations, &scales)) + if (dim > 1U && locations.size() == dim && scales.size() == dim) + { + std::vector p; + gs::read_pod_vector(in, &p); + double eps; + gs::read_pod(in, &eps); + if (!in.fail()) return new DirichletDistribution( + &locations[0], &scales[0], &p[0], dim, eps); + } + distributionReadError(in, classname()); + return 0; + } + + bool DirichletDistribution::isEqual(const AbsDistributionND& other) const + { + const DirichletDistribution& r = + static_cast(other); + return AbsScalableDistributionND::isEqual(r) && + powers_ == r.powers_ && eps_ == r.eps_; + } + + double DirichletDistribution::unscaledDensity(const double* x_in) const + { + const unsigned sz = powers_.size(); + long double sum = 0.0L, prod = 1.0L; + for (unsigned i=0; i 1.0) throw std::invalid_argument( + "In npstat::DirichletDistribution::unscaledDensity: " + "arguments are out of support range"); + sum += x; + const double p = powers_[i] - 1.0; + if (p == 0.0) + ; + else if (p == 1.0) + prod *= x; + else if (p == 2.0) + prod *= x*x; + else + prod *= pow(x, p); + } + if (std::abs(sum - 1.0L) > eps_) throw std::invalid_argument( + "In npstat::DirichletDistribution::unscaledDensity: " + "the sum of the arguments is not sufficiently close to 1"); + return prod*norm_; + } + + void DirichletDistribution::unscaledUnitMap( + const double* /* rnd */, unsigned /* bufLen */, + double* /* x */) const + { + throw std::invalid_argument( + "In npstat::DirichletDistribution::unscaledUnitMap: " + "this function is not implemented yet"); + } } Index: trunk/npstat/stat/DistributionNDReader.cc =================================================================== --- trunk/npstat/stat/DistributionNDReader.cc (revision 923) +++ trunk/npstat/stat/DistributionNDReader.cc (revision 924) @@ -1,42 +1,43 @@ #include "npstat/stat/DistributionNDReader.hh" #include "npstat/stat/DistributionsND.hh" #include "npstat/stat/GridInterpolatedDistribution.hh" #include "npstat/stat/ScalableGaussND.hh" #include "npstat/stat/CompositeDistributionND.hh" #include "npstat/stat/Copulas.hh" #include "npstat/stat/DistributionMixND.hh" #include "npstat/stat/EllipticalDistributions.hh" // // If you copy the "add_reader" macro below, do not forget to change // "AbsDistributionND" into the name of your base class // #define add_reader(Derived) do {\ const gs::ClassId& id(gs::ClassId::makeId());\ (*this)[id.name()] = new gs::ConcreteReader();\ } while(0); namespace npstat { DistributionNDReader::DistributionNDReader() { add_reader(ProductDistributionND); add_reader(RadialProfileND); add_reader(UniformND); add_reader(ScalableGaussND); add_reader(BinnedDensityND); + add_reader(DirichletDistribution); add_reader(GridInterpolatedDistribution); add_reader(CompositeDistributionND); add_reader(GaussianCopula); add_reader(FGMCopula); add_reader(TCopula); add_reader(GaussND); add_reader(LinTransformedDistroND); add_reader(DistributionMixND); add_reader(EllipticalDistribution); add_reader(EllipticalNormal); add_reader(EllipticalPearsonTypeVII); add_reader(EllipticalPearsonTypeII); add_reader(EllipticalKotz); } } Index: trunk/npstat/stat/DistributionsND.hh =================================================================== --- trunk/npstat/stat/DistributionsND.hh (revision 923) +++ trunk/npstat/stat/DistributionsND.hh (revision 924) @@ -1,701 +1,773 @@ #ifndef NPSTAT_DISTRIBUTIONSND_HH_ #define NPSTAT_DISTRIBUTIONSND_HH_ /*! // \file DistributionsND.hh // // \brief A number of useful multivariate continuous statistical distributions // // Author: I. Volobouev // // March 2010 */ #include #include #include "npstat/nm/Matrix.hh" #include "npstat/nm/MathUtils.hh" #include "npstat/stat/AbsDistributionND.hh" #include "npstat/stat/GridRandomizer.hh" #include "npstat/stat/Distributions1D.hh" namespace npstat { /** // A generic product distribution. The argument distributions // will be cloned internally. */ class ProductDistributionND : public AbsDistributionND { public: ProductDistributionND(const AbsDistribution1D** marginals, unsigned nMarginals); // Convenience constructors. They are also good for use from Python. ProductDistributionND(const AbsDistribution1D& m0); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6, const AbsDistribution1D& m7); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6, const AbsDistribution1D& m7, const AbsDistribution1D& m8); ProductDistributionND(const AbsDistribution1D& m0, const AbsDistribution1D& m1, const AbsDistribution1D& m2, const AbsDistribution1D& m3, const AbsDistribution1D& m4, const AbsDistribution1D& m5, const AbsDistribution1D& m6, const AbsDistribution1D& m7, const AbsDistribution1D& m8, const AbsDistribution1D& m9); ProductDistributionND(const ProductDistributionND& r); ProductDistributionND& operator=(const ProductDistributionND& r); virtual ~ProductDistributionND(); inline virtual ProductDistributionND* clone() const {return new ProductDistributionND(*this);} double density(const double* x, unsigned dim) const; void unitMap(const double* rnd, unsigned bufLen, double* x) const; inline bool mappedByQuantiles() const {return true;} /** // Check whether all marginals are instances of // AbsScalableDistribution1D */ bool isScalable() const; /** Get the marginal distribution with the given index */ inline AbsDistribution1D* getMarginal(const unsigned i) {return marginals_.at(i);} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::ProductDistributionND";} static inline unsigned version() {return 1;} static ProductDistributionND* read(const gs::ClassId& id, std::istream& in); protected: virtual bool isEqual(const AbsDistributionND&) const; private: inline explicit ProductDistributionND(const unsigned n) : AbsDistributionND(n) {} void cleanup(); std::vector marginals_; }; /** // Multivariate Gaussian distribution parameterized // by its covariance matrix */ class GaussND : public AbsDistributionND { public: GaussND(const double* location1, unsigned dim1, const Matrix& covmat); inline virtual ~GaussND() {} inline virtual GaussND* clone() const {return new GaussND(*this);} double density(const double* x, unsigned dim) const; void unitMap(const double* rnd, unsigned bufLen, double* x) const; inline bool mappedByQuantiles() const {return false;} inline double getLocation(const unsigned index) const {return location_.at(index);} inline const Matrix& getCovMat() const {return covmat_;} const Matrix& getCorrMat() const; // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::GaussND";} static inline unsigned version() {return 1;} static GaussND* read(const gs::ClassId& id, std::istream&); protected: virtual bool isEqual(const AbsDistributionND&) const; private: void initialize(); std::vector location_; mutable std::vector buf_; mutable Matrix sqrt_; Matrix covmat_; Matrix invsqrt_; mutable Matrix corrmat_; double norm_; #ifdef SWIG public: inline GaussND(const double* location1, unsigned dim1, const double* covmat, unsigned nrows, unsigned ncols) : AbsDistributionND(dim1), location_(location1, location1+dim1), buf_(dim1), covmat_(nrows, ncols, covmat) { assert(location1); assert(covmat); covmat_ = (covmat_ + covmat_.T())/2.0; initialize(); } #endif // SWIG }; /** Multivariate uniform distribution */ class UniformND : public AbsScalableDistributionND { public: inline UniformND(const double* location, const double* scale, const unsigned dim) : AbsScalableDistributionND(location, scale, dim) {} inline virtual ~UniformND() {} inline virtual UniformND* clone() const {return new UniformND(*this);} inline bool mappedByQuantiles() const {return true;} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& of) const; static inline const char* classname() {return "npstat::UniformND";} static inline unsigned version() {return 1;} static UniformND* read(const gs::ClassId& id, std::istream& in); protected: virtual bool isEqual(const AbsDistributionND& r) const {return AbsScalableDistributionND::isEqual(r);} private: double unscaledDensity(const double* x) const; void unscaledUnitMap(const double* rnd, unsigned bufLen, double* x) const; #ifdef SWIG public: inline UniformND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2) : AbsScalableDistributionND(location1, scale2, dim2) { if (dim1 != dim2) throw std::invalid_argument( "In npstat::UniformND constructor: " "sizes of locations and scales are incompatible"); } #endif // SWIG }; /** // Multivariate symmetric distribution proportional to pow(1.0 - R^2, n) // with the support region defined by 0 <= R <= 1, where R is the // distance (after scaling) to the distribution location point. // Can be scaled separately in each dimension. */ class ScalableSymmetricBetaND : public AbsScalableDistributionND { public: ScalableSymmetricBetaND(const double* location, const double* scale, unsigned dim, double n); inline virtual ScalableSymmetricBetaND* clone() const {return new ScalableSymmetricBetaND(*this);} inline virtual ~ScalableSymmetricBetaND() {} inline bool mappedByQuantiles() const {return false;} inline double power() const {return power_;} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::ScalableSymmetricBetaND";} static inline unsigned version() {return 1;} static ScalableSymmetricBetaND* read(const gs::ClassId& id, std::istream&); protected: virtual bool isEqual(const AbsDistributionND&) const; private: void initialize(); double unscaledDensity(const double* x) const; void unscaledUnitMap(const double* rnd, unsigned bufLen, double* x) const; double radialQuantile(double cdf) const; double power_; double norm_; #ifdef SWIG public: inline ScalableSymmetricBetaND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const double n) : AbsScalableDistributionND(location1, scale2, dim2), power_(n) { if (dim1 != dim2) throw std::invalid_argument( "In npstat::ScalableSymmetricBetaND constructor: " "sizes of locations and scales are incompatible"); initialize(); } #endif // SWIG }; /** // Multidimensional Huber-like function. Gaussian near the // coordinate origin and exponential when radius is above // certain threshold. "tailWeight" parameter is the weight // of the exponential tail. It must be between 0 and 1. */ class ScalableHuberND : public AbsScalableDistributionND { public: ScalableHuberND(const double* location, const double* scale, unsigned dim, double tailWeight); inline virtual ScalableHuberND* clone() const {return new ScalableHuberND(*this);} inline virtual ~ScalableHuberND() {} inline bool mappedByQuantiles() const {return false;} inline double tailWeight() const {return tWeight_;} inline double transition() const {return a_;} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::ScalableHuberND";} static inline unsigned version() {return 1;} static ScalableHuberND* read(const gs::ClassId& id, std::istream& in); protected: virtual bool isEqual(const AbsDistributionND&) const; private: void initialize(); double unscaledDensity(const double* x) const; void unscaledUnitMap(const double* rnd, unsigned bufLen, double* x) const; // Weight of the Gaussian part double norm1(double a) const; // Weight of the exponential part double norm2(double a) const; double radialQuantile(double cdf) const; double tWeight_; double a_; double normfactor_; double const1_; double const2_; #ifdef SWIG public: inline ScalableHuberND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const double alpha) : AbsScalableDistributionND(location1, scale2, dim2), tWeight_(alpha) { if (dim1 != dim2) throw std::invalid_argument( "In npstat::ScalableHuberND constructor: " "sizes of locations and scales are incompatible"); initialize(); } #endif // SWIG }; /** Product of symmetric beta distributions in each dimension */ struct ProductSymmetricBetaND : public HomogeneousProductDistroND { ProductSymmetricBetaND(const double* location, const double* scale, unsigned dim, double power); inline virtual ProductSymmetricBetaND* clone() const {return new ProductSymmetricBetaND(*this);} inline virtual ~ProductSymmetricBetaND() {} inline double power() const {return marginals_[0].power();} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::ProductSymmetricBetaND";} static inline unsigned version() {return 1;} static ProductSymmetricBetaND* read(const gs::ClassId& id, std::istream& in); #ifdef SWIG public: inline ProductSymmetricBetaND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const double power) : HomogeneousProductDistroND(dim2) { if (dim1 != dim2) throw std::invalid_argument( "In npstat::ProductSymmetricBetaND constructor: " "sizes of locations and scales are incompatible"); assert(location1); assert(scale2); for (unsigned i=0; i RadialProfileND(const double* location, const double* scale, unsigned dim, const Real* data, unsigned dataLen, unsigned interpolationDegree); inline virtual RadialProfileND* clone() const {return new RadialProfileND(*this);} inline virtual ~RadialProfileND() {} inline bool mappedByQuantiles() const {return false;} inline unsigned interpolationDegree() const {return deg_;} inline unsigned profileLength() const {return len_;} inline const double* profileData() const {return &profile_[0];} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& of) const; static inline const char* classname() {return "npstat::RadialProfileND";} static inline unsigned version() {return 1;} static RadialProfileND* read(const gs::ClassId& id, std::istream& in); protected: virtual bool isEqual(const AbsDistributionND&) const; private: inline RadialProfileND(const double* location, const double* scale, const unsigned dim) : AbsScalableDistributionND(location, scale, dim) {} template void initialize(const Real* data, unsigned dataLen); double unscaledDensity(const double* x) const; void unscaledUnitMap(const double* rnd, unsigned bufLen, double* x) const; void calculateQuadratureCoeffs(); void normalize(); double radialPofile(double r) const; double intervalInteg(unsigned intervalNumber, double stepFraction=1.0) const; double intervalIntegLowD(unsigned intervalNumber, double stepFraction=1.0) const; double radialQuantile(double cdf) const; std::vector profile_; std::vector cdf_; double ndSphereVol_; double step_; unsigned len_; unsigned deg_; // Coefficients for Gaussian quadratures double xg_[4], wg_[4]; #ifdef SWIG public: inline RadialProfileND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const double* data1, unsigned dataLen1, unsigned interpolationDegree) : AbsScalableDistributionND(location1, scale2, dim2), ndSphereVol_(ndUnitSphereVolume(dim2)), len_(dataLen1), deg_(interpolationDegree) { if (dim1 != dim2) throw std::invalid_argument( "In npstat::RadialProfileND constructor: " "sizes of locations and scales are incompatible"); this->initialize(data1, dataLen1); } #endif // SWIG }; /** // Distribution defined by an interpolation table inside // the unit box (which can be shifted and scaled). All grid // points are inside the box, in the bin centers. Currently, // interpolationDegree could be only 0 (faster, no interpolation) // or 1 (multilinear interpolation). */ class BinnedDensityND : public AbsScalableDistributionND { public: template BinnedDensityND(const double* location, const double* scale, unsigned locationAndScaleLength, const ArrayND& histogram, const unsigned interpolationDegree); inline virtual BinnedDensityND* clone() const {return new BinnedDensityND(*this);} inline virtual ~BinnedDensityND() {} inline bool mappedByQuantiles() const {return true;} inline const ArrayND& gridData() const {return randomizer_.gridData();} inline unsigned interpolationDegree() const {return randomizer_.interpolationDegree();} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::BinnedDensityND";} static inline unsigned version() {return 1;} static BinnedDensityND* read(const gs::ClassId& id, std::istream& in); protected: virtual bool isEqual(const AbsDistributionND&) const; private: inline double unscaledDensity(const double* x) const {return randomizer_.density(x, dim_);} inline void unscaledUnitMap(const double* rnd, const unsigned bufLen, double* x) const {randomizer_.generate(rnd, bufLen, x);} GridRandomizer randomizer_; #ifdef SWIG public: inline BinnedDensityND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const ArrayND& histogram, const unsigned interpolationDegree) : AbsScalableDistributionND(location1, scale2, dim2), randomizer_(histogram, BoxND::unitBox(histogram.rank()), interpolationDegree) { if (dim1 != dim2 || dim1 != histogram.rank()) throw std::invalid_argument( "In npstat::BinnedDensityND constructor: " "incompatible argument dimensions"); } inline BinnedDensityND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const ArrayND& histogram, const unsigned interpolationDegree) : AbsScalableDistributionND(location1, scale2, dim2), randomizer_(histogram, BoxND::unitBox(histogram.rank()), interpolationDegree) { if (dim1 != dim2 || dim1 != histogram.rank()) throw std::invalid_argument( "In npstat::BinnedDensityND constructor: " "incompatible argument dimensions"); } inline BinnedDensityND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const ArrayND& histogram, const unsigned interpolationDegree) : AbsScalableDistributionND(location1, scale2, dim2), randomizer_(histogram, BoxND::unitBox(histogram.rank()), interpolationDegree) { if (dim1 != dim2 || dim1 != histogram.rank()) throw std::invalid_argument( "In npstat::BinnedDensityND constructor: " "incompatible argument dimensions"); } inline BinnedDensityND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const ArrayND& histogram, const unsigned interpolationDegree) : AbsScalableDistributionND(location1, scale2, dim2), randomizer_(histogram, BoxND::unitBox(histogram.rank()), interpolationDegree) { if (dim1 != dim2 || dim1 != histogram.rank()) throw std::invalid_argument( "In npstat::BinnedDensityND constructor: " "incompatible argument dimensions"); } inline BinnedDensityND(const double* location1, unsigned dim1, const double* scale2, unsigned dim2, const ArrayND& histogram, const unsigned interpolationDegree) : AbsScalableDistributionND(location1, scale2, dim2), randomizer_(histogram, BoxND::unitBox(histogram.rank()), interpolationDegree) { if (dim1 != dim2 || dim1 != histogram.rank()) throw std::invalid_argument( "In npstat::BinnedDensityND constructor: " "incompatible argument dimensions"); } #endif // SWIG }; /** // Linear transform of another multivariate distribution. If the other // distribution is a function of x, this distribution is obtained by // substituting S^(-1)*(x - shift) in place of x, where S is some // non-degenerate matrix. */ class LinTransformedDistroND : public AbsDistributionND { public: inline LinTransformedDistroND(const AbsDistributionND& d, const double* shift, unsigned i_dim, const Matrix& S) : AbsDistributionND(i_dim), distro_(d.clone()), shift_(shift, shift+i_dim), buf_(2U*i_dim), S_(S) { assert(shift); initialize(); } LinTransformedDistroND(const LinTransformedDistroND&); LinTransformedDistroND& operator=(const LinTransformedDistroND&); inline virtual LinTransformedDistroND* clone() const {return new LinTransformedDistroND(*this);} inline virtual ~LinTransformedDistroND() {delete distro_;} double density(const double* x, unsigned dim) const; void unitMap(const double* rnd, unsigned bufLen, double* x) const; inline bool mappedByQuantiles() const {return false;} inline double getShift(const unsigned index) const {return shift_.at(index);} inline const Matrix& getS() const {return S_;} inline const Matrix& getInverseS() const {return invS_;} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::LinTransformedDistroND";} static inline unsigned version() {return 1;} static LinTransformedDistroND* read(const gs::ClassId& id, std::istream&); protected: virtual bool isEqual(const AbsDistributionND&) const; private: void initialize(); AbsDistributionND* distro_; std::vector shift_; mutable std::vector buf_; Matrix S_; Matrix invS_; double norm_; #ifdef SWIG public: inline LinTransformedDistroND(const AbsDistributionND& d, const double* shift, unsigned i_dim, const double* covmat, unsigned nrows, unsigned ncols) : AbsDistributionND(i_dim), distro_(d.clone()), shift_(shift, shift+i_dim), buf_(2U*i_dim), S_(nrows, ncols, covmat) { assert(shift); assert(covmat); initialize(); } #endif // SWIG }; + + /** Dirichlet distribution (a.k.a. multivariate beta) */ + class DirichletDistribution : public AbsScalableDistributionND + { + public: + inline DirichletDistribution(const double* location, const double* scale, + const double* i_powers, const unsigned dim, + const double eps = 1.0e-12) + : AbsScalableDistributionND(location, scale, dim), + powers_(i_powers, i_powers+dim), + eps_(eps) + { + assert(i_powers); + this->initialize(); + } + + inline virtual DirichletDistribution* clone() const + {return new DirichletDistribution(*this);} + + inline virtual ~DirichletDistribution() {} + + inline bool mappedByQuantiles() const {return false;} + + virtual unsigned random(AbsRandomGenerator& g, + double* x, unsigned lenX) const; + + // Methods needed for I/O + inline virtual gs::ClassId classId() const + {return gs::ClassId(*this);} + virtual bool write(std::ostream& of) const; + + static inline const char* classname() + {return "npstat::DirichletDistribution";} + static inline unsigned version() {return 1;} + static DirichletDistribution* read(const gs::ClassId& id, + std::istream& in); + protected: + virtual bool isEqual(const AbsDistributionND&) const; + + private: + void initialize(); + + double unscaledDensity(const double* x) const; + void unscaledUnitMap(const double* rnd, unsigned bufLen, + double* x) const; + + std::vector powers_; + std::vector gammas_; + double eps_; + double norm_; + +#ifdef SWIG + public: + inline DirichletDistribution(const double* location1, unsigned dim1, + const double* scale2, unsigned dim2, + const double* data1, unsigned dataLen1, + const double eps = 1.0e-12) + : AbsScalableDistributionND(location1, scale2, dim2), + powers(data1, data1+dataLen1), + eps_(eps) + { + assert(powers); + if (dim1 != dim2) throw std::invalid_argument( + "In npstat::DirichletDistribution constructor: " + "sizes of locations and scales are incompatible"); + if (dim1 != dataLen1) throw std::invalid_argument( + "In npstat::DirichletDistribution constructor: " + "size of powers array is inconsistent with dimensionality"); + this->initialize(); + } +#endif // SWIG + }; } #include "npstat/stat/DistributionsND.icc" #endif // NPSTAT_DISTRIBUTIONSND_HH_ Index: trunk/npstat/stat/EllipticalDistribution.hh =================================================================== --- trunk/npstat/stat/EllipticalDistribution.hh (revision 923) +++ trunk/npstat/stat/EllipticalDistribution.hh (revision 924) @@ -1,135 +1,135 @@ #ifndef NPSTAT_ELLIPTICALDISTRIBUTION_HH_ #define NPSTAT_ELLIPTICALDISTRIBUTION_HH_ /*! // \file EllipticalDistribution.hh // -// \brief Multivariate elliptical ditributions +// \brief Multivariate elliptical distributions // // Author: I. Volobouev // // September 2022 */ #include #include "npstat/nm/Matrix.hh" #include "npstat/stat/AbsDistribution1D.hh" #include "npstat/stat/AbsDistributionND.hh" namespace npstat { class EllipticalDistribution : public AbsDistributionND { public: /** // The constructor arguments are as follows: // // location, dim The shift and the dimensionality of // the distribution. The array "location" // must have at least "dim" elements. // // transformationMatrix The square matrix for generating random // variables from this density according to // x = location + transformationMatrix*y, // where y is a spherically distributed // random variable. For multivariate normal, // transformationMatrix is the square root // of the covariance matrix. // // gDistro The "generator" distribution. The // multivariate density is going to be // proportional to gDistro.density(chi-square), // where chi-square variable is constructed // as in the multivariate normal. // Must have gDistro.quantile(0.0) = 0.0. // // hDistro Distribution of the r^2 variable. Must have // hDistro.quantile(0.0) = 0.0. */ EllipticalDistribution(const double* location, unsigned dim, const Matrix& transformationMatrix, const AbsDistribution1D& gDistro, const AbsDistribution1D& hDistro); EllipticalDistribution(const EllipticalDistribution&); EllipticalDistribution& operator=(const EllipticalDistribution&); inline virtual EllipticalDistribution* clone() const {return new EllipticalDistribution(*this);} inline virtual ~EllipticalDistribution() {cleanup();} virtual double density(const double* x, unsigned dim) const; virtual void unitMap(const double* rnd, unsigned bufLen, double* x) const; inline virtual bool mappedByQuantiles() const {return false;} virtual unsigned random(AbsRandomGenerator& g, double* x, unsigned lenX) const; /** This function returns the value of the quadratic form */ double chiSquare(const double* x, unsigned dim) const; inline const AbsDistribution1D& getGDistro() const {return *g_;} inline const AbsDistribution1D& getHDistro() const {return *h_;} inline const Matrix& getTransformationMatrix() const {return A_;} inline const std::vector& getShift() const {return mu_;} // Methods needed for I/O inline virtual gs::ClassId classId() const {return gs::ClassId(*this);} virtual bool write(std::ostream& os) const; static inline const char* classname() {return "npstat::EllipticalDistribution";} static inline unsigned version() {return 1;} static EllipticalDistribution* read(const gs::ClassId& id, std::istream& in); protected: virtual bool isEqual(const AbsDistributionND&) const; std::vector mu_; Matrix A_; Matrix InvCovmat_; AbsDistribution1D* g_; AbsDistribution1D* h_; double det_; double gNorm_; private: EllipticalDistribution(); void initialize(const AbsDistribution1D& g, const AbsDistribution1D& h); void cleanup(); mutable std::vector buf_; #ifdef SWIG public: inline EllipticalDistribution(const double* location1, unsigned dim1, const double* transform, unsigned nrows, unsigned ncols, const AbsDistribution1D& gDistro, const AbsDistribution1D& hDistro) : AbsDistributionND(dim1), mu_(location1, location1+dim1), A_(nrows, ncols, transform), g_(0), h_(0), det_(0.0), gNorm_(0.0), buf_(dim1) { assert(location1); assert(dim1); assert(transform); initialize(gDistro, hDistro); } inline AbsDistribution1D* getGDistro2() const {return g_->clone();} inline AbsDistribution1D* getHDistro2() const {return h_->clone();} inline Matrix getTransformationMatrix2() const {return A_;} inline std::vector getShift2() const {return mu_;} #endif // SWIG }; } #endif // NPSTAT_ELLIPTICALDISTRIBUTION_HH_ Index: trunk/NEWS =================================================================== --- trunk/NEWS (revision 923) +++ trunk/NEWS (revision 924) @@ -1,1005 +1,1007 @@ Version 5.11.0 - development +* Added class DirichletDistribution. + * Changed KernelSensitivityCalculator to provide tolerance parameter for the cdf check. * Added class HeSpline1D. Version 5.10.0 - July 8 2023, by I. Volobouev * Added "jacobiMatrix" method to classes AbsClassicalOrthoPoly1D and ScalableClassicalOrthoPoly1D. * Added function "opsRootsFromJacobiMatrix". Removed a non-working method with similar functionality from the ContOrthoPoly1D class. * Added function "chebyshevMonomialCoeffs". * Added classes CdfTransform1D, LegendreDistro1D, and ChebyshevDistro1D. * Added classes ChebyshevIntegral and KernelSensitivityCalculator. * Added class NeymanOSDE1D and related facilities for density estimation based on the empirical comparison density. * Added class LegendreCDTruncation. * Added functions randomTukeyDepth1 and randomTukeyDepth2. * Added class Trig2GOFTest1D. * Added method "empiricalKroneckerMatrix" to classes ContOrthoPoly1D and AbsClassicalOrthoPoly1D. * Added functions "unitMatrixDeviations", "deviationsRestrictedSize", "unitMatrixDeviationsFrobenius", and "deviationsRestrictedSizeFrobenius". * Added constructors to the "ContOrthoPoly1D" class that use the modified Chebyshev algorithm to build recursion coefficients. * Added class ContOrthoPoly1DQ (quad precision version of ContOrthoPoly1D). * Added function "directedCDTestCumulants". Version 5.9.0 - February 18 2023, by I. Volobouev * Added class JohnsonOrthoPoly1D, function "johnsonTransform", and related facilities. * Added "modifiedGramSchmidt" function. Switched various uses of the Gram-Schmidt procedure to the modified Gram-Schmidt method. * Added function "randomOrthogonalMatrix". * Added a facility for storing std::vector objects of simple types in text files. * Added class Laplace1D representing the Laplace distribution. Version 5.8.0 - October 30 2022, by I. Volobouev * Added python interfaces to some "nm" classes and functions. * Added BoundaryInclusion enum. * Added class "EquidistantBinCenters". * Added function "simpleEmpiricalCdf". * Added class "SineGOFTest1D". * Added class "KuiperTest1D". * Added some high-level driver functions for calculating ntuple statistics (new header ntupleStats.hh). * Refactored some polynomial code (new header polyPrivateUtils.hh). Version 5.7.0 - September 7 2022, by I. Volobouev * Added method "weightedPointsAverages" to the AbsClassicalOrthoPoly1D and ContOrthoPoly1D classes. * Added methods "sumOfSquaredWeights" to classes WeightedStatAccumulator and WeightedSampleAccumulator. * Added method "sigmaRange" to WeightedSampleAccumulator class. * Added header file LOrPE1DCV.hh with various cross-validation faclities for unbinned LOrPE in one dimension. * Added function "sampleDistro1DWithWeight". * Added class "GaussianDip". * Added functions "findScanMinimum1D" and "findScanMaximum1D", mainly for use in Python code. * Interfaced class DeltaMixture1D to python. DeltaMixture1D can now deal with coordinate ties. * Added classes AcceptanceFunctor1D and InverseAcceptanceFunctor1D. * Changed signature of filter and weight functors used with ntuples (added row number argument to all calls). * Added class ModulatedDistribution1D. * Added weight setting capabilitied to classes LOrPE1D and LOrPE1DCV. * Added function solveForLOrPEWeights together with helper classes LOrPEWeightsResult, LOrPE1DFixedDegreeCVRunner, LOrPE1DFixedDegreeCVScanner, and LOrPEWeightsLocalConvergence. * Added function semiMixLocalLogLikelihood. * Added class FejerQuadratureSet memoizing FejerQuadrature objects. * Added function "assignResamplingWeights". * Added class PowerTransform1D. * Added 1-d distribution classes PowerRatio1D and PowerHalfCauchy1D. * Added class EllipticalDistribution and some derived classes. Version 5.6.0 - May 31 2022, by I. Volobouev * Changed AbsKDE1DKernel, KDE1DDensityKernel, KDE1DHOSymbetaKernel, and KDE1D classes to accept a normalization factor. In certain situations, this allows for a simple boundary correction by data mirroring. Note, however, that cross-validation does not work with mirroring. * Added "resampleWithReplacement" templated function. * Added class FoldedDistribution1D. * Added class LOrPE1DSymbetaKernel, enabling unbinned LOrPE. * Fixed a bug in the support determination of TruncatedDistribution1D. * Added class LOrPE1D, with intended use similar to KDE1D. * Improved some Python wrappers. Version 5.5.1 - May 8 2022, by I. Volobouev * Changed the SWIG interface so that one can now use references to abstract classes for restoring objects from Geners archives. * Added "subrange" function to the SWIG interface of the Matrix class. Version 5.5.0 - April 15 2022, by I. Volobouev * Added method "extWeightAverages" to the ContOrthoPoly1D class. * Added method "getNull" to the AbsUnbinnedGOFTest1D class. * Added class UnbinnedGOFTest1DFactory. Version 5.4.0 - March 7 2022, by I. Volobouev * Added method "extWeightAverages" to the AbsClassicalOrthoPoly1D class. * Bug fix in the "random" method of DistributionMix1D class. Version 5.3.0 - July 29 2021, by I. Volobouev * Added some facilities for quadruple precision calculations. They mostly rely on the __float128 type (gcc extension, libquadmath) and on compiling the LAPACK/BLAS libraries with the "-freal-8-real-16" switch. * Added the "GaussLegendreQuadratureQ" class capable of performing Gauss-Legendre quadratures in quadruple precision. * Added the "GaussLegendreQuadrature2D" class capable of performing tensor-product Gauss-Legendre quadratures in two dimensions. * Added OrthoPoly1DDeg functor. * Added class ScalableClassicalOrthoPoly1D. * Added class ClassicalOrthoPoly1DFromWeight. This also necessitated refactoring of the class DensityOrthoPoly1D. * Added classes AbsIntervalQuadrature1D and RectangleQuadrature1D. * Added function "kernelSensitivityMatrix". * Added function "sumOfSquares". * Added a number of .i files. * Added classes AbsUnbinnedGOFTest1D and OrthoPolyGOFTest1D. * Added class PolynomialDistro1D. * Added a number of unbinned goodness-of-fit tests. * Added class Gauss1DQuadrature. * Added class SmoothGOFTest1D. * Added class Poly1D". Version 5.2.0 - July 20 2020, by I. Volobouev * Added a number of .i files. * Added classes "DiscreteGauss1DBuilder" and "DiscreteGaussCopulaSmoother". * Added class "MatrixFilter1DBuilder". * Added facilities for saddlepoint approximations: classes AbsCGF1D and SeriesCGF1D, function saddlepointDistribution1D, as well as class ExpTiltedDistribution1D which can be useful in saddlepoint approximation precision studies. * Added class "DensityOrthoPoly1D" for building orthonormal polynomial systems using (almost) arbitrary 1-d densities as weights. * Added "empiricalMoment" method to the AbsDistribution1D class. * Added class "HeatEq1DNeumannBoundary". * Added methods "sampleAverages" and "sampleProductAverages" to the ContOrthoPoly1D class. * Added method "expectation" to the AbsDistribution1D class. Version 5.1.0 - Nov 17 2019, by I. Volobouev * Started using python-specific features (pythonprepend, etc) in the SWIG .i files. * Added function "scannedKSDistance". * Added Python API for persistence of several classes. Version 5.0.0 - Oct 17 2019, by I. Volobouev * C++11 support is now mandatory. * Added more classes and functions to Python API. Overhauled some of the existing interfaces. Updated everything to python3. * Increased the maximum order of "classical" Edgeworth expansions to 14. * Increased the maximum order of conversions between 1-d central moments and cumulants to 20. * Added "histoQuantiles" function. * Added "correctDensityEstimateGHU" function. * Added "randomHistoFill1D" utility function. * Added ComparisonDistribution1D class. * Added classes GaussND, LinTransformedDistroND, and DistributionMixND. * Added a lot of SWIG .i files Version 4.11.0 - July 22 2019, by I. Volobouev * Added support for cumulant calculations for various Wald statistics in the Poisson process model. * Added functions convertCumulantsToCentralMoments and convertCentralMomentsToCumulants (header file cumulantConversion.hh). * Added function "cumulantUncertainties". Version 4.10.0 - July 11 2019, by I. Volobouev * Added SemiInfGaussianQuadrature class. * Added functions arrayMoment, arrayMoments, and arrayCentralMoments. * Added enum EdgeworthSeriesMethod and class EdgeworthSeries1D. * Added DeltaMixture1D class. * Added enum LikelihoodStatisticType. * Added functions "mixtureModelCumulants" and "poissonProcessCumulants" in the header likelihoodStatisticCumulants.hh. Version 4.9.0 - Dec 18 2018, by I. Volobouev * Added "integratePoly" and "jointIntegral" methods to the AbsClassicalOrthoPoly1D class. * Added utility functions "truncatedInverseSqrt" and "matrixIndexPairs". * Added a number of functions to "orthoPoly1DVProducts.hh". * Added classes ChebyshevOrthoPoly1st and ChebyshevOrthoPoly2nd inheriting from AbsClassicalOrthoPoly1D. * Added class HermiteProbOrthoPoly1D. * Added FejerQuadrature class. * Added classe IsoscelesTriangle1D and Logistic1D. * Added classes AbsKDE1DKernel and KDE1DHOSymbetaKernel. * Added static function "optimalDegreeHart" to OSDE1D class. Version 4.8.0 - Jul 9 2018, by I. Volobouev * Added ShiftedLegendreOrthoPoly1D class. * Added Lanczos method to generate recurrence coefficients for the ContOrthoPoly1D class. * Added npstat/stat/orthoPoly1DVProducts.hh file with various utilities for statistical analyis of chaos polynomials. Version 4.7.0 - Jan 13 2018, by I. Volobouev * Added "UniPareto1D" distribution (uniform with Pareto tail to the right). * More coordinate/weight cases for the GaussLegendreQuadrature class. * Added ContOrthoPoly1D class -- continuous orthogonal polynomials with discrete measure. * Added functions "linearLeastSquares" and "tdSymEigen" to the Matrix class. * Added OSDE1D class. * Added classes LocationScaleFamily1D and SinhAsinhTransform1D. * Added new functors (CdfFunctor1D, etc) as AbsDistribution1D helpers. * Small fix in StatAccumulatorArr.cc. Version 4.6.0 - Jan 23 2017, by I. Volobouev * Updated 1-d LOrPE cross validation code (classes AbsBandwidthCV, BandwidthCVLeastSquares1D, BandwidthCVPseudoLogli1D) for use with weighted samples in the case the sample itself is available at the point cross validation is run. Version 4.5.0 - Aug 01 2016, by I. Volobouev * A small fix in OrthoPolyND.icc (switched from cycling over unsigned to unsigned long in the scalar product function). * Implemented Gauss-Hermite quadrature with Gaussian density weight. * Changed the meaning of Quadratic1D and LogQuadratic1D parameters to be consistent with Legendre polynomial coefficients on [-1, 1] (new parameters are 1/2 of old). * Added class MinuitUnbinnedFitFcn1D (to interfaces). * Added function "findRootNewtonRaphson". * Added "statUncertainties" header with various functions. Version 4.4.0 - May 9 2016, by I. Volobouev * Added "timestamp" function. * Improved implementation of BinnedDensity1D::unscaledQuantile function. Certain problems caused by round-off errors are now fixed. * Added the capability to use the single closest parameter cells (thus disabling actual interpolation between parameter values, for speed) to "GridInterpolatedDistribution". Version 4.3.0 - March 19 2016, by I. Volobouev * Put additional assert statements inside OrthoPolyND.icc to prevent phony "array subscript is above array bounds" messages in g++ 4.9.2. * Improved CmdLine.hh. * Additional methods in CopulaInterpolationND and GridInterpolatedDistribution. * Added function "volumeDensityFromBinnedRadial". * Added convenience method "globalFilter" to the OrthoPoly1D class. * Initiated the transition of the Python API from Python 2 to Python 3. Version 4.2.0 - October 29 2015, by I. Volobouev * Added interpolation methods for the marginals to classes "CopulaInterpolationND" and "GridInterpolatedDistribution". * Removed assert on underflow in the "igamc" function. Now in such cases this function simply returns 0.0. Version 4.1.0 - July 27 2015, by I. Volobouev * Made a few additional methods virtual in AbsNtuple. * Declared methods "columnIndices" of AbsNtuple const (as they should be). * Added function "weightedCopulaHisto" to build copulas for samples of weighted points. * Added function "weightedVariableBandwidthSmooth1D" to use variable bandwidth smoothing with weighted histograms. * Added "AbsWeightedMarginalSmoother" interface class for smoothing samples of weighted points. Modified classes ConstantBandwidthSmoother1D, JohnsonKDESmoother, and LOrPEMarginalSmoother to support this interface. * Added class "VariableBandwidthSmoother1D" which implements both AbsMarginalSmoother and AbsWeightedMarginalSmoother interfaces. * Implemented cross-validation for weighted samples. * Implemented "buildInterpolatedCompositeDistroND" for generic construction of multivariate transfer functions. * Implemented "buildInterpolatedDistro1DNP" for generic construction of univariate transfer functions. Version 4.0.1 - June 17 2015, by I. Volobouev * Added "dump_qmc" example executable. Version 4.0.0 - June 10 2015, by I. Volobouev * Complete overhaul of 1-d filter-building code. Addition of new boundary methods is a lot easier now. The user API for choosing a LOrPE boundary method is encapsulated in the new "BoundaryHandling" class. * Implemented a number of new filter builders with different boundary treatments. * Updated the "LocalPolyFilter1D" class so that it holds the local bandwidth factors derived by the filter builders. Version 3.8.0 - June 1 2015, by I. Volobouev * Implemented class ConstSqFilter1DBuilder (declared in the header file npstat/stat/Filter1DBuilders.hh). The "BoundaryMethod" enum has been extended accordingly. Other files using this enum have been updated. * Implemented class FoldingSqFilter1DBuilder. Similar to ConstSqFilter1DBuilder but it also folds the kernel in addition to stretching it. * Added virtual destructors to a number of classes. * Added "externalMemArrayND" with various signatures to allow the use of ArrayND with memory not managed by ArrayND. * Added move constructors and move assignment operators to ArrayND and Matrix classes. Version 3.7.0 - May 10 2015, by I. Volobouev * Better numerical derivative calculation in InterpolatedDistribution1D.cc. * Added class "LocalMultiFilter1D" for fast generation of filters which correspond to each orthogonal polynomial separately. * Added a function calculating the area of n-dimensional sphere. * Added I/O capabilities to the RadialProfileND class. * Added class "LogRatioTransform1D". * Added utility function "multiFill1DHistoWithCDFWeights" (header file histoUtils.hh). * Avoiding underflow of the incomplete gamma in "convertToSphericalRandom". Version 3.6.0 - April 6 2015, by I. Volobouev * Fixed Marsaglia's code calculating the Anderson-Darling statistics (it was breaking down for large values of z). * Added high-level driver function "simpleVariableBandwidthSmooth1D" to automatically build the pilot estimate for "variableBandwidthSmooth1D". * Swithched to log of sigma as Minuit parameter in "minuitFitJohnsonCurves" instead of sigma (linear sigma would sometimes break the fit when Minuit would come up with 0 or negative trial value for it). * Extended "MinuitDensityFitFcn1D" class so that it could be used to fit non-uniformly binned histograms. * Adapted "minuitFitJohnsonCurves" function so that it could be used with histograms templated upon DualHistoAxis. * Added functions "fillArrayCentersPreservingAreas" and "canFillArrayCentersPreservingAreas". * Implemented an interface to monotonous coordinate transformations with the intent of using them in constructing densities. Implemented a number of transforms. * Implemented class "TransformedDistribution1D". * Added class "VerticallyInterpolatedDistro1D1P". * Added utility function "fill1DHistoWithCDFWeights". Version 3.5.0 - February 21 2015, by I. Volobouev * Added "symPDEigenInv" method to the Matrix class. * Added "variableCount" method to unfolding bandwidth scanner classes. * Increased the tolerance parameters in JohnsonSu::initialize and in JohnsonFit constructor. * Bug fix in function "fillHistoFromText". Version 3.4.4 - January 13 2015, by I. Volobouev * Corrected handling of some "assert" statements so that the code compiles correctly with the -DNDEBUG option. Version 3.4.3 - January 5 2015, by I. Volobouev * Implemented class MirroredGauss1D. * Added method "getOracleData" to class UnfoldingBandwidthScanner1D. * Bug fix in FoldingFilter1DBuilder::makeOrthoPoly. Version 3.4.2 - December 15 2014, by I. Volobouev * Implemented InterpolatedDistro1D1P class. Version 3.4.1 - November 07 2014, by I. Volobouev * Implemented "divideTransforms" function for deconvolutions. * Implemented the Moyal distribution. * Added "fillHistoFromText" utility function. * Added "apply_lorpe_1d" example. Version 3.4.0 - October 01 2014, by I. Volobouev * Implemented Hadamard product and Hadamard ratio for matrices. * Bug fix in the "solve_linear_system" lapack interface function. Version 3.3.1 - August 08 2014, by I. Volobouev * Terminate iterative refinement of the unfolding error propagation matrix early in case the solution does not seem to improve. Version 3.3.0 - August 05 2014, by I. Volobouev * Added correction factors to the determination of the number of fitted parameters in various unfolding procedures. Version 3.2.0 - July 25 2014, by I. Volobouev * Added "gaussianResponseMatrix" function for non-uniform binning. * Added Pareto distribution. * Implemented EMS unfolding with sparse matrices. * Added methods "getObservedShape" and "getUnfoldedShape" to the AbsUnfoldND class. * Bug fix in the assignment operator of ProductDistributionND class. Made class ProductDistributionND persistent. * Bug fix in the error propagation for unfolding, in the code which takes into account the extra normalization constant. * Added "productResponseMatrix" function to assist in making sparse response matrices. * Bug fix in the factory constructor of the Cauchy1D class. * Completed implementation of the "RatioOfNormals" class. Version 3.1.0 - June 29 2014, by I. Volobouev * Improved (again) random number generator for the 1-d Gaussian distribution. Something about expectation values of normalized Hermite polynomials over random numbers made by this generator is still not fully understood. The standard deviation of these expectations decreases with the polynomial order (while it should stay constant). It is possible that the numbers of points used are simply insufficient to sample the tails correctly. * Implemented smoothed expectation-maximization (a.k.a. D'Agostini) unfolding for 1-d distributions in classes SmoothedEMUnfold1D and MultiscaleEMUnfold1D. In certain usage scenarios, MultiscaleEMUnfold1D can be more efficient than SmoothedEMUnfold1D. * Implemented smoothed expectation-maximization unfolding for multivariate distributions in a class SmoothedEMUnfoldND. * Added class "UnfoldingBandwidthScanner1D" to study 1-d unfolding behavior as a function of filter bandwidth. * Added class "UnfoldingBandwidthScannerND" to study multivariate unfolding behavior as a function of provided bandwidth values. * Added DummyLocalPolyFilter1D class useful when a filter is needed which does not smooth anything. * Added function "poissonLogLikelihood" (header file npstat/stat/arrayStats.hh). * Added function "pooledDiscreteTabulated1D" (header file npstat/stat/DiscreteDistributions1D.hh). * Implemented class UGaussConvolution1D (convolution of uniform distribution with a Gaussian). * Implemented gamma distribution (class Gamma1D). * Defined interface for comparing binned distributions, AbsBinnedComparison1D. * Implemented several comparison classes for comparing binned distributions: PearsonsChiSquared, BinnedKSTest1D, BinnedADTest1D. Class BinnedKSTest1D pulled in dependence on the "kstest" package. * Made classes LocalPolyFilter1D, LocalPolyFilterND, and SequentialPolyFilterND persistent. * Added code generating dense filter matrices to LocalPolyFilterND and SequentialPolyFilterND (as needed for unfolding). * Made class MemoizingSymbetaFilterProvider persistent. * Implemented function goldenSectionSearchOnAGrid (header file npstat/nm/goldenSectionSearch.hh). * Implemented function parabolicExtremum (header npstat/nm/MathUtils.hh). * Added class DistributionMix1D (header npstat/stat/DistributionMix1D.hh). * Added interface to solving A*X = B, with matrices X and B, to the Matrix class (method "solveLinearSystems"). * Added "reshape" methods to the ArrayND class. * Added "gaussianResponseMatrix" function. * Added a section on unfolding to the documentation. * Added "ems_unfold_1d" example program. Version 3.0.0 - March 14 2014, by I. Volobouev * Added interface to the LAPACK SVD routines. * Added function "lorpeMise1D" to calculate MISE for arbitrary distributions. * Added FoldingFilter1DBuilder class. * Changed interfaces for several high-level functions to use FoldingFilter1DBuilder. The major version number got bumped up. * Split DensityScan1D.hh away from AbsDistribution1D.hh. Version 2.7.0 - March 10 2014, by I. Volobouev * Added code to optimize operations with diagonal matrices. * Added discretizedDistance.hh file for simple L1 and L2 distance calculations with numeric arrays. * Added base class for future unfolding code. * The "reset" method of the Matrix class was renamed into "uninitialize" in order to be consistent with ArrayND. * Added function "multinomialCovariance1D". * Added "polyTimesWeight" method to the OrthoPoly1D class. * Added methods "TtimesThis" and "timesT" to the Matrix class. These methods are more efficient than transpose followed by multiplication. Version 2.6.0 - January 30 2014, by I. Volobouev * Added function "lorpeBackgroundCVDensity1D" which linearizes calculation of the cross validation likelihood in semiparametric fits. Argument "linearizeCrossValidation" was added to MinuitSemiparametricFitFcn1D constructor, "lorpeBackground1D" function, etc. * Added the ability to build filters with center point removed to classes WeightTableFilter1DBuilder and StretchingFilter1DBuilder. The function "symbetaLOrPEFilter1D" now has an appropriate switch. * Added "removeRowAndColumn" method to the Matrix class. * Added CircularBuffer class. * Added various plugin bandwidth functions which work with non-integer polynomial degrees. * Switched to the Legendre polynomial basis for calculating all 1-d orthogonal polynomials (instead of monomial basis). * Added MemoizingSymbetaFilterProvider class. * Added "operator+=" method to the MultivariateSumAccumulator class. * Simplified implementation of the PolyFilterCollection1D class. File PolyFilterCollection1D.icc is removed. * Added "RatioOfNormals" 1-d distribution function. Only the density is currently implemented but not the CDF. * Added ExpMapper1d class. Version 2.5.0 - October 15 2013, by I. Volobouev * Added "getFilterMatrix" method to the LocalPolyFilter1D class. * Added "genEigen" method to the Matrix class (for determination of eigenvalues and eigenvectors of general real matrices). * Refactored the LAPACK interface so that interface functions to floats are automatically generated from interface functions to doubles. See the comment at the end of the "lapack_interface.icc" file for the shell commands to do this. Version 2.4.0 - October 6 2013, by I. Volobouev * Added functions "lorpeBackground1D", "lorpeBgCVPseudoLogli1D", and "lorpeBgLogli1D". * Added minuit interface classes "MinuitLOrPEBgCVFcn1D" and "MinuitSemiparametricFitFcn1D". * Added "ScalableDensityConstructor1D" class for use with Minuit interface functions. * Added classes AbsSymbetaFilterProvider and SymbetaPolyCollection1D. Version 2.3.0 - October 1 2013, by I. Volobouev * Allowed point dimensionality to be larger than the histogram dimensionality in the "empiricalCopulaHisto" function. * Added "keepAllFilters" method to AbsFilter1DBuilder and all derived classes. * Implemented exclusion regions for WeightTableFilter1DBuilder and StretchingFilter1DBuilder. * "symbetaLOrPEFilter1D" function (in the header LocalPolyFilter1D.hh) is updated to take the exclusion mask argument. * Added "continuousDegreeTaper" function which can do something meaningful with the continuous LOrPE degree parameter. Version 2.2.0 - June 30 2013, by I. Volobouev * Added classes DiscreteBernsteinPoly1D and BernsteinFilter1DBuilder. * Added classes DiscreteBeta1D and BetaFilter1DBuilder. * Added BifurcatedGauss1D class to model Gaussian-like distributions with different sigmas on the left and right sides. * Added virtual destructors to the classes declared in the Filter1DBuilders.hh header. * Added a method to the Matrix template to calculate Frobenius norm. * Added methods to the Matrix template to calculate row and column sums. * Added "directSum" method to the Matrix template. * Added constructor from a subrange of another matrix to the Matrix template. * Added code to the LocalPolyFilter1D class that generates a doubly stochastic filter out of an arbitrary filter. * Added "npstat/nm/definiteIntegrals.hh" header and corresponding .cc file for various infrequently used integrals. * Added "betaKernelsBandwidth" function. Version 2.1.0 - June 20 2013, by I. Volobouev * Fixed couple problems which showed up in the robust regression code due to compiler update. * Fixed CensoredQuantileRegressionOnKDTree::process method (needed this-> dereference for some member). Version 2.0.0 - June 15 2013, by I. Volobouev * Updated to use "Geners" version 1.3.0. A few interfaces were changed (API for the string archives was removed because Geners own string archive facilities are now adequate) so the major version number was bumped up. Version 1.6.0 - June 12 2013, by I. Volobouev * Updated some documentation. * Updated fitCompositeJohnson.icc to use simplified histogram constructors. * Bug fix in the "minuitLocalQuantileRegression1D" function. * Changed the "quantileBinFromCdf" function to use unsigned long type for array indices. * Added "weightedLocalQuantileRegression1D" function (namespace npsi) for local regression with single predictor on weighted points. Version 1.5.0 - May 23 2013, by I. Volobouev * Added interfaces to LAPACK routines DSYEVD, DSYEVR, and corresponding single precision versions. * Added the "symPSDefEffectiveRank" method to the Matrix class for calculating effective ranks of symmetric positive semidefinite matrices. * Added converting constructor and assignment operator to the Matrix class. * Run the Gram-Schmidt procedure twice when orthogonal polynomials are derived in order to improve orthogonality. Version 1.4.0 - May 20 2013, by I. Volobouev * Added the "append" method to the AbsNtuple class. Version 1.3.0 - May 10 2013, by I. Volobouev * Added the code for Hermite polynomial series. * Improved random number generator for the 1-d Gaussian distribution. * Added a framework for discrete 1-d distributions as well as two concrete distribution classes (Poisson1D, DiscreteTabulated1D). * Added functions "readCompressedStringArchiveExt" and "writeCompressedStringArchiveExt" which can read/write either compressed or uncompressed string archives, distinguished by file extension. Version 1.2.1 - March 22 2013, by I. Volobouev * Improved CmdLine.hh in the "examples/C++" directory. * Added class QuantileTable1D. * Added classes LeftCensoredDistribution and RightCensoredDistribution. Version 1.2.0 - March 13 2013, by I. Volobouev * Added convenience "fill" methods to work with the ntuples which have small number of columns (up to 10). * Fixed a bug in AbsRandomGenerator for univariate generators making multivariate points. * Added LOrPEMarginalSmoother class. Version 1.1.1 - March 11 2013, by I. Volobouev * Added utility function "symbetaLOrPEFilter1D" which creates 1-d LOrPE filters using kernels from the symmetric beta family (and the Gaussian). * Added high level driver function "lorpeSmooth1D". * Allowed variables with zero variances for calculation of correlation coefficients in "MultivariateSumsqAccumulator". Such variables will have zero correlation coefficients with all other variables. * Added rebinning constructor to the HistoND class. Version 1.1.0 - March 8 2013, by I. Volobouev * Changed NUHistoAxis::fltBinNumber method to produce correct results with interpolation degree 0. It is not yet obvious which method would work best for higher interpolation degrees. * Added functions for converting between StringArchive and python bytearray. They have been placed in a new header: wrap/stringArchiveToBinary.hh. * Added methods "exportMemSlice" and "importMemSlice" to ArrayND. These methods allow for filling array slices from unstructured memory buffers and for exporting array slices to such memory buffers. * Added "simpleColumnNames" function (header file AbsNtuple.hh) to generate trivial column names when ntuple column names are not important. * Added functions "neymanPearsonWindow1D" and "signalToBgMaximum1D". They are declared in a new header npstat/neymanPearsonWindow1D.hh. Version 1.0.5 - December 17 2012, by I. Volobouev * Flush string archives before writing them out in stringArchiveIO.cc. * Added class TruncatedDistribution1D. Version 1.0.4 - November 14 2012, by I. Volobouev * Added utilities for reading/writing Geners string archives to files. * Added BinSummary class. * Doxygen documentation improved. Every header file in stat, nm, rng, and interfaces now has a brief description. Version 1.0.3 - September 27 2012, by I. Volobouev * Fixed some bugs related to moving StorableMultivariateFunctor code from "nm" to "stat". Version 1.0.2 - August 6 2012, by I. Volobouev * Added converting copy constructor to the "LinInterpolatedTableND" class. * Added StorableMultivariateFunctor class (together with the corresponding reader class). * Added StorableInterpolationFunctor class which inherits from the above and can be used with interpolation tables. * Added StorableHistoNDFunctor class which inherits from StorableMultivariateFunctor and can be used to interpolate histogram bins. * Added "transpose" method to HistoND class. * Created DualAxis class. * Created DualHistoAxis class. * Added conversion functions between histogram and grid axes. * Added "mergeTwoHistos" function for smooth merging of two histograms. * Added "ProductSymmetricBetaNDCdf" functor to be used as weight in merging histograms. * Added CoordinateSelector class. Version 1.0.1 - June 29 2012, by I. Volobouev * Implemented class LinInterpolatedTableND with related supporting code. Index: trunk/config.log =================================================================== --- trunk/config.log (revision 923) +++ trunk/config.log (revision 924) @@ -1,1181 +1,1181 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by npstat configure 5.11.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ ./configure --disable-static --with-pic ## --------- ## ## Platform. ## ## --------- ## hostname = dawn uname -m = x86_64 -uname -r = 5.15.0-86-generic +uname -r = 5.15.0-92-generic uname -s = Linux -uname -v = #96-Ubuntu SMP Wed Sep 20 08:23:49 UTC 2023 +uname -v = #102-Ubuntu SMP Wed Jan 10 09:33:48 UTC 2024 /usr/bin/uname -p = x86_64 /bin/uname -X = unknown /bin/arch = x86_64 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /home/igv/bin/ PATH: /home/igv/local/bin/ PATH: /usr/local/anaconda3/bin/ PATH: /usr/local/bin/ PATH: /usr/local/root/bin/ PATH: /usr/local/bin/ PATH: /bin/ PATH: /usr/bin/ PATH: /sbin/ PATH: /usr/sbin/ PATH: ./ ## ----------- ## ## Core tests. ## ## ----------- ## configure:2816: looking for aux files: compile ltmain.sh config.guess config.sub missing install-sh configure:2829: trying ./ configure:2858: ./compile found configure:2858: ./ltmain.sh found configure:2858: ./config.guess found configure:2858: ./config.sub found configure:2858: ./missing found configure:2840: ./install-sh found configure:2988: checking for a BSD-compatible install configure:3061: result: /bin/install -c configure:3072: checking whether build environment is sane configure:3127: result: yes configure:3286: checking for a race-free mkdir -p configure:3330: result: /bin/mkdir -p configure:3337: checking for gawk configure:3372: result: no configure:3337: checking for mawk configure:3358: found /bin/mawk configure:3369: result: mawk configure:3380: checking whether make sets $(MAKE) configure:3403: result: yes configure:3433: checking whether make supports nested variables configure:3451: result: yes configure:3650: checking for pkg-config configure:3673: found /bin/pkg-config configure:3685: result: /bin/pkg-config configure:3710: checking pkg-config is at least version 0.9.0 configure:3713: result: yes configure:3723: checking for fftw3 >= 3.1.2 geners >= 1.3.0 kstest >= 2.0.0 configure:3730: $PKG_CONFIG --exists --print-errors "fftw3 >= 3.1.2 geners >= 1.3.0 kstest >= 2.0.0" configure:3733: $? = 0 configure:3747: $PKG_CONFIG --exists --print-errors "fftw3 >= 3.1.2 geners >= 1.3.0 kstest >= 2.0.0" configure:3750: $? = 0 configure:3808: result: yes configure:3882: checking for g++ configure:3903: found /bin/g++ configure:3914: result: g++ configure:3941: checking for C++ compiler version configure:3950: g++ --version >&5 g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:3961: $? = 0 configure:3950: g++ -v >&5 Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) ... rest of stderr output deleted ... configure:3961: $? = 0 configure:3950: g++ -V >&5 g++: error: unrecognized command-line option '-V' g++: fatal error: no input files compilation terminated. configure:3961: $? = 1 configure:3950: g++ -qversion >&5 g++: error: unrecognized command-line option '-qversion'; did you mean '--version'? g++: fatal error: no input files compilation terminated. configure:3961: $? = 1 configure:3981: checking whether the C++ compiler works configure:4003: g++ -std=c++11 -O3 -Wall -W -Werror conftest.cpp >&5 configure:4007: $? = 0 configure:4057: result: yes configure:4060: checking for C++ compiler default output file name configure:4062: result: a.out configure:4068: checking for suffix of executables configure:4075: g++ -o conftest -std=c++11 -O3 -Wall -W -Werror conftest.cpp >&5 configure:4079: $? = 0 configure:4102: result: configure:4124: checking whether we are cross compiling configure:4132: g++ -o conftest -std=c++11 -O3 -Wall -W -Werror conftest.cpp >&5 configure:4136: $? = 0 configure:4143: ./conftest configure:4147: $? = 0 configure:4162: result: no configure:4167: checking for suffix of object files configure:4190: g++ -c -std=c++11 -O3 -Wall -W -Werror conftest.cpp >&5 configure:4194: $? = 0 configure:4216: result: o configure:4220: checking whether the compiler supports GNU C++ configure:4240: g++ -c -std=c++11 -O3 -Wall -W -Werror conftest.cpp >&5 configure:4240: $? = 0 configure:4250: result: yes configure:4261: checking whether g++ accepts -g configure:4282: g++ -c -g conftest.cpp >&5 configure:4282: $? = 0 configure:4326: result: yes configure:4346: checking for g++ option to enable C++11 features configure:4361: g++ -c -std=c++11 -O3 -Wall -W -Werror conftest.cpp >&5 conftest.cpp: In function 'int main(int, char**)': conftest.cpp:134:8: error: unused variable 'a1' [-Werror=unused-variable] 134 | auto a1 = 6538; | ^~ conftest.cpp:141:16: error: unused variable 'a4' [-Werror=unused-variable] 141 | decltype(a2) a4 = 34895.034; | ^~ conftest.cpp:145:9: error: unused variable 'sa' [-Werror=unused-variable] 145 | short sa[cxx11test::get_val()] = { 0 }; | ^~ conftest.cpp:149:23: error: unused variable 'il' [-Werror=unused-variable] 149 | cxx11test::testinit il = { 4323, 435234.23544 }; | ^~ conftest.cpp:170:8: error: unused variable 'a' [-Werror=unused-variable] 170 | auto a = sum(1); | ^ conftest.cpp:171:8: error: unused variable 'b' [-Werror=unused-variable] 171 | auto b = sum(1, 2); | ^ conftest.cpp:172:8: error: unused variable 'c' [-Werror=unused-variable] 172 | auto c = sum(1.0, 2.0, 3.0); | ^ conftest.cpp:177:25: error: empty parentheses were disambiguated as a function declaration [-Werror=vexing-parse] 177 | cxx11test::delegate d2(); | ^~ conftest.cpp:177:25: note: remove parentheses to default-initialize a variable 177 | cxx11test::delegate d2(); | ^~ | -- conftest.cpp:177:25: note: or replace parentheses with braces to value-initialize a variable conftest.cpp:186:9: error: unused variable 'c' [-Werror=unused-variable] 186 | char *c = nullptr; | ^ conftest.cpp:194:15: error: unused variable 'utf8' [-Werror=unused-variable] 194 | char const *utf8 = u8"UTF-8 string \u2500"; | ^~~~ conftest.cpp:195:19: error: unused variable 'utf16' [-Werror=unused-variable] 195 | char16_t const *utf16 = u"UTF-8 string \u2500"; | ^~~~~ conftest.cpp:196:19: error: unused variable 'utf32' [-Werror=unused-variable] 196 | char32_t const *utf32 = U"UTF-32 string \u2500"; | ^~~~~ cc1plus: all warnings being treated as errors configure:4361: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "npstat" | #define PACKAGE_TARNAME "npstat" | #define PACKAGE_VERSION "5.11.0" | #define PACKAGE_STRING "npstat 5.11.0" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "npstat" | #define VERSION "5.11.0" | /* end confdefs.h. */ | | // Does the compiler advertise C++98 conformance? | #if !defined __cplusplus || __cplusplus < 199711L | # error "Compiler does not advertise C++98 conformance" | #endif | | // These inclusions are to reject old compilers that | // lack the unsuffixed header files. | #include | #include | | // and are *not* freestanding headers in C++98. | extern void assert (int); | namespace std { | extern int strcmp (const char *, const char *); | } | | // Namespaces, exceptions, and templates were all added after "C++ 2.0". | using std::exception; | using std::strcmp; | | namespace { | | void test_exception_syntax() | { | try { | throw "test"; | } catch (const char *s) { | // Extra parentheses suppress a warning when building autoconf itself, | // due to lint rules shared with more typical C programs. | assert (!(strcmp) (s, "test")); | } | } | | template struct test_template | { | T const val; | explicit test_template(T t) : val(t) {} | template T add(U u) { return static_cast(u) + val; } | }; | | } // anonymous namespace | | | // Does the compiler advertise C++ 2011 conformance? | #if !defined __cplusplus || __cplusplus < 201103L | # error "Compiler does not advertise C++11 conformance" | #endif | | namespace cxx11test | { | constexpr int get_val() { return 20; } | | struct testinit | { | int i; | double d; | }; | | class delegate | { | public: | delegate(int n) : n(n) {} | delegate(): delegate(2354) {} | | virtual int getval() { return this->n; }; | protected: | int n; | }; | | class overridden : public delegate | { | public: | overridden(int n): delegate(n) {} | virtual int getval() override final { return this->n * 2; } | }; | | class nocopy | { | public: | nocopy(int i): i(i) {} | nocopy() = default; | nocopy(const nocopy&) = delete; | nocopy & operator=(const nocopy&) = delete; | private: | int i; | }; | | // for testing lambda expressions | template Ret eval(Fn f, Ret v) | { | return f(v); | } | | // for testing variadic templates and trailing return types | template auto sum(V first) -> V | { | return first; | } | template auto sum(V first, Args... rest) -> V | { | return first + sum(rest...); | } | } | | | int | main (int argc, char **argv) | { | int ok = 0; | | assert (argc); | assert (! argv[0]); | { | test_exception_syntax (); | test_template tt (2.0); | assert (tt.add (4) == 6.0); | assert (true && !false); | } | | | { | // Test auto and decltype | auto a1 = 6538; | auto a2 = 48573953.4; | auto a3 = "String literal"; | | int total = 0; | for (auto i = a3; *i; ++i) { total += *i; } | | decltype(a2) a4 = 34895.034; | } | { | // Test constexpr | short sa[cxx11test::get_val()] = { 0 }; | } | { | // Test initializer lists | cxx11test::testinit il = { 4323, 435234.23544 }; | } | { | // Test range-based for | int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, | 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; | for (auto &x : array) { x += 23; } | } | { | // Test lambda expressions | using cxx11test::eval; | assert (eval ([](int x) { return x*2; }, 21) == 42); | double d = 2.0; | assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); | assert (d == 5.0); | assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); | assert (d == 5.0); | } | { | // Test use of variadic templates | using cxx11test::sum; | auto a = sum(1); | auto b = sum(1, 2); | auto c = sum(1.0, 2.0, 3.0); | } | { | // Test constructor delegation | cxx11test::delegate d1; | cxx11test::delegate d2(); | cxx11test::delegate d3(45); | } | { | // Test override and final | cxx11test::overridden o1(55464); | } | { | // Test nullptr | char *c = nullptr; | } | { | // Test template brackets | test_template<::test_template> v(test_template(12)); | } | { | // Unicode literals | char const *utf8 = u8"UTF-8 string \u2500"; | char16_t const *utf16 = u"UTF-8 string \u2500"; | char32_t const *utf32 = U"UTF-32 string \u2500"; | } | | return ok; | } | configure:4379: result: none needed configure:4446: checking whether make supports the include directive configure:4461: make -f confmf.GNU && cat confinc.out this is the am__doit target configure:4464: $? = 0 configure:4483: result: yes (GNU style) configure:4509: checking dependency style of g++ configure:4621: result: gcc3 configure:4695: checking for g77 configure:4716: found /home/igv/bin/g77 configure:4727: result: g77 configure:4753: checking for Fortran 77 compiler version configure:4762: g77 --version >&5 GNU Fortran (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:4773: $? = 0 configure:4762: g77 -v >&5 Using built-in specs. COLLECT_GCC=g77 COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) ... rest of stderr output deleted ... configure:4773: $? = 0 configure:4762: g77 -V >&5 g77: error: unrecognized command-line option '-V' g77: fatal error: no input files compilation terminated. configure:4773: $? = 1 configure:4762: g77 -qversion >&5 g77: error: unrecognized command-line option '-qversion'; did you mean '--version'? g77: fatal error: no input files compilation terminated. configure:4773: $? = 1 configure:4782: checking whether the compiler supports GNU Fortran 77 configure:4796: g77 -c conftest.F >&5 configure:4796: $? = 0 configure:4806: result: yes configure:4814: checking whether g77 accepts -g configure:4826: g77 -c -g conftest.f >&5 configure:4826: $? = 0 configure:4835: result: yes configure:4870: checking build system type configure:4885: result: x86_64-pc-linux-gnu configure:4905: checking host system type configure:4919: result: x86_64-pc-linux-gnu configure:4944: checking how to get verbose linking output from g77 configure:4955: g77 -c -g -O2 conftest.f >&5 configure:4955: $? = 0 configure:4974: g77 -o conftest -g -O2 -v conftest.f Using built-in specs. Target: x86_64-linux-gnu Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) - /usr/lib/gcc/x86_64-linux-gnu/11/f951 conftest.f -ffixed-form -quiet -dumpbase conftest.f -dumpbase-ext .f -mtune=generic -march=x86-64 -g -O2 -version -fintrinsic-modules-path /usr/lib/gcc/x86_64-linux-gnu/11/finclude -fpre-include=/usr/include/finclude/math-vector-fortran.h -o /tmp/ccnkyQpB.s + /usr/lib/gcc/x86_64-linux-gnu/11/f951 conftest.f -ffixed-form -quiet -dumpbase conftest.f -dumpbase-ext .f -mtune=generic -march=x86-64 -g -O2 -version -fintrinsic-modules-path /usr/lib/gcc/x86_64-linux-gnu/11/finclude -fpre-include=/usr/include/finclude/math-vector-fortran.h -o /tmp/ccAFUNQV.s GNU Fortran (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU Fortran2008 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 - as -v --gdwarf-5 --64 -o /tmp/ccRvIzU0.o /tmp/ccnkyQpB.s + as -v --gdwarf-5 --64 -o /tmp/ccOhRwY4.o /tmp/ccAFUNQV.s GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 Reading specs from /usr/lib/gcc/x86_64-linux-gnu/11/libgfortran.spec rename spec lib to liborig - /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQi0PK5.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lquadmath -plugin-opt=-pass-through=-lm -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o conftest /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. /tmp/ccRvIzU0.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccknIwrQ.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lquadmath -plugin-opt=-pass-through=-lm -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o conftest /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. /tmp/ccOhRwY4.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o configure:5057: result: -v configure:5059: checking for Fortran 77 libraries of g77 configure:5083: g77 -o conftest -g -O2 -v conftest.f Using built-in specs. Target: x86_64-linux-gnu Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) - /usr/lib/gcc/x86_64-linux-gnu/11/f951 conftest.f -ffixed-form -quiet -dumpbase conftest.f -dumpbase-ext .f -mtune=generic -march=x86-64 -g -O2 -version -fintrinsic-modules-path /usr/lib/gcc/x86_64-linux-gnu/11/finclude -fpre-include=/usr/include/finclude/math-vector-fortran.h -o /tmp/cciTQM7G.s + /usr/lib/gcc/x86_64-linux-gnu/11/f951 conftest.f -ffixed-form -quiet -dumpbase conftest.f -dumpbase-ext .f -mtune=generic -march=x86-64 -g -O2 -version -fintrinsic-modules-path /usr/lib/gcc/x86_64-linux-gnu/11/finclude -fpre-include=/usr/include/finclude/math-vector-fortran.h -o /tmp/cc8FaXgt.s GNU Fortran (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU Fortran2008 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 - as -v --gdwarf-5 --64 -o /tmp/ccmXsntn.o /tmp/cciTQM7G.s + as -v --gdwarf-5 --64 -o /tmp/ccR97A5S.o /tmp/cc8FaXgt.s GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 Reading specs from /usr/lib/gcc/x86_64-linux-gnu/11/libgfortran.spec rename spec lib to liborig - /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccnC2scL.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lquadmath -plugin-opt=-pass-through=-lm -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o conftest /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. /tmp/ccmXsntn.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccV3MMiv.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lquadmath -plugin-opt=-pass-through=-lm -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o conftest /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. /tmp/ccR97A5S.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o configure:5299: result: -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. -lgfortran -lm -lquadmath configure:5362: checking how to print strings configure:5389: result: printf configure:5472: checking for gcc configure:5493: found /bin/gcc configure:5504: result: gcc configure:5857: checking for C compiler version configure:5866: gcc --version >&5 gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:5877: $? = 0 configure:5866: gcc -v >&5 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) ... rest of stderr output deleted ... configure:5877: $? = 0 configure:5866: gcc -V >&5 gcc: error: unrecognized command-line option '-V' gcc: fatal error: no input files compilation terminated. configure:5877: $? = 1 configure:5866: gcc -qversion >&5 gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'? gcc: fatal error: no input files compilation terminated. configure:5877: $? = 1 configure:5866: gcc -version >&5 gcc: error: unrecognized command-line option '-version' gcc: fatal error: no input files compilation terminated. configure:5877: $? = 1 configure:5881: checking whether the compiler supports GNU C configure:5901: gcc -c conftest.c >&5 configure:5901: $? = 0 configure:5911: result: yes configure:5922: checking whether gcc accepts -g configure:5943: gcc -c -g conftest.c >&5 configure:5943: $? = 0 configure:5987: result: yes configure:6007: checking for gcc option to enable C11 features configure:6022: gcc -c -g -O2 conftest.c >&5 configure:6022: $? = 0 configure:6040: result: none needed configure:6156: checking whether gcc understands -c and -o together configure:6179: gcc -c conftest.c -o conftest2.o configure:6182: $? = 0 configure:6179: gcc -c conftest.c -o conftest2.o configure:6182: $? = 0 configure:6194: result: yes configure:6213: checking dependency style of gcc configure:6325: result: gcc3 configure:6340: checking for a sed that does not truncate output configure:6410: result: /bin/sed configure:6428: checking for grep that handles long lines and -e configure:6492: result: /bin/grep configure:6497: checking for egrep configure:6565: result: /bin/grep -E configure:6570: checking for fgrep configure:6638: result: /bin/grep -F configure:6674: checking for ld used by gcc configure:6742: result: /bin/ld configure:6749: checking if the linker (/bin/ld) is GNU ld configure:6765: result: yes configure:6777: checking for BSD- or MS-compatible name lister (nm) configure:6832: result: /bin/nm -B configure:6972: checking the name lister (/bin/nm -B) interface configure:6980: gcc -c -g -O2 conftest.c >&5 configure:6983: /bin/nm -B "conftest.o" configure:6986: output 0000000000000000 B some_variable configure:6993: result: BSD nm configure:6996: checking whether ln -s works configure:7000: result: yes configure:7008: checking the maximum length of command line arguments configure:7140: result: 1572864 configure:7188: checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format configure:7229: result: func_convert_file_noop configure:7236: checking how to convert x86_64-pc-linux-gnu file names to toolchain format configure:7257: result: func_convert_file_noop configure:7264: checking for /bin/ld option to reload object files configure:7272: result: -r configure:7351: checking for objdump configure:7372: found /bin/objdump configure:7383: result: objdump configure:7415: checking how to recognize dependent libraries configure:7616: result: pass_all configure:7706: checking for dlltool configure:7741: result: no configure:7771: checking how to associate runtime and link libraries configure:7799: result: printf %s\n configure:7865: checking for ar configure:7886: found /bin/ar configure:7897: result: ar configure:7934: checking for archiver @FILE support configure:7952: gcc -c -g -O2 conftest.c >&5 configure:7952: $? = 0 configure:7956: ar cr libconftest.a @conftest.lst >&5 configure:7959: $? = 0 configure:7964: ar cr libconftest.a @conftest.lst >&5 ar: conftest.o: No such file or directory configure:7967: $? = 1 configure:7979: result: @ configure:8042: checking for strip configure:8063: found /bin/strip configure:8074: result: strip configure:8151: checking for ranlib configure:8172: found /bin/ranlib configure:8183: result: ranlib configure:8285: checking command to parse /bin/nm -B output from gcc object configure:8439: gcc -c -g -O2 conftest.c >&5 configure:8442: $? = 0 configure:8446: /bin/nm -B conftest.o | sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' > conftest.nm configure:8512: gcc -o conftest -g -O2 conftest.c conftstm.o >&5 configure:8515: $? = 0 configure:8553: result: ok configure:8600: checking for sysroot configure:8631: result: no configure:8638: checking for a working dd configure:8682: result: /bin/dd configure:8686: checking how to truncate binary pipes configure:8702: result: /bin/dd bs=4096 count=1 configure:8839: gcc -c -g -O2 conftest.c >&5 configure:8842: $? = 0 configure:9039: checking for mt configure:9060: found /bin/mt configure:9071: result: mt configure:9094: checking if mt is a manifest tool configure:9101: mt '-?' configure:9109: result: no configure:9839: checking for stdio.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for stdlib.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for string.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for inttypes.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for stdint.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for strings.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for sys/stat.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for sys/types.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9839: checking for unistd.h configure:9839: gcc -c -g -O2 conftest.c >&5 configure:9839: $? = 0 configure:9839: result: yes configure:9864: checking for dlfcn.h configure:9864: gcc -c -g -O2 conftest.c >&5 configure:9864: $? = 0 configure:9864: result: yes configure:10134: checking for objdir configure:10150: result: .libs configure:10414: checking if gcc supports -fno-rtti -fno-exceptions configure:10433: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 cc1: warning: command-line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C configure:10437: $? = 0 configure:10450: result: no configure:10814: checking for gcc option to produce PIC configure:10822: result: -fPIC -DPIC configure:10830: checking if gcc PIC flag -fPIC -DPIC works configure:10849: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 configure:10853: $? = 0 configure:10866: result: yes configure:10895: checking if gcc static flag -static works configure:10924: result: yes configure:10939: checking if gcc supports -c -o file.o configure:10961: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 configure:10965: $? = 0 configure:10987: result: yes configure:10995: checking if gcc supports -c -o file.o configure:11043: result: yes configure:11076: checking whether the gcc linker (/bin/ld -m elf_x86_64) supports shared libraries configure:12346: result: yes configure:12383: checking whether -lc should be explicitly linked in configure:12392: gcc -c -g -O2 conftest.c >&5 configure:12395: $? = 0 configure:12410: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 configure:12413: $? = 0 configure:12427: result: no configure:12587: checking dynamic linker characteristics configure:13169: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 configure:13169: $? = 0 configure:13420: result: GNU/Linux ld.so configure:13542: checking how to hardcode library paths into programs configure:13567: result: immediate configure:14119: checking whether stripping libraries is possible configure:14124: result: yes configure:14159: checking if libtool supports shared libraries configure:14161: result: yes configure:14164: checking whether to build shared libraries configure:14189: result: yes configure:14192: checking whether to build static libraries configure:14196: result: no configure:14219: checking how to run the C++ preprocessor configure:14241: g++ -E conftest.cpp configure:14241: $? = 0 configure:14256: g++ -E conftest.cpp conftest.cpp:23:10: fatal error: ac_nonexistent.h: No such file or directory 23 | #include | ^~~~~~~~~~~~~~~~~~ compilation terminated. configure:14256: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "npstat" | #define PACKAGE_TARNAME "npstat" | #define PACKAGE_VERSION "5.11.0" | #define PACKAGE_STRING "npstat 5.11.0" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "npstat" | #define VERSION "5.11.0" | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | /* end confdefs.h. */ | #include configure:14283: result: g++ -E configure:14297: g++ -E conftest.cpp configure:14297: $? = 0 configure:14312: g++ -E conftest.cpp conftest.cpp:23:10: fatal error: ac_nonexistent.h: No such file or directory 23 | #include | ^~~~~~~~~~~~~~~~~~ compilation terminated. configure:14312: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "npstat" | #define PACKAGE_TARNAME "npstat" | #define PACKAGE_VERSION "5.11.0" | #define PACKAGE_STRING "npstat 5.11.0" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "npstat" | #define VERSION "5.11.0" | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | /* end confdefs.h. */ | #include configure:14477: checking for ld used by g++ configure:14545: result: /bin/ld -m elf_x86_64 configure:14552: checking if the linker (/bin/ld -m elf_x86_64) is GNU ld configure:14568: result: yes configure:14623: checking whether the g++ linker (/bin/ld -m elf_x86_64) supports shared libraries configure:15700: result: yes configure:15736: g++ -c -std=c++11 -O3 -Wall -W -Werror conftest.cpp >&5 configure:15739: $? = 0 configure:16220: checking for g++ option to produce PIC configure:16228: result: -fPIC -DPIC configure:16236: checking if g++ PIC flag -fPIC -DPIC works configure:16255: g++ -c -std=c++11 -O3 -Wall -W -Werror -fPIC -DPIC -DPIC conftest.cpp >&5 configure:16259: $? = 0 configure:16272: result: yes configure:16295: checking if g++ static flag -static works configure:16324: result: yes configure:16336: checking if g++ supports -c -o file.o configure:16358: g++ -c -std=c++11 -O3 -Wall -W -Werror -o out/conftest2.o conftest.cpp >&5 configure:16362: $? = 0 configure:16384: result: yes configure:16389: checking if g++ supports -c -o file.o configure:16437: result: yes configure:16467: checking whether the g++ linker (/bin/ld -m elf_x86_64) supports shared libraries configure:16510: result: yes configure:16652: checking dynamic linker characteristics configure:17412: result: GNU/Linux ld.so configure:17477: checking how to hardcode library paths into programs configure:17502: result: immediate configure:17643: checking if libtool supports shared libraries configure:17645: result: yes configure:17648: checking whether to build shared libraries configure:17672: result: yes configure:17675: checking whether to build static libraries configure:17679: result: no configure:18037: checking for g77 option to produce PIC configure:18045: result: -fPIC configure:18053: checking if g77 PIC flag -fPIC works configure:18072: g77 -c -g -O2 -fPIC conftest.f >&5 configure:18076: $? = 0 configure:18089: result: yes configure:18112: checking if g77 static flag -static works configure:18141: result: yes configure:18153: checking if g77 supports -c -o file.o configure:18175: g77 -c -g -O2 -o out/conftest2.o conftest.f >&5 configure:18179: $? = 0 configure:18201: result: yes configure:18206: checking if g77 supports -c -o file.o configure:18254: result: yes configure:18284: checking whether the g77 linker (/bin/ld -m elf_x86_64) supports shared libraries configure:19503: result: yes configure:19645: checking dynamic linker characteristics configure:20399: result: GNU/Linux ld.so configure:20464: checking how to hardcode library paths into programs configure:20489: result: immediate configure:20681: checking that generated files are newer than configure configure:20687: result: done configure:20714: creating ./config.status ## ---------------------- ## ## Running config.status. ## ## ---------------------- ## This file was extended by npstat config.status 5.11.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = CONFIG_HEADERS = CONFIG_LINKS = CONFIG_COMMANDS = $ ./config.status on dawn config.status:1138: creating Makefile config.status:1138: creating npstat/nm/Makefile config.status:1138: creating npstat/rng/Makefile config.status:1138: creating npstat/stat/Makefile config.status:1138: creating npstat/wrap/Makefile config.status:1138: creating npstat/interfaces/Makefile config.status:1138: creating npstat/emsunfold/Makefile config.status:1138: creating npstat/Makefile config.status:1138: creating examples/C++/Makefile config.status:1138: creating npstat/swig/Makefile config.status:1138: creating npstat.pc config.status:1310: executing depfiles commands config.status:1387: cd npstat/nm && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles make: Nothing to be done for 'am--depfiles'. config.status:1392: $? = 0 config.status:1387: cd npstat/rng && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles make: Nothing to be done for 'am--depfiles'. config.status:1392: $? = 0 config.status:1387: cd npstat/stat && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles make: Nothing to be done for 'am--depfiles'. config.status:1392: $? = 0 config.status:1387: cd examples/C++ && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles make: Nothing to be done for 'am--depfiles'. config.status:1392: $? = 0 config.status:1387: cd npstat/swig && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles make: Nothing to be done for 'am--depfiles'. config.status:1392: $? = 0 config.status:1310: executing libtool commands ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_build=x86_64-pc-linux-gnu ac_cv_c_compiler_gnu=yes ac_cv_cxx_compiler_gnu=yes ac_cv_env_CCC_set= ac_cv_env_CCC_value= ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= ac_cv_env_CFLAGS_value= ac_cv_env_CPPFLAGS_set= ac_cv_env_CPPFLAGS_value= ac_cv_env_CXXCPP_set= ac_cv_env_CXXCPP_value= ac_cv_env_CXXFLAGS_set=set ac_cv_env_CXXFLAGS_value='-std=c++11 -O3 -Wall -W -Werror' ac_cv_env_CXX_set= ac_cv_env_CXX_value= ac_cv_env_DEPS_CFLAGS_set= ac_cv_env_DEPS_CFLAGS_value= ac_cv_env_DEPS_LIBS_set= ac_cv_env_DEPS_LIBS_value= ac_cv_env_F77_set= ac_cv_env_F77_value= ac_cv_env_FFLAGS_set= ac_cv_env_FFLAGS_value= ac_cv_env_LDFLAGS_set= ac_cv_env_LDFLAGS_value= ac_cv_env_LIBS_set= ac_cv_env_LIBS_value= ac_cv_env_LT_SYS_LIBRARY_PATH_set= ac_cv_env_LT_SYS_LIBRARY_PATH_value= ac_cv_env_PKG_CONFIG_LIBDIR_set= ac_cv_env_PKG_CONFIG_LIBDIR_value= ac_cv_env_PKG_CONFIG_PATH_set=set ac_cv_env_PKG_CONFIG_PATH_value=/usr/local/lib/pkgconfig ac_cv_env_PKG_CONFIG_set= ac_cv_env_PKG_CONFIG_value= ac_cv_env_build_alias_set= ac_cv_env_build_alias_value= ac_cv_env_host_alias_set= ac_cv_env_host_alias_value= ac_cv_env_target_alias_set= ac_cv_env_target_alias_value= ac_cv_f77_compiler_gnu=yes ac_cv_f77_libs=' -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. -lgfortran -lm -lquadmath' ac_cv_header_dlfcn_h=yes ac_cv_header_inttypes_h=yes ac_cv_header_stdint_h=yes ac_cv_header_stdio_h=yes ac_cv_header_stdlib_h=yes ac_cv_header_string_h=yes ac_cv_header_strings_h=yes ac_cv_header_sys_stat_h=yes ac_cv_header_sys_types_h=yes ac_cv_header_unistd_h=yes ac_cv_host=x86_64-pc-linux-gnu ac_cv_objext=o ac_cv_path_EGREP='/bin/grep -E' ac_cv_path_FGREP='/bin/grep -F' ac_cv_path_GREP=/bin/grep ac_cv_path_SED=/bin/sed ac_cv_path_ac_pt_PKG_CONFIG=/bin/pkg-config ac_cv_path_install='/bin/install -c' ac_cv_path_lt_DD=/bin/dd ac_cv_path_mkdir=/bin/mkdir ac_cv_prog_AWK=mawk ac_cv_prog_CXXCPP='g++ -E' ac_cv_prog_ac_ct_AR=ar ac_cv_prog_ac_ct_CC=gcc ac_cv_prog_ac_ct_CXX=g++ ac_cv_prog_ac_ct_F77=g77 ac_cv_prog_ac_ct_MANIFEST_TOOL=mt ac_cv_prog_ac_ct_OBJDUMP=objdump ac_cv_prog_ac_ct_RANLIB=ranlib ac_cv_prog_ac_ct_STRIP=strip ac_cv_prog_cc_c11= ac_cv_prog_cc_g=yes ac_cv_prog_cc_stdc= ac_cv_prog_cxx_11=no ac_cv_prog_cxx_g=yes ac_cv_prog_cxx_stdcxx= ac_cv_prog_f77_g=yes ac_cv_prog_f77_v=-v ac_cv_prog_make_make_set=yes am_cv_CC_dependencies_compiler_type=gcc3 am_cv_CXX_dependencies_compiler_type=gcc3 am_cv_make_support_nested_variables=yes am_cv_prog_cc_c_o=yes lt_cv_ar_at_file=@ lt_cv_archive_cmds_need_lc=no lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_ld_reload_flag=-r lt_cv_nm_interface='BSD nm' lt_cv_objdir=.libs lt_cv_path_LD=/bin/ld lt_cv_path_LDCXX='/bin/ld -m elf_x86_64' lt_cv_path_NM='/bin/nm -B' lt_cv_path_mainfest_tool=no lt_cv_prog_compiler_c_o=yes lt_cv_prog_compiler_c_o_CXX=yes lt_cv_prog_compiler_c_o_F77=yes lt_cv_prog_compiler_pic='-fPIC -DPIC' lt_cv_prog_compiler_pic_CXX='-fPIC -DPIC' lt_cv_prog_compiler_pic_F77=-fPIC lt_cv_prog_compiler_pic_works=yes lt_cv_prog_compiler_pic_works_CXX=yes lt_cv_prog_compiler_pic_works_F77=yes lt_cv_prog_compiler_rtti_exceptions=no lt_cv_prog_compiler_static_works=yes lt_cv_prog_compiler_static_works_CXX=yes lt_cv_prog_compiler_static_works_F77=yes lt_cv_prog_gnu_ld=yes lt_cv_prog_gnu_ldcxx=yes lt_cv_sharedlib_from_linklib_cmd='printf %s\n' lt_cv_shlibpath_overrides_runpath=yes lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' lt_cv_sys_global_symbol_to_import= lt_cv_sys_max_cmd_len=1572864 lt_cv_to_host_file_cmd=func_convert_file_noop lt_cv_to_tool_file_cmd=func_convert_file_noop lt_cv_truncate_bin='/bin/dd bs=4096 count=1' pkg_cv_DEPS_CFLAGS=-I/usr/local/include pkg_cv_DEPS_LIBS='-L/usr/local/lib -lfftw3 -lgeners -lkstest' ## ----------------- ## ## Output variables. ## ## ----------------- ## ACLOCAL='${SHELL} '\''/home/igv/Hepforge/npstat/trunk/missing'\'' aclocal-1.16' AMDEPBACKSLASH='\' AMDEP_FALSE='#' AMDEP_TRUE='' AMTAR='$${TAR-tar}' AM_BACKSLASH='\' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' AM_DEFAULT_VERBOSITY='1' AM_V='$(V)' AR='ar' AUTOCONF='${SHELL} '\''/home/igv/Hepforge/npstat/trunk/missing'\'' autoconf' AUTOHEADER='${SHELL} '\''/home/igv/Hepforge/npstat/trunk/missing'\'' autoheader' AUTOMAKE='${SHELL} '\''/home/igv/Hepforge/npstat/trunk/missing'\'' automake-1.16' AWK='mawk' CC='gcc' CCDEPMODE='depmode=gcc3' CFLAGS='-g -O2' CPPFLAGS='' CSCOPE='cscope' CTAGS='ctags' CXX='g++' CXXCPP='g++ -E' CXXDEPMODE='depmode=gcc3' CXXFLAGS='-std=c++11 -O3 -Wall -W -Werror' CYGPATH_W='echo' DEFS='-DPACKAGE_NAME=\"npstat\" -DPACKAGE_TARNAME=\"npstat\" -DPACKAGE_VERSION=\"5.11.0\" -DPACKAGE_STRING=\"npstat\ 5.11.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"npstat\" -DVERSION=\"5.11.0\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\"' DEPDIR='.deps' DEPS_CFLAGS='-I/usr/local/include' DEPS_LIBS='-L/usr/local/lib -lfftw3 -lgeners -lkstest' DLLTOOL='false' DSYMUTIL='' DUMPBIN='' ECHO_C='' ECHO_N='-n' ECHO_T='' EGREP='/bin/grep -E' ETAGS='etags' EXEEXT='' F77='g77' FFLAGS='-g -O2' FGREP='/bin/grep -F' FLIBS=' -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. -lgfortran -lm -lquadmath' GREP='/bin/grep' INSTALL_DATA='${INSTALL} -m 644' INSTALL_PROGRAM='${INSTALL}' INSTALL_SCRIPT='${INSTALL}' INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' LD='/bin/ld -m elf_x86_64' LDFLAGS='' LIBOBJS='' LIBS='' LIBTOOL='$(SHELL) $(top_builddir)/libtool' LIPO='' LN_S='ln -s' LTLIBOBJS='' LT_SYS_LIBRARY_PATH='' MAKEINFO='${SHELL} '\''/home/igv/Hepforge/npstat/trunk/missing'\'' makeinfo' MANIFEST_TOOL=':' MKDIR_P='/bin/mkdir -p' NM='/bin/nm -B' NMEDIT='' OBJDUMP='objdump' OBJEXT='o' OTOOL64='' OTOOL='' PACKAGE='npstat' PACKAGE_BUGREPORT='' PACKAGE_NAME='npstat' PACKAGE_STRING='npstat 5.11.0' PACKAGE_TARNAME='npstat' PACKAGE_URL='' PACKAGE_VERSION='5.11.0' PATH_SEPARATOR=':' PKG_CONFIG='/bin/pkg-config' PKG_CONFIG_LIBDIR='' PKG_CONFIG_PATH='/usr/local/lib/pkgconfig' RANLIB='ranlib' SED='/bin/sed' SET_MAKE='' SHELL='/bin/bash' STRIP='strip' VERSION='5.11.0' ac_ct_AR='ar' ac_ct_CC='gcc' ac_ct_CXX='g++' ac_ct_DUMPBIN='' ac_ct_F77='g77' am__EXEEXT_FALSE='' am__EXEEXT_TRUE='#' am__fastdepCC_FALSE='#' am__fastdepCC_TRUE='' am__fastdepCXX_FALSE='#' am__fastdepCXX_TRUE='' am__include='include' am__isrc='' am__leading_dot='.' am__nodep='_no' am__quote='' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' bindir='${exec_prefix}/bin' build='x86_64-pc-linux-gnu' build_alias='' build_cpu='x86_64' build_os='linux-gnu' build_vendor='pc' datadir='${datarootdir}' datarootdir='${prefix}/share' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' dvidir='${docdir}' exec_prefix='${prefix}' host='x86_64-pc-linux-gnu' host_alias='' host_cpu='x86_64' host_os='linux-gnu' host_vendor='pc' htmldir='${docdir}' includedir='${prefix}/include' infodir='${datarootdir}/info' install_sh='${SHELL} /home/igv/Hepforge/npstat/trunk/install-sh' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localedir='${datarootdir}/locale' localstatedir='${prefix}/var' mandir='${datarootdir}/man' mkdir_p='$(MKDIR_P)' oldincludedir='/usr/include' pdfdir='${docdir}' prefix='/usr/local' program_transform_name='s,x,x,' psdir='${docdir}' runstatedir='${localstatedir}/run' sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' sysconfdir='${prefix}/etc' target_alias='' ## ----------- ## ## confdefs.h. ## ## ----------- ## /* confdefs.h */ #define PACKAGE_NAME "npstat" #define PACKAGE_TARNAME "npstat" #define PACKAGE_VERSION "5.11.0" #define PACKAGE_STRING "npstat 5.11.0" #define PACKAGE_BUGREPORT "" #define PACKAGE_URL "" #define PACKAGE "npstat" #define VERSION "5.11.0" #define HAVE_STDIO_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_STDINT_H 1 #define HAVE_STRINGS_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_UNISTD_H 1 #define STDC_HEADERS 1 #define HAVE_DLFCN_H 1 #define LT_OBJDIR ".libs/" configure: exit 0 Index: trunk/tests/test_DistributionsND.cc =================================================================== --- trunk/tests/test_DistributionsND.cc (revision 923) +++ trunk/tests/test_DistributionsND.cc (revision 924) @@ -1,171 +1,199 @@ #include "UnitTest++.h" #include "test_utils.hh" #include "geners/binaryIO.hh" #include "npstat/nm/lapack_double.h" #include "npstat/nm/SimpleFunctors.hh" #include "npstat/stat/Distributions1D.hh" #include "npstat/stat/DistributionsND.hh" #include "npstat/stat/ScalableGaussND.hh" #include "npstat/stat/EllipticalDistributions.hh" #include "npstat/stat/MultivariateSumsqAccumulator.hh" #include "npstat/stat/InMemoryNtuple.hh" using namespace npstat; using namespace std; namespace { void io_test(const AbsDistributionND& d) { std::ostringstream os; CHECK(d.classId().write(os)); CHECK(d.write(os)); std::istringstream is(os.str()); gs::ClassId id(is, 1); AbsDistributionND* phoenix = AbsDistributionND::read(id, is); CHECK(*phoenix == d); delete phoenix; } TEST(LinTransformedDistroND) { const double eps = 1.0e-10; const lapack_double covdata[2][2] = {{1.0, 0.3}, {0.3, 0.25}}; const Matrix covmat(2, 2, &covdata[0][0]); const double shifts[2] = {0.5, 0.2}; const double zeros[2] = {0.0, 0.0}; const double ones[2] = {1.0, 1.0}; const ScalableGaussND g0(zeros, ones, 2); const GaussND g1(shifts, 2, covmat); const Matrix covSqr = covmat.symFcn(SquareRoot()); const LinTransformedDistroND g2(g0, shifts, 2, covSqr); double x[2], r[2], y[2]; for (unsigned i=0; i<100; ++i) { x[0] = (test_rng()-0.5)*5.0; x[1] = test_rng()-0.5; const double d0 = g1.density(x, 2); const double d1 = g2.density(x, 2); CHECK_CLOSE(d0, d1, eps); r[0] = test_rng(); r[1] = test_rng(); g1.unitMap(r, 2, x); g2.unitMap(r, 2, y); CHECK_CLOSE(x[0], y[0], eps); CHECK_CLOSE(x[1], y[1], eps); } io_test(g0); io_test(g1); io_test(g2); } TEST(EllipticalNormalAndKotz) { const double eps = 1.0e-10; const unsigned maxdim = 10; const unsigned ntries = 20; for (unsigned dim=1; dim mu(dim); for (unsigned i=0; i nt(simpleColumnNames(dim)); const unsigned nfills = 5U*dim; std::vector rnd(dim); for (unsigned ifill=0; ifill sums; nt.cycleOverRows(sums); MultivariateSumsqAccumulator<> sumsqs(sums); nt.cycleOverRows(sumsqs); const Matrix covmat(sumsqs.covMat()); // Now we can construct a reference normal // and an elliptical normal const GaussND g1(&mu[0], dim, covmat); const Matrix& transform = covmat.symFcn(SquareRoot()); const EllipticalNormal g2(&mu[0], dim, transform); const EllipticalKotz g3(&mu[0], dim, transform, 1U, 0.5, 1.0); io_test(g1); io_test(g2); io_test(g3); for (unsigned itry=0; itry mu(dim); for (unsigned i=0; i nt(simpleColumnNames(dim)); const unsigned nfills = 5U*dim; std::vector rnd(dim); for (unsigned ifill=0; ifill sums; nt.cycleOverRows(sums); MultivariateSumsqAccumulator<> sumsqs(sums); nt.cycleOverRows(sumsqs); const Matrix covmat(sumsqs.covMat()); const Matrix& transform = covmat.symFcn(SquareRoot()); for (unsigned ipar=0; ipar<10; ++ipar) { const double r = test_rng() + 0.1; const double s = 0.5 + test_rng(); const EllipticalDistribution g1( &mu[0], dim, transform, TransformedDistribution1D(PowerTransform1D(r, s), Gamma1D(0.0, 1.0, N/s)), TransformedDistribution1D(PowerTransform1D(r, s), Gamma1D(0.0, 1.0, (N+dim/2.0-1)/s))); const EllipticalKotz g2(&mu[0], dim, transform, N, r, s); for (unsigned itry=0; itry locs(dim); + std::vector scales(dim); + std::vector powers(dim); + + for (unsigned itry=0; itry 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AM_PROG_CC_C_O' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_INIT' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CANONICAL_TARGET' => 1, 'AM_GNU_GETTEXT' => 1, - '_AM_COND_ENDIF' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'm4_sinclude' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - '_AM_SUBST_NOTMAKE' => 1, - '_AM_COND_IF' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_AUTOMAKE_VERSION' => 1, 'AC_LIBSOURCE' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AC_SUBST' => 1, - 'AC_CANONICAL_TARGET' => 1, - '_AM_COND_ELSE' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'AU_DEFINE' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AM_NLS' => 1, - 'AC_CONFIG_SUBDIRS' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'm4_sinclude' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'm4_pattern_allow' => 1, - 'AM_POT_TOOLS' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AM_SILENT_RULES' => 1, - 'AC_CANONICAL_SYSTEM' => 1, + 'AC_FC_FREEFORM' => 1, 'AC_SUBST_TRACE' => 1, - 'AH_OUTPUT' => 1, + 'AM_POT_TOOLS' => 1, + 'm4_pattern_forbid' => 1, + 'AC_SUBST' => 1, + 'sinclude' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'm4_define' => 1, + 'AM_PROG_MOC' => 1, 'GTK_DOC_CHECK' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, 'AM_PROG_AR' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'LT_INIT' => 1, - 'AC_CONFIG_FILES' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'include' => 1, - 'AC_INIT' => 1, - 'm4_include' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_FC_FREEFORM' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AM_PROG_MOC' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'IT_PROG_INTLTOOL' => 1, - 'm4_define' => 1, + 'AC_CANONICAL_HOST' => 1, + 'm4_pattern_allow' => 1, + '_m4_warn' => 1, 'AM_INIT_AUTOMAKE' => 1, - 'AC_FC_SRCEXT' => 1, - 'sinclude' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AC_CONFIG_SUBDIRS' => 1, 'LT_CONFIG_LTDL_DIR' => 1, - 'AM_PROG_F77_C_O' => 1, 'AM_CONDITIONAL' => 1, - 'define' => 1, - '_m4_warn' => 1, + 'AM_MAINTAINER_MODE' => 1, 'AC_PROG_LIBTOOL' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AH_OUTPUT' => 1, + 'AC_FC_PP_SRCEXT' => 1, 'AC_FC_PP_DEFINE' => 1, - 'm4_pattern_forbid' => 1 + '_AM_COND_ENDIF' => 1, + 'AU_DEFINE' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CONFIG_LINKS' => 1, + 'define' => 1, + '_AM_COND_ELSE' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PATH_GUILE' => 1, + 'LT_INIT' => 1, + 'include' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'm4_include' => 1, + 'AM_NLS' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + '_AM_COND_IF' => 1, + '_AM_SUBST_NOTMAKE' => 1 } ], 'Autom4te::Request' ), bless( [ '1', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', '/usr/share/aclocal-1.16/internal/ac-config-macro-dirs.m4', '/usr/share/aclocal/ltargz.m4', '/usr/share/aclocal/ltdl.m4', '/usr/share/aclocal/pkg.m4', '/usr/share/aclocal-1.16/amversion.m4', '/usr/share/aclocal-1.16/auxdir.m4', '/usr/share/aclocal-1.16/cond.m4', '/usr/share/aclocal-1.16/depend.m4', '/usr/share/aclocal-1.16/depout.m4', '/usr/share/aclocal-1.16/extra-recurs.m4', '/usr/share/aclocal-1.16/init.m4', '/usr/share/aclocal-1.16/install-sh.m4', '/usr/share/aclocal-1.16/lead-dot.m4', '/usr/share/aclocal-1.16/make.m4', '/usr/share/aclocal-1.16/missing.m4', '/usr/share/aclocal-1.16/options.m4', '/usr/share/aclocal-1.16/prog-cc-c-o.m4', '/usr/share/aclocal-1.16/runlog.m4', '/usr/share/aclocal-1.16/sanity.m4', '/usr/share/aclocal-1.16/silent.m4', '/usr/share/aclocal-1.16/strip.m4', '/usr/share/aclocal-1.16/substnot.m4', '/usr/share/aclocal-1.16/tar.m4', 'm4/libtool.m4', 'm4/ltoptions.m4', 'm4/ltsugar.m4', 'm4/ltversion.m4', 'm4/lt~obsolete.m4', 'configure.ac' ], { - 'AC_DEFUN_ONCE' => 1, - 'AC_PROG_NM' => 1, - '_LT_AC_TAGVAR' => 1, - '_LTDL_SETUP' => 1, - 'LT_SYS_MODULE_PATH' => 1, - '_LT_PROG_CXX' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'AC_DEFUN' => 1, - 'AC_LTDL_OBJDIR' => 1, - '_LT_PROG_ECHO_BACKSLASH' => 1, - 'AM_INIT_AUTOMAKE' => 1, - '_LT_PROG_FC' => 1, + 'PKG_INSTALLDIR' => 1, + 'LTDL_INSTALLABLE' => 1, + 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, + '_LT_AC_LANG_CXX_CONFIG' => 1, + '_LT_AC_SYS_COMPILER' => 1, + 'AM_PROG_INSTALL_SH' => 1, + '_AC_PROG_LIBTOOL' => 1, + '_LT_COMPILER_BOILERPLATE' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, - '_AM_SET_OPTION' => 1, - 'AC_WITH_LTDL' => 1, - 'LT_WITH_LTDL' => 1, - '_LT_AC_LANG_GCJ' => 1, - 'AM_MISSING_HAS_RUN' => 1, - '_LT_AC_LANG_GCJ_CONFIG' => 1, - '_LT_PROG_LTMAIN' => 1, - '_AM_PROG_CC_C_O' => 1, - 'AM_RUN_LOG' => 1, - 'LT_AC_PROG_SED' => 1, - '_LT_PREPARE_SED_QUOTE_VARS' => 1, - 'AC_LIBTOOL_DLOPEN_SELF' => 1, + '_LTDL_SETUP' => 1, 'AC_LTDL_SYMBOL_USCORE' => 1, - 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, - 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - 'AC_LIBTOOL_PICMODE' => 1, - 'AC_CONFIG_MACRO_DIR' => 1, - 'LT_AC_PROG_EGREP' => 1, - 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, - '_LT_REQUIRED_DARWIN_CHECKS' => 1, - '_LT_PATH_TOOL_PREFIX' => 1, - 'LT_PROG_RC' => 1, - '_LT_LIBOBJ' => 1, + 'AC_LIBTOOL_GCJ' => 1, + 'AM_RUN_LOG' => 1, 'AM_ENABLE_STATIC' => 1, - 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, - 'AM_DEP_TRACK' => 1, - '_LT_COMPILER_BOILERPLATE' => 1, - 'AC_LIBTOOL_F77' => 1, - '_AM_PROG_TAR' => 1, - 'LT_LANG' => 1, - 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, - 'AM_SILENT_RULES' => 1, - 'LT_PROG_GO' => 1, '_AM_AUTOCONF_VERSION' => 1, - 'AC_LTDL_ENABLE_INSTALL' => 1, - '_LT_AC_LANG_C_CONFIG' => 1, - 'AC_DISABLE_STATIC' => 1, - 'AC_ENABLE_SHARED' => 1, - 'PKG_CHECK_MODULES' => 1, - 'LT_SYS_DLOPEN_SELF' => 1, - 'AC_PROG_LD' => 1, - 'AC_DISABLE_FAST_INSTALL' => 1, - '_LT_AC_TAGCONFIG' => 1, - '_LT_PROG_F77' => 1, - 'LT_LIB_M' => 1, - '_LT_AC_SYS_LIBPATH_AIX' => 1, - '_LT_AC_LANG_F77_CONFIG' => 1, - 'LT_INIT' => 1, - '_LT_AC_LANG_F77' => 1, - 'AC_PROG_LD_GNU' => 1, - 'AC_LIBTOOL_RC' => 1, - 'PKG_NOARCH_INSTALLDIR' => 1, + 'AC_LIBTOOL_FC' => 1, + '_LT_AC_LANG_CXX' => 1, + 'AC_LIB_LTDL' => 1, + '_PKG_SHORT_ERRORS_SUPPORTED' => 1, + 'AC_PATH_MAGIC' => 1, + 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + 'AM_ENABLE_SHARED' => 1, + '_LT_PROG_LTMAIN' => 1, + 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, + 'AC_PROG_LIBTOOL' => 1, 'AM_CONDITIONAL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, + '_LT_REQUIRED_DARWIN_CHECKS' => 1, + '_LT_AC_LANG_F77_CONFIG' => 1, + 'AC_PROG_LD_RELOAD_FLAG' => 1, + '_LT_PREPARE_SED_QUOTE_VARS' => 1, '_m4_warn' => 1, - 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, - 'AC_DISABLE_SHARED' => 1, - 'AC_LIBTOOL_LINKER_OPTION' => 1, + '_LT_AC_LANG_F77' => 1, + '_LT_PROG_FC' => 1, + 'AC_LIBTOOL_PROG_CC_C_O' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_LT_AC_LANG_C_CONFIG' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_LIBTOOL_CXX' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'LT_LIB_DLLOAD' => 1, + '_LT_COMPILER_OPTION' => 1, + '_LT_CC_BASENAME' => 1, + 'AM_PROG_NM' => 1, + '_LT_DLL_DEF_P' => 1, + 'LT_PATH_NM' => 1, + 'LT_LANG' => 1, + 'LT_OUTPUT' => 1, 'LT_FUNC_DLSYM_USCORE' => 1, - 'AU_DEFUN' => 1, + 'm4_include' => 1, + 'AC_LIBTOOL_LANG_C_CONFIG' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, + 'LT_INIT' => 1, + 'LT_SYS_MODULE_EXT' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'LTDL_CONVENIENCE' => 1, + 'LT_LIB_M' => 1, + 'AC_PROG_NM' => 1, 'LT_AC_PROG_GCJ' => 1, - 'LT_LIB_DLLOAD' => 1, - '_AM_SET_OPTIONS' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'PKG_INSTALLDIR' => 1, - 'LTOPTIONS_VERSION' => 1, + 'AM_MISSING_PROG' => 1, + '_LT_AC_SYS_LIBPATH_AIX' => 1, + '_AM_MANGLE_OPTION' => 1, 'LT_SYS_DLOPEN_DEPLIBS' => 1, - 'PKG_CHECK_MODULES_STATIC' => 1, - 'AC_LIBTOOL_CXX' => 1, + 'AC_ENABLE_SHARED' => 1, + 'LTOPTIONS_VERSION' => 1, 'LTVERSION_VERSION' => 1, - '_LT_AC_PROG_ECHO_BACKSLASH' => 1, - 'AM_SUBST_NOTMAKE' => 1, - 'AC_LIBLTDL_INSTALLABLE' => 1, - 'AC_LTDL_PREOPEN' => 1, - 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, - 'LTDL_INIT' => 1, - '_LT_AC_SYS_COMPILER' => 1, - 'LTOBSOLETE_VERSION' => 1, + '_LT_PROG_CXX' => 1, 'AC_PROG_EGREP' => 1, - 'AC_LIBTOOL_SETUP' => 1, - 'LT_AC_PROG_RC' => 1, + 'AC_LTDL_OBJDIR' => 1, + 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, + '_LT_WITH_SYSROOT' => 1, + 'AM_PROG_LIBTOOL' => 1, + '_LT_AC_FILE_LTDLL_C' => 1, + 'AC_ENABLE_STATIC' => 1, 'LT_SYS_DLSEARCH_PATH' => 1, - 'AC_LIBTOOL_DLOPEN' => 1, - 'AM_MISSING_PROG' => 1, - 'AM_ENABLE_SHARED' => 1, - 'AC_LIBTOOL_GCJ' => 1, - 'AM_DISABLE_STATIC' => 1, - '_LT_AC_LOCK' => 1, + 'AC_LTDL_ENABLE_INSTALL' => 1, + 'LTOBSOLETE_VERSION' => 1, + 'LT_SYS_DLOPEN_SELF' => 1, 'AM_AUTOMAKE_VERSION' => 1, - 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, - 'AC_LIB_LTDL' => 1, + 'AC_LIBTOOL_COMPILER_OPTION' => 1, + 'LTSUGAR_VERSION' => 1, + 'AC_LIBLTDL_CONVENIENCE' => 1, + 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, + 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, + '_LT_AC_CHECK_DLFCN' => 1, + 'LT_FUNC_ARGZ' => 1, + 'AC_LTDL_SHLIBPATH' => 1, + '_LT_AC_PROG_CXXCPP' => 1, + 'AC_WITH_LTDL' => 1, + 'AC_LIBTOOL_CONFIG' => 1, + 'LT_PROG_GO' => 1, + 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, + 'AC_LIBTOOL_WIN32_DLL' => 1, + '_AM_SET_OPTION' => 1, 'AM_SANITY_CHECK' => 1, - '_LT_CC_BASENAME' => 1, - '_LT_AC_TRY_DLOPEN_SELF' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + '_LT_PATH_TOOL_PREFIX' => 1, + 'AC_PROG_LD' => 1, + 'AC_CHECK_LIBM' => 1, + 'AM_SET_DEPDIR' => 1, + 'AC_PATH_TOOL_PREFIX' => 1, + '_AM_SUBST_NOTMAKE' => 1, 'PKG_PROG_PKG_CONFIG' => 1, + 'LT_AC_PROG_RC' => 1, + 'LT_PROG_GCJ' => 1, '_LT_AC_SHELL_INIT' => 1, - 'AM_PROG_INSTALL_SH' => 1, - '_AM_CONFIG_MACRO_DIRS' => 1, - 'm4_pattern_forbid' => 1, - 'LT_OUTPUT' => 1, - 'AC_LIBTOOL_WIN32_DLL' => 1, - '_LT_WITH_SYSROOT' => 1, - 'AC_ENABLE_STATIC' => 1, - 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, - '_LT_LINKER_OPTION' => 1, + '_LT_LIBOBJ' => 1, + 'AM_SUBST_NOTMAKE' => 1, + 'AM_MISSING_HAS_RUN' => 1, + 'LT_PROG_RC' => 1, + '_LT_PROG_F77' => 1, + '_AM_DEPENDENCIES' => 1, + '_AM_SET_OPTIONS' => 1, + 'AC_ENABLE_FAST_INSTALL' => 1, '_LT_AC_LANG_RC_CONFIG' => 1, - 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, - 'AC_LTDL_SYSSEARCHPATH' => 1, - 'AM_AUX_DIR_EXPAND' => 1, - 'AM_MAKE_INCLUDE' => 1, - '_LT_AC_PROG_CXXCPP' => 1, - '_LT_AC_LANG_CXX' => 1, - '_LT_AC_LANG_CXX_CONFIG' => 1, - 'm4_pattern_allow' => 1, - 'AC_LIBTOOL_PROG_CC_C_O' => 1, - 'AM_PROG_NM' => 1, - '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'LT_PATH_LD' => 1, - 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, - 'LT_SYS_SYMBOL_USCORE' => 1, - '_LT_COMPILER_OPTION' => 1, - 'AC_LIBLTDL_CONVENIENCE' => 1, - 'm4_include' => 1, - 'LT_SYS_MODULE_EXT' => 1, - 'LTDL_INSTALLABLE' => 1, + 'AC_DISABLE_FAST_INSTALL' => 1, + 'AM_DEP_TRACK' => 1, + 'AM_SET_LEADING_DOT' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + '_LT_AC_LOCK' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + 'AC_DISABLE_SHARED' => 1, + 'AC_DISABLE_STATIC' => 1, + '_LT_AC_LANG_GCJ_CONFIG' => 1, + 'AM_INIT_AUTOMAKE' => 1, + '_LT_AC_LANG_GCJ' => 1, + '_AM_PROG_TAR' => 1, + '_LT_LINKER_BOILERPLATE' => 1, + 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, + '_LT_LINKER_OPTION' => 1, + 'AC_LIBTOOL_F77' => 1, + 'AU_DEFUN' => 1, + 'LT_AC_PROG_EGREP' => 1, '_AM_IF_OPTION' => 1, - '_LT_AC_FILE_LTDLL_C' => 1, - '_LT_DLL_DEF_P' => 1, - 'AC_PATH_MAGIC' => 1, - 'LT_CMD_MAX_LEN' => 1, - '_AC_PROG_LIBTOOL' => 1, + 'AC_LTDL_SYSSEARCHPATH' => 1, + '_LT_AC_TRY_DLOPEN_SELF' => 1, + '_LT_AC_TAGVAR' => 1, + 'AC_LIBTOOL_OBJDIR' => 1, + 'AC_DEFUN_ONCE' => 1, + 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, + 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, + 'AC_LIBTOOL_SETUP' => 1, 'include' => 1, - 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AC_LTDL_DLLIB' => 1, + 'AC_LIBTOOL_DLOPEN_SELF' => 1, 'PKG_CHECK_EXISTS' => 1, + 'LT_WITH_LTDL' => 1, + '_LT_AC_PROG_ECHO_BACKSLASH' => 1, + 'AC_LIBTOOL_RC' => 1, + 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, + 'AC_PROG_LD_GNU' => 1, 'AC_DEPLIBS_CHECK_METHOD' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'AC_LTDL_SHLIBPATH' => 1, - 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'PKG_CHECK_VAR' => 1, - 'AC_LIBTOOL_LANG_C_CONFIG' => 1, - 'AC_PATH_TOOL_PREFIX' => 1, - 'AC_ENABLE_FAST_INSTALL' => 1, - 'AC_LIBTOOL_COMPILER_OPTION' => 1, - 'AC_PROG_LD_RELOAD_FLAG' => 1, - 'LTSUGAR_VERSION' => 1, - 'AM_PROG_INSTALL_STRIP' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'LTDL_CONVENIENCE' => 1, - 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, - 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AC_LTDL_SHLIBEXT' => 1, - 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, - 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, - 'AC_LIBTOOL_FC' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'PKG_CHECK_MODULES_STATIC' => 1, + 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, 'AC_LTDL_DLSYM_USCORE' => 1, - '_AM_MANGLE_OPTION' => 1, - 'AM_PROG_CC_C_O' => 1, 'AM_DISABLE_SHARED' => 1, - '_PKG_SHORT_ERRORS_SUPPORTED' => 1, - 'AC_LTDL_DLLIB' => 1, - 'AC_CHECK_LIBM' => 1, + 'AM_DISABLE_STATIC' => 1, + 'LT_SYS_SYMBOL_USCORE' => 1, + 'AC_LTDL_PREOPEN' => 1, + 'LT_SYS_MODULE_PATH' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'AC_LIBTOOL_LINKER_OPTION' => 1, + 'LT_AC_PROG_SED' => 1, + 'PKG_CHECK_VAR' => 1, + 'PKG_NOARCH_INSTALLDIR' => 1, + 'AC_LIBTOOL_DLOPEN' => 1, + 'AC_LIBLTDL_INSTALLABLE' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_SILENT_RULES' => 1, + 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, + 'AC_DEFUN' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'm4_pattern_allow' => 1, + '_LT_PROG_ECHO_BACKSLASH' => 1, 'AM_PROG_LD' => 1, - '_AM_DEPENDENCIES' => 1, - 'AM_SET_DEPDIR' => 1, - 'AC_LIBTOOL_CONFIG' => 1, - 'AC_LIBTOOL_OBJDIR' => 1, - 'LT_PATH_NM' => 1, - '_LT_AC_CHECK_DLFCN' => 1, - '_LT_LINKER_BOILERPLATE' => 1, - 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, - 'LT_PROG_GCJ' => 1, - 'LT_FUNC_ARGZ' => 1, - 'AM_SET_LEADING_DOT' => 1 + 'LT_PATH_LD' => 1, + '_AM_PROG_CC_C_O' => 1, + 'AC_LTDL_SHLIBEXT' => 1, + 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, + 'PKG_CHECK_MODULES' => 1, + 'LT_CMD_MAX_LEN' => 1, + 'LTDL_INIT' => 1, + 'm4_pattern_forbid' => 1, + 'AC_LIBTOOL_PICMODE' => 1 } ], 'Autom4te::Request' ), bless( [ '2', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.ac' ], { - 'sinclude' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_SILENT_RULES' => 1, + 'AC_PROG_LIBTOOL' => 1, 'AM_INIT_AUTOMAKE' => 1, - 'AC_FC_SRCEXT' => 1, - 'AC_FC_PP_DEFINE' => 1, '_m4_warn' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AM_CONDITIONAL' => 1, - 'm4_pattern_forbid' => 1, - 'AM_PROG_MOC' => 1, - 'IT_PROG_INTLTOOL' => 1, + 'm4_pattern_allow' => 1, 'LT_SUPPORTED_TAG' => 1, - 'm4_include' => 1, - 'AM_PROG_MKDIR_P' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_FC_FREEFORM' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CANONICAL_HOST' => 1, 'AM_PROG_AR' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'AC_CANONICAL_BUILD' => 1, + 'GTK_DOC_CHECK' => 1, + 'AM_PROG_MOC' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_FC_FREEFORM' => 1, + 'sinclude' => 1, + 'AC_SUBST' => 1, + 'm4_pattern_forbid' => 1, + 'AM_POT_TOOLS' => 1, + 'AC_SUBST_TRACE' => 1, 'AM_AUTOMAKE_VERSION' => 1, - 'include' => 1, - 'LT_INIT' => 1, - 'AC_CONFIG_FILES' => 1, - 'AM_MAINTAINER_MODE' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'm4_sinclude' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_XGETTEXT_OPTION' => 1, 'AC_INIT' => 1, - 'm4_pattern_allow' => 1, - 'AM_POT_TOOLS' => 1, 'AM_PROG_FC_C_O' => 1, - 'AM_SILENT_RULES' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'GTK_DOC_CHECK' => 1, - 'AH_OUTPUT' => 1, - 'AC_SUBST_TRACE' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AC_CONFIG_HEADERS' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_GNU_GETTEXT' => 1, 'AC_CANONICAL_TARGET' => 1, - '_AM_COND_ELSE' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, + '_AM_SUBST_NOTMAKE' => 1, 'AM_NLS' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AM_PROG_CXX_C_O' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, '_AM_COND_IF' => 1, - 'AM_PROG_LIBTOOL' => 1, - 'AC_LIBSOURCE' => 1, - 'm4_sinclude' => 1, 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AC_SUBST' => 1, - 'AM_PATH_GUILE' => 1, 'AC_CONFIG_AUX_DIR' => 1, + 'm4_include' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'include' => 1, + 'AM_PATH_GUILE' => 1, + 'LT_INIT' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AM_ENABLE_MULTILIB' => 1, + '_AM_COND_ELSE' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'IT_PROG_INTLTOOL' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CANONICAL_SYSTEM' => 1, '_AM_COND_ENDIF' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AM_GNU_GETTEXT' => 1 + '_AM_MAKEFILE_INCLUDE' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AH_OUTPUT' => 1, + 'AC_FC_PP_SRCEXT' => 1 } ], 'Autom4te::Request' ), bless( [ '3', 1, [ '/usr/share/autoconf' ], [ '/usr/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', '/usr/share/autoconf/autoconf/trailer.m4', 'configure.ac' ], { - 'AC_LIBSOURCE' => 1, - 'AM_PROG_LIBTOOL' => 1, - '_AM_COND_IF' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1, - 'm4_sinclude' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AC_SUBST' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'AM_PATH_GUILE' => 1, - '_AM_COND_ENDIF' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AM_POT_TOOLS' => 1, - 'm4_pattern_allow' => 1, - 'AC_SUBST_TRACE' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AM_PROG_AR' => 1, 'GTK_DOC_CHECK' => 1, - 'AH_OUTPUT' => 1, - 'AC_CANONICAL_SYSTEM' => 1, + 'AM_PROG_MOC' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_PROG_CC_C_O' => 1, 'AM_SILENT_RULES' => 1, + 'AC_PROG_LIBTOOL' => 1, + '_m4_warn' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'm4_pattern_allow' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'm4_sinclude' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, 'AM_PROG_FC_C_O' => 1, 'AM_XGETTEXT_OPTION' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_FC_PP_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_PROG_MKDIR_P' => 1, 'AC_CANONICAL_TARGET' => 1, - '_AM_COND_ELSE' => 1, - 'AM_NLS' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AM_PROG_MKDIR_P' => 1, 'AC_FC_FREEFORM' => 1, - 'AC_CONFIG_LINKS' => 1, + 'sinclude' => 1, + 'AC_SUBST' => 1, + 'm4_pattern_forbid' => 1, + 'AM_POT_TOOLS' => 1, + 'AC_SUBST_TRACE' => 1, 'm4_include' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'AM_PROG_AR' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'AC_INIT' => 1, 'include' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AM_MAINTAINER_MODE' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_PATH_GUILE' => 1, 'LT_INIT' => 1, - 'AC_CONFIG_FILES' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'sinclude' => 1, - 'AC_FC_SRCEXT' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'm4_pattern_forbid' => 1, - '_m4_warn' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AM_ENABLE_MULTILIB' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AM_NLS' => 1, + '_AM_COND_IF' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, 'AC_FC_PP_DEFINE' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_PROG_F77_C_O' => 1, - 'AM_CONDITIONAL' => 1, - 'AM_PROG_MOC' => 1, + 'AH_OUTPUT' => 1, + 'AC_FC_PP_SRCEXT' => 1, + '_AM_COND_ELSE' => 1, + 'AM_PROG_CXX_C_O' => 1, + '_LT_AC_TAGCONFIG' => 1, 'IT_PROG_INTLTOOL' => 1, - 'LT_SUPPORTED_TAG' => 1 + 'AM_PROG_LIBTOOL' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CANONICAL_SYSTEM' => 1 } ], 'Autom4te::Request' ) );