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: Ralf Hemmecke Subject: Re: [Axiom-developer] Internal Error : Interpreter code generation failed for expression... Date: Tue, 21 Jul 2009 07:47:27 +0200 User-agent: Thunderbird 2.0.0.22 (X11/20090608)

```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.

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.
```
```

```

reply via email to

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