Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

•Re: Re: Deriving pi and e

by merlyn (Sage)
on Oct 25, 2003 at 12:40 UTC ( [id://302053] : note . print w/replies, xml ) Need Help??

in reply to Re: Deriving pi and e
in thread Deriving pi and e

I'm not sure why people keep propogating the one where you have to multiply by 4. It's much simpler to say:
my $pi = atan2(0,-1);
In other words, don't create a vector that points at 45 degrees and multiply by 4... create a vector that points at 180 degrees!

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.

Replies are listed 'Best First'.
Re: •Re: Re: Deriving pi and e
by tilly (Archbishop) on Oct 25, 2003 at 13:52 UTC
    Personally I do it for the reason that theorbtwo stated. I know how to do it with atan (and make the well-known power series converge), and the easiest way is to do 45 degrees and multiply by 4. Then I try to convert it to Perl, notice that there is no atan function, and use atan2.

    That said, noting that I can do it directly with atan2 won't convince me not to reach for 4*atan2(1,1) for several reasons:

    1. I don't have this memorized, just the derivation of how it should work. I have more years of math than Perl, and so the derivation I know is the one that comes up immediately.
    2. Perl's documentation doesn't indicate whether atan(0,-1) will give you PI or -PI (or blow up because someone decided that "in the range of -PI to PI" means an open interval, not a half-closed one). I therefore don't know whether to trust it in future implementations of Perl.
    3. Even though I have had it pointed out to me that Perl's implementation gives you PI, I don't know whether I can trust that trivia in future implementations of atan2 that I may encounter in other languages. This goes doubly because I know enough about how one might try to implement atan2 to come up with plausible implementations which break at (0,-1).

      I agree. Actually, it's imo better to define atan2(0,-1)=-Pi, so that atan2's range would be [-Pi,Pi), not (-Pi,Pi] (not that this would matter at all). Actually, even my prof at complex functions course defined it this way: log(-1)=-i*Pi.

      I use 4*atan2(1,1) instead of atan2(0,-1) or 2*atan2(1,0), because I got used to bc and basic, where you have to write 4*a(1), and 4*atn(1) resp., because there is no atan2 function.

Re: Re: Re: Deriving pi and e
by theorbtwo (Prior) on Oct 25, 2003 at 13:20 UTC

    Er, I suspect the reason is that people forget that you can do that with atan2. (You can't do that with a normal atan, IIRC...)

    In any case, yes, it is a little silly.

    Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).

Re^3: Deriving pi and e
by Cosmic37 (Acolyte) on Sep 20, 2013 at 12:19 UTC
    Well, your method is logical but one advantage of atan(1,1)*4 would be that there is reduced scope to get the argument order or signs wrong. (1,1) is easy to remember but (0,-1) could get mixed up with (1,0), (-1,0) or (0,1) by the sieve-headed amongst us. Never under-estimate sieve-headedness! :-D