spline(1)


NAME

   spline - interpolate datasets using splines under tension

SYNOPSIS

   spline [ options ] [ files ]

DESCRIPTION

   spline  reads  datasets  from standard input or from one or more files,
   and fits  a  smooth  curve  (a  "spline")  through  each  dataset.   An
   interpolated  version  of  each  dataset, consisting of points from the
   smooth curve, is written to standard output.

   Unless the -a or -A options are used (see below), each  dataset  should
   be a sequence of values for a vector-valued function of a single scalar
   variable.  That is, each dataset should be a sequence of  data  points,
   given  as  alternating  t  and  y  values.   t  is a scalar independent
   variable,  and  y  is  a   vector-valued   dependent   variable.    The
   dimensionality  of  y  is  specified  with  the  -d option (the default
   dimensionality is 1).  Between each data point and the next,  t  should
   increase.

   An input file may contain more than a single dataset.  If an input file
   is in ASCII format (the default), its datasets should be  separated  by
   blank lines.  The t and y values of the data points in each dataset may
   be arranged arbitrarily, so long as they are separated by white  space.
   Besides  datasets,  an  input  file  may  contain any number of comment
   lines, which should begin with  the  comment  character  `#'.   Comment
   lines  are  ignored.   They are not treated as blank, i.e., they do not
   interrupt a dataset in progress.

   Options and file names may be interspersed on the command line, but the
   options  are  processed before the file names are read.  If -- is seen,
   it is interpreted as the end of the options.   If  no  file  names  are
   specified,  or  the  file  name - is encountered, the standard input is
   read.

   The type of interpolation, and the  format  of  the  input  and  output
   files, may be selected by command-line options.

OPTIONS

   Interpolation-Related Options
   -f
   --filter
          Use   a   local   interpolation   algorithm  (the  cubic  Bessel
          algorithm), so that spline can be used as  a  real-time  filter.
          The  slope of the interpolating curve at each point in a dataset
          will be chosen by fitting  a  quadratic  function  through  that
          point  and  the  two  adjacent  points in the dataset.  If -f is
          specified then the -t option, otherwise optional, must  be  used
          as  well.   Also,  if  -f  is  specified then the -k, -p, and -T
          options may not be used.

          If -f is not specified, then the default (global)  interpolation
          algorithm will be used.

   -k k
   --boundary-condition k
          Set the boundary condition parameter for each constructed spline
          to  be  k.   (The  default  value  is  1.0.)   In  each  of  its
          components,  the spline will satisfy the two boundary conditions
          y"[0]=ky"[1] and y"[n]=ky"[n-1].  Here y[0] and y[1] signify the
          values  of  a specified component of the vector-valued dependent
          variable y at the first two points of a dataset, and y[n-1]  and
          y[n]  the values at the last two points.  Setting k to zero will
          yield a "natural" spline, i.e., one that has zero  curvature  at
          the  two  ends of the dataset.  The -k option may not be used if
          -f or -p is specified.

   -n n
   --no-of-intervals n
          Subdivide the interval over which interpolation  occurs  into  n
          subintervals.   The  number of data points computed, and written
          to the output, will be n+1.  The default value for n is 100.

   -p
   --periodic
          Construct a periodic spline.  If this option is specified, the y
          values  for  the  first  and last points in each dataset must be
          equal.  The -f  and  -k  options  may  not  be  used  if  -p  is
          specified.

   -T tension
   --tension tension
          Each  interpolating  curve will be a spline under tension.  This
          option sets the tension value (the default is 0.0).

          If tension equals zero, the curve  will  be  a  piecewise  cubic
          spline.   Increasing  the  tension  above  zero  makes the curve
          "tighter", and reduces the  likelihood  of  spurious  inflection
          points.   That is because between each pair of successive points
          in  a  dataset,  the  curve  will   satisfy   the   fourth-order
          differential  equation y""=sgn(tension)*(tension^2)y" in each of
          its components.  As tension increases to positive  infinity,  it
          will  converge  to  a  polygonal line.  The -T option may not be
          used if -f is specified.

   -t tmin tmax [tspacing]
   --t-spacing tmin tmax [tspacing]
          For each dataset, set  the  interval  over  which  interpolation
          occurs to be the interval between tmin and tmax.  If tspacing is
          not specified, the interval will be divided into the  number  of
          subintervals specified by the -n option.

          If   the  -t  option  is  not  used,  the  interval  over  which
          interpolation occurs will be the entire range of the independent
          variable  in  the dataset.  The -t option must always be used if
          the -f option is  used  to  request  filter-like  behavior  (see
          above).

   Format-Related Options
   -d dimension
   --y-dimension dimension
          Set  the dimensionality of the dependent variable y in the input
          and output files to be dimension.  The default dimension is 1.

   -I data-format
   --input-format data-format
          Set the data format for the input  file(s)  to  be  data-format,
          which may be one of the following.

          a      ASCII  format  (the default).  Each file is a sequence of
                 floating point  numbers,  interpreted  as  the  t  and  y
                 coordinates  of  the successive data points in a dataset.
                 If y is d-dimensional, there will be d+1 numbers for each
                 point.   The  t  and  y  coordinates  of a point need not
                 appear on the same line, and points need  not  appear  on
                 different  lines.   But if a blank line occurs (i.e., two
                 newlines in succession are seen), it  is  interpreted  as
                 the end of a dataset, and the beginning of the next.

          f      Single  precision binary format.  Each file is a sequence
                 of floating point numbers, interpreted as  the  t  and  y
                 coordinates  of  the successive data points in a dataset.
                 If y is d-dimensional, there will be d+1 numbers for each
                 point.   Successive  datasets  are  separated by a single
                 occurrence of the quantity FLT_MAX, which is the  largest
                 possible single precision floating point number.  On most
                 machines this is approximately 3.4x10^38.

          d      Double precision binary format.  Each file is a  sequence
                 of  double  precision floating point numbers, interpreted
                 as the t and y coordinates of the successive data  points
                 in  a  dataset.  If y is d-dimensional, there will be d+1
                 numbers  for  each  point.    Successive   datasets   are
                 separated by a single occurrence of the quantity DBL_MAX,
                 which is the largest possible double  precision  floating
                 point  number.   On  most  machines this is approximately
                 1.8x10^308.

          i      Integer binary  format.   Each  file  is  a  sequence  of
                 integers,  interpreted  as the t and y coordinates of the
                 successive  data  points  in  a   dataset.    If   y   is
                 d-dimensional,  there will be d+1 numbers for each point.
                 Successive datasets are separated by a single  occurrence
                 of  the  quantity  INT_MAX, which is the largest possible
                 integer.  On most machines this is 2^31-1.

   -a [step_size [lower_limit]]
   --auto-abscissa [step_size [lower_limit]]
          Automatically generate values for t,  the  independent  variable
          (the  default  values  of  step_size and lower_limit are 1.0 and
          0.0, respectively).

          Irrespective of data format (`a', `f', `d', or `i'), this option
          specifies  that the values of t are missing from the input file:
          the dataset(s)  to  be  read  contain  only  values  of  y,  the
          dependent  variable.   So  if  y is d-dimensional, there will be
          only d numbers for each point.  The increment from each t  value
          to  the  next  will  be step_size, and the first t value will be
          lower_limit.  This option is useful,  e.g.,  when  interpolating
          curves rather than functions.

   -A
   --auto-dist-abscissa
          Automatically  generate  values for t, the independent variable.
          This is a variant form of the -a  option.   The  increment  from
          each  t  value to the next will be the distance in d-dimensional
          space between the corresponding y values, and the first t  value
          will  be  0.0.   That is, t will be "polygonal arclength".  This
          option  is  useful  when  interpolating   curves   rather   than
          functions.

   -O data-format
   --output-format data-format
          Set  the data format for the output file to be data-format.  The
          interpretation of data-format is the same as for the -I  option.
          The default is `a', i.e., ASCII format.

   -P significant-digits
   --precision significant-digits
          Set the numerical precision for the t and y values in the output
          file to be significant-digits.  This takes effect  only  if  the
          output   file   is  written  in  `a'  format,  i.e.,  in  ASCII.
          significant-digits must be a positive integer  (the  default  is
          6).

   -s
   --suppress-abscissa
          Omit  the  independent variable t from the output file; for each
          point,  supply  only  the  dependent  variable  y.   If   y   is
          d-dimensional,  there will be only d numbers for each point, not
          d+1.  This option is useful  when  interpolating  curves  rather
          than functions.

   Informational Options
   --help Print a list of command-line options, and exit.

   --version
          Print  the  version  number of spline and the plotting utilities
          package, and exit.

