antsfilters.pl
author A.M. Thurnherr <athurnherr@yahoo.com>
Sat, 24 Jul 2021 09:38:16 -0400
changeset 46 70e566505a12
parent 4 ff72b00b4342
permissions -rw-r--r--
V7.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     1
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     2
#                    A N T S F I L T E R S . P L 
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     3
#                    doc: Sun Mar 14 15:17:29 1999
4
ff72b00b4342 after adding $pi and some other stuff
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     4
#                    dlm: Wed Feb 13 11:11:16 2013
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     5
#                    (c) 1999 A.M. Thurnherr
4
ff72b00b4342 after adding $pi and some other stuff
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
     6
#                    uE-Info: 38 97 NIL 0 0 72 2 2 4 NIL ofnI
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     7
#======================================================================
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     8
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
     9
# HISTORY:
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    10
#	Mar 14, 1999: - created for filters
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    11
#	Dec 11, 1999: - made &antsXCheck() return mean dx
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    12
#				  - BUG: dx was calculated independently of from val
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    13
#	Mar 31, 2004: - added $fac optional param
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    14
#	Jul  1, 2006: - Version 3.3 [HISTORY]
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    15
#	Jan  5, 2011: - BUG: did not work for -ve dx
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    16
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    17
# Implement commonly used fuctions for filters (but not worth including
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    18
# into [./antsutils.pl] because of efficiency considerations)
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    19
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    20
{ my($dx) = 0;										# static vars
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    21
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    22
sub antsXCheck($$$) # ($xfnr,$from,$to,$fac) -> mean dx	# sanity check on @ants_
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    23
{
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    24
	my($xfnr,$from,$to,$fac) = @_;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    25
	my($cdx,$r,$sdx);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    26
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    27
	$fac = 2 unless defined($fac);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    28
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    29
	unless ($dx) {									# find goal dx
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    30
		croak("$0: can't handle nan (x field)\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    31
			unless (numberp($ants_[0][$xfnr]) && numberp($ants_[1][$xfnr]));
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    32
		$dx = $ants_[$from+1][$xfnr] - $ants_[$from][$xfnr];
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    33
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    34
	for ($r=$from+1; $r <= $to; $r++) {
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    35
		croak("$0: can't handle $ants_[$r][$xfnr] (x field)\n")
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    36
			unless (numberp($ants_[$r][$xfnr]));
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    37
		$cdx = $ants_[$r][$xfnr] - $ants_[$r-1][$xfnr];
4
ff72b00b4342 after adding $pi and some other stuff
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    38
		croak(sprintf("$0: input badly non-uniformly spaced: @ rec#%d dx=%g, %.1fx target dx=%g\n",
ff72b00b4342 after adding $pi and some other stuff
A.M. Thurnherr <athurnherr@yahoo.com>
parents: 0
diff changeset
    39
						$r,$cdx,$cdx/$dx,$dx))
0
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    40
			if (($dx > 0) && ($cdx > $fac*$dx || $cdx < $dx/$fac)) ||
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    41
			   (($dx < 0) && ($cdx < $fac*$dx || $cdx > $dx/$fac));
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    42
		$sdx += $cdx;
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    43
	}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    44
	return $sdx/($to-$from);
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    45
}
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    46
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    47
} # end of $dx static scope
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    48
A.M. Thurnherr <athurnherr@yahoo.com>
parents:
diff changeset
    49
1;