source: git/libfac/factor.h @ b1dfaf

spielwiese
Last change on this file since b1dfaf was b1dfaf, checked in by Frank Seelisch <seelisch@…>, 14 years ago
patch from Kai (checked for problems under Windows OS: no problems) git-svn-id: file:///usr/local/Singular/svn/trunk@13210 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.0 KB
Line 
1// Header file for libfac.a
2// Created by -- makeheader --
3// $Id$
4///////////////////////////////////////
5#ifndef FACTOR_H
6#define FACTOR_H
7
8#include <factory/factory.h>
9
10// Set this to a nonzero value to interrupt the computation
11extern int libfac_interruptflag;
12
13// some values you can ask for:
14extern const char * libfac_name;
15extern const char * libfac_version;
16extern const char * libfac_date;
17extern const char * libfac_author;
18
19//// Note: second argument for Factorize is for internal use only.
20CFFList Factorize( const CanonicalForm & F, int is_SqrFree=0 ) ;
21CFFList Factorize( const CanonicalForm & F, const CanonicalForm & mipo, int is_SqrFree=0 ) ;
22CFFList Factorize2(CanonicalForm F, const CanonicalForm & minpoly );
23CFFList newfactoras( const CanonicalForm & f, const CFList & as, int &success);
24
25//// Note: InternalSqrFree does only the work needed for factorization.
26// CFFList SqrFree( const CanonicalForm & f ) ;
27
28typedef List<CFList> ListCFList;
29typedef List<int> IntList ;
30typedef ListIterator<int> IntListIterator ;
31typedef List<Variable> Varlist;
32typedef ListIterator<Variable> VarlistIterator;
33
34////////////////////////////////////////
35/// from charsets:
36
37class PremForm {
38public:
39  CFList FS1;
40  CFList FS2;
41  inline PremForm& operator=( const PremForm&  value ){
42    if ( this != &value ){
43      FS1 = value.FS1;
44      FS2 = value.FS2;
45    }
46    return *this;
47  }
48};
49
50CanonicalForm  Prem( const CanonicalForm &f, const CanonicalForm &g );
51CanonicalForm  Prem( const CanonicalForm &f, const CFList &L );
52CFList         Prem( const CFList &AS, const CFList &L );
53CFList     MCharSetN( const CFList &PS, PremForm & Remembern );
54ListCFList IrrCharSeries( const CFList &PS, int opt=0 );
55
56// the next three give you a heuristically optimal reorderd list of the
57// variables. For internal and external (e.g. Singular/Macaulay2) library use.
58// This is really experimental!
59// See the comments in reorder.cc.
60//
61// this gives you a heuristically optimal ordering for the ring variables
62// if you use the irreducible characteristic series.
63Varlist  neworder( const CFList & PolyList );
64// the same as neworder(...) only returning a list of CanonicalForm 's
65// (i.e. the variables as CanonicalForms)
66CFList   newordercf(const CFList & PolyList );
67// the same as neworder(...) only returning a list of int 's (i.e. the levels)
68IntList  neworderint(const CFList & PolyList );
69
70// for library internal use only:
71// next function reorders the variables in PS:
72// a code segment to use:
73// ...
74// #include <tmpl_inst.h> // for typedef's
75// CFList PS= <setup-your-list-of-CanonicalForms>;
76// Varlist betterorder= neworder(PS);
77// PS= reorder(betterorder,PS); // reorder variables in PS from oldorder
78//                                 to betterorder
79// ListCFList Q= IrrCharSeries( PS );
80// Q= reorder(betterorder,Q);   // revert ordering to oldorder
81//
82CFList reorder( const Varlist & betterorder, const CFList & PS);
83CFFList reorder( const Varlist & betterorder, const CFFList & PS);
84ListCFList reorder(const Varlist & betterorder, const ListCFList & Q);
85
86
87#endif /* FACTOR_H */
Note: See TracBrowser for help on using the repository browser.