You shoud give us more informations about how `x3`

and `diagAbar`

were constructed.

If i assume, as @slelievre suggests, that `x3`

is an element of `CIF`

(`Complex Interval Field with 53 bits of precision`

), then you can see that no method `.sech()`

is implemented for it:

```
sage: a = CIF(3+I)
sage: a.sech()
AttributeError: 'sage.rings.complex_interval.ComplexIntervalFieldElement' object
has no attribute 'sech'
```

You might be confused by the fact that

```
sage: sech(CIF(3+I))
sech(3+1*I)
```

gives you an answer. It is just that the function `sech()`

does not find the method `.sech()`

for `CIF(3+I)`

, then it answers by a symbolic expression `sech(3+1*I)`

, as you can see by typing:

```
sage: sech(CIF(3+I)).parent()
Symbolic Ring
```

This does not solves anything, since, if you try to get the value of this symbolic expression by converting it to an element of `CIF`

, at some point Sage will have to evaluate `CIF(3+I).sech()`

which is not implemented:

```
sage: CIF(sech(CIF(3+I)))
AttributeError: 'sage.rings.complex_interval.ComplexIntervalFieldElement' object
has no attribute 'sech'
```

As you can check, `CIF`

seems the only field where `sech`

is not implemented:

```
for field in [RR,RDF,RIF,CC,CDF,CIF,SR]:
print str(field) + ' - ' + str(sech(field(1)).parent())
try:
print str(field(1).sech()) + ' - ' + str(field(1).sech().parent())
except Exception as e:
print e
print ''
```

But nothing is lost, as you can do it yourself, since elements of `CIF`

have an `exp()`

method and $sech(x) = \frac{2e^{-x}}{1 + e^{-2x}}$.

Just define:

```
sage: sech = lambda x: 2*exp(-x)/(1+exp(-2*x))
```

But be careful, when you write

```
sage: I * sech(a)
0.0837533280462231? + 0.0540446576423634?*I
```

the coercion system will do the multiplication in the `Symbolic Ring`

since `I`

is an element of the `Symbolic Ring`

.

```
sage: (I * sech(a)).parent()
Symbolic Ring
```

Hence, you should just do:

```
sage: CIF(I) * sech(a)
0.0837533280462231? + 0.0540446576423634?*I
```

And now you will be safe, with respect to the fact that our `sech`

function did not try to minimize the dimaeters of the intervals defining the output, as much as could have done a direct `.sech()`

method defined for elements of `CIF`

.

Could you please add how `x3` and `diagAbar` were constructed so that we can reproduce your problem ?

A simpler example illustrating the error: sage: x3 = CIF(3) sage: B = matrix(CIF,[[3*I*sech(x3), 0], [0, 0]])