racket/collects/math/private/array/array-fold.rkt
Neil Toronto 769e8b47ec Added `array->list-array'
Cleaned up expected value code a little

Refactored running statistics objects (hid private fields, added
`update-statistics*')

Documented expected value functions and running statistics

Removed `bfpsi0' from bigfloat tests (DrDr's libmpfr doesn't have it)

Commented out custodian shutdown callback that frees MPFR's cache
(something's broken)
2012-12-06 22:52:22 -07:00

50 lines
1.4 KiB
Racket

#lang racket/base
(require (for-syntax racket/base)
"typed-array-fold.rkt")
;; ===================================================================================================
;; Standard folds
(define-syntax-rule (define-axis-fold name f)
(define-syntax (name stx)
(syntax-case stx ()
[(_ arr k) (syntax/loc stx (array-axis-fold arr k f))]
[(_ arr k init) (syntax/loc stx (array-axis-fold arr k f init))])))
(define-syntax-rule (define-all-fold name f)
(define-syntax (name stx)
(syntax-case stx ()
[(_ arr) (syntax/loc stx (array-all-fold arr f))]
[(_ arr init) (syntax/loc stx (array-all-fold arr f init))])))
(define-axis-fold array-axis-sum +)
(define-axis-fold array-axis-prod *)
(define-axis-fold array-axis-min min)
(define-axis-fold array-axis-max max)
(define-all-fold array-all-sum +)
(define-all-fold array-all-prod *)
(define-all-fold array-all-min min)
(define-all-fold array-all-max max)
(provide array-axis-fold
array-axis-sum
array-axis-prod
array-axis-min
array-axis-max
array-axis-count
array-axis-and
array-axis-or
array-fold
array-all-fold
array-all-sum
array-all-prod
array-all-min
array-all-max
array-all-and
array-all-or
array-axis-reduce
unsafe-array-axis-reduce
array->list-array)