1 | initial version |

Like @dan_fulea, I would use the roots of the denominator.

Pasting specific values of `z_1`

and `z_2`

into the example in your question:

```
sage: z_1 = 0.5
sage: z_2 = 2
sage: f(t) = 1/(t^-1 * (t - z_1) * (t - z_2))
```

Check:

```
sage: f
t |--> t/((t - 0.500000000000000)*(t - 2))
```

Find the poles:

```
sage: poles = f.denominator().roots()
sage: poles
[(1/2, 1), (2, 1)]
```

Notice that they come with multiplicity.

Remove the multiplicity and filter by "modulus less than one":

```
sage: poles_in_unit_disc = [r for (r, m) in poles if abs(r) < 1]
[1/2]
```

2 | No.2 Revision |

Like @dan_fulea, I would use the roots of the denominator.

Pasting specific values of `z_1`

and `z_2`

into the example in your question:

```
sage: z_1 = 0.5
sage: z_2 = 2
sage: f(t) = 1/(t^-1 * (t - z_1) * (t - z_2))
```

Check:

```
sage: f
t |--> t/((t - 0.500000000000000)*(t - 2))
```

Find the poles:

```
sage: poles = f.denominator().roots()
sage: poles
[(1/2, 1), (2, 1)]
```

Notice that they come with multiplicity.

Remove the multiplicity and filter by "modulus less than one":

```
sage: poles_in_unit_disc = [r for (r, m) in poles if abs(r) < 1]
[1/2]
```

Here is an example with symbolic `z_1`

and `z_2`

:

```
sage: z_1, z_2 = SR.var("z_1 z_2")
sage: assume(abs(z_1) < 1)
sage: assume(abs(z_2) > 1)
sage: f(t) = 1/(t^-1 * (t - z_1) * (t - z_2))
sage: poles = f.denominator().roots()
sage: poles
[(z_2, 1), (z_1, 1)]
sage: poles_in_unit_disc = [r for (r, m) in poles if abs(r) < 1]
sage: poles_in_unit_disc
[z_1]
```

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.