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/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/A1AGG-.fasl for domain OneDimensionalArrayAggregate& 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/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/ORDRING-.fasl for domain OrderedRing& 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/DIFRING-.fasl for domain DifferentialRing& 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/NAALG-.fasl for domain NonAssociativeAlgebra& 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/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/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/STAGG-.fasl for domain StreamAggregate& 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/FS-.fasl for domain FunctionSpace& 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/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/ES-.fasl for domain ExpressionSpace& 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/MAGMAWU-.fasl for domain MagmaWithUnit& 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/ABELMON-.fasl for domain AbelianMonoid& 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/ABELSG-.fasl for domain AbelianSemiGroup& 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/SETCAT-.fasl for domain SetCategory& 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/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/PORDER-.fasl for domain PartialOrder& 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/EVALAB-.fasl for domain Evalable& 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/IEVALAB-.fasl for domain InnerEvalable& 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/ATRIG-.fasl for domain ArcTrigonometricFunctionCategory& 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/ELEMFUN-.fasl for domain ElementaryFunctionCategory& 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/ELAGG-.fasl for domain ExtensibleLinearAggregate& 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/LNAGG-.fasl for domain LinearAggregate& 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/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/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/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/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) fricas Loading /usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/FRMOD-.fasl for domain FramedModule& 1.0 Type: Void
fricas for i in 1..1 repeat print(exp(i) :: Complex Float) fricas Loading /usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MATRIX.fasl for domain Matrix fricas Loading /usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/IIARRAY2.fasl for domain InnerIndexedTwoDimensionalArray fricas Loading /usr/local/lib/fricas/target/x86_64-linux-gnu/algebra/MATCAT-.fasl for domain MatrixCategory& 2.7182818284_590452354 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/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
|