## 271 Reputation

17 years, 207 days

## protect table...

Maple
Hello, I was wondering whether there is any way to protect a table. I have the following situation: > f := table([ a = table([ a1 = 1, a2 = 2 ]), b = table([ b1 = 3, b2 = 4 ]) ]); That is, f[a] returns another indexed table. Now, when I do protect(f), protect(f[a]) or even protect(f[a][a1]), I cannot change its value any more: > protect(f); > f[a][a1] := test; Error, attempting to assign to array/table `f` which is protected But if I assign f[a] to a new variable g, then I can do it: > g := f[a]; > g[a1] := test; > eval(f); table([a = table([a1 = test, a2 = c]), d = table([d1 = i, d2 = j])])

## assume and type versus is...

Hello, I am in doubt with the following situation. It started with this: > f := signum(z)*infinity; > type(f,complex(extended_numeric)); # false > is(f,complex(extended_numeric)); # false Now I make an extra assumption on z, and do these checks again: > assume(z,real); > type(f,complex(extended_numeric)); # false > is(f,complex(extended_numeric)); # true I was wondering why the second time is results in true while type does not... I am just checking whether the expressions is an infinity (possibly in complex form), and so I don't see where the difference could come from.

## Floating-point evaluation...

Hello, I have a question regarding the floating-point evaluation of certain expressions. In the helppage for float we read the following: "The presence of a floating-point number in an expression generally implies that the computation will use floating-point evaluation. The floating-point evaluator, evalf, can be used to force computation to take place in the floating-point domain." So, this explains the following behavior: > 0.1+1/3; 0.4333333333 But what is the difference with the following expression: > 0.1 + Pi; 0.1 + Pi This contradicts what is in the float helppage; both Pi and 1/3 are exact mathematical quantities, yet 0.1 is a float, so one would expect a floating-point behavior to be happening. Maybe this behavior is explained somewhere else?

## assuming and procedure parameters...

Maple
Hello,

I am looking for an explanation for the following behavior :

> f := proc(x) somefunc(x) end proc:
> a := table([variable=z]):
> f(a);
somefunc(a)
> f(a) assuming z::real;
somefunc(table([variable=z]))

Why is 'a' replaced with its corresponding table in the second case? And is it possible to use the name 'a' in the return value?