Age | Commit message (Collapse) | Author |
|
* python/spheroid.py: New file.
|
|
* .gitignore: Add python/__pycache__ and python/*.png.
|
|
* python/distribution-integrals.py: New file.
|
|
* python/distribution-volumes.py: New file.
|
|
* python/nsmc.py: New file.
|
|
* guix.scm: Rename to manifest.scm. Replace `guix environment -l
guix.scm' with `guix shell'.
* README.org (Build): Replace `guix environment -l guix.scm' with
`guix shell'.
|
|
* guix.scm: Import (guix build-system python), (guix download), (gnu
packages check), (gnu packages python), (gnu packages python-science)
and (gnu packages python-xyz).
(python-sambal): New variable.
Add python, python-matplotlib, python-numpy, python-sambal and
python-scipy to manifest.
|
|
* guix.scm (nsmc): Delete package.
Return a manifest.
|
|
* guix.scm: Do not import (ice-9 match), (ice-9 popen), (ice-9
rdelim), (srfi srfi-1), (srfi srfi-26) and (guix build utils).
(git-file?): Delete function.
(nsmc): Use git-predicate instead of git-file?
|
|
* scm/nsmc/wrap.scm (rstat-alloc): Export it.
(volume, integral): Accept and return rstats object.
|
|
* src/volume-bodies.sc: Implement offcenter volume experiments.
|
|
* src/oracles.sc: Include gsl/gsl_poly.h.
(ellipsoid-extent-oracle-with-center): New function.
* include/oracles.h (ellipsoid_params): Add center member.
(ellipsoid_extent_oracle_with_center): Declare it.
|
|
* src/extent-sampling.sc (integral): Implement window stopping
criterion.
|
|
* src/nd-random.sc (random-vector-in-sphere): New function.
* include/nd-random.h (random_vector_in_sphere): Declare it.
|
|
* src/spheroid.sc: New file.
* CMakeLists.txt: Add spheroid executable.
|
|
* src/volume-bodies.sc: New file.
* CMakeLists.txt: Add volume-bodies executable.
|
|
* src/integral.sc: New file.
* CMakeLists.txt: Explicitly specify sources for nsmc library. Add
integral executable.
|
|
* src/extent-sampling.sc (volume): Use window stopping criterion.
|
|
* include/extent-sampling.h (volume, volume_cone, volume_importance,
integral): Pass extent oracle and integrand as const arguments.
* src/extent-sampling.sc (volume, volume_cone, volume_importance,
integral, integral-per-direction): Likewise.
|
|
integral-per-direction should be purely deterministic.
* src/extent-sampling.sc (integral-per-direction): Do not accept rng
as argument.
(integral): Do not pass rng to integral-per-direction.
|
|
* src/macros/macros.sc (with-file, with-data-file): New macros.
|
|
* src/extent-sampling.sc (with-rstats): Move to ...
* src/macros/macros.sc (with-rstats): ... to here.
(with-rstats*): New macro.
|
|
* src/macros/macros.sc (with-rng): New macro.
|
|
* src/extent-sampling.sc (with-vector): Move to ...
* src/macros/macros.sc (with-vector): ... here.
|
|
* src/macros/macros.sc (for-i-step): New macro.
|
|
* src/macros/macros.sc (when, unless): New macros.
|
|
* src/utils.sc (rtol?): New function.
* include/utils.h (rtol_p): Declare it.
|
|
* include/integrands.h (polynomial_integrand_params): Declare
coefficients member as const.
|
|
* scm/nsmc/wrap.scm (make-ellipsoid-params, make-ellipsoid-oracle,
ellipsoid-true-volume): New functions.
|
|
We return the rstat object so it can be passed on into another
invocation to continue the estimation and refine the estimate to a
closer tolerance.
* scm/nsmc/wrap.scm (volume, integral): Return rsat object.
|
|
We are already passing in the true volume or integral, and checking
that the estimate is within the required tolerance. What is the point
in returning the estimate to the caller.
* include/extent-sampling.h (volume, integral): Return nothing.
* src/extent-sampling.sc (volume, integral): Return nothing.
* scm/nsmc/wrap.scm (volume, integral): Accept no return value from C
function.
|
|
* include/extent-sampling.h (volume_window): Delete function.
* src/extent-sampling.sc (integral, volume): Return the first accurate
estimate.
(volume-window): Delete function.
* scm/nsmc/wrap.scm (volume-window): Delete function.
|
|
* scm/nsmc/wrap.scm (volume-importance): New function.
|
|
* src/extent-sampling.sc,
include/extent-sampling.h (volume-experiment): Rename to
volume-importance.
|
|
* scm/nsmc/wrap.scm (log-gamma): New function.
|
|
* contrib/cone-vector.py (sample_code): Demonstrate cone sampling with
rejection sampling too.
|
|
* contrib/cone-vector.py: Import log.
(random_planar_angle_pdf, random_vector_on_spherical_cap_pdf): New
functions.
|
|
* contrib/cone-vector.py (random_planar_angle_cdf,
random_vector_on_disk): New functions.
(random_vector_on_spherical_cap): Rename to
random_vector_on_spherical_cap_cdf. Call random_planar_angle_cdf and
random_vector_on_disk.
(sample_code): Call random_vector_on_spherical_cap_cdf instead of
random_vector_on_spherical_cap.
|
|
* src/extent-sampling.sc (volume-cone): Use
solid-angle-fraction->planar-angle instead of
solid-angle->planar-angle.
* src/nd-random.sc (planar-angle->solid-angle): Rename to
planar-angle->solid-angle-fraction and return a solid angle fraction.
(solid-angle->planar-angle): Rename to
solid-angle-fraction->planar-angle and accept a solid angle fraction.
(hollow-cone-random-vector): Use planar-angle->solid-angle-fraction
instead of planar-angle->solid-angle.
(beta-inc-unnormalized, incomplete-wallis-integral): Delete functions.
* include/nd-random.h (planar_angle_to_solid_angle): Rename to
planar_angle_to_solid_angle_fraction.
(solid_angle_to_planar_angle): Rename to
solid_angle_fraction_to_planar_angle.
* scm/nsmc/wrap.scm (planar-angle->solid-angle): Rename to
planar-angle->solid-angle-fraction.
|
|
* src/nd-random.sc (rotate-from-nth-canonical): Do nothing when
vectors around the nth canonical axis are required.
|
|
* src/nd-random.sc (hollow-cone-random-vector): Implement simplified
algorithm that directly samples the surface of the sphere instead of
sampling a disk and projecting it onto the surface.
|
|
* contrib/cone-vector.py: Call sample_code when run as a script.
(sample_code): New function.
|
|
* contrib/cone-vector.py: Don't import zeros from numpy and gamma from
scipy.special.
|
|
* contrib/cone-vector.py (random_vector_on_sphere,
planar_angle2solid_angle_fraction, solid_angle_fraction2planar_angle,
rotate_from_nth_canonical, random_vector_on_spherical_cap): Add
docstrings.
|
|
* contrib/cone-vector.py (random_vector_on_sphere,
planar_angle2solid_angle_fraction, solid_angle_fraction2planar_angle,
rotate_from_nth_canonical, random_vector_on_spherical_cap): Remove
space between function name and bracket.
|
|
* contrib/cone-vector.py: Don't import tan.
(random_vector_on_spherical_cap): Implement simplified algorithm that
directly samples the surface of the sphere instead of sampling a disk
and projecting it onto the surface.
|
|
* contrib/cone-vector.py: Import where.
(planar_angle2solid_angle_fraction,
solid_angle_fraction2planar_angle): Vectorize functions.
|
|
* contrib/cone-vector.py (solid_angle_fraction2planar_angle): Fix for
solid_angle_fraction > 1/2.
|
|
* contrib/cone-vector.py: Import empty. Don't import concatenate.
(random_vector_on_spherical_cap): Build random vector without
concatenation.
|
|
Now that we are computing solid angle fractions, there is no need to
compute the total surface area of the sphere.
* contrib/cone-vector.py (surface_area_of_ball): Delete function.
(solid_angle_fraction2planar_angle): Remove surface area computation.
|