EXAMPLES

   Typing

          echo 0 0 1 1 2 0 | spline

   will produce on standard output an interpolated dataset  consisting  of
   101  data  points.   If graphed, this interpolated dataset will yield a
   parabola.

   It is sometimes useful to interpolate between a sequence of arbitrarily
   placed  points in d-dimensional space, i.e., to "spline a curve" rather
   than a function.  The -a  and  -s  options  are  used  for  this.   For
   example,

          echo 0 0 1 0 1 1 0 1 | spline -d 2 -a -s

   will  produce  on standard output a 101-point dataset that interpolates
   between the four points (0,0), (1,0),  (1,1),  and  (0,1).   The  -d  2
   option specifies that the dependent variable y is two-dimensional.  The
   -a option specifies that the t values are missing from  the  input  and
   should  be automatically generated.  The -s option specifies that the t
   values should be stripped from the output.

AUTHORS

   spline was written by Robert S. Maier (rsm@math.arizona.edu),  starting
   with  an  earlier  version  by  Rich  Murphey  (rich@freebsd.org).  The
   algorithms for constructing splines under tension are similar to  those
   used  in the FITPACK subroutine library, and are ultimately due to Alan
   K. Cline (cline@cs.utexas.edu).

SEE ALSO

   "The GNU Plotting Utilities Manual".

BUGS

   Email bug reports to bug-gnu-utils@gnu.org.





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.