

last edited 7 years ago by test1 
1 2 3 4  
Editor: test1
Time: 2015/06/01 19:33:59 GMT+0 

Note: 
added: Actually, if FriCAS this specific example should work regardless of ')math'. In the past ')math' caused trouble because ')math' uses coercion to 'OutputForm' and this coercion sometimes was traced causing infinite recursion. There was similar problem without 'math': FriCAS before first use of a routine must first search its internal tables. To make subsequent uses faster FriCAS stores inside domains a search function. At first use this function performs search, replaces entry in domain vector and calls proper function. Subsequent calls go directly to proper function. Tracing replaces functions stored in domain by wrappers that print argument and call proper functions. Resulting indirection is confusing and in the past FriCAS code was wrong which could lead to wrapper infinitely calling itself. Both problems are fixed in current FriCAS. Currently using ')math' typically works better because of types. changed: frequently) also contains a type). frequently) also contains a type.
The addition of )math
below stopped the infinite loop from occurring!
For the version without )math
, see SandBox Trace in Windows :
\begin{axiom} )trace INT )trace EXPR INT )math  added, I thought, to surpress output, but expecting same error )trace SMP 1::EXPR INT \end{axiom}
Actually, if FriCAS this specific example should work regardless of )math
.
In the past )math
caused trouble because )math
uses coercion to
OutputForm
and this coercion sometimes was traced causing infinite
recursion. There was similar problem without 'math': FriCAS before
first use of a routine must first search its internal tables. To make
subsequent uses faster FriCAS stores inside domains a search function.
At first use this function performs search, replaces entry in domain
vector and calls proper function. Subsequent calls go directly to
proper function. Tracing replaces functions stored in domain by
wrappers that print argument and call proper functions. Resulting
indirection is confusing and in the past FriCAS code was wrong which
could lead to wrapper infinitely calling itself. Both problems
are fixed in current FriCAS.
Currently using )math
typically works better because of types.
Basically, anything containing types, will cause trouble when tracing without
)math
. Namely, types usually have many fields, one field contains lists
of operations which may be quite long. Worse yet, typical types contain
several other types. So printing type means printing huge, deeply nested
data structure which leads to unreadable result. During printing this
looks like an infinite loop, but given enough time and memory it will
eventually finish. Now, Spad functions contain a type (namely domain in
which they are defined). So anything containing functions (which happens
frequently) also contains a type.