Annotation of OpenXM/doc/Papers/dagb-noro.tex, Revision 1.2
1.2 ! noro 1: % $OpenXM: OpenXM/doc/Papers/dagb-noro.tex,v 1.1 2001/10/03 08:32:58 noro Exp $
1.1 noro 2: \setlength{\parskip}{10pt}
3:
4: \begin{slide}{}
1.2 ! noro 5: \begin{center}
! 6: \fbox{\large Part I : Overview and history of Risa/Asir}
! 7: \end{center}
! 8: \end{slide}
! 9:
! 10: \begin{slide}{}
1.1 noro 11: \fbox{A computer algebra system Risa/Asir}
12:
13: \begin{itemize}
14: \item Old style software for polynomial computation
15:
16: \begin{itemize}
17: \item Domain specification is not necessary prior to computation
18: \item automatic conversion of inputs into internal canonical forms
19: \end{itemize}
20:
21: \item User language with C-like syntax
22:
23: \begin{itemize}
24: \item No type declaration of variables
25: \item Builtin debugger for user programs
26: \end{itemize}
27:
28: \item Open source
29:
30: \begin{itemize}
31: \item Whole source tree is available via CVS
32: \end{itemize}
33:
1.2 ! noro 34: \item OpenXM ((Open message eXchange protocol for Mathematics) interface
1.1 noro 35:
36: \begin{itemize}
37: \item As a client : can call procedures on other OpenXM servers
38: \item As a server : offers all its functionalities to OpenXM clients
39: \item As a library : OpenXM functionality is available via subroutine calls
40: \end{itemize}
41: \end{itemize}
42: \end{slide}
43:
44: \begin{slide}{}
45: \fbox{Major functionalities}
46:
47: \begin{itemize}
48: \item Fundamental polynomial arithmetics
49:
50: \begin{itemize}
51: \item Internal form of a polynomial : recursive representaion or distributed
52: representation
53: \end{itemize}
54:
55: \item Polynomial factorization
56:
57: \begin{itemize}
58: \item Univariate factorization over the rationals, algebraic number fields and various finite fields
59:
60: \item Multivariate factorization over the rationals
61: \end{itemize}
62:
63: \item Groebner basis computation
64:
65: \begin{itemize}
1.2 ! noro 66: \item Buchberger and $F_4$ [Faug\'ere] algorithm
1.1 noro 67:
1.2 ! noro 68: \item Change of ordering/RUR [Rouillier] of 0-dimensional ideals
1.1 noro 69:
70: \item Primary ideal decomposition
71:
72: \item Computation of $b$-function
73: \end{itemize}
74:
1.2 ! noro 75: \item PARI [PARI] library interface
1.1 noro 76:
77: \item Paralell distributed computation under OpenXM
78: \end{itemize}
79: \end{slide}
80:
81: \begin{slide}{}
82: \fbox{History of development : ---1994}
83:
84: \begin{itemize}
85: \item --1989
86:
87: Several subroutines were developed for a Prolog program.
88:
89: \item 1989--1992
90:
91: \begin{itemize}
1.2 ! noro 92: \item Reconfigured as Risa/Asir with a parser and Boehm's conservative GC [Boehm]
1.1 noro 93:
94: \item Developed univariate and multivariate factorizers over the rationals.
95: \end{itemize}
96:
97: \item 1992--1994
98:
99: \begin{itemize}
1.2 ! noro 100: \item Started implementation of Buchberger algorithm
1.1 noro 101:
1.2 ! noro 102: Written in user language $\Rightarrow$ rewritten in C (by Murao)
! 103:
! 104: $\Rightarrow$ trace lifting [Traverso]
1.1 noro 105:
106: \item Univariate factorization over algebraic number fields
107:
108: Intensive use of successive extension, non-squarefree norms
109: \end{itemize}
110: \end{itemize}
111:
112: \end{slide}
113:
114: \begin{slide}{}
115: \fbox{History of development : 1994-1996}
116:
117: \begin{itemize}
1.2 ! noro 118: \item Free distribution of binary versions from Fujitsu
1.1 noro 119:
120: \item Primary ideal decomposition
121:
122: \begin{itemize}
1.2 ! noro 123: \item Shimoyama-Yokoyama algorithm [SY]
1.1 noro 124: \end{itemize}
125:
126: \item Improvement of Buchberger algorithm
127:
128: \begin{itemize}
129: \item Trace lifting+homogenization
130:
131: \item Omitting check by compatible prime
132:
133: \item Modular change of ordering, Modular RUR
134:
1.2 ! noro 135: These are joint works with Yokoyama [NY]
1.1 noro 136: \end{itemize}
137: \end{itemize}
138:
139: \end{slide}
140:
141: \begin{slide}{}
142: \fbox{History of development : 1996-1998}
143:
144: \begin{itemize}
145: \item Distributed compuatation
146:
147: \begin{itemize}
148: \item A prototype of OpenXM
149: \end{itemize}
150:
151: \item Improvement of Buchberger algorithm
152:
153: \begin{itemize}
154: \item Content reduction during nomal form computation
155:
156: \item Its parallelization by the above facility
157:
1.2 ! noro 158: \item Computation of odd order replicable functions [Noro]
1.1 noro 159:
160: Risa/Asir : it took 5days to compute a DRL basis ({\it McKay})
161:
1.2 ! noro 162: Faug\`ere FGb : computation of the DRL basis 53sec
1.1 noro 163: \end{itemize}
164:
165:
166: \item Univariate factorization over large finite fields
167:
168: \begin{itemize}
169: \item To implement Schoof-Elkies-Atkin algorithm
170:
1.2 ! noro 171: Counting rational points on elliptic curves
1.1 noro 172:
1.2 ! noro 173: --- not free But related functions are freely available
1.1 noro 174: \end{itemize}
175: \end{itemize}
176:
177: \end{slide}
178:
179: \begin{slide}{}
180: \fbox{History of development : 1998-2000}
181: \begin{itemize}
182: \item OpenXM
183:
184: \begin{itemize}
185: \item OpenXM specification was written by Noro and Takayama
186:
1.2 ! noro 187: Borrowed idea on encoding, phrase book from OpenMath [OpenMath]
! 188:
1.1 noro 189: \item Functions for distributed computation were rewritten
190: \end{itemize}
191:
192: \item Risa/Asir on Windows
193:
194: \begin{itemize}
195: \item Requirement from a company for which Noro worked
196:
197: Written in Visual C++
198: \end{itemize}
199:
200: \item Test implementation of $F_4$
201:
202: \begin{itemize}
1.2 ! noro 203: \item Implemented according to [Faug\`ere]
! 204:
1.1 noro 205: \item Over $GF(p)$ : pretty good
206:
207: \item Over the rationals : not so good except for {\it McKay}
208: \end{itemize}
209: \end{itemize}
210: \end{slide}
211:
212: \begin{slide}{}
213: \fbox{History of development : 2000-current}
214: \begin{itemize}
215: \item The source code is freely available
216:
217: \begin{itemize}
1.2 ! noro 218: \item Noro moved from Fujitsu to Kobe university
1.1 noro 219:
1.2 ! noro 220: Started Kobe branch [Risa/Asir]
1.1 noro 221: \end{itemize}
222:
1.2 ! noro 223: \item OpenXM [OpenXM]
1.1 noro 224:
225: \begin{itemize}
226: \item Revising the specification : OX-RFC100, 101, (102)
227:
1.2 ! noro 228: \item OX-RFC102 : communications between servers via MPI
1.1 noro 229: \end{itemize}
230:
231: \item Rings of differential operators
232:
233: \begin{itemize}
1.2 ! noro 234: \item Buchberger algorithm [Takayama]
1.1 noro 235:
1.2 ! noro 236: \item $b$-function computation [OT]
1.1 noro 237:
238: Minimal polynomial computation by modular method
239: \end{itemize}
240: \end{itemize}
241:
242: \end{slide}
243:
244: \begin{slide}{}
245: \fbox{Status of each component --- Factorizer}
246:
247: \begin{itemize}
248: \item 10 years ago
249:
250: its performace was fine compared with existing software
1.2 ! noro 251: like REDUCE, Mathematica.
1.1 noro 252:
253: \item 4 years ago
254:
255: Univarate factorization over algebraic number fields was
256: still fine because of some tricks on factoring polynomials
257: derived from norms.
258:
259: \item Current
260:
261: Multivariate : not so bad
262:
263: Univariate : completely obsolete by M. van Hoeij's new algorithm
1.2 ! noro 264: [Hoeij]
1.1 noro 265: \end{itemize}
266:
267: \end{slide}
268:
269: \begin{slide}{}
270: \fbox{Status of each component --- Groebner basis related functions}
271:
272: \begin{itemize}
273: \item 8 years ago
274:
275: The performace was poor with only the sugar strategy.
276:
277: \item 7 years ago
278:
279: Rather fine with trace lifting but Faug\`ere's (old)Gb was more
280: efficient.
281:
282: Homogenization+trace lifting made it possible to compute
283: wider range of Groebner bases.
284:
285: \item 4 years ago
286:
287: Modular RUR was comparable with Rouillier's implementation.
288:
289: \item Current
290:
291: FGb seems much more efficient than our $F_4$ implementation.
292:
293: Singular's Groebner basis computation is also several times
294: faster than Risa/Asir, because Singular seems to have efficient
295: monomial and polynomial representation.
296:
297: \end{itemize}
298: \end{slide}
299:
300: \begin{slide}{}
1.2 ! noro 301: \fbox{OpenXM}
! 302:
! 303: \begin{itemize}
! 304: \item An environment for parallel distributed computation
! 305:
! 306: Both for interactive, non-interactive environment
! 307:
! 308: \item Message passing
! 309:
! 310: OX (OpenXM) message : command and data
! 311:
! 312: \item Hybrid command execution
! 313:
! 314: \begin{itemize}
! 315: \item Stack machine command
! 316:
! 317: push, pop, function execution, $\ldots$
! 318:
! 319: \item accepts its own command sequences
! 320:
! 321: {\tt execute\_string} --- easy to use
! 322: \end{itemize}
! 323:
! 324: \item Data is represented as CMO
! 325:
! 326: CMO (Common Mathematical Object format)
! 327:
! 328: --- Serialized representation of mathematical object
! 329:
! 330: {\sl Integer32}, {\sl Cstring}, {\sl List}, {\sl ZZ}, $\ldots$
! 331: \end{itemize}
! 332: \end{slide}
! 333:
! 334:
! 335: \begin{slide}{}
! 336: \fbox{OpenXM and OpenMath}
! 337:
! 338: \begin{itemize}
! 339: \item OpenMath
! 340:
! 341: \begin{itemize}
! 342: \item A standard for representing mathematical objects
! 343:
! 344: \item CD (Content Dictionary) : assigns semantics to symbols
! 345:
! 346: \item Phrasebook : convesion between internal and OpenMath objects.
! 347:
! 348: \item Encoding : format for actual data exchange
! 349: \end{itemize}
! 350:
! 351: \item OpenXM
! 352:
! 353: \begin{itemize}
! 354: \item Specification for encoding and exchanging messages
! 355:
! 356: \item It also specifies behavior of servers and session management
! 357: \end{itemize}
! 358:
! 359: \end{itemize}
! 360: \end{slide}
! 361:
! 362: \begin{slide}{}
! 363: \fbox{OpenXM server interface in Risa/Asir}
! 364:
! 365: \begin{itemize}
! 366: \item TCP/IP stream
! 367:
! 368: \begin{itemize}
! 369: \item Launcher
! 370:
! 371: A client executes a launcher on a host.
! 372:
! 373: The launcher launches a server on the same host.
! 374:
! 375: \item Server
! 376:
! 377: A server reads from the descriptor 3, write to the descriptor 4.
! 378:
! 379: \end{itemize}
! 380:
! 381: \item Subroutine call
! 382:
! 383: Risa/Asir subroutine library provides interfaces corresponding to
! 384: pushing and popping data and executing stack commands.
! 385: \end{itemize}
! 386: \end{slide}
! 387:
! 388: \begin{slide}{}
! 389: \fbox{OpenXM client interface in Risa/Asir}
! 390:
! 391: \begin{itemize}
! 392: \item Primitive interface functions
! 393:
! 394: Pushing and popping data, sending commands etc.
! 395:
! 396: \item Convenient functions
! 397:
! 398: Launching servers, calling remote functions,
! 399: interrupting remote executions etc.
! 400:
! 401: \item Parallel distributed computation is easy
! 402:
! 403: Simple parallelization is practically important
! 404:
! 405: Competitive computation is easily realized
! 406: \end{itemize}
! 407: \end{slide}
! 408:
! 409:
! 410: %\begin{slide}{}
! 411: %\fbox{CMO = Serialized representation of mathematical object}
! 412: %
! 413: %\begin{itemize}
! 414: %\item primitive data
! 415: %\begin{eqnarray*}
! 416: %\mbox{Integer32} &:& ({\tt CMO\_INT32}, {\sl int32}\ \mbox{n}) \\
! 417: %\mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\, \mbox{ n}, {\sl string}\, \mbox{s}) \\
! 418: %\mbox{List} &:& ({\tt CMO\_LIST}, {\sl int32}\, len, ob[0], \ldots,ob[m-1])
! 419: %\end{eqnarray*}
! 420: %
! 421: %\item numbers and polynomials
! 422: %\begin{eqnarray*}
! 423: %\mbox{ZZ} &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots
! 424: %{\sl byte}\, \mbox{a[$|$f$|$]} ) \\
! 425: %\mbox{Monomial32}&:& ({\tt CMO\_MONOMIAL32}, n, \mbox{e[1]}, \ldots, \mbox{e[n]}, \mbox{Coef}) \\
! 426: %\mbox{Coef}&:& \mbox{ZZ} | \mbox{Integer32} \\
! 427: %\mbox{Dpolynomial}&:& ({\tt CMO\_DISTRIBUTED\_POLYNOMIAL},\\
! 428: % & & m, \mbox{DringDefinition}, \mbox{Monomial32}, \ldots)\\
! 429: %\mbox{DringDefinition}
! 430: % &:& \mbox{DMS of N variables} \\
! 431: % & & ({\tt CMO\_RING\_BY\_NAME}, name) \\
! 432: % & & ({\tt CMO\_DMS\_GENERIC}) \\
! 433: %\end{eqnarray*}
! 434: %\end{itemize}
! 435: %\end{slide}
! 436: %
! 437: %\begin{slide}{}
! 438: %\fbox{Stack based communication}
! 439: %
! 440: %\begin{itemize}
! 441: %\item Data arrived a client
! 442: %
! 443: %Pushed to the stack
! 444: %
! 445: %\item Result
! 446: %
! 447: %Pushd to the stack
! 448: %
! 449: %Written to the stream when requested by a command
! 450: %
! 451: %\item The reason why we use the stack
! 452: %
! 453: %\begin{itemize}
! 454: %\item Stack = I/O buffer for (possibly large) objects
! 455: %
! 456: %Multiple requests can be sent before their exection
! 457: %
! 458: %A server does not get stuck in sending results
! 459: %\end{itemize}
! 460: %\end{itemize}
! 461: %\end{slide}
! 462:
! 463: \begin{slide}{}
! 464: \fbox{Executing functions on a server (I) --- {\tt SM\_executeFunction}}
! 465:
! 466: \begin{enumerate}
! 467: \item (C $\rightarrow$ S) Arguments are sent in binary encoded form.
! 468: \item (C $\rightarrow$ S) The number of aruments is sent as {\sl Integer32}.
! 469: \item (C $\rightarrow$ S) A function name is sent as {\sl Cstring}.
! 470: \item (C $\rightarrow$ S) A command {\tt SM\_executeFunction} is sent.
! 471: \item The result is pushed to the stack.
! 472: \item (C $\rightarrow$ S) A command {\tt SM\_popCMO} is sent.
! 473: \item (S $\rightarrow$ C) The result is sent in binary encoded form.
! 474: \end{enumerate}
! 475:
! 476: $\Rightarrow$ Communication is fast, but functions for binary data
! 477: conversion are necessary.
! 478: \end{slide}
! 479:
! 480: \begin{slide}{}
! 481: \fbox{Executing functions on a server (II) --- {\tt SM\_executeString}}
! 482:
! 483: \begin{enumerate}
! 484: \item (C $\rightarrow$ S) A character string represeting a request in a server's
! 485: user language is sent as {\sl Cstring}.
! 486: \item (C $\rightarrow$ S) A command {\tt SM\_executeString} is sent.
! 487: \item The result is pushed to the stack.
! 488: \item (C $\rightarrow$ S) A command {\tt SM\_popString} is sent.
! 489: \item (S $\rightarrow$ C) The result is sent in readable form.
! 490: \end{enumerate}
! 491:
! 492: $\Rightarrow$ Communication may be slow, but the client parser may be
! 493: enough to read the result.
! 494: \end{slide}
! 495:
! 496: \begin{slide}{}
! 497: \fbox{Example of distributed computation --- $F_4$ vs. $Buchberger$ }
! 498:
! 499: \begin{verbatim}
! 500: /* competitive Gbase computation over GF(M) */
! 501: /* Cf. A.28 in SINGULAR Manual */
! 502: /* Process list is specified as an option : grvsf4(...|proc=P) */
! 503: def grvsf4(G,V,M,O)
! 504: {
! 505: P = getopt(proc);
! 506: if ( type(P) == -1 ) return dp_f4_mod_main(G,V,M,O);
! 507: P0 = P[0]; P1 = P[1]; P = [P0,P1];
! 508: map(ox_reset,P);
! 509: ox_cmo_rpc(P0,"dp_f4_mod_main",G,V,M,O);
! 510: ox_cmo_rpc(P1,"dp_gr_mod_main",G,V,0,M,O);
! 511: map(ox_push_cmd,P,262); /* 262 = OX_popCMO */
! 512: F = ox_select(P); R = ox_get(F[0]);
! 513: if ( F[0] == P0 ) { Win = "F4"; Lose = P1;}
! 514: else { Win = "Buchberger"; Lose = P0; }
! 515: ox_reset(Lose); /* simply resets the loser */
! 516: return [Win,R];
! 517: }
! 518: \end{verbatim}
! 519: \end{slide}
! 520:
! 521: \begin{slide}{}
! 522: \fbox{References}
! 523:
! 524: [Bernardin] L. Bernardin, On square-free factorization of
! 525: multivariate polynomials over a finite field, Theoretical
! 526: Computer Science 187 (1997), 105-116.
! 527:
! 528: [Boehm] {\tt http://www.hpl.hp.com/personal/Hans\_Boehm/gc}
! 529:
! 530: [Faug\`ere] J.C. Faug\`ere,
! 531: A new efficient algorithm for computing Groebner bases ($F_4$),
! 532: Journal of Pure and Applied Algebra (139) 1-3 (1999), 61-88.
! 533:
! 534: [Hoeij] M. van Heoij, Factoring polynomials and the knapsack problem,
! 535: to appear in Journal of Number Theory (2000).
! 536:
! 537: [SY] T. Shimoyama, K. Yokoyama, Localization and Primary Decomposition of Polynomial Ideals. J. Symb. Comp. {\bf 22} (1996), 247-277.
! 538:
! 539: [NY] M. Noro, K. Yokoyama,
! 540: A Modular Method to Compute the Rational Univariate
! 541: Representation of Zero-Dimensional Ideals.
! 542: J. Symb. Comp. {\bf 28}/1 (1999), 243-263.
! 543:
! 544: [OpenMath] {\tt http://www.openmath.org}
! 545:
! 546: [OpenXM] {\tt http://www.openxm.org}
! 547:
! 548: [PARI] {\tt http://www.parigp-home.de}
! 549:
! 550: [Risa/Asir] {\tt http://www.math.kobe-u.ac.jp/Asir/asir.html}
! 551:
! 552: [Rouillier] F. Rouillier,
! 553: R\'esolution des syst\`emes z\'ero-dimensionnels.
! 554: Doctoral Thesis(1996), University of Rennes I, France.
! 555:
! 556: [Traverso] C. Traverso, \gr trace algorithms. Proc. ISSAC '88 (LNCS 358), 125-138.
! 557:
! 558: \end{slide}
! 559:
! 560: \begin{slide}{}
! 561: \begin{center}
! 562: \fbox{\large Part II : Algorithms and implementations in Risa/Asir}
! 563: \end{center}
! 564: \end{slide}
! 565:
! 566: \begin{slide}{}
1.1 noro 567: \fbox{Ground fields}
568:
569: \begin{itemize}
570: \item The rational number field
571: \item Algebraic number fields
572:
573: represented by successive extensions
574: \item Finite fields
575: \begin{itemize}
576: \item $GF(p)$ ($p<2^{30}$); represented by a single word
577: \item $GF(p^n)$ ($p^n < 2^{20}$); represented by a primitive root
578: \item $GF(2^n)$; represented by a bit string
579: \item $GF(p)$ ($p$ : arbitrary prime)
580: \item $GF(p^n)$ ($p$ : arbitrary odd prime)
581: \end{itemize}
582:
583: \item Real and complex number fields
584:
585: \begin{itemize}
586: \item Double float
587: \item PARI bigfloat
588: \end{itemize}
589:
590: \end{itemize}
591: \end{slide}
592:
593: \begin{slide}{}
594: \fbox{Polynomial factorization}
595: \begin{itemize}
596: \item Univariate factorization
597:
598: \begin{itemize}
599: \item Over the rationals
600:
601: Berlekamp-Zassenhaus
602:
603: (classical; knapsack has not yet implemented)
604:
605: \item Over algebraic number fields
606:
607: Trager's algorithm + some improvement
608:
609: \item Over finite fieds
610:
611: DDF + Cantor-Zassenhaus; FFT for large finite fields
612: \end{itemize}
613:
614: \item Multivariate factorization
615:
616: \begin{itemize}
617: \item Over the rationals
618:
619: Classical EZ algorithm
620:
1.2 ! noro 621: \item Over small finite fieds
! 622:
! 623: Modified Bernardin's square free algorithm [Bernardin],
1.1 noro 624:
1.2 ! noro 625: possibly Hensel lifting over extension fields
1.1 noro 626: \end{itemize}
627:
628: \end{itemize}
629: \end{slide}
630:
631: \begin{slide}{}
632: \fbox{Groebner basis computation --- Buchberger algorithm}
633: \begin{itemize}
634: \item Polynomial rings
635: \begin{itemize}
636: \item Over finite fields
637:
638: Any finite field is available as a ground field
639:
640: \item Over the rationals
641:
642: Guess of a groebner basis by detecting zero reduction by modular computation
643: + check (trace lifting)
644:
645: Homogenization+guess+dehomogenization+check
646: \end{itemize}
647:
648: \item Rings of differential operators
649:
650: \begin{itemize}
651: \item Groebner basis of a left ideal
652:
1.2 ! noro 653: Key : an efficient implementation of Leibniz rule
1.1 noro 654: \end{itemize}
655:
656: \end{itemize}
657: \end{slide}
658:
659: \begin{slide}{}
660: \fbox{$F_4$ algorithm}
661: \begin{itemize}
662: \item Over small finite fields ($GF(p)$, $p < 2^{30}$)
663: \begin{itemize}
1.2 ! noro 664: \item More efficient than our Buchberger algorithm implementation
1.1 noro 665:
666: but less efficient than FGb by Faugere
667: \end{itemize}
668:
669: \item Over the rationals
670:
671: \begin{itemize}
672: \item Very naive implementation
673:
1.2 ! noro 674: Modular computation + CRT + Checking the result at each degree
! 675:
1.1 noro 676: \item Less efficient than Buchberger algorithm
677:
1.2 ! noro 678: except for one example (={\it McKay})
1.1 noro 679: \end{itemize}
680:
681: \end{itemize}
682: \end{slide}
683:
684: \begin{slide}{}
1.2 ! noro 685: \fbox{Change of ordering for zero-dimensional ideals}
1.1 noro 686:
687: \begin{itemize}
688: \item Any ordering to lex ordering
689:
690: \begin{itemize}
691: \item Modular change of ordering
692:
693: Guess of the support by modular FGLM
694:
695: + solving linear systems by Hensel lifting
696:
697: \end{itemize}
698:
699: \item RUR (generalized shape lemma)
700:
701: \begin{itemize}
702: \item Modular RUR (only implemented on the shape base case)
703:
704: Almost the same as modular change of ordering
705: \end{itemize}
706:
707: \end{itemize}
708: \end{slide}
709:
710: \begin{slide}{}
711: \fbox{Primary decomposition --- Shimoyama-Yokoyama algorithm}
712:
713: \begin{itemize}
714: \item Only implemented over the rationals
715:
716: Finite field version will soon be available
717:
718: \item Pseudo primary ideal
719:
720: An ideal whose radical is prime
721:
722: \item Prime decomp. of the radical $\Rightarrow$ pseudo primary decomp.
723:
724: \item Extraction of embedded components
725:
726: \end{itemize}
727:
728: \end{slide}
729:
730: \begin{slide}{}
731: \fbox{Computation of $b$-function}
732:
733: $D$ : the ring of differential operators
734:
735: $b(s)$ : a polynomial of the smallest degree s.t.
736: there exists $P(s) \in D[s]$, $P(s)f^{s+1}=b(s)f^s$
737:
738: $b(s)$ : $b$-function of a polynomial $f$
739:
740: $\Rightarrow$ $b(s)$ can be computed by Oaku's algorithm
741:
742: On Risa/Asir : $b(s)$ is computed by
743:
744: A groebner basis $\Rightarrow$ guess of $\deg(b(s))$ by modular
745: computation $\Rightarrow$ solving a linear system
746: \end{slide}
747:
748: \begin{slide}{}
749: \fbox{Interface to PARI library}
750:
751: \begin{itemize}
752: \item Data conversion
753:
754: \begin{itemize}
755:
756: \item Only primitive data can be passed to PARI
757:
758: Rational number, bignum, bigfloat, polynomial,
759: vector, matrix
760:
761: \item Results are converted to Risa objects
762:
763: \end{itemize}
764:
765: \item Evaluation of transcendental functions
766:
767: \begin{itemize}
768: \item Most of univariate functions in PARI can be
769: evaluated by {\tt eval()}
770: \end{itemize}
771:
772: \item Calling PARI functions
773:
774: \begin{itemize}
775: \item One can call PARI functions by {\tt pari({\it parifunction},{\it args})}
776:
777: The knapsack factorization is available via {\tt pari(factor,{\it poly})}
778: \end{itemize}
779: \end{itemize}
780: \end{slide}
781:
782: \begin{slide}{}
783: \end{slide}
784:
785: \begin{slide}{}
786: \end{slide}
787:
788: \begin{slide}{}
789: \end{slide}
790:
791: \begin{slide}{}
792: \end{slide}
793:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>