Age | Commit message (Collapse) | Author |
|
These experiments were in progress towards the end, and never properly
finished. I leave the code here in case it turns out to be useful.
|
|
* 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.
|
|
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.
|
|
* src/extent-sampling.sc,
include/extent-sampling.h (volume-experiment): Rename to
volume-importance.
|
|
* 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.
|
|
* include/extent-sampling.h, include/gaussian-nd-random.h,
include/integrands.h, include/nd-random.h, include/oracles.h,
include/utils.h, src/extent-sampling.sc, src/gaussian-nd-random.sc,
src/integrands.sc, src/macros/macros.sc, src/nd-random.sc,
src/oracles.sc, src/utils.sc, CMakeLists.txt, pre-inst-env.in: Add
copyright and license headers.
|
|
* scm/nsmc/wrap.scm: (subsampling-random-vector): Rename to
cone-random-vector.
* src/nd-random.sc (subsampling-random-vector): Rename to
cone-random-vector.
* include/nd-random.h (subsampling_random_vector): Rename to
cone_random_vector.
|
|
* src/extent-sampling.sc (integral-per-direction): Remove neval from
function arguments.
(integral): Adjust integral-per-direction function call.
|
|
The bug has been fixed upstream.
* src/integrands.sc (gaussian-integrand): Remove workaround for sph-sc
negation bug.
|
|
With this change, the wrapper around the gsl lower incomplete gamma
function is directly in scheme. Earlier, there was one layer of
wrapping in C which needed to be wrapped again in scheme.
* include/utils.h (lower_incomplete_gamma): Delete function.
* src/utils.sc (lower-incomplete-gamma): Delete function.
* scm/extent-sampling/wrap.scm (lower-incomplete-gamma): New function.
|
|
* include/integrands.h, src/integrands.sc: New files.
|
|
This change will make it easier for the scheme wrapper to curry
integrands.
* include/extent-sampling.h (integrand_t): Redefine type as struct.
(integral): Pass pointer to integrand_t.
* src/extent-sampling.sc (integral-per-direction, integral): Handle
new integrand-t type.
(invoke-integrand): New sc macro.
|
|
Logarithmic functions trip up when their parameter is 0.
* src/oracles.sc (uniform-true-volume): Implement without log.
|
|
* src/oracles.sc (bernoulli-extent-oracle, bernoulli-true-volume,
uniform-extent-oracle, uniform-true-volume, beta-extent-oracle,
beta-true-volume, cube-extent-oracle, cube-extent-oracle-with-center,
cube-true-volume, ellipsoid-extent-oracle, ellipsoid-true-volume,
spheroid-extent-oracle, spheroid-true-volume): Rename params argument
to -params.
|
|
* include/extent-sampling.h (volume, volume_window, integral,
volume_cone, volume_experiment): Pass extent_oracle_t as pointer.
* src/extent-sampling.sc: Likewise.
|
|
This change will make it easier for the scheme wrapper to curry extent
oracles.
* include/extent-sampling.h (extent_oracle_t): Define as a struct that
bundles the parameters required by the actual extent oracle.
* include/oracles.h (bernoulli_params, uniform_params, beta_params,
cube_params, ellipsoid_params, spheroid_params): New types.
(bernoulli_extent_generator, uniform_extent_generator,
beta_extent_generator): Rename to bernoulli_extent_oracle,
uniform_extent_oracle, beta_extent_oracle respectively and change to
the new extent oracle prototype.
(bernoulli_true_volume, uniform_true_volume, beta_true_volume,
cube_extent_oracle, cube_extent_oracle_with_center, cube_true_volume,
ellipsoid_extent_oracle, ellipsoid_true_volume,
spheroid_extent_oracle, spheroid_true_volume): Change to new extent
oracle and true volume prototypes.
* src/oracles.sc: Likewise.
* src/extent-sampling.sc (invoke-extent-oracle): New macro.
(volume, volume-window, integral, volume-cone): Call using new extent
oracle prototype.
|
|
* src/nd-random.sc (solid-angle->planar-angle): Remove unnecessary
whitespace at the beginning of the line.
|
|
We are not using maximum extent functions anymore.
* src/oracles.sc (cube-maximum-extent): Delete function.
* include/oracles.h (cube-maximum-extent): Delete function declaration.
|
|
* src/utils.sc (with-root-fsolver): Rewrite without a temporary solver
type variable.
|
|
* src/utils.sc (with-root-fsolver): Fix collision between solver type
and solver type variable.
|
|
* src/nd-random.sc (planar-angle->solid-angle,
solid-angle->planar-angle): Declare these to be a part of the public
interface of the module.
|
|
* src/macros/macros.sc (with-alloc): Use let* instead of declare and
set.
|
|
* src/utils.sc (angle-between-vectors, gaussian-cdf, bisection,
bisection-rlimit): Replace underscores in identifiers with hyphens.
|
|
sph-sc is a scheme-like S-expression syntax for C. It elements much of
the pain and repetition involved in writing C syntax.
* src/extent-sampling.c, src/gaussian-nd-random.c, src/nd-random.c,
src/oracles.c, src/utils.c: Delete files.
* src/extent-sampling.sc, src/gaussian-nd-random.sc,
src/macros/macros.sc, src/nd-random.sc, src/oracles.sc, src/utils.sc:
New files.
* CMakeLists.txt: Generate C source files from SC source files.
|
|
* src/oracles.c (infinity_norm): Declare as static.
|
|
* include/utils.h (gprate, gpterm): Delete function prototype
declarations.
* src/utils.c (gprate, gpterm): Delete functions.
|
|
* include/oracles.c (symmetric_spiral_extent_oracle,
right_triangle_extent_oracle, right_triangle_true_volume,
sphere_extent_oracle, sphere_maximum_extent, plane_extent_oracle):
Delete function prototype declarations.
* src/oracles.c (symmetric_spiral_extent_oracle,
right_triangle_extent_oracle, right_triangle_true_volume,
sphere_extent_oracle, sphere_maximum_extent, plane_extent_oracle):
Delete functions.
|
|
* extent-sampling.h, gaussian-nd-random.h, nd-random.h, oracles.h,
utils.h: Move into include directory.
* extent-sampling.c, gaussian-nd-random.c, nd-random.c, oracles.c,
utils.c: Move into src directory.
* CMakeLists.txt: Set include as include directory. Look for source
files inside src directory.
|