;;; nsmc --- n-sphere Monte Carlo method ;;; Copyright © 2021 Arun I ;;; Copyright © 2021 Murugesan Venkatapathi ;;; ;;; This file is part of nsmc. ;;; ;;; nsmc is free software: you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation, either version 3 of the License, or ;;; (at your option) any later version. ;;; ;;; nsmc is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with nsmc. If not, see . (sc-define-syntax (when condition body ...) (cond (condition body ...))) (sc-define-syntax (unless condition body ...) (when (not condition) body ...)) (sc-define-syntax (for-i index limit body ...) (for ((define index int 0) (< index limit) (set+ index 1)) body ...)) (sc-define-syntax (for-i-step index start max step body ...) (for ((define index int start) (<= index max) (set+ index step)) body ...)) (sc-define-syntax (with-alloc var type allocate free body ...) (let* ((var type allocate)) body ... (free var))) (sc-define-syntax (with-vector var size body ...) (with-alloc var gsl-vector* (gsl-vector-alloc size) gsl-vector-free body ...)) (sc-define-syntax (with-rng var body ...) (with-alloc var gsl-rng* (gsl-rng-alloc gsl-rng-default) gsl-rng-free body ...))