The problem here isn't so much to do with trig identities as the big numbers. The issue is that things like factorial(847937526693730893984732849857349) and 1342**(87236487262873**(8732498237693269832+3)+5)-1) evaluate automatically, which causes Python to try to compute them until the memory fills up and it crashes.
The way I would fix this is to create a special BigInteger object, which would wrap large integers and avoid explicit computation. For example, BigInteger(10)**BigInteger(10)**BigInteger(100) would remain unevaluated. It would then use some algorithms and the assumptions system to compute facts. So something like factorial(BigInteger(847937526693730893984732849857349)).is_integer would be True, which would be enough for sin(pi*factorial(BigInteger(847937526693730893984732849857349))) to simplify. There are some cool things that you could do with this, like (2**BigInteger(74207281) - 1).is_prime. For anyone interested, there's probably enough cool stuff that could be done here for a GSoC project. (By the way, I had an issue open in the issue tracker a while ago about this, but I can't find it) Aaron Meurer On Tue, Feb 16, 2016 at 2:02 PM, Jari-Pekka Ikonen <[email protected]> wrote: > Some trigonometric expressions can easily and quickly be simplified without > ever calculating some of the functions in it just by using the known > properties of the functions in the expression. > > For example: > > sin(2*pi) > > is 0. So: > > sin(pi*factorial(847937526693730893984732849857349)) > > is also 0. This does not require calculation of the factorial, but the > property knowledge, that the result of the factorial is an even integer. > > There are several other examples of expressions, like: > > tan(pi*(1342^(87236487262873^(8732498237693269832+3)+5)-1)) > > is also 0. Several others: > > cos(pi*(factorial(8629264243264^64862423642638763847)+1/2)) > > is 0. > > Could this be implemented in sympy? So many other examples would be much > faster to calculate. > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/218ff008-9f3a-479e-8b4e-bca49d646294%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6JTFaC9O08ymvq0tLb1p-1Lz2iuWFduCAL-ZSPyby8k0w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
