1 | initial version |

I don't think that

```
sage: -0.5 in srange(-1,1,.01)
False
```

is because a mismatch in type. I think this is because `.01`

is not exactly `10^(-2)`

because the latter isn't exactly representable as an IEEE float). Hence we have:

```
sage: -0.5 - srange(-1,1,.01)[50]
-4.44089209850063e-16
```

(adding `.01`

50 times to `-1`

yields a different float). The types are taken care of:

```
sage: -0.5 in srange(-10,10,0.5)
True
```

Don't use equality testing (and hence don't use "in") when working with floats. Also: don't use srange with floats. You'll lose precision.

```
sage: [ (n*0.01)-a for n,a in enumerate(srange(0,0.2,0.01))]
[0.000000000000000,
0.000000000000000,
0.000000000000000,
0.000000000000000,
0.000000000000000,
0.000000000000000,
-6.93889390390723e-18,
0.000000000000000,
0.000000000000000,
0.000000000000000,
1.38777878078145e-17,
1.38777878078145e-17,
1.38777878078145e-17,
2.77555756156289e-17,
2.77555756156289e-17,
0.000000000000000,
0.000000000000000,
0.000000000000000,
-2.77555756156289e-17,
-2.77555756156289e-17]
```

(it gets worse as you go further). srange could in principle test its arguments and revert to a more stable generation formula in case the arguments are floats.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.