Delila Program: logscale

# logscale program

## By downloading this code you agree to the Source Code Use License (PDF). Pascal source code: logscale.p (wget instructions) Instructions on compiling MacOS binary: logscale Alphabetic List of Delila Programs Delila Programs by Most Recent Update Please report broken links delilabundle.zip = All Programs and MacOS Binaries Copyright Statement for Delila Programs

### Documentation for the logscale program is below, with links to related programs in the "see also" section.

```{   version = 1.02; (* of logscale.p 2010 Sep 18}

(* begin module describe.logscale *)
(*
name
logscale: provide numbers on a log scale

synopsis
logscale(input: in, output: out)

files

input: one line with the following values:

x (real): starting value
b (integer): base of the scale (eg 2 or 10)
n (integer): number of intervals
If n is negative, report the program version number.
m (integer): which interval we are on
w (integer): width of output number (characters)
d (integer): decimal places of output number (characters)

output: messages to the user

description

Create numbers on a log scale one at a time for use in scripts.

Let the scale look like this (where b = 10):

x * z * z * z * z = 10x

So here x is the starting value.  It is successively multiplied by z
n = 4 times until we reach 10x.

So for

m = 0  result = x
m = 1  result = x * z
m = 2  result = x * z * z
m = 3  result = x * z * z * z
m = 4  result = x * z * z * z * z

So now all we need to know is the value of z.

From the first equation,

z^n = b

so

z = b ^ (1/n)

then:

result = x * z^m

examples

The tcsh script:

set m = 0
while (\$m < 13)
# x (real): starting value
# b (integer): base of the scale (eg 2 or 10)
# n (integer): number of intervals
# m (integer): which interval we are on
# w (integer): width of output number (characters)
# d (integer): decimal places of output number (characters)
printf "%2d " \$m
#     x b n  m w d
echo "1 2 4 \$m 4 2" | logscale
@ m = \$m + 1
end

gives:

0 1.00
1 1.19
2 1.41
3 1.68
4 2.00
5 2.38
6 2.83
7 3.36
8 4.00
9 4.76
10 5.66
11 6.73
12 8.00

output: messages to the user

description

Create numbers on a log scale one at a time for use in scripts.

Let the scale look like this (where b = 10):

x * z * z * z * z = 10x

So here x is the starting value.  It is successively multiplied by z
n = 4 times until we reach 10x.

So for

m = 0  result = x
m = 1  result = x * z
m = 2  result = x * z * z
m = 3  result = x * z * z * z
m = 4  result = x * z * z * z * z

So now all we need to know is the value of z.

From the first equation,

z^n = b

so

z = b ^ (1/n)

then:

result = x * z^m

examples
echo "

documentation

documentation

see also

author

Thomas Dana Schneider

bugs

technical notes

*)
(* end module describe.logscale *)
{This manual page was created by makman 1.45}

```
{created by htmlink 1.62}