source: git/factory/cf_eval.cc @ 6c5d86

spielwiese
Last change on this file since 6c5d86 was 6400f5, checked in by Hans Schönemann <hannes@…>, 24 years ago
* hannes: added dummy routines for debuuging factory/libfac (Singular/claptmpl.cc Singular/fglm.cc Singular/fglm.h Singular/fglmvec.cc Singular/fglmzero.cc Singular/iparith.cc Singular/static.h factory/canonicalform.cc factory/canonicalform.h factory/cf_eval.cc factory/cf_map.cc factory/cf_map.h libfac/charset/charset.cc) git-svn-id: file:///usr/local/Singular/svn/trunk@4409 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 1.5 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id: cf_eval.cc,v 1.5 2000-05-29 15:05:20 Singular Exp $ */
3
4#include <config.h>
5
6#include "assert.h"
7
8#include "cf_defs.h"
9#include "cf_eval.h"
10
11static CanonicalForm evalCF ( const CanonicalForm & f, const CFArray & a, int m, int n );
12
13
14Evaluation& Evaluation::operator= ( const Evaluation & e )
15{
16    if ( this != &e ) {
17        values = e.values;
18    }
19    return *this;
20}
21
22CanonicalForm
23Evaluation::operator() ( const CanonicalForm & f ) const
24{
25    if ( f.inCoeffDomain() || f.level() < values.min() )
26        return f;
27    else  if ( f.level() < values.max() )
28        return evalCF( f, values, values.min(), f.level() );
29    else
30        return evalCF( f, values, values.min(), values.max() );
31}
32
33CanonicalForm
34Evaluation::operator() ( const CanonicalForm & f, int i, int j ) const
35{
36    if ( i > j )
37        return f;
38    return evalCF( f, values, i, j );
39}
40
41void
42Evaluation::nextpoint()
43{
44    int n = values.max();
45    for ( int i = values.min(); i <= n; i++ )
46        values[i] += 1;
47}
48
49#ifndef NOSTREAMIO
50ostream&
51operator<< ( ostream& s, const Evaluation &e )
52{
53    e.values.print(s);
54    return s;
55}
56#endif /* NOSTREAMIO */
57
58CanonicalForm
59evalCF ( const CanonicalForm & f, const CFArray & a, int m, int n )
60{
61    if ( m > n )
62        return f;
63    else {
64        CanonicalForm result = f;
65        while ( n >= m ) {
66            result = result( a[n], Variable( n ) );
67            n--;
68        }
69        return result;
70    }
71//    iterated method turned out to be faster than
72//    return evalCF( f( a[n], Variable( n ) ), a, m, n-1 );
73}
Note: See TracBrowser for help on using the repository browser.