From 4d3baa3b7d9f1d9628095d71b2de03dae783d5e4 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 28 Feb 2014 15:33:08 -0700 Subject: [PATCH] [unsafe-]fl{real,image}-part: fix contracts in docs and errors Closes PR 14368 --- .../scribblings/reference/flonums.scrbl | 16 ++++++++++++---- .../scribblings/reference/unsafe.scrbl | 17 ++++++++++++----- racket/src/racket/src/number.c | 12 ++++++++++-- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/reference/flonums.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/reference/flonums.scrbl index 05cffba6e0..d4fc72b233 100644 --- a/pkgs/racket-pkgs/racket-doc/scribblings/reference/flonums.scrbl +++ b/pkgs/racket-pkgs/racket-doc/scribblings/reference/flonums.scrbl @@ -121,10 +121,18 @@ integer.} @deftogether[( -@defproc[(make-flrectangular [a flonum?] [b flonum?]) - (and/c complex? inexact? (not/c real?))] -@defproc[(flreal-part [a (and/c complex? inexact? (not/c real?))]) flonum?] -@defproc[(flimag-part [a (and/c complex? inexact? (not/c real?))]) flonum?] +@defproc[(make-flrectangular [a flonum?] [b flonum?]) + (and/c complex? + (lambda (c) (flonum? (real-part c))) + (lambda (c) (flonum? (imag-part c))))] +@defproc[(flreal-part [a (and/c complex? + (lambda (c) (flonum? (real-part c))) + (lambda (c) (flonum? (imag-part c))))]) + flonum?] +@defproc[(flimag-part [a (and/c complex? + (lambda (c) (flonum? (real-part c))) + (lambda (c) (flonum? (imag-part c))))]) + flonum?] )]{ Like @racket[make-rectangular], @racket[real-part], and diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/reference/unsafe.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/reference/unsafe.scrbl index 7325d8384f..463a4a2b41 100644 --- a/pkgs/racket-pkgs/racket-doc/scribblings/reference/unsafe.scrbl +++ b/pkgs/racket-pkgs/racket-doc/scribblings/reference/unsafe.scrbl @@ -156,12 +156,19 @@ For @tech{flonums}: Unchecked (potentially) versions of @racket[flsqrt], and @racket[flexpt]. Currently, some of these bindings are simply aliases for the corresponding safe bindings.} - @deftogether[( -@defproc[(unsafe-make-flrectangular [a flonum?] [b flonum?]) - (and/c complex? inexact? (not/c real?))] -@defproc[(unsafe-flreal-part [a (and/c complex? inexact? (not/c real?))]) flonum?] -@defproc[(unsafe-flimag-part [a (and/c complex? inexact? (not/c real?))]) flonum?] +@defproc[(unsafe-make-flrectangular [a flonum?] [b flonum?]) + (and/c complex? + (lambda (c) (flonum? (real-part c))) + (lambda (c) (flonum? (imag-part c))))] +@defproc[(unsafe-flreal-part [a (and/c complex? + (lambda (c) (flonum? (real-part c))) + (lambda (c) (flonum? (imag-part c))))]) + flonum?] +@defproc[(unsafe-flimag-part [a (and/c complex? + (lambda (c) (flonum? (real-part c))) + (lambda (c) (flonum? (imag-part c))))]) + flonum?] )]{ For @tech{flonums}: Unchecked versions of @racket[make-flrectangular], diff --git a/racket/src/racket/src/number.c b/racket/src/racket/src/number.c index 5d7a0e84ff..7d1d6bb482 100644 --- a/racket/src/racket/src/number.c +++ b/racket/src/racket/src/number.c @@ -3722,7 +3722,11 @@ Scheme_Object *scheme_checked_flreal_part (int argc, Scheme_Object *argv[]) if (!SCHEME_COMPLEXP(o) || !SCHEME_DBLP(((Scheme_Complex *)o)->r)) - scheme_wrong_contract("flreal-part", "(and/c complex? (lambda (c) (flonum? (real-part c))))", 0, argc, argv); + scheme_wrong_contract("flreal-part", + "(and/c complex?" + /* */ " (lambda (c) (flonum? (real-part c)))" + /* */ " (lambda (c) (flonum? (imag-part c))))", + 0, argc, argv); return _scheme_complex_real_part(o); } @@ -3733,7 +3737,11 @@ Scheme_Object *scheme_checked_flimag_part (int argc, Scheme_Object *argv[]) if (!SCHEME_COMPLEXP(o) || !SCHEME_DBLP(((Scheme_Complex *)o)->r)) - scheme_wrong_contract("flimag-part", "(and/c complex? (lambda (c) (flonum? (real-part c))))", 0, argc, argv); + scheme_wrong_contract("flimag-part", + "(and/c complex?" + /* */ " (lambda (c) (flonum? (real-part c)))" + /* */ " (lambda (c) (flonum? (imag-part c))))", + 0, argc, argv); return scheme_complex_imaginary_part(o); }