NEWS
spatstat.explore 3.3-2.001
OVERVIEW
- Tweaks to bandwidth selection.
SIGNIFICANT USER-VISIBLE CHANGES
- bw.ppl
Argument 'shortcut' now defaults to TRUE.
spatstat.explore 3.3-2 (2024-08-21)
OVERVIEW
- Tweaks to documentation.
- Internal repairs.
- Internal changes to satisfy package checker.
spatstat.explore 3.3-1 (2024-07-15)
OVERVIEW
- Internal changes to satisfy package checker.
spatstat.explore 3.3-0
OVERVIEW
- 'spatstat.explore' now depends on package 'spatstat.univar'.
- Some functions have been moved to 'spatstat.univar'.
- Minor improvements.
PACKAGE DEPENDENCE
- spatstat.explore now depends on the new package 'spatstat.univar'
- Some functions have been moved
from 'spatstat.explore' to 'spatstat.univar'.
SIGNIFICANT USER-VISIBLE CHANGES
- cbind.fv, bind.fv
Additional arguments may be functions in the R language.
DELETED FUNCTIONS
- bw.abram
The generic 'bw.abram' has been moved
to the new package 'spatstat.univar'.
- CDF, CDF.density
The generic 'CDF' and method 'CDF.density' have been moved
to the new package 'spatstat.univar'.
- densityAdaptiveKernel
The generic 'densityAdaptiveKernel' has been moved
to the new package 'spatstat.univar'.
- dkernel, pkernel, qkernel, rkernel
These functions have been moved to the new package 'spatstat.univar'.
- kernel.factor, kernel.moment, kernel.squint
These functions have been moved to the new package 'spatstat.univar'.
- kaplan.meier, reduced.sample, km.rs
These functions have been moved to the new package 'spatstat.univar'.
- quantile.density
This method has been moved to the new package 'spatstat.univar'.
- stieltjes
This function has been moved to the new package 'spatstat.univar'.
spatstat.explore 3.2-7 (2024-03-21)
OVERVIEW
- Bug fixes.
- Internal improvements.
BUG FIXES
- SpatialMedian.ppp, SpatialQuantile.ppp
Argument ‘sigma’ was ignored in some calculations.
Fixed.
spatstat.explore 3.2-6 (2024-02-01)
OVERVIEW
- We thank Mohomed Abraj, Marcelino de la Cruz and Stephanie Hogg
for contributions.
- Spatially weighted median and quantile of mark values.
- Adaptive estimation of intensity for split point patterns.
- Anisotropic bandwidth selection
- Boyce index.
- Internal improvements.
- Bug fixes.
NEW FUNCTIONS
- SpatialMedian.ppp, SpatialQuantile.ppp
Spatially weighted median and quantile of mark values of a point pattern.
- boyce
Boyce index and continuous Boyce index.
- densityAdaptiveKernel.splitppp
A method for 'densityAdaptiveKernel' for split point patterns.
SIGNIFICANT USER-VISIBLE CHANGES
- bw.ppl
New argument ‘varcov1’ for anisotropic bandwidth selection.
- bw.smoothppp
New argument ‘varcov1’ for anisotropic bandwidth selection.
BUG FIXES
- studpermu.test
The code required each group to consist of at least 3 point patterns,
rather than 2 point patterns (as stated in the documentation).
Fixed.
- Jest
Ignored pixel resolution argument 'eps'.
Fixed.
- scanLRTS
Pixel resolution arguments 'dimyx', 'eps', 'xy' were not correctly handled.
Fixed.
spatstat.explore 3.2-5 (2023-10-22)
OVERVIEW
- Minor corrections in documentation.
spatstat.explore 3.2-4
OVERVIEW
- Integration of functions.
- Changed defaults for Clark-Evans Test.
- spatstat.explore no longer suggests package 'maptools'.
- Minor improvements and bug fixes.
NEW FUNCTIONS
- integral.fv
Compute the integral of a function.
SIGNIFICANT USER-VISIBLE CHANGES
- density.ppp
New argument 'sameas'.
- clarkevans.test
The asymptotic test is now available for any choice of edge correction.
- clarkevans.test
New argument 'method' determines whether to use the asymptotic test
or Monte Carlo test. The default has changed to method='asymptotic'.
- clarkevans.test
Default edge correction has changed, to avoid bias.
BUG FIXES
- kernel.squint
The return value was incorrect if the argument 'bw' was given.
Fixed.
- pcf
The variance approximation was calculated incorrectly
(due to the bug in kernel.squint).
Fixed.
- quantile.density
Crashed if 'probs' contained NA values and 'names=FALSE'.
Fixed.
- bw.smoothppp
Crashed if every point in 'X' was duplicated.
Fixed.
spatstat.explore 3.2-3 (2023-09-07)
OVERVIEW
- Improvements to envelope methods.
- Suppress warning messages from density.default.
- Minor improvements and bug fixes.
NEW FUNCTIONS
- compileCDF
Low level utility for calculating cumulative distribution function
of distance variable.
SIGNIFICANT USER-VISIBLE CHANGES
- circdensity
Improved output of 'print' method
- envelope
All methods for ‘envelope’ now accept a summary function
in which the function argument is not named 'r'.
This includes functions such as ‘transect.im’ and ‘roc’.
- plot.bermantest
Improved layout for plots of Berman's Z2 test.
- plot.fv
New argument 'clip.xlim'.
- circdensity
Suppress annoying warning messages from density.default.
- compileK, compilepcf
Suppress annoying warning messages from density.default.
- rhohat
Suppress annoying warning messages from density.default.
BUG FIXES
- envelope methods
Results were malformed if the name of the function argument was not "r".
Fixed.
spatstat.explore 3.2-1 (2023-05-13)
OVERVIEW
spatstat.explore 3.2-0
OVERVIEW
- We thank Jonatan Gonzalez for contributions.
- Changed the calculation of standard errors in density.ppp and relrisk.ppp.
- Inline arithmetic for function tables ('fv') and arrays ('fasp')
- Standard error calculation for Smooth.ppp (experimental)
- multitype pair correlation functions can save numerator and denominator.
- multitype inhomogeneous J functions.
- More support for automatic bandwidth selection.
- Bug fixes in calculation of standard errors.
NEW FUNCTIONS
- Math.fv, Complex.fv, Summary.fv, Ops.fv
Methods for arithmetic operations for function tables (class 'fv')
- Math.fasp, Complex.fasp, Summary.fasp, Ops.fasp
Methods for arithmetic operations for function arrays (class 'fasp')
- Gcross.inhom, Gdot.inhom
Multitype G functions for inhomogeneous point processes.
- Jcross.inhom, Jdot.inhom, Jmulti.inhom
Multitype J functions for inhomogeneous point processes.
- summary.bw.optim, print.summary.bw.optim
Method for 'summary' of optimised bandwidth objects (class 'bw.optim').
These are the objects produced by the bandwidth selection functions
such as bw.diggle, bw.scott, bw.pcf
SIGNIFICANT USER-VISIBLE CHANGES
- density.ppp
Standard error calculation is now available with any smoothing kernel.
- density.ppp
The interpretation of 'weights' in the calculation of standard error
has changed. New argument 'wtype' controls this interpretation.
- relrisk.ppp
The interpretation of 'weights' in the calculation of standard error
has changed. New argument 'wtype' controls this interpretation.
- relrisk.ppp
New argument 'fudge' specifies a constant numeric value that will be
added to each estimate of point process intensity before calculation of
relative risk.
- Smooth.ppp
Standard error calculation is now supported (Experimental).
- pcfcross, pcfdot, pcfmulti
New argument 'ratio' makes it possible to save the numerator and
denominator of the function estimates, so that estimates can be pooled.
- bw.relrisk.ppp
Additional arguments '...' are now passed to 'density.ppp'.
- eval.fasp
Automatically-generated labels have been improved.
- relrisk.ppp
Issues a warning if numerical underflow is detected.
- rhohat.ppp, rhohat.quad
New argument 'rule.eps' passed to 'as.mask'.
BUG FIXES
- density.ppp
Calculation of standard error was slightly incorrect if edge=TRUE.
Fixed.
- relrisk.ppp
Calculation of standard error was incorrect for non-Gaussian kernels.
Fixed.
spatstat.explore 3.1-0 (2023-03-14)
OVERVIEW
- Pair correlation functions allow more control over smoothing parameters.
- Improved support for one-dimensional smoothing kernels.
- Bug fixes in plot.fv.
- Internal improvements and bug fixes.
SIGNIFICANT USER-VISIBLE CHANGES
- kernel.moment
New arguments 'mean' and 'sd'.
Computation accelerated for kernel='cosine' or 'optcosine'.
All cases are now computed using analytic expressions, for m <= 2.
- bw.abram
This function is now generic, with a method for class 'ppp'.
- pcfinhom, pcfdot.inhom, pcfcross.inhom
New arguments 'adjust.sigma' and 'adjust.bw' allow
separate adjustment of the one-dimensional smoothing bandwidth 'bw'
and the spatial smoothing bandwidth 'sigma'.
BUG FIXES
- plot.fv
When the argument 'log' was given, the plotted curves were
incorrectly clipped, or were missing altogether.
Fixed.
- plot.fv
If 'add=TRUE', and if the existing plot was created using logarithmic axes,
the logarithmic scale was ignored.
Fixed.
- plot.fv
Sometimes gave an obscure warning about 'rebound.owin',
when 'xlim' or 'ylim' was given.
Fixed.
spatstat.explore 3.0-6 (2023-01-26)
OVERVIEW
- Internal improvements and bug fixes.
spatstat.explore 3.0-5 (2022-11-10)
OVERVIEW
- Bug fix in pcf.
- We thank Maximilian Hesselbarth for contributions.
BUG FIXES
- pcf.ppp
Estimates were incorrectly scaled (they were incorrectly multiplied
by the area of the window.) Spotted by Maximilian Hesselbarth.
Bug introduced in spatstat.explore 3.0-0.
Fixed.
spatstat.explore 3.0-4
OVERVIEW
- Bug fix in Kest in a very special case.
- We thank 'Marjolein9' for contributions.
BUG FIXES
- Kest
Isotropic edge correction weight was computed incorrectly
for a data point lying exactly on a corner of a rectangular window.
Spotted by GitHub contributor 'Marjolein9'.
Fixed.
spatstat.explore 3.0-3 (2022-11-04)
OVERVIEW
- Tweaks to placate package checker.
spatstat.explore 3.0-2
OVERVIEW
- Tweaks to placate package checker.
spatstat.explore 3.0-1
OVERVIEW
- Tweaks to placate package checker.
spatstat.explore 3.0-0
OVERVIEW
- New package
- We thank Marie-Colette van Lieshout and Daniel Manrique-Castano
for contributions.
- Periodic edge correction for K function.
- Changed denominator in K function and pair correlation function.
- Bandwidth selection for adaptive kernel estimation of intensity.
- U-shaped curves in 'rhohat'.
- Radial cumulative integral of an image.
- Minor improvements.
NEW FUNCTIONS
- bw.CvL.adaptive
Bandwidth selection for adaptive kernel estimation of intensity.
- radcumint
Radial cumulative integral of an image.
SIGNIFICANT USER-VISIBLE CHANGES
- Package structure
The package 'spatstat.core' has been split into two packages called
'spatstat.explore' (for exploratory data analysis)
and 'spatstat.model' (for modelling and formal inference).
- spatstat.explore
The new package 'spatstat.explore' contains the code for
exploratory data analysis and nonparametric analysis
of spatial data. Examples include 'density.ppp', 'Kest',
'envelope', 'rhohat', 'clarkevans.test'.
- NEWS
The NEWS file for the new package 'spatstat.explore'
contains older news items from the defunct package 'spatstat.core'
(for functions which are now in 'spatstat.explore').
- Kest, Kdot, Kcross, Ldot, Lcross, Kmulti
These functions now accept the option 'correction="periodic"'
to compute the periodic (toroidal) edge correction estimate.
- Kest, pcf, Ksector, Kdot, Kcross, Kmulti
When ratio=TRUE, the denominator is now equal to the number of pairs of
points considered. This does not affect the estimate of the summary
function, but it changes the calculation of pooled estimates
when the estimates were obtained from different sized windows.
- markcorr, markcrosscorr
These functions now allow negative mark values when normalise=FALSE.
- marktable
This function now works for point patterns in three dimensions (class 'pp3')
and point patterns on a network (class 'lpp').
- bw.relrisk
This function is now generic, with a method for class 'ppp'
- compileK, compilepcf
These functions have a new argument 'samplesize'.
If 'ratio=TRUE' the numerator and denominator will be rescaled
by a common factor so that the denominator is equal to 'samplesize'.
- adaptive.density
Now accepts 'method="nearest"' and passes the data to 'nndensity'.
- rhohat.ppp
New options 'smoother="mountain"' and 'smoother="valley"'
for estimating a unimodal function (U-shaped curve).
- rhohat.ppp
If the covariate is a 'distfun', the name of the unit of length is saved
and displayed on the plot.
- rhohat.ppp
New arguments 'jitter', 'jitterfactor', 'interpolate' allow greater
control over the calculation.
- rhohat.ppp
New argument 'do.CI' specifies whether to calculate confidence bands.
spatstat.explore 2.4-4.010
OVERVIEW
spatstat.explore 2.4-4
OVERVIEW
- Bug fixes and minor improvements.
BUG FIXES
- rhohat.ppp
The argument 'subset' was not handled correctly in the internal data.
The estimated function 'rho' was correct, but if 'predict.rhohat' was applied,
predictions were computed only in the 'subset', and were possibly incorrect values.
Fixed.
- Gfox, Jfox
Warnings were issued about text formatting errors (mentioning 'sprintf' or 'fmt').
Fixed.
spatstat.explore 2.4-3
OVERVIEW
- We thank Art Stock for contributions.
- Bug fixes and minor improvements.
BUG FIXES
- Smooth.ppp
Crashed when 'kernel' was a function, 'at="points"' and 'scalekernel=FALSE'.
Fixed.
- Finhom, Ginhom, Jinhom
Crashed when ratio=TRUE.
[Spotted by Art Stock.]
Fixed.
- envelope
Crashed for some of the summary functions when ratio=TRUE.
[Spotted by Art Stock.]
Fixed.
- "[.rat"
Crashed in some cases.
Fixed.
- Kcross
The result of Kcross() was 'invisible',
i.e. it was not automatically printed.
Fixed.
spatstat.explore 2.4-2
OVERVIEW
spatstat.explore 2.4-1
OVERVIEW
- We thank Frederic Lavancier, Sebastian Meyer, Suman Rakshit and Sven Wagner
for contributions.
- Improved approximation of intensity of Gibbs models.
- Experimental code to represent (theoretical) point process models
- Extract more information about a point process model.
- Internal improvements and bug fixes.
SIGNIFICANT USER-VISIBLE CHANGES
- relrisk.ppp
Ratios which are close to 0/0 are handled more effectively,
reducing the likelihood of strange-looking plots when 'sigma' is very small.
BUG FIXES
- density.ppp
Crashed if the observation window had zero area.
Fixed.
- dirichletVoronoi.ppp
Crashed randomly, with obscure error messages from 'im' or 'eval.im',
when argument 'f' had a small value.
[Spotted by Suman Rakshit.]
Fixed.
- dirichletVoronoi.ppp
Rarely, produced an image containing NA values.
[Spotted by Suman Rakshit.]
Fixed.
- vcov.ppm
Crashed in some cases, with message 'object lamdel not found'.
[Spotted by Sven Wagner.]
Fixed.
spatstat.explore 2.4-0
OVERVIEW
- We thank Sriram Ramamurthy for contributions.
- spatstat.core now depends on the new package 'spatstat.random'.
- Functions for generating random patterns have been removed.
- Minor improvements and bug fixes
SIGNIFICANT USER-VISIBLE CHANGES
- package structure
The code for generating random spatial patterns (including 'rpoispp',
'rMatClust', 'rThomas', 'rNeymanScott', 'rStrauss', 'rmh')
has been removed from 'spatstat.core' and placed in a new package
'spatstat.random'. This new package is required by 'spatstat.core'.
- reload.or.compute
New argument 'context'
BUG FIXES
- reload.or.compute
Scoping error (crashed sometimes if called from a non-global environment).
Fixed.
spatstat.explore 2.3-2
OVERVIEW
- Minor improvements and bug fixes.
- We thank Jonas Brehmer for contributions.
SIGNIFICANT USER-VISIBLE CHANGES
- pcf
Improved error message
BUG FIXES
- edge.Ripley
Results were incorrect for data points lying exactly at the corners
of a rectangle.
Fixed.
spatstat.explore 2.3-1
OVERVIEW
- Covariates in ppm and mppm may be functions that depend on the marks
as well as the spatial coordinates.
- Automatic selection of threshold for defining a binary predictor.
- Random perturbation of line segments.
- Minor extensions, performance improvements, and bug fixes.
NEW FUNCTIONS
- thresholdSelect, thresholdCI
Select the optimal threshold for converting a numerical predictor
to a binary predictor.
- coef<-.fii
Changes the coefficients of a fitted interaction object
(a method for the generic "coef<-")
SIGNIFICANT USER-VISIBLE CHANGES
- distcdf
Improved regularisation algorithm.
Argument 'nr=NULL' is now accepted.
New argument 'delta' allows the result to be interpolated
onto a finer grid.
- collapse.fv
Columns identified by the arguments 'same' and 'different'
may now be absent from some of the 'fv' objects that will be collapsed.
- Kest
When the argument 'domain' is given, the calculation of estimates of K(r)
has changed slightly, to adhere more closely to the description in
the help file.
- reload.or.compute
Now prints a message indicating whether the data were recomputed
or reloaded from file.
New argument 'verbose'.
- pool.envelope
Now uses the value of 'nrank' which was used in the original envelopes.
- Kmulti
New argument 'rmax'.
- Kinhom
No longer issues a warning about changed behaviour in the case where
'lambda' is a fitted model.
- pcfinhom
No longer issues a warning about changed behaviour in the case where
'lambda' is a fitted model.
BUG FIXES
- segregation.test
The test statistic was calculated as the mean, rather than the sum,
of discrepancies between probabilities. (The p-value was not affected.)
Fixed.
- Kest
If 'domain' was specified, 'rmax' was ignored.
Fixed.
- edge.Ripley
Value was incorrect for a point lying exactly on a corner.
Fixed.
- edge.Ripley
Crashed when method="interpreted", if a point lay exactly on a corner.
Fixed.
- plot.fv, plot.envelope
Crashed when trying to display a significance band of width zero
around a constant function.
Fixed.
- collapse.fv
Crashed if 'length(same) > 1'.
Fixed.
spatstat.explore 2.3-0
OVERVIEW
- Transect of an image along a curve.
- Image cross-correlation and cross-covariance.
- Minor bug fixes.
NEW FUNCTIONS
- cov.im, cor.im
Correlation or covariance between several pixel images.
SIGNIFICANT USER-VISIBLE CHANGES
- transect.im
New argument 'curve' allows the user to specify a curved transect.
BUG FIXES
- rhohat
The rug plot (produced by plot.rhohat) was incorrect
when rhohat was called with method="piecewise".
Fixed.
- markcrosscorr
Did not recognise the option 'correction="none"'.
Fixed.
- roc.ppp
The default plot of the result of roc.ppp
did not include the diagonal line 'y=x'.
Fixed.
spatstat.explore 2.2-0
OVERVIEW
- We thank Abdollah Jalilian, Yongtao Guan and Rasmus Waagepetersen
for contributions.
- estimation of the spatial covariance function of a pixel image
- simulation of the product shot noise Cox process.
- extensions to rhohat
NEW FUNCTIONS
- rPSNCP
Generate simulated realisations of the product shot noise Cox process.
Contributed by Abdollah Jalilian, Yongtao Guan and Rasmus Waagepetersen.
- spatcov
Estimate the spatial covariance function of a pixel image.
- pairMean
Compute the mean of a specified function of interpoint distance
between random points in a window.
SIGNIFICANT USER-VISIBLE CHANGES
- rhohat
New option (smoother='piecewise') computes a piecewise-constant
estimate of rho(z).
- rhohat
The result now includes the 'average' intensity rho.
- distcdf
Arguments which are NULL will be treated as missing.
- distcdf
New argument 'savedenom'.
spatstat.explore 2.1-2
OVERVIEW
spatstat.explore 2.1-1
OVERVIEW
spatstat.explore 2.1-0
OVERVIEW
- densityfun.ppp handles query points outside original window
- Minor improvements and bug fixes.
SIGNIFICANT USER-VISIBLE CHANGES
- densityfun.ppp
The resulting function can now handle query points which lie
outside the window of the original data,
and has argument 'drop=TRUE' which specifies how to handle them.
- rpoint
New argument 'forcewin' forces the code to use the window 'win'
when 'f' is a pixel image.
BUG FIXES
- cdf.test
Crashed if the covariate was constant.
Fixed.
spatstat.explore 2.0-0
OVERVIEW
- We thank Tilman Davies, Greg McSwiggan and Suman Rakshit
for contributions.
- We thank Corey Anderson, Michael Chirico, Andy Craig,
Marcelino de la Cruz, Tilman Davies, Pavel Fibich,
Kurt Hornik, Gopalan Nair, Yonatan Rosen and Rasmus Waagepetersen
for contributions.
- Diffusion kernel smoothing.
- More support for spatial logistic regression models.
- predict.mppm now works for multitype point process models.
- Improved handling of 'newdata' in predict.mppm.
- More support for multi-dimensional patterns.
NEW FUNCTIONS
- densityHeat
New generic function for diffusion kernel estimation of intensity
- densityHeat.ppp
Diffusion kernel estimation of intensity for point pattern in 2 dimensions.
This is an alternative to density.ppp.
- intersect.boxx
Compute intersection of boxes in multi-dimensional space
- scale.boxx, scale.ppx
Methods for 'scale' for boxes and patterns in multi-dimensional space
- shift.boxx, shift.ppx
Methods for 'shift' for boxes and patterns in multi-dimensional space
- is.boxx
Determine whether an object is a multidimensional box
SIGNIFICANT USER-VISIBLE CHANGES
- rotmean
The result now has the same 'unitname' as the input object X.
New argument 'adjust' controls the smoothing bandwidth.
- rlabel
New argument 'group' specifies that the points are divided into
several groups, and that relabelling is applied within each group.
- Kcross, Gcross, Jcross
Function labels (shown on the plot legend) have been
improved when i = j.
- anova.mppm
Issues a warning when applied to random-effects models
(models fitted using the argument 'random').
BUG FIXES
- Gest
If correction="rs" or correction="km", then both the reduced-sample
(border correction) and Kaplan-Meier corrected estimates were calculated.
[Spotted by Gopalan Nair.]
Fixed.
- simulate.rhohat
Crashed when applied to rhohat objects computed from data
on a linear network.
Fixed.
spatstat.explore 1.65-11
OVERVIEW
spatstat.explore 1.65-10
OVERVIEW
- Minor corrections to documentation.
spatstat.explore 1.65-9
OVERVIEW
- We thank Ian Buller for a suggestion.
- weights permitted in density calculation for line segments.
SIGNIFICANT USER-VISIBLE CHANGES
- density.psp
New argument 'weights'.
spatstat.explore 1.65-8
OVERVIEW
- Minor changes to appease the compiler.
spatstat.explore 1.65-7
OVERVIEW
- We thank Michael Chirico for a contribution.
- Minor changes to appease the compiler.
spatstat.explore 1.65-6
OVERVIEW
- We thank Tilman Davies and Pavel Fibich for contributions.
- Increased speed for large datasets.
SIGNIFICANT USER-VISIBLE CHANGES
- rSSI
Accelerated.
- overall speed
Changes have been made to the internal code of spatstat
which should accelerate computations involving large datasets.
- localpcf, localpcfinhom
New argument 'rvalue'.
BUG FIXES
- rLGCP
Simulation results for log-Gaussian Cox processes were incorrect
unless the pixel dimensions and pixel spacings were identical
on the horizontal and vertical axes. (If pixel dimensions were not
specified, then the results were incorrect whenever the Frame of the
simulation window was not a square.)
[Spotted by Tilman Davies.]
Fixed.
- Vmark
Crashed if normalise=TRUE when there was only one column of marks.
(Spotted by Pavel Fibich.)
Fixed.
- nnclean
Crashed if k >= npoints(X).
Fixed.
spatstat.explore 1.65-5
OVERVIEW
- Minor changes required by CRAN.
spatstat.explore 1.65-1
OVERVIEW
spatstat.explore 1.65-0
OVERVIEW
- Package initialised at version 1.65-0
SIGNIFICANT USER-VISIBLE CHANGES
- spatstat.core
The package 'spatstat.core' has been created from a subset
of the code in the original 'spatstat' package version 1.65-0.
It contains the core functionality for statistical analysis of
spatial data. For an overview, see help("spatstat.core-package")
- Execution
The 'spatstat.core' package is slightly faster than the corresponding
code in the 'spatstat' package, because the procedure for calling
internal C functions has been streamlined.