File: SmithNormalForm1.h

package info (click to toggle)
magnus 20060324-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 19,404 kB
  • ctags: 20,466
  • sloc: cpp: 130,118; ansic: 37,076; tcl: 10,970; perl: 1,109; makefile: 963; sh: 403; yacc: 372; csh: 57; awk: 33; asm: 10
file content (30 lines) | stat: -rw-r--r-- 815 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef _SMITH_NORMAL_FORM1_H_
#define _SMITH_NORMAL_FORM1_H_

#include <Integer.h>
#include "Vector.h"
#include "File.h"
#include "DArray.h"

class SmithNormalForm1 {
public:
  SmithNormalForm1() {}
  SmithNormalForm1(DArray<Integer>);
  DArray<Integer> LeftFactor() const { return P; }
  DArray<Integer> LeftFactorInv() const { return P1; }
  DArray<Integer> RightFactor() const { return Q; }
  DArray<Integer> RightFactorInv() const { return Q1; }
  VectorOf<Integer> invariants() const { return inv; } 
  int rank() const { return inv.length(); }
  Chars getFileName() const { return f.getFileName(); }
private:
  File f;
  DArray<Integer> A, P, P1, Q, Q1;
  VectorOf<Integer> inv; 
  int findmin(int);
  int plus(int,int,Integer,char);
  void swap(int,int,char);
  void show(Chars,DArray<Integer>);
};

#endif