axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Axiom-developer] Internal Error : Interpreter code generation faile


From: Michael Becker
Subject: Re: [Axiom-developer] Internal Error : Interpreter code generation failed for expression...
Date: Tue, 21 Jul 2009 16:18:34 +0200
User-agent: KMail/1.7.1

Am Dienstag, 21. Juli 2009 07:47 schrieb Ralf Hemmecke:
> Your "error" is in this line.
>
>  > fallingPower (p,n) == p*fallingPower(p-1,n-1)
>
> Axiom has no chance to figure out at compile time that n-1 is really of
> type NNI as you required in your signature
>
>  > fallingPower : (INT,NNI) -> INT
>
> So the best way to deal with that is to help Axiom.


     
     Ok,

        but can you explain, why  Axiom can  compile test2 ?

        the only difference is line       
                      n(i,j) := fallingPower(i+j,j)  in test0
        and
                      n(i,j) := fallingPower(i,j)  in test2 


     Thanks,  

        Michael                

>
> The following line works for me in FriCAS.
>
> fallingPower (p,n) == p*fallingPower(p-1,(n-1)::NNI)
>
> Maybe you have to add "::NNI" in a few other places.
>
> Hope that helps
> Ralf
>
> On 07/21/2009 05:44 AM, Michael Becker wrote:
> >     Hi,
> >
> >          I have  the followin input-file
> >
> >
> > ------- ma2.input -----------------------------------
> > fallingPower : (INT,NNI) -> INT
> >
> > fallingPower (p,0) == 1
> > fallingPower (p,n) == p*fallingPower(p-1,n-1)
> >
> > test0 () ==
> >    n : Matrix Integer
> >    n := new(3,3,0)
> >    for i in 1..3 repeat _
> >          for j in 1..3 repeat _
> >          n(i,j) := fallingPower(i+j,j)
> >    n
> >
> > test1 () ==
> >    n : Matrix Integer
> >    n := new(3,3,0)
> >    for i in 1..3 repeat _
> >          for j in 1..3 repeat _
> >          n(i,j) := i+j
> >    n
> >
> > test2 () ==
> >    n : Matrix Integer
> >    n := new(3,3,0)
> >    for i in 1..3 repeat _
> >          for j in 1..3 repeat _
> >          n(i,j) := fallingPower(i,j)
> >    n
> >
> >
> > test2()
> > test1()
> > test0()
> > --------------------------------------------------
> >
> >
> >  reading this in axiom gives the follwing error
> >
> >
> > --------------------------------------------------
> >
> >                        AXIOM Computer Algebra System
> >                           Version: Axiom (May 2009)
> >                 Timestamp: Sunday June 21, 2009 at 23:34:35
> > -------------------------------------------------------------------------
> >---- Issue )copyright to view copyright notices.
> >    Issue )summary for a summary of useful system commands.
> >    Issue )quit to leave AXIOM and return to shell.
> > -------------------------------------------------------------------------
> >----
> >
> >    Re-reading compress.daase   Re-reading interp.daase
> >    Re-reading operation.daase
> >    Re-reading category.daase
> >    Re-reading browse.daase
> > (1) ->
> > (1) -> )re ma2
> > (1) ->
> >
> >
> > fallingPower : (INT,NNI) -> INT
> >
> >                                                                    Type:
> > Void
> >
> > fallingPower (p,0) == 1
> >
> >                                                                    Type:
> > Void fallingPower (p,n) == p*fallingPower(p-1,n-1)
> >
> >                                                                    Type:
> > Void
> >
> > test0 () ==
> >    n : Matrix Integer
> >    n := new(3,3,0)
> >    for i in 1..3 repeat _
> >          for j in 1..3 repeat _
> >          n(i,j) := fallingPower(i+j,j)
> >    n
> >
> >                                                                    Type:
> > Void
> >
> > test1 () ==
> >    n : Matrix Integer
> >    n := new(3,3,0)
> >    for i in 1..3 repeat _
> >          for j in 1..3 repeat _
> >          n(i,j) := i+j
> >    n
> >
> >                                                                    Type:
> > Void
> >
> > test2 () ==
> >    n : Matrix Integer
> >    n := new(3,3,0)
> >    for i in 1..3 repeat _
> >          for j in 1..3 repeat _
> >          n(i,j) := fallingPower(i,j)
> >    n
> >
> >                                                                    Type:
> > Void
> >
> >
> > test2()
> >
> >    Loading /usr_local/axiom0509/mnt/opensuse/algebra/MATRIX.o for
> >       domain Matrix
> >    Loading /usr_local/axiom0509/mnt/opensuse/algebra/IIARRAY2.o for
> >       domain InnerIndexedTwoDimensionalArray
> >    There are no library operations named fallingPower
> >       Use HyperDoc Browse or issue
> >                             )what op fallingPower
> >       to learn if there is any operation containing " fallingPower " in
> >       its name.
> >    Cannot find a definition or applicable library operation named
> >       fallingPower with argument type(s)
> >                                    Integer
> >                                    Integer
> >
> >       Perhaps you should use "@" to indicate the required return type,
> >       or "$" to specify which version of the function you need.
> >    AXIOM will attempt to step through and interpret the code.
> >    Compiling function fallingPower with type (Integer,
> >       NonNegativeInteger) -> Integer
> >    Compiling function test2 with type () -> Matrix Integer
> >    Compiling function G1997 with type Integer -> Boolean
> >
> >    Loading /usr_local/axiom0509/mnt/opensuse/algebra/MATCAT-.o for
> >       domain MatrixCategory&
> >    Loading /usr_local/axiom0509/mnt/opensuse/algebra/ARR2CAT-.o for
> >       domain TwoDimensionalArrayCategory&
> >         +1  0  0+
> >
> >    (7)  |2  2  0|
> >
> >         +3  6  6+
> >                                                          Type: Matrix
> > Integer test1()
> >
> >    Compiling function test1 with type () -> Matrix Integer
> >
> >         +2  3  4+
> >
> >    (8)  |3  4  5|
> >
> >         +4  5  6+
> >                                                          Type: Matrix
> > Integer test0()
> >
> >    Compiling function test0 with type () -> Matrix Integer
> >    Loading /usr_local/axiom0509/mnt/opensuse/algebra/UPMP.o for package
> >       UnivariatePolynomialMultiplicationPackage
> >    Loading /usr_local/axiom0509/mnt/opensuse/algebra/UP.o for domain
> >       UnivariatePolynomial
> >    Internal Error
> >    Interpreter code generation failed for expression
> >       (IF (= |#2| 0) 1 (* |#1| (|fallingPower| (- |#1| 1) (- |#2| 1))))
> >
> >
> >
> > --------------------------------------------------
> >
> >
> >
> >    i can't see whats wrong with 'test0'.
> >
> >
> >     -- Michael
> >
> >
> >
> >   ps:  same result in fricas or open-axiom.





------------------------------------------------------------------------------------
 
Diese Nachricht könnte vertrauliche und/oder rechtlich
geschützte Informationen enthalten. Wenn Sie nicht der
Adressat dieser Email sind oder nicht autorisiert sind, diese
für den Adressaten entgegenzunehmen, so ist es untersagt,
diese Nachricht oder in ihr enthaltene Informationen zu nutzen,
zu kopieren, offen zu legen oder anderweitig weiterzuverarbeiten.
Sollten Sie diese Nachricht fälschlicherweise erhalten haben,
verständigen Sie den Absender bitte unverzüglich per Antwort auf
diese Mail und löschen sie diese anschließend.
Vielen Dank für Ihre Kooperation.
------------------------------------------------------------------------------------
 
This message may contain confidential and/or privileged 
information. If you are not the addressee or authorized 
to receive this for the addressee, you must not use, copy, 
disclose or take any action based on this message or any 
information herein. If you have received this message in 
error, please advise the sender immediately by reply e-mail 
and delete this message. Thank you for your co-operation. 
------------------------------------------------------------------------------------
 
We make your business move. 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]