Opened 6 years ago

Closed 5 years ago

#6377 closed defect (fixed)

[with patch, positive review] exp(x) is broken at x=Infinity and x=-Infinity

Reported by: gmhossain Owned by: burcin
Priority: major Milestone: sage-4.1.1
Component: symbolics Keywords: symbolic exp
Cc: Merged in: Sage 4.1.1.rc1
Authors: Burcin Erocal Reviewers: Golam Mortuza Hossain
Report Upstream: Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

exponetial function exp(x) is broken at both x=-Infinity
and x=Infinity

sage: exp(-Infinity)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
....
RuntimeError: x*Infinity with non real x encountered.
sage: exp(Infinity)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
....
RuntimeError: x*Infinity with non real x encountered.

Attachments (1)

trac_6377-exp_infinity.patch (10.5 KB) - added by burcin 5 years ago.
doctests for the fix

Download all attachments as: .zip

Change History (7)

comment:1 Changed 6 years ago by burcin

  • Milestone set to sage-4.1
  • Owner set to burcin
  • Status changed from new to assigned

Good catch! After adding support for infinity in pynac, I forgot to add cases to handle infinity in the eval functions of special functions.

The fix for exp() needs to go into pynac. I don't know what other functions are effected by this. It would be good to try other special functions defined by Sage to see if they handle infinity, or other constants defined by Sage properly.

Changed 5 years ago by burcin

doctests for the fix

comment:2 Changed 5 years ago by burcin

  • Authors set to Burcin Erocal

I have a fix for this in my local pynac tree. I will make a new pynac package available soon.

I checked all the functions defined in inifcns_trans.cpp in pynac. The remaining functions still need to be fixed.

comment:3 Changed 5 years ago by burcin

  • Summary changed from exp(x) is broken at x=Infinity and x=-Infinity to [with patch, needs review] exp(x) is broken at x=Infinity and x=-Infinity

This now depends on the package linked from #6404.

Please follow the instructions on that ticket to apply & test.

comment:4 Changed 5 years ago by gmhossain

Hi Burcin,

I tested this out. It looks fine to me.

I guess, it would be good if we could follow some standard convention for
values of these functions at their poles, brunch cuts. For example, following
looks odd to me

sage: arctan(-Infinity)
-1/2*pi
sage: tan(-pi/2)
Infinity

May be we should discuss this in sage-devel for adopting a convention for
these special values.

There are some other issues that would need future work. For example, you have
fixed values of log at 0

sage: SR(0).log()
-Infinity

However, following still raises error

sage: log(0)
ValueError ...

In any case, this patch fixes lot of issues and should be included.
The remaining issues should be fixed later. I am going to give a positive
review shortly.

comment:5 Changed 5 years ago by gmhossain

  • Reviewers set to Golam Mortuza Hossain
  • Summary changed from [with patch, needs review] exp(x) is broken at x=Infinity and x=-Infinity to [with patch, positive review partial] exp(x) is broken at x=Infinity and x=-Infinity

Note: I am giving partial positive review because I tested this patch against my stable sage-4.1. So if it applies cleanly on Sage-4.1.1.rc1 then that would be full positive from me.

comment:6 Changed 5 years ago by mvngu

  • Merged in set to Sage 4.1.1.rc1
  • Resolution set to fixed
  • Status changed from assigned to closed
  • Summary changed from [with patch, positive review partial] exp(x) is broken at x=Infinity and x=-Infinity to [with patch, positive review] exp(x) is broken at x=Infinity and x=-Infinity

I applied patches in the following order:

  1. the spkg pynac-0.1.8.p2.spkg at #6404
  2. trac_6404-conjugate_typesetting.patch
  3. trac_6401-real_imag_typesetting.patch
  4. trac_6377-exp_infinity.patch
  5. trac_6243-fderivative_hash.patch

All doctests pass in my merge tree. So I'm changing #6404, #6401, #6377 and #6243 to positive review as per Golam's request.

Note: See TracTickets for help on using tickets.