File: g_clean.sci

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (45 lines) | stat: -rw-r--r-- 1,029 bytes parent folder | download
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function a=g_clean(a,epsa,epsr)
//Syntax: a=clean(a,epsa,epsr)
// Given a, matrix of rationals or a polynomial matrix, this macro
// eliminates  all the coefficients of a with absolute value < epsa 
// and realtive value < epsr  (relative means realive wrt  norm 1 of
// the coefficients)
// Default values : epsa=1.d-10; epsr=1.d-10;
//!
// Copyright INRIA
a1=a(1);
[lhs,rhs]=argn(0)
if rhs == 1 then
  epsa=1.d-10;
  epsr=1.d-10;
elseif rhs==2 then
  epsr=1.d-10;
end
select type(a)
case 1 then
  a=clean(a,epsa,epsr)
case 2 then
  a=clean(a,epsa,epsr)
case 3 then
  a=clean(a,epsa,epsr)
case 5 then
  a=clean(a,epsa,epsr)
//-compat next case  retained for list/tlist compatibility
case 15 then
 if a1(1)<>'r' then error(43),end
 tdom=a(4)
 a2=clean(a(2),epsa,epsr),
 a3=clean(a(3),epsa,epsr),
 a=simp(a2./a3);a(4)=tdom
case 16 then
 if a1(1)<>'r' then error(43),end
 tdom=a(4)
 a2=clean(a(2),epsa,epsr),
 a3=clean(a(3),epsa,epsr),
 a=simp(a2./a3);a(4)=tdom 
else
 error('clean: not implemented for this variable type')
end