1 | initial version |

First, the `* I(x*i^(-1))`

part in your `Moebius`

function will only add some useless computation since it is a multiplication by `1`

.

Then, you can define the composition of your `Moebius`

function by itself as follows:

```
M2 = lambda x : Moebius(Moebius(x))
```

If you want the `^2`

notation to work, you have to define a Python class since `^2`

calls the `__pow__`

method of your object, this will require some more work around the following lines:

```
class MyOperator():
def __init__(self, func):
self.func = func
def __pow__(self, exponent):
def iterfunc(x):
result = x
for i in range(exponent):
result = self.func(result)
return result
return MyOperator(iterfunc)
def __call__(self, x):
return self.func(x)
```

Then you can do:

```
sage: f = MyOperator(Moebius)
sage: f(10)
-1
sage: g = f^2
sage: g(10)
0
sage: f(f(10))
0
```

2 | No.2 Revision |

First, the `* I(x*i^(-1))`

part in your `Moebius`

function will only add some useless computation since it is a multiplication by `1`

.

Then, you can define the composition of your `Moebius`

function by itself as follows:

```
M2 = lambda x : Moebius(Moebius(x))
```

If you want the `^2`

notation to work, you have to define a Python class since `^2`

calls the `__pow__`

method of your object, this will require some more work around the following lines:

```
class MyOperator():
def __init__(self, func):
self.func = func
def __pow__(self, exponent):
def iterfunc(x):
result = x
for i in range(exponent):
result = self.func(result)
return result
return MyOperator(iterfunc)
def __call__(self, x):
return self.func(x)
```

Then you can do:

```
sage: f = MyOperator(Moebius)
sage: f(10)
-1
sage: g = f^2
sage: g(10)
0
sage: f(f(10))
0
```

Or similarly:

```
sage: inc = lambda x : x+1
sage: f = MyOperator(inc)
sage: f(14)
15
sage: g = f^12
sage: g(14)
26
```

3 | No.3 Revision |

First, the `* I(x*i^(-1))`

part in your `Moebius`

function will only add some useless computation since it is a multiplication by `1`

.

Then, you can define the composition of your `Moebius`

function by itself as follows:

```
M2 = lambda x : Moebius(Moebius(x))
```

If you want the `^2`

notation to work, you have to define a Python class since `^2`

calls the `__pow__`

method of your object, this will require some more work around the following lines:

```
class MyOperator():
def __init__(self, func):
self.func = func
def __pow__(self, exponent):
def iterfunc(x):
result = x
for i in range(exponent):
result = self.func(result)
return result
return MyOperator(iterfunc)
def __call__(self, x):
return self.func(x)
```

Then you can do:

```
sage: f = MyOperator(Moebius)
sage: f(10)
-1
sage: g = f^2
sage: g(10)
0
sage: f(f(10))
0
```

Or similarly:

```
sage: inc = lambda x : x+1
sage: f = MyOperator(inc)
sage: f(14)
15
sage: g = f^12
sage: g(14)
26
sage: h = f^0
sage: h(100)
100
```

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.