|
|
|
last edited 11 years ago by test1 |
| 1 2 3 | ||
|
Editor: test1
Time: 2014/05/13 16:31:33 GMT+0 |
||
| Note: | ||
added:
From test1 Tue May 13 16:31:33 +0000 2014
From: test1
Date: Tue, 13 May 2014 16:31:33 +0000
Subject:
Message-ID: <20140513163133+0000@axiom-wiki.newsynthesis.org>
Status: open => closed
Vladimir Bondarenko wrote:
(1) -> )set message autoload on
for i in 1..1 repeat print(sin(i) :: Complex Float)
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INT.fasl
for domain Integer
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EXPR.fasl
for domain Expression
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/KERNEL.fasl
for domain Kernel
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SCACHE.fasl
for package SortedCache
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/VOID.fasl
for domain Void
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/STRING.fasl
for domain String
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/CHAR.fasl
for domain Character
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SINT.fasl
for domain SingleInteger
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SMP.fasl
for domain SparseMultivariatePolynomial
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INDE.fasl
for domain IndexedExponents
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NNI.fasl
for domain NonNegativeInteger
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LIST.fasl
for domain List
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SUP.fasl
for domain SparseUnivariatePolynomial
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SAOS.fasl
for domain SingletonAsOrderedSet
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRAC.fasl
for domain Fraction
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SYMBOL.fasl
for domain Symbol
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ALIST.fasl
for domain AssociationList
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/REF.fasl
for domain Reference
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PRIMARR.fasl
for domain PrimitiveArray
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/A1AGG-.fasl
for domain OneDimensionalArrayAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLY.fasl
for domain Polynomial
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCDT3.fasl
for domain ModularAlgebraicGcdTools3
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCD.fasl
for package ModularAlgebraicGcd
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MEVAL2.fasl
for domain ModularEvaluation2
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCDT4.fasl
for domain ModularAlgebraicGcdTools4
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LA.fasl for
domain LocalAlgebra
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LO.fasl for
domain Localize
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FAKEPOL.fasl
for domain FakePolynomial
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGCD2.fasl
for package ModularAlgebraicGcd2
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/AN.fasl for
domain AlgebraicNumber
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FLOAT.fasl
for domain Float
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/COMPLEX.fasl
for domain Complex
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DFLOAT.fasl
for domain DoubleFloat
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/COMPCAT-.fasl
for domain ComplexCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FPS-.fasl
for domain FloatingPointSystem&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RNS-.fasl
for domain RealNumberSystem&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FIELD-.fasl
for domain Field&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EUCDOM-.fasl
for domain EuclideanDomain&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/UFD-.fasl
for domain UniqueFactorizationDomain&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/GCDDOM-.fasl
for domain GcdDomain&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIVRING-.fasl
for domain DivisionRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ORDRING-.fasl
for domain OrderedRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ALGEBRA-.fasl
for domain Algebra&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ENTIRER-.fasl
for domain EntireRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIFRING-.fasl
for domain DifferentialRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RNG-.fasl
for domain Rng&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NAALG-.fasl
for domain NonAssociativeAlgebra&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MODULE-.fasl
for domain Module&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NARING-.fasl
for domain NonAssociativeRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INS-.fasl
for domain IntegerNumberSystem&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PFECAT-.fasl
for domain PolynomialFactorizationExplicit&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PRINT.fasl
for package PrintPackage
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/QFCAT-.fasl
for domain QuotientFieldCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIFEXT-.fasl
for domain DifferentialExtension&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FLINEXP-.fasl
for domain FullyLinearlyExplicitOver&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EF.fasl for
package ElementaryFunction
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/COMMONOP.fasl
for package CommonOperators
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/BOP.fasl
for domain BasicOperator
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NONE.fasl
for domain None
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ALAGG-.fasl
for domain AssociationListAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/TBAGG-.fasl
for domain TableAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LSAGG-.fasl
for domain ListAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ELAGG-.fasl
for domain ExtensibleLinearAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/OUTFORM.fasl
for domain OutputForm
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SEX.fasl
for domain SExpression
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/KDAGG-.fasl
for domain KeyedDictionary&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/DIAGG-.fasl
for domain Dictionary&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ACFS-.fasl
for domain AlgebraicallyClosedFunctionSpace&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ACF-.fasl
for domain AlgebraicallyClosedField&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FSC2-.fasl
for domain FunctionSpace2&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PDRING-.fasl
for domain PartialDifferentialRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NARNG-.fasl
for domain NonAssociativeRng&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ABELGRP-.fasl
for domain AbelianGroup&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NASRNG-.fasl
for domain NonAssociativeSemiRng&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGMAWU-.fasl
for domain MagmaWithUnit&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ABELMON-.fasl
for domain AbelianMonoid&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ESC2-.fasl
for domain ExpressionSpace2&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/BOP1.fasl
for package BasicOperatorFunctions1
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ORDSET-.fasl
for domain OrderedSet&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ABELSG-.fasl
for domain AbelianSemiGroup&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MAGMA-.fasl
for domain Magma&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SETCAT-.fasl
for domain SetCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/HASHABL-.fasl
for domain Hashable&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PORDER-.fasl
for domain PartialOrder&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/BASTYPE-.fasl
for domain BasicType&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PR.fasl for
domain PolynomialRing
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FM.fasl for
domain FreeModule
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/IDPO.fasl
for domain IndexedDirectProductObject
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RETRACT-.fasl
for domain RetractableTo&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/OM-.fasl
for domain OpenMath&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRETRCT-.fasl
for domain FullyRetractableTo&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/TRANFUN-.fasl
for domain TranscendentalFunctionCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EVALAB-.fasl
for domain Evalable&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/RADCAT-.fasl
for domain RadicalCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/AF.fasl for
package AlgebraicFunction
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LOGIC-.fasl
for domain Logic&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/STAGG-.fasl
for domain StreamAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/LNAGG-.fasl
for domain LinearAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/URAGG-.fasl
for domain UnaryRecursiveAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SEXOF.fasl
for domain SExpressionOf
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYCATQ.fasl
for package PolynomialCategoryQuotientFunctions
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYROOT.fasl
for package PolynomialRoots
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/INTFACT.fasl
for package IntegerFactorizationPackage
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/IROOT.fasl
for package IntegerRoots
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FR.fasl for
domain Factored
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FACTFUNC.fasl
for package FactoredFunctions
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYCAT-.fasl
for domain PolynomialCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/GPOLCAT-.fasl
for domain MaybeSkewPolynomialCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FAMR-.fasl
for domain FiniteAbelianMonoidRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/AMR-.fasl
for domain AbelianMonoidRing&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FMCAT-.fasl
for domain FreeModuleCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/IEVALAB-.fasl
for domain InnerEvalable&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ELEMFUN-.fasl
for domain ElementaryFunctionCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/HYPCAT-.fasl
for domain HyperbolicFunctionCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ATRIG-.fasl
for domain ArcTrigonometricFunctionCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/TRIGCAT-.fasl
for domain TrigonometricFunctionCategory&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/PGCD.fasl
for package PolynomialGcdPackage
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/NUMERIC.fasl
for package Numeric
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/EXPR2.fasl
for package ExpressionFunctions2
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FS2.fasl
for package FunctionSpaceFunctions2
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/POLYLIFT.fasl
for package PolynomialCategoryLifting
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ES2.fasl
for package ExpressionSpaceFunctions2
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FELEM.fasl
for package FloatElementaryFunctions
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FLOOPS.fasl
for package FloatingPointOperations
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/REPSQ.fasl
for package RepeatedSquaring
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MONOGEN-.fasl
for domain MonogenicAlgebra&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRAMALG-.fasl
for domain FramedAlgebra&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FINRALG-.fasl
for domain FiniteRankAlgebra&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FOUT.fasl
for package FloatingPointConvertion
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/ISTRING.fasl
for domain IndexedString
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SRAGG-.fasl
for domain StringAggregate&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/UNISEG.fasl
for domain UniversalSegment
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/SEG.fasl
for domain Segment
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/OFTOOL.fasl
for package OutputFormTools
0.8414709848_0789650665
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).
for i in 1..3 repeat print(sin(i)::Complex Float)
0.8414709848_0789650665 0.9092974268_256816954 0.1411200080_598672221
for i in 1..3 repeat print(a:=sin(i)::Complex Float)
0.8414709848_0789650665 0.9092974268_256816954 0.1411200080_598672221
Hmm, we need to understand this a bit more:
for i in 1..1 repeat print(a:=sin(i)::Complex Float)
0.8414709848_0789650665
for i in 1..1 repeat print(a:=(sin(i)::Complex Float))
0.8414709848_0789650665
all give:
0.8414709848 0789650665
At least that is a work-around.
But
for i in 1..1 repeat print((a:=sin(i))::Complex Float)
0.8414709848_0789650665
for i in 1..1 repeat (a:=sin(i); print(a::Complex Float))
0.8414709848_0789650665
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:
for i in 1..1 repeat print(sqrt(i) :: Complex Float)
1.0
for i in 1..1 repeat print(exp(i) :: Complex Float)
2.7182818284_590452354
for i in 1..1 repeat print(log(i) :: Complex Float)
0.0
for i in 1..1 repeat print(atan(i) :: Complex Float)
0.7853981633_9744830961
I'd say that it's a bug. A workaround (not a fix...) is to say
for i in 1..1 repeat print(sqrt(i) @ Complex Float)
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRMOD-.fasl
for domain FramedModule&
Loading
/usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FEVALAB-.fasl
for domain FullyEvalableOver&
1.0
It is quite clear that Axioms behaviour will be the same for all operators (defined in op.spad).
Tracing the call with
)set message bottom on
Your user access level is compiler and this set option is therefore not available. See the )set userlevel command for more information. for i in 1..3 repeat print((sin(i))::Complex Float)
0.8414709848_0789650665 0.9092974268_256816954 0.1411200080_598672221
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...
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