# factorial of negative one (-1)

Bj Raz whitequill.bj at gmail.com
Sat Oct 30 07:29:52 CEST 2010

```Thank you Robert for the clarification.  Since I'm an amateur programmer,
could you please give me a sample of how I would do it.  I'll take some time
to study arrays as well, and how to write them, I know of lists, and tuples,
and dictionaries; from "Dive into Python". but I am very green around the
ears still. :|

On Fri, Oct 29, 2010 at 11:16 AM, Robert Kern <robert.kern at gmail.com> wrote:

> On 10/29/10 12:02 AM, Chris Rebert wrote:
>
>> On Thu, Oct 28, 2010 at 9:41 PM, Bj Raz<whitequill.bj at gmail.com>  wrote:
>>
>>> I am working with differential equations of the higher roots of negative
>>> one. (dividing enormous numbers into other enormous numbers to come out
>>> with
>>> very reasonable numbers).
>>> I am mixing this in to a script for Maya (the final output is graph-able
>>> as
>>> a spiral.)
>>> I have heard that Sage, would be a good program to do this in, but I'd
>>> like
>>> to try and get this to work in native python if I can.
>>> The script I am trying to port to Python is;
>>> http://pastebin.com/sc1jW1n4.
>>>
>>
>> Unless your code is really long, just include it in the message in the
>> future.
>> So, for the archive:
>> indvar = 200;
>> q = 0;
>> for m = 1:150
>>   lnanswer = (3 * m) * log(indvar) - log(factorial(3 * m))  ;
>> q(m+1) = q(m)+ ((-1)^m) * exp(lnanswer);
>> end
>> q
>>
>> Also, it helps to point out *what language non-Python code is in*. I'm
>> guessing MATLAB in this case.
>>
>> Naive translation attempt (Disclaimer: I don't know much MATLAB):
>>
>> from math import log, factorial, exp
>> indvar = 200
>> q = [0]
>> for m in range(1, 151):
>>     lnanswer = (3 * m) * log(indvar) - log(factorial(3 * m))
>>     q.append(q[-1] + (1 if m % 2 == 0 else -1) * exp(lnanswer))
>> print(q)
>>
>
> I promised that I would reply when the OP posted here. Except you gave the
> answer that I would have.
>
> To the OP: In your code snippet, q(m+1) and q(m) are not function calls.
> They are array indexing operations (with the special semantics that
> assigning beyond the last element in the array appends a new element to the
> array). You are not setting the result of a function to anything, just
> building up an array of results. You don't need symbolic math libraries like
> SAGE for this.
>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless
> enigma
>  that is made terrible by our own mad attempt to interpret it as though it