Ticket #7614 (closed defect: fixed)
change plot to use fast_callable
|Reported by:||was||Owned by:||was|
|Report Upstream:||N/A||Reviewers:||Jason Grout|
|Authors:||William Stein||Merged in:||sage-4.3.rc1|
Description (last modified by mvngu) (diff)
From this sage-support thread:
On Sun, Dec 6, 2009 at 4:51 PM, Michel <email@example.com> wrote: > Thanks for the reply. But no. The problem is not due to the fact that > the function has a singularity. Indeed. > > plot(20*log(abs((1+I*x)^4),10),(x,0,3)) > > fails with the same error which is incomprehensible to me. > > On the other hand turning the expression into a lambda function made > it possible to plot it. Thanks for this practical advice. > > I wish someone could explain this rationally to me. > > 20*log(abs((1+I*x)^4),10) > > seems to be a perfectly fine symbolic expression so IMHO it should be > possible to plot it. This is a bug. There absolutely no reason that plotting should give the error "float() argument must be a string or a number". We could give an error about not being able to evaluate the function at certain points. However, the above error is not OK. The error in fact is not in plotting but in making a fast_float compiled version of the expression: sage: s = 20*log(abs((1+I*x)^4),10) sage: fast_float(s,x) Traceback (most recent call last): ... TypeError: float() argument must be a string or a number In fact, SAge *should* be using fast_callable, not fast_float. This works just fine if you force it manually: s = 20*log(abs((1+I*x)^4),10) plot(fast_callable(s,vars=[x]), (x,0,3)) [[nice picture as output]] Many, many thanks for your bug report. It is bug reports from users like you that really helps Sage to be a first-rate mathematical software system.
- Status changed from needs_review to positive_review
- Reviewers set to Jason Grout
- Authors set to William Stein
- Status changed from positive_review to closed
- Resolution set to fixed
- Merged in set to sage-4.3.rc1
Note: See TracTickets for help on using tickets.