#Author := Ayoola Jinadu #email := ajinadu@sfu.ca #Please email me if you have any questions on how to use the code. #INSTRUCTIONS 1. Compile the C codes on a Mac or UNIX machine first with chmod +x makeall and then ./makeall The C codes are eea.c,gdc6.c,linalg.c and intalg.c Please ignore any warning you may get on a Mac machine. These warning dont occur on a UNIX. To test if everything is working run maple < robotarms You should get the same output and Dixon resultant E that is in the file robotarms.out 2. After compilation, create a file on your machine and in the file, type the following : read det; read nextprime; read newdeg; read dixres; read dixon; read minor; read Bmbot; with(LinearAlgebra): 3. To compute the Dixon Resultant of a polynomial system with n variables and m parameters : a. Select the n-1 variables to eliminate and put them in a list named elim. b. The variable you left out of the elim list is the main variable. c. Put all the polynomial equations in a list named Sys. d. Type M := dixonmatrix(Sys,elim); to produce the Dixon Matrix M. 4. The Dixon Matrix M may be decomposed into blocks. Decomposing the Dixon matrix into blocks speeds up the determinant computation as one block is often sufficient. In the same file, get any blocks type as follows. rank,rows,cols := minor(M): printf(" rank = %d\n", rank ): B := M[rows,cols]: # extract minor L := StronglyConnectedBlocks(B): BlockStructure = map(RowDimension,L); 5. "BlockStructure" will display the number of blocks available. If there are more than 1 one blocks in the Dixon Matrix M, select the smallest block in the list L. 6. Assign X to be the list of all the m parameters and the main variable. So your list X has m+1 elements. 7. Type the following in the current file: R := convert(L[1],listlist): # R is the chosen block from list L and it is converted to a list of list of polynomials rt := [R,X,RowDimension(R)]: n := rt[3]; deg_M := [seq( max(seq(seq(degree(rt[1][i][j],var),i=1..n),j=1..n)), var in X )]; GlobalCArray := Array(0..n-1,0..n-1,order=C_order,datatype=integer[8]): E := DixonRes(BB,X); 8. Save the file with a name say filename and run the code in the file by typing maple filename or maple < filename > output & on your machine If you use maple < filename > output &, a file named output is automatically created on your machine and the answer you want "E" is in the output file. 9. If you are confused check and run the test files. The test files are image3d, robotarms, heron5d and storti. Enjoy!