1 | initial version |

Hello. One possible way to do this is using the double question sign operator (`??`

). For example:

```
A.add_multiple_of_row??
```

will show you something like

```
Source:
def add_multiple_of_row(self, Py_ssize_t i, Py_ssize_t j, s, Py_ssize_t start_col=0):
"""
Add s times row j to row i.
EXAMPLES: We add -3 times the first row to the second row of an
integer matrix, remembering to start numbering rows at zero::
sage: a = matrix(ZZ,2,3,range(6)); a
[0 1 2]
[3 4 5]
sage: a.add_multiple_of_row(1,0,-3)
sage: a
[ 0 1 2]
[ 3 1 -1]
```

Etc...

Unfortunately, as you might guess, this was intended to show not only the docstring, but the whole code. That is why you see strange data types like `Py_ssize_t`

, which comes from Cython, acombination of C and Python, in which this particular subroutine is written.

However, this should not be a problem, since the docstring will guide you further, and it is difficult to run into Cython implementations in every-day use of SageMath. Just ignore strange data types.

2 | No.2 Revision |

Hello. One possible way to do this is using the double question sign operator (`??`

). For example:

```
A.add_multiple_of_row??
```

will show you something like

```
Source:
def add_multiple_of_row(self, Py_ssize_t i, Py_ssize_t j, s, Py_ssize_t start_col=0):
"""
Add s times row j to row i.
EXAMPLES: We add -3 times the first row to the second row of an
integer matrix, remembering to start numbering rows at zero::
sage: a = matrix(ZZ,2,3,range(6)); a
[0 1 2]
[3 4 5]
sage: a.add_multiple_of_row(1,0,-3)
sage: a
[ 0 1 2]
[ 3 1 -1]
```

Etc...

Unfortunately, as you might guess, this was intended to show not only the docstring, but the whole code. That is why you see strange data types like `Py_ssize_t`

, which comes from Cython, acombination of C and Python, in which this particular subroutine is ~~written.~~written. If you don't know the meaning of the keyword `self`

, it is safe to ignore it.

However, this should not be a problem, since the docstring will guide you further, and it is difficult to run into Cython implementations in every-day use of SageMath. Just ignore strange data ~~types.~~

`self`

: consider the signature of the subroutine to be ```
def add_multiple_of_row(i, j, s, start_col=0):
```

3 | No.3 Revision |

Hello. One possible way to do this is using the double question sign operator (`??`

). For example:

```
A.add_multiple_of_row??
```

will show you something like

```
Source:
def add_multiple_of_row(self, Py_ssize_t i, Py_ssize_t j, s, Py_ssize_t start_col=0):
"""
Add s times row j to row i.
EXAMPLES: We add -3 times the first row to the second row of an
integer matrix, remembering to start numbering rows at zero::
sage: a = matrix(ZZ,2,3,range(6)); a
[0 1 2]
[3 4 5]
sage: a.add_multiple_of_row(1,0,-3)
sage: a
[ 0 1 2]
[ 3 1 -1]
```

Etc...

Unfortunately, as you might guess, this was intended to show not only the docstring, but the whole code. That is why you see strange data types like `Py_ssize_t`

, which comes from Cython, acombination of C and Python, in which this particular subroutine is written. If you don't know the meaning of the keyword `self`

, it is safe to ignore it.

However, this should not be a problem, since the docstring will guide you further, and it is difficult to run into Cython implementations in every-day use of SageMath. Just ignore strange data types and also `self`

: consider the signature of the subroutine to be

```
def add_multiple_of_row(i, j, s, start_col=0):
```

You can also use `help(A.add_multiple_of_row)`

, which will show the same, except for the part of the code. (I have not experimented much with this command.)

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.