#11753: Fix step=0 in (x)srange
------------------------+---------------------------------------------------
   Reporter:  ppurka    |          Owner:  jason, was                     
       Type:  defect    |         Status:  new                            
   Priority:  minor     |      Milestone:  sage-4.7.2                     
  Component:  graphics  |       Keywords:  srange xsrange division_by_zero
Work_issues:            |       Upstream:  N/A                            
   Reviewer:            |         Author:                                 
     Merged:            |   Dependencies:                                 
------------------------+---------------------------------------------------

Comment(by ppurka):

 Replying to [comment:1 kcrisman]:
 > A few comments:
 >  * Is this new behavior always desirable?

 Having a step size of 1 should produce an empty list if the start and end
 points are the same, or a single element if include_endpoint=True. This
 patch doesn't change either of those conditions. In any other case, the
 step will always be strictly non-zero and the if condition in this patch
 will not be executed.

 >  * Might we want to catch this in plot, rather than 'fixing' misc?

 It could be fixed in plot. I had a look at the plot function, and it seems
 to be a generic function which passes on the arguments to other individual
 plot functions (func.plot(), iirc). So, ''all'' those plot functions will
 have to be fixed.

 >  * Are there any other places this might cause problems?  (E.g., do all
 doctests pass with this?)

 I did do a doctest before submitting this bug report via
 {{{
 ./sage -t devel/sage/sage/misc
 }}}
 and it passed all the tests.

 The output (a rerun) is provided below:
 {{{
 ..._10.04.1_lts-x86_64-Linux> ./sage -t -long devel/sage/sage/misc
 sage -t -long "devel/sage/sage/misc/pager.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/typecheck.py"
          [0.1 s]
 sage -t -long "devel/sage/sage/misc/sh.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/sage_unittest.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/lazy_format.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/sage_timeit.py"
          [2.5 s]
 sage -t -long "devel/sage/sage/misc/edit_module.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/remote_file.py"
          [1.8 s]
 sage -t -long "devel/sage/sage/misc/misc_c.pyx"
          [2.4 s]
 sage -t -long "devel/sage/sage/misc/lazy_import_cache.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/darwin_utilities.pyx"
          [1.8 s]
 sage -t -long "devel/sage/sage/misc/benchmark.py"
          [5.0 s]
 sage -t -long "devel/sage/sage/misc/sage_ostools.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/bitset.pxi"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/mrange.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/test_class_pickling.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/bitset.pyx"
          [2.2 s]
 sage -t -long "devel/sage/sage/misc/getusage.py"
          [2.4 s]
 sage -t -long "devel/sage/sage/misc/functional.py"
          [25.2 s]
 sage -t -long "devel/sage/sage/misc/exceptions.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/hg.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/db.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/persist.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/randstate.pyx"
          [34.0 s]
 sage -t -long "devel/sage/sage/misc/nested_class_test.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/function_mangling.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/session.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/sage_itertools.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/func_persist.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/flatten.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/copying.py"
          [0.1 s]
 sage -t -long "devel/sage/sage/misc/sage_eval.py"
          [2.8 s]
 sage -t -long "devel/sage/sage/misc/__init__.py"
          [0.1 s]
 sage -t -long "devel/sage/sage/misc/defaults.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/random_testing.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/sagex_ds.pyx"
          [2.1 s]
 sage -t -long "devel/sage/sage/misc/misc.py"
          [9.9 s]
 sage -t -long "devel/sage/sage/misc/mathml.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/abstract_method.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/parser.pyx"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/prandom.py"
          [3.4 s]
 sage -t -long "devel/sage/sage/misc/file_to_worksheet.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/all.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/explain_pickle.py"
          [2.2 s]
 sage -t -long "devel/sage/sage/misc/preparser_ipython.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/sage_timeit_class.pyx"
          [7.5 s]
 sage -t -long "devel/sage/sage/misc/lazy_attribute.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/preparser.py"
          [8.0 s]
 sage -t -long "devel/sage/sage/misc/derivative.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/unknown.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/cython.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/multireplace.py"
          [1.8 s]
 sage -t -long "devel/sage/sage/misc/cython_c.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/profiler.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/constant_function.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/inline_fortran.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/attach.py"
          [1.8 s]
 sage -t -long "devel/sage/sage/misc/lazy_import.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/method_decorator.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/trace.py"
          [3.7 s]
 sage -t -long "devel/sage/sage/misc/map_threaded.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/bitset_pxd.pxi"
          [0.1 s]
 sage -t -long "devel/sage/sage/misc/interpreter.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/decorators.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/refcount.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/nested_class.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/latex.py"
          [3.6 s]
 sage -t -long "devel/sage/sage/misc/citation.pyx"
          [4.5 s]
 sage -t -long "devel/sage/sage/misc/html.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/python.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/displayhook.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/reset.pyx"
          [4.0 s]
 sage -t -long "devel/sage/sage/misc/sage_input.py"
          [2.6 s]
 sage -t -long "devel/sage/sage/misc/object_multiplexer.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/allocator.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/bug.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/package.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/test_cpickle_sage.py"
          [0.1 s]
 sage -t -long "devel/sage/sage/misc/proof.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/fpickle.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/sagedoc.py"
          [47.1 s]
 sage -t -long "devel/sage/sage/misc/cachefunc.py"
          [4.6 s]
 sage -t -long "devel/sage/sage/misc/classgraph.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/sageinspect.py"
          [2.8 s]
 sage -t -long "devel/sage/sage/misc/log.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/search.pyx"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/dist.py"
          [2.1 s]
 sage -t -long "devel/sage/sage/misc/classcall_metaclass.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/cache.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/banner.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/latex_macros.py"
          [1.9 s]
 sage -t -long "devel/sage/sage/misc/viewer.py"
          [2.0 s]
 sage -t -long "devel/sage/sage/misc/pickle_old.pyx"
          [1.9 s]

 ----------------------------------------------------------------------
 All tests passed!
 Total time for all tests: 307.3 seconds
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/11753#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to