source: git/factory/cf_algorithm.h @ b1a453

spielwiese
Last change on this file since b1a453 was b1a453, checked in by Martin Lee <martinlee84@…>, 10 years ago
removed isSqrFree
  • Property mode set to 100644
File size: 3.9 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2
3#ifndef INCL_CF_ALGORITHM_H
4#define INCL_CF_ALGORITHM_H
5
6//{{{ docu
7//
8// cf_algorithm.h - declarations of higher level algorithms.
9//
10// Header file corresponds to: cf_algorithms.cc, cf_chinese.cc,
11//   cf_factor.cc, cf_linsys.cc, cf_resultant.cc
12//
13// Hierarchy: mathematical algorithms on canonical forms
14//
15// Developers note:
16// ----------------
17// This header file collects declarations of most of the
18// functions in Factory which implement higher level algorithms
19// on canonical forms (factorization, gcd, etc.) and declarations
20// of some low level mathematical functions, too (absolute value,
21// euclidean norm, etc.).
22//
23//}}}
24
25// #include "config.h"
26
27#include "canonicalform.h"
28#include "variable.h"
29
30/*BEGINPUBLIC*/
31
32//{{{ function declarations from cf_algorithm.cc
33CanonicalForm psr ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
34
35CanonicalForm psq ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
36
37void psqr ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm & q, CanonicalForm & r, const Variable & x );
38
39CanonicalForm bCommonDen ( const CanonicalForm & f );
40
41bool fdivides ( const CanonicalForm & f, const CanonicalForm & g );
42
43bool fdivides ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm& quot );
44
45bool tryFdivides ( const CanonicalForm & f, const CanonicalForm & g, const CanonicalForm& M, bool& fail );
46
47CanonicalForm maxNorm ( const CanonicalForm & f );
48
49CanonicalForm euclideanNorm ( const CanonicalForm & f );
50//}}}
51
52//{{{ function declarations from cf_chinese.cc
53void chineseRemainder ( const CanonicalForm & x1, const CanonicalForm & q1, const CanonicalForm & x2, const CanonicalForm & q2, CanonicalForm & xnew, CanonicalForm & qnew );
54
55void chineseRemainder ( const CFArray & x, const CFArray & q, CanonicalForm & xnew, CanonicalForm & qnew );
56
57CanonicalForm Farey ( const CanonicalForm & f, const CanonicalForm & q );
58//}}}
59
60//{{{ function declarations from cf_factor.cc
61extern int singular_homog_flag;
62
63bool isPurePoly(const CanonicalForm & f);
64
65bool isPurePoly_m(const CanonicalForm & f);
66
67CFFList factorize ( const CanonicalForm & f, bool issqrfree = false );
68
69CFFList factorize ( const CanonicalForm & f, const Variable & alpha );
70
71CFFList sqrFree ( const CanonicalForm & f, bool sort= false );
72
73CanonicalForm homogenize( const CanonicalForm & f, const Variable & x);
74CanonicalForm homogenize( const CanonicalForm & f, const Variable & x,
75                                const Variable & v1, const Variable & v2);
76Variable get_max_degree_Variable(const CanonicalForm & f);
77CFList get_Terms( const CanonicalForm & f );
78void getTerms( const CanonicalForm & f, const CanonicalForm & t, CFList & result );
79
80
81//}}}
82
83//{{{ function declarations from cf_linsys.cc
84bool linearSystemSolve ( CFMatrix & M );
85
86CanonicalForm determinant ( const CFMatrix & M, int n );
87//}}}
88
89//{{{ function declarations from cf_resultant.cc
90CFArray subResChain ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
91
92CanonicalForm resultant ( const CanonicalForm & f, const CanonicalForm & g, const Variable & x );
93//}}}
94
95//{{{ inline CanonicalForm abs ( const CanonicalForm & f )
96//{{{ docu
97//
98// abs() - return absolute value of `f'.
99//
100// The absolute value is defined in terms of the function
101// `sign()'.  If it reports negative sign for `f' than -`f' is
102// returned, otherwise `f'.
103//
104// This behaviour is most useful for integers and rationals.  But
105// it may be used to sign-normalize the leading coefficient of
106// arbitrary polynomials, too.
107//
108// Type info:
109// ----------
110// f: CurrentPP
111//
112//}}}
113inline CanonicalForm
114abs ( const CanonicalForm & f )
115{
116    // it is not only more general to use `sign()' instead of a
117    // direct comparison `f < 0', it is faster, too
118    if ( sign( f ) < 0 )
119        return -f;
120    else
121        return f;
122}
123//}}}
124
125/*ENDPUBLIC*/
126
127#endif /* ! INCL_CF_ALGORITHM_H */
Note: See TracBrowser for help on using the repository browser.