racket/collects/math/private/array/array-pointwise.rkt
Neil Toronto f2dc2027f6 Initial math library commit. The history for these changes is preserved
in the original GitHub fork:

  https://github.com/ntoronto/racket

Some things about this are known to be broken (most egregious is that the
array tests DO NOT RUN because of a problem in typed/rackunit), about half
has no coverage in the tests, and half has no documentation. Fixes and
docs are coming. This is committed now to allow others to find errors and
inconsistency in the things that appear to be working, and to give the
author a (rather incomplete) sense of closure.
2012-11-16 11:39:51 -07:00

110 lines
3.2 KiB
Racket

#lang racket/base
(require typed/untyped-utils
(rename-in
(only-in "typed-array-pointwise.rkt"
array-map
array-sqrt
array-log
array<
array<=
array>
array>=
array=
array-not
array-and
array-or
array-if)
[array-map typed:array-map])
(rename-in "untyped-array-pointwise.rkt"
[array-map untyped:array-map]))
(define-typed/untyped-identifier array-map
typed:array-map untyped:array-map)
(require/untyped-contract
(begin (require "array-struct.rkt"))
"typed-array-pointwise.rkt"
[array-abs ((Array Real) -> (Array Real))]
[array-round ((Array Real) -> (Array Real))]
[array-floor ((Array Real) -> (Array Real))]
[array-ceiling ((Array Real) -> (Array Real))]
[array-truncate ((Array Real) -> (Array Real))]
[array-conjugate ((Array Number) -> (Array Number))]
[array-magnitude ((Array Number) -> (Array Real))]
[array-angle ((Array Number) -> (Array Real))]
[array-sqr ((Array Number) -> (Array Number))]
[array-exp ((Array Number) -> (Array Number))]
[array-sin ((Array Number) -> (Array Number))]
[array-cos ((Array Number) -> (Array Number))]
[array-tan ((Array Number) -> (Array Number))]
[array-asin ((Array Number) -> (Array Number))]
[array-acos ((Array Number) -> (Array Number))]
[array-atan ((Array Number) -> (Array Number))]
[array+ ((Array Number) (Array Number) -> (Array Number))]
[array* ((Array Number) (Array Number) -> (Array Number))]
[array- (case-> ((Array Number) -> (Array Number))
((Array Number) (Array Number) -> (Array Number)))]
[array/ (case-> ((Array Number) -> (Array Number))
((Array Number) (Array Number) -> (Array Number)))]
[array-scale ((Array Number) Number -> (Array Number))]
[array-expt ((Array Number) (Array Number) -> (Array Number))]
[array-min ((Array Real) (Array Real) -> (Array Real))]
[array-max ((Array Real) (Array Real) -> (Array Real))]
[array-inexact->exact ((Array Number) -> (Array Exact-Number))]
[array-exact->inexact ((Array Number) -> (Array Number))] ; should be Number -> Inexact-Number
[array-real->double-flonum ((Array Real) -> (Array Float))]
[array-number->float-complex ((Array Number) -> (Array Float-Complex))]
[array-real-part ((Array Number) -> (Array Real))]
[array-imag-part ((Array Number) -> (Array Real))]
[array-make-rectangular ((Array Real) (Array Real) -> (Array Number))])
(provide
;; Mapping
inline-array-map
array-map
;; Lifted operators
array-scale
array-abs
array-round
array-floor
array-ceiling
array-truncate
array-sqr
array-sqrt
array-conjugate
array-magnitude
array-angle
array-log
array-exp
array-sin
array-cos
array-tan
array-asin
array-acos
array-atan
array+
array-
array*
array/
array-expt
array-min
array-max
array=
array<
array<=
array>
array>=
array-not
array-and
array-or
array-if
;; Number conversions
array-inexact->exact
array-exact->inexact
array-real->double-flonum
array-number->float-complex
array-real-part
array-imag-part
array-make-rectangular)