Vladimir Bondarenko wrote: fricas (1) -> )set message autoload on fricas for i in 1..1 repeat print(sin(i) :: Complex Float) fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INT.fasl
for domain Integer
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EXPR.fasl
for domain Expression
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/KERNEL.fasl
for domain Kernel
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SCACHE.fasl
for package SortedCache
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/VOID.fasl
for domain Void
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/STRING.fasl
for domain String
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/CHAR.fasl
for domain Character
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SINT.fasl
for domain SingleInteger
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SMP.fasl
for domain SparseMultivariatePolynomial
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INDE.fasl
for domain IndexedExponents
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NNI.fasl
for domain NonNegativeInteger
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LIST.fasl
for domain List
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SUP.fasl
for domain SparseUnivariatePolynomial
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SAOS.fasl
for domain SingletonAsOrderedSet
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRAC.fasl
for domain Fraction
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SYMBOL.fasl
for domain Symbol
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ALIST.fasl
for domain AssociationList
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/REF.fasl
for domain Reference
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PRIMARR.fasl
for domain PrimitiveArray
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/A1AGG-.fasl
for domain OneDimensionalArrayAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLY.fasl
for domain Polynomial
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCDT3.fasl
for domain ModularAlgebraicGcdTools3
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCD.fasl
for package ModularAlgebraicGcd
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MEVAL2.fasl
for domain ModularEvaluation2
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCDT4.fasl
for domain ModularAlgebraicGcdTools4
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LA.fasl for
domain LocalAlgebra
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LO.fasl for
domain Localize
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FAKEPOL.fasl
for domain FakePolynomial
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCD2.fasl
for package ModularAlgebraicGcd2
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/AN.fasl for
domain AlgebraicNumber
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FLOAT.fasl
for domain Float
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/COMPLEX.fasl
for domain Complex
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DFLOAT.fasl
for domain DoubleFloat
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/COMPCAT-.fasl
for domain ComplexCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FPS-.fasl
for domain FloatingPointSystem&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RNS-.fasl
for domain RealNumberSystem&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FIELD-.fasl
for domain Field&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EUCDOM-.fasl
for domain EuclideanDomain&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/UFD-.fasl
for domain UniqueFactorizationDomain&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/GCDDOM-.fasl
for domain GcdDomain&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIVRING-.fasl
for domain DivisionRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ORDRING-.fasl
for domain OrderedRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ALGEBRA-.fasl
for domain Algebra&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ENTIRER-.fasl
for domain EntireRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIFRING-.fasl
for domain DifferentialRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RNG-.fasl
for domain Rng&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NAALG-.fasl
for domain NonAssociativeAlgebra&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MODULE-.fasl
for domain Module&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NARING-.fasl
for domain NonAssociativeRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INS-.fasl
for domain IntegerNumberSystem&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PFECAT-.fasl
for domain PolynomialFactorizationExplicit&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PRINT.fasl
for package PrintPackage
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/QFCAT-.fasl
for domain QuotientFieldCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIFEXT-.fasl
for domain DifferentialExtension&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FLINEXP-.fasl
for domain FullyLinearlyExplicitOver&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EF.fasl for
package ElementaryFunction
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/COMMONOP.fasl
for package CommonOperators
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/BOP.fasl
for domain BasicOperator
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NONE.fasl
for domain None
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ALAGG-.fasl
for domain AssociationListAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/TBAGG-.fasl
for domain TableAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LSAGG-.fasl
for domain ListAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ELAGG-.fasl
for domain ExtensibleLinearAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/OUTFORM.fasl
for domain OutputForm
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SEX.fasl
for domain SExpression
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/KDAGG-.fasl
for domain KeyedDictionary&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIAGG-.fasl
for domain Dictionary&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ACFS-.fasl
for domain AlgebraicallyClosedFunctionSpace&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ACF-.fasl
for domain AlgebraicallyClosedField&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FSC2-.fasl
for domain FunctionSpace2&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PDRING-.fasl
for domain PartialDifferentialRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NARNG-.fasl
for domain NonAssociativeRng&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ABELGRP-.fasl
for domain AbelianGroup&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NASRNG-.fasl
for domain NonAssociativeSemiRng&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGMAWU-.fasl
for domain MagmaWithUnit&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ABELMON-.fasl
for domain AbelianMonoid&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ESC2-.fasl
for domain ExpressionSpace2&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/BOP1.fasl
for package BasicOperatorFunctions1
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ORDSET-.fasl
for domain OrderedSet&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ABELSG-.fasl
for domain AbelianSemiGroup&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGMA-.fasl
for domain Magma&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SETCAT-.fasl
for domain SetCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/HASHABL-.fasl
for domain Hashable&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PORDER-.fasl
for domain PartialOrder&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/BASTYPE-.fasl
for domain BasicType&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PR.fasl for
domain PolynomialRing
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FM.fasl for
domain FreeModule
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/IDPO.fasl
for domain IndexedDirectProductObject
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RETRACT-.fasl
for domain RetractableTo&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/OM-.fasl
for domain OpenMath&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRETRCT-.fasl
for domain FullyRetractableTo&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/TRANFUN-.fasl
for domain TranscendentalFunctionCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EVALAB-.fasl
for domain Evalable&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RADCAT-.fasl
for domain RadicalCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/AF.fasl for
package AlgebraicFunction
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LOGIC-.fasl
for domain Logic&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/STAGG-.fasl
for domain StreamAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LNAGG-.fasl
for domain LinearAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/URAGG-.fasl
for domain UnaryRecursiveAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SEXOF.fasl
for domain SExpressionOf
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYCATQ.fasl
for package PolynomialCategoryQuotientFunctions
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYROOT.fasl
for package PolynomialRoots
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INTFACT.fasl
for package IntegerFactorizationPackage
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/IROOT.fasl
for package IntegerRoots
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FR.fasl for
domain Factored
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FACTFUNC.fasl
for package FactoredFunctions
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYCAT-.fasl
for domain PolynomialCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/GPOLCAT-.fasl
for domain MaybeSkewPolynomialCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FAMR-.fasl
for domain FiniteAbelianMonoidRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/AMR-.fasl
for domain AbelianMonoidRing&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FMCAT-.fasl
for domain FreeModuleCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/IEVALAB-.fasl
for domain InnerEvalable&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ELEMFUN-.fasl
for domain ElementaryFunctionCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/HYPCAT-.fasl
for domain HyperbolicFunctionCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ATRIG-.fasl
for domain ArcTrigonometricFunctionCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/TRIGCAT-.fasl
for domain TrigonometricFunctionCategory&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PGCD.fasl
for package PolynomialGcdPackage
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NUMERIC.fasl
for package Numeric
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EXPR2.fasl
for package ExpressionFunctions2
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FS2.fasl
for package FunctionSpaceFunctions2
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYLIFT.fasl
for package PolynomialCategoryLifting
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ES2.fasl
for package ExpressionSpaceFunctions2
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FELEM.fasl
for package FloatElementaryFunctions
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FLOOPS.fasl
for package FloatingPointOperations
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/REPSQ.fasl
for package RepeatedSquaring
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MONOGEN-.fasl
for domain MonogenicAlgebra&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRAMALG-.fasl
for domain FramedAlgebra&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FINRALG-.fasl
for domain FiniteRankAlgebra&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FOUT.fasl
for package FloatingPointConvertion
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ISTRING.fasl
for domain IndexedString
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SRAGG-.fasl
for domain StringAggregate&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/UNISEG.fasl
for domain UniversalSegment
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SEG.fasl
for domain Segment
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/OFTOOL.fasl
for package OutputFormTools
0.8414709848_0789650665
Type: Void
Note that neither Float nor Complex is loaded in (1), only in (2). More surprisingly, UniversalSegment? is also not loaded in (1). (it does not matter if the segment is 1..1 or 1..3). fricas for i in 1..3 repeat print(sin(i)::Complex Float) Type: Void
fricas for i in 1..3 repeat print(a:=sin(i)::Complex Float) Type: Void
Hmm, we need to understand this a bit more: fricas for i in 1..1 repeat print(a:=sin(i)::Complex Float) Type: Void
fricas for i in 1..1 repeat print(a:=(sin(i)::Complex Float)) Type: Void
all give: 0.8414709848 0789650665 At least that is a work-around. But fricas for i in 1..1 repeat print((a:=sin(i))::Complex Float) Type: Void
fricas for i in 1..1 repeat (a:=sin(i); print(a::Complex Float)) Type: Void
Gives: sin(1) print is from PrintPackage?, which calls print from OutputForm?, which calls mathprint$Lisp but the problem lies in print inside a loop (any type, not just a for-loop). The problem seems to be an interpreter problem in parsing. This is confirmed partly by the following transcript. When trying to code this as a package for the compiler, it is not easy to figure out the sequence of functions to use to coerce sin(i) from EXPR INT to Complex Float. I finally found one way, but it may not be what the interpreter is doing:
--%Printest
)abbrev package PRINTEST Printest
Printest: T==C where
EXPR ==> Expression
INT ==> Integer
CF ==> Complex Float
T == with
foo:PositiveInteger->Void
C == add
import EXPR INT
foo(k)==
for i in 1..k repeat
a:=sin(i::INT::Float::CF::EXPR CF)$(EXPR CF)
print(retract(a)$(EXPR CF)@CF::OutputForm)
Of course it makes no difference whether a:= is eliminated or not. And this works correctly. So my tentative conclusion is that the interpreter is "lazy" in (1) to try to figure out this rather involved coercion sequence (Hey, I got it to EXPR INT and I have no idea how to go further to Complex Float, I think it is good enough ...:-), but in (2), it is somehow forced to work harder (Now you want to save the result and I have to type the variable a, ok, ...). Is it a bug? Don't know. There are limitations to the interpreter. Tim: Do you know if there is a system limitation on the level of coercion the interpreter will try before quitting? Can this be reset? This example shows why a large percent of time (my low estimate is 70% and my high is 90%) writing compiled code is spent on coercion. Now, there is still the question: why does this happen only inside a loop? Can one tell more from the way the libraries are loaded (see attached print.out)? Notice in print.out, even after foo(3) is executed, (2) still needs to load another bunch of libraries. Why? William The comments below turned out to be in error: fricas for i in 1..1 repeat print(sqrt(i) :: Complex Float) Type: Void
fricas for i in 1..1 repeat print(exp(i) :: Complex Float) Type: Void
fricas for i in 1..1 repeat print(log(i) :: Complex Float) Type: Void
fricas for i in 1..1 repeat print(atan(i) :: Complex Float) Type: Void
I'd say that it's a bug. A workaround (not a fix...) is to say fricas for i in 1..1 repeat print(sqrt(i) @ Complex Float) fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRMOD-.fasl
for domain FramedModule&
fricas Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FEVALAB-.fasl
for domain FullyEvalableOver&
1.0
Type: Void
It is quite clear that Axioms behaviour will be the same for all operators (defined in op.spad). Tracing the call with fricas )set message bottom on Type: Void
which looks quite strange: Axiom is looking for a function print with argument of type Complex Float, but the thing it prints is not of this type... ... --kratt6, Fri, 28 Dec 2007 14:55:39 -0800 reply Category: Axiom Mathematics => Axiom Interpreter
Status: closed => open
the bug with sin is still open Name:#29 for i in 1..1 repeatprint(sin(i) :: Complex Float) => #29 for i in 1..1 repeat print(sin(i) :: Complex Float)
Status: open => closed
|