[gambit-list] Proposed patch

Bradley Lucier lucier at math.purdue.edu
Tue Dec 10 11:45:56 EST 2013


Thanks for the comments.

On 12/10/2013 09:38 AM, Marc Feeley wrote:
>
> On Dec 9, 2013, at 10:28 PM, Bradley Lucier <lucier at math.purdue.edu> wrote:
>
>> lib/_num.scm: Add ##flsquare, ##square, and square.
> Is the naming consistent with other Schemes?

Yes.

>
>>   Add ##exact-int.negative?
> Fine.
>
>> Use it in ##abs.  Add functions from Kahan's paper: ##kahan.abs, ##kahan.arg,
>> ##kahan.cssqs, ##kahan.csqrt, ##kahan.cacos, ##kahan.casin, ##kahan.casinh,
>> ##kahan.catanh, ##kahan.ctanh, ##kahan.ctan; and constants ##kahan.omega,
>> ##kahan.epsilon, ##kahan.lambda.
> I dislike the naming.  Is "kahan" the best prefix?  In any case, for consistency with the rest, it should be "kahan-" not "kahan." because the prefix "T." is used to name functions related to type T.  Kahan is not a type (or is it?).

I renamed all the ##kahan. functions to just begin with "##c" (as in 
"c"omplex).

>
>>   Add functions ##conjugate and conjugate.
> Is the naming consistent with other Schemes?

Yes.

>
>> Marc: I'd like to have the compiler recognize ##flsquare.
> Easy.
>
>> I'll attach the patch.  I would really appreciate any comments.
> What is missing for this patch is a bunch of unit tests.  Each of the new inlined primitives should be tested for precision (after all, that is why they were added, so unit tests should verify this).

Later.  I promise. :-)

New changelog and patch:

lib/_num#.scm: Add (macro-inexact-+pi/4), (macro-inexact-+3pi/4),
(macro-inexact-epsilon), (macro-inexact-lambda), (macro-inexact-omega).

lib/_num.scm: Add ##flsquare, ##square, and square.  Add 
##exact-int.negative?
Use it in ##abs.  Add functions from Kahan's paper: ##cabs, ##carg,
##cssqs, ##csqrt, ##cacos, ##casin, ##casinh,
##catanh, ##ctanh, ##ctan.  Add functions ##conjugate and conjugate.
In ##log, use ##fllog1p for arguments near 1. In ##sin and ##cos, use 
real trigonometric
and hyperbolic functions for complex arguments.  In ##tan, use ##tanh 
for complex
arguments.  In ##asin, use ##casin. In ##acos, use ##cacos. In
##atan, use ##atanh.  In ##atan2, use Kahan's conventions for infinite 
arguments.
##sinh, sinh, ##cosh, cosh, ##tanh, tanh, ##asinh, asinh, ##acosh, 
acosh, ##atanh,
atanh: New functions.  In ##sqrt: Use ##csqrt for complex arguments. In
##magnitude: use ##exact-int.negative? for ratnum arguments and ##cabs for
complex arguments.

lib:gambit#.scm: Add entries for acosh, asinh, atanh, conjugate, cosh, 
sinh, square,
and atanh.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hyp.patch
Type: text/x-patch
Size: 33821 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20131210/bec05b64/attachment.bin>


More information about the Gambit-list mailing list