ised man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

ised(1)								       ised(1)

NAME
       ised - generating integer and floating point sequences

SYNOPSIS
       ised   [--m]   [--p]   [--n]  [--f  input_file]	[--a  load_file]  [--l
       apply_to_file] [--x modify_file] [--k awk_file] [--o output_file]  [--t
       code_line] [--d delimiter] [--D int_format] [--F float_format] code ...

DESCRIPTION
       ised processes arithmetic expressions involving arrays and returns out‐
       put array of values. Options and code lines are processed in  order  of
       appearance. If ised is called without arguments, it reads from standard
       input. Press ^D (EOF) or enter a single q to exit when  in  interactive
       mode.

       When  input  consists  only  of	arrays	of  length one (scalars), ised
       behaves as an ordinary calculator.

       Options can also be used from command line in interactive  mode	or  in
       files, invoked by --f.


OPTIONS
       --f  input_file
	      Reads and processes input_file one line at a time, equivalent to
	      giving every line as separate command line argument.

	      ised --f - is not equivalent to running it without arguments, as
	      the latter also invokes interactive GNU readline prompt.

       --a  load_file
	      Loads  load_file	into  memory.  Every  line has it's own memory
	      slot, starting at $1.  At the end, line count is saved in memory
	      slot $0. All lines are evaluated before saving.

       --l apply_to_file { code | --f file }
	      code  or	file  is applied on every line of apply_to_file.  Each
	      line is loaded into memory slot $1 while line number is in $0.

       --x modify_file { code | --f file }
	      Similar to --l, but instead of direct  evaluation	 of  lines  in
	      modify_file,  it	splits	the line into numbers and strings. The
	      numbers are read and stored into $1, then the code  or  file  is
	      applied.	The  output  has  the same form as the input, with the
	      numbers replaced with those returned by the code or   file.  The
	      $0 memory slot contains the current line number.

       --k awk_file { code | --f file }
	      Similar  to  --x, but instead of smartly finding the numbers and
	      storing them all into the same array, it splits each input  line
	      at  delimiters  and  stores  each	 column into a separate memory
	      slot, starting with $1. Non-numeric fields are preserved in  the
	      output  without warning. Changes to the memory slots by the user
	      are reflected in the output. The	output	is  delimited  by  the
	      delimiter, provided by --d. If code is not terminated by a semi‐
	      colon, the return value of code or file is appended to the  rest
	      of the output.

       --o output_file
	      Sets the file where standard output is redirected to. Everything
	      after this call will be redirected  to  output_file,  until  the
	      next  call  to  --o.  Calling --o - reverts back to the standard
	      output.

       --t code_line
	      code_line is evaluated as usual, but results of every semicolon-
	      terminated substatement are printed as columns. Essentially this
	      is a transposed version of --p  option.  If  code_line  contains
	      only  one	 statement, the result is similar to setting delimiter
	      to newline (\n). If code_line is to be appled line-by-line to  a
	      file, both --x and --k behave as --l.

       --d  delimiter
	      string  delimiter	 is  used  to  delimit values of output array.
	      Default is space.

       --D  int_format
	      format for printf function for integers. Default: %d.

       --F  float_format
	      format for printf function for floating point  values.  Default:
	      %g.

       --m    dump memory page.

       --p,--n
	      --p  forces  ised to print results even when suppressed by semi‐
	      colon. Every semicolon-terminated substatement  is  output  with
	      terminating  newline, so this can be used to split lines when in
	      --l mode. This option persists until it is turned off with --n.

       --v    show program version and license disclaimer.

COMMANDS
       ised operators all work on arrays of values.  Even  single  values  are
       treated	as  arrays  with  length of one. Spacing between operators and
       values is optional.  Values can be either floating  point  or  integers
       and  retain information about their type unless changed. Same operators
       behave differently for each type.

       In general, operators starting with colon (:) mean component-wise eval‐
       uation.

       Behaviour  in  case  of	illegal arithmetic output (such as division by
       zero or root of negative values) is uncertain  and  may	return	either
       nan,  zero or some other non-standard result. This should not be relied
       upon as it may change in future releases.  The case  of	integer	 over‐
       flows  is to be avoided by user as the program does not issue a warning
       and the output is wrong and unpredictable. The same holds  for  conver‐
       sion  of floats to integers. Since version 2.2.3, integer overflows are
       handled by implicit conversion into floating point type if compiled for
       x86-64  architecture, but caution is still advised, as the handling may
       not catch all the problematic cases.

   Comments
       Lines are considered as comments if preceded by #!. If #!   appears  in
       the  middle  of	the line, everything behind it is commented out.  Com‐
       pletely blank lines are also ignored, but lines with whitespace charac‐
       ters  will  be  treated	normally.  This	 way user can seperate several
       blocks of output by empty lines.

       Scripts can be made executable  and  evaluated  without	invoking  ised
       explicitly.  This is done by including declaration

       #!/usr/local/bin/ised --f

       in the first line of the script. This line is obviously treated as com‐
       ment.

       In apply-to-file mode, comments and blank lines are preserved in input,
       but  don't  count  as  active  lines and therefore don't increment line
       counter. If a file contains mixed data, it can still be processed line-
       by-line if non-numerical data is commented out.

   Arrays and Separators
       Values, separated by commas (,) of spaces ( ) are treated as components
       of an array. Array separation has lowest precedence, so	any  operators
       are  evaluated  before  the array is collected. Nested arrays are flat‐
       tened before further evaluation. Arrays are enclosed in braces {}, out‐
       ermost braces are optional.

       Output  to  terminal and history is suppressed by semicolon ; which can
       occur any number of times in every line (putting it at the end  suppre‐
       ses  all	 output,  but  still  evaluates	 memory operations, if they're
       present).

       Examples:

       {1 2 {3 4} 5,6} = {1 2 3 4 5 6}

       {1 2+3 4 5*6+7} = {1 5 4 37}

       1 5 1+1 = {1 5 2}

   Array Constructors
       [n]    generates sequence 0..n-1

       [n1 n2]
	      generates sequence n1..n2 with increment 1. If  n2<n1,  sequence
	      is descending.

       [n1 m1..mi n2]
	      generates	 sequence between n1, n2, but with cycling increments,
	      given as m1..mi.

	      Example:	[0 1 2 10]={0 1 3 4 6 7 9}

       (x)    repeats number x. This way parentheses can be used  for  evalua‐
	      tion precedence or for function arguments in scalar context.

       (x n)  generates array of n repetitions of number x.

       (x m1..mi n)
	      generates	 sequence  of  length  n,  starting  at x with cycling
	      increments m1..mi.

	      If n is negative, the increments are used |n| times,  so	for  i
	      increments, the output sequence has |n|*i+1 elements.

	      Examples:

	      (0 1 2 10)={0 1 3 4 6 7 9 10 12 13}

	      (0 [1 5] -1)={0 1 3 6 10 15}

       {x1..xi}
	      array grouping

   Component-wise Operators
       x:+y   x:-y   x:*y   x:/y   x:%y	  x:^y
	      result is an array, where each component is e.g. a sum (or other
	      binary operations above) of corresponding components of x and y.
	      In  case of different lengths of arrays, smaller length is used.
	      Operations coresponding to above operators are:  addition,  sub‐
	      straction,  multiplication,  division,  modulo,  exponentiation.
	      Note that modulo works for both integer and non-integer  values.
	      Modulo always satisfies this equation: i{x/dy}*y+x%y=x

   Scalar-producing Operators
       @+x    returns sum of components of x.

       @*x    returns product of components of x.

       x+*y   returns a result of alternating addition and subtraction, in the
	      form ((x_0+y_0)*x_1+y_1)*x_2+y_2+...

	      If x is shorter than y, the elements of x are cyclically	reused
	      from  the	 beginning of the array. If y is shorter than x, it is
	      padded with zeroes. This way, a scalar x can be used to evaluate
	      a polynomial with unit leading coefficient.

       gcd lcm
	      return  greatest common divisor and least common multiple of the
	      numbers in the array, respectively.  If the array includes  non‐
	      integer  numbers,	 a  warning  is	 issued	 and an empty array is
	      returned. The result of gcd is negative if an odd number of  the
	      array are negative.

       avg var

	      return  linear  average  and  variance (mean square dispersion).
	      avg{x} is shorter	 notation  for	@+x/d#x	 and  doesn't  require
	      inputting the array twice or storing it in memory.

	      Example: avg{0 1.5 3}={1.5}

       nrm x y
	      returns  generalized  x-norm  of vector y. If x is a vector, the
	      result contains all specified norms. x=2 corresponds to Pythago‐
	      ras' theorem, which is available also as operator @=.

	      Examples:

	      nrm2{1 1 1}={sqrt3}

	      nrm{1 3}{1 1}={2. cbrt2}

   Function Maps
       sin cos tan atn asn acs abs exp sqt cbt log
	      evaluates	 a  function  on  every element of array, e.g. sin{1 2
	      3}={sin1 sin2 sin3}. Functions corresponding to above  operators
	      are  sine,  cosine,  tangent, arc tangent, arc sine, arc cosine,
	      magnitude, exponential, square root, cubic root,	natural	 loga‐
	      rithm.   Long operators atan asin acos sqrt cbrt are also valid.
	      Exponential function is also available as e^, but	 has  a	 lower
	      precedence  (the	same as the operator ^). The unary / prefix is
	      also a function map: /x=1.0/x.

       x!     evaluates factorial on every element of array  x.	 For  floating
	      point  values it evaluates gamma(x+1). For negative integers, it
	      returns 1.

       r f i d
	      prefixes that modify values of array elements.

	      r	     rounds values to closest integer.

	      f	     returns fractional part of values. It is always in	 range
		     0..1  and	represents distance to downwards rounded inte‐
		     ger, even for negative values.

	      i	     returns integer part of values. Expression fx+ix=x always
		     holds.

	      d	     converts values to floating point. For example, 1/2=0 but
		     1/d2=0.5.

       ran    randomizes elements of array. For integers,  it  returns	random
	      integers	strictly smaller than given value. For floating values
	      it returns real numbers.

       phi    calculates the Euler totient function for positive integers. The
	      nonpositive and noninteger values are skipped.

       bj x y	by x y

	      applies x-th Bessel function of first/second kind to array y.  x
	      should be one or more integers. Floating point values  are  cast
	      to integers and a warning is issued.

   Tensor Operators
       x+y   x-y   x*y	 x/y   x%y   x^y
	      evaluate corresponding operations on every possible pair between
	      elements of x and y. Most useful when one of the arguments is  a
	      scalar.  Beware, the division operator / acts as an unary opera‐
	      tor (inversion) when it has no left operand, or has a  space  on
	      the  left,  but not on the right. For instance, /3 is equivalent
	      to 1.0/3.

	      Examples:

	      {1 2 3 4}*{1 -1}={1 -1 2 -2 3 -3 4 -4}

	      {2 3 -5}*2={4 6 -10}

       xey    operator for exponential notation. Useful mostly in scalar  con‐
	      text,  e.g.   1.3e-5,  but can be used in general for evaluating
	      exponential notation for all combinations.

       xcy    evaluates binomial symbol (x over y). It supports floating point
	      values.

	      Example: 3c{0 1 2 3}={1 3 3 1}

   Polynomial Operators
       The following set of operators treat arrays as polynomial coefficients.
       First element corresponds to zero-order term, and so on, e.g.  {1 2  3}
       <=> 3x^2 + 2x + 1.

       x++y   x--y
	      polynomial  addition and substraction. This is similar to opera‐
	      tors :+ :-, but the length of output array is equal to length of
	      the larger array.

       x**y   computes	product	 of  two polynomials. It terms of arrays, this
	      evaluates to the convolution of x and y.

       x//y   x%%y
	      computes quotient and remainder  in  long	 polynomial  division.
	      Returned arrays always contain floating point values, regardless
	      the input. Leading zeroes are trimmed from the output.

       px x y evaluates polynomial x in points, given in array y.

       pd x   computes derivative of polynomial x. Equivalent  to  {x<<-1}:*[1
	      #x].

       pz x   returns  all  real roots of polynomial x. Resulting array is not
	      guaranteed to be sorted in any way.

	      This operator uses Sturm's sequence to isolate  the  roots,  and
	      proceeds	with Newton-Raphson iteration. It works quite well for
	      well-behaved polynomials. Accuracy is questionable if there  are
	      roots with multiplicity 3 or higher.

	      The algorithms outputs warning messages if the accuracy is ques‐
	      tionable, or if the iteration fails to converge to a result.

       zp x   is the inverse of the pz operator. It takes the set of roots and
	      returns  the minimal polynomial with given roots, with the lead‐
	      ing coefficient normalized to 1.

	      pzzp should return the same array as  on	the  input,  up	 to  a
	      reordering  of  elements (excepting the numerical errors in root
	      finding, especially if there are	multiple  roots).  Conversely,
	      zppz  does  not  necessarily  return  the	 initial  array, as it
	      ignores the normalization factor and  irreducible	 factors  that
	      don't have any real roots.

       F x    returns  the prime factorization of x. If x has many components,
	      the factors are concatenated in a way that makes the product  of
	      the  output  array equal to the product of the input array. That
	      makes the negative integer to produce an additional  -1  factor,
	      while floating point input numbers stay intact.

   Vector Operators
       x@:y   returns  dot  product  of	 vectors x and y. In case of different
	      array lengths, overhead is discarded.

       x@^y   returns cross product of vectors x and y,	 if  the  vectors  are
	      three-dimensional.   In  general	case,  it  returns  components
	      z_i=x_{i+1}*y_{i+2}-x_{i+2}*y_{i+1}.

	      This generalization is useful for polygon geometry. For  polygon
	      with   coordinates   {x_i,y_i},  the  area  of  the  polygon  is
	      0.5*@+{x@^y}. Similar formulas  exist  for  polygon  center  and
	      other expressions.

       @!x    normalizes vector x.

       @=x    returns  length  of  vector  x. Shoter notation of general norm:
	      {@=x}={nrm2x}.

   Set Operators
       x&y    returns elements that are in both x and y.

       x|y    concatenates arrays x and y. Produces the same result as {x y}.

	      [deprecated] This operator is an unnecessary waste of  notation.
	      It  should  have had the interleaving effect, now represented by
	      Y.

       x\y    returns elements of x that are not present in y.

       x|&y   is the xor operation on arrays.  Returns	elements,  present  in
	      only one of the arrays.

       xYy    interleaves the arrays x and y.

       ~x     reverses order of array x.

       Sx     sorts array in ascending order.

       #x     returns number of elements in array.

       #_xy   counts occurences of elements of x in y. This is selective vari‐
	      ant of # operator.

	      Example: #_{0 1 4}{1 2 3 4 4 1}={0 2 2}

       #__xy  distributes elements of y into a histogram where elements	 of  x
	      divide the real numbers into bins. The size of the output is one
	      element more than the size of x. The first bin extends from neg‐
	      ative infinity to the first element of x and the last extends to
	      the positive infinity. x is expected to be in ascending order.

       ?x     returns indices of nonzero elements  of  x.  Only	 integer  zero
	      counts as zero.

	      This  operator  is  intended for use with index operator (_), to
	      select elements that satisfy some	 logical  test.	 For  example,
	      x_?{x<1000} returns only elements, smaller than 1000.

	      To skip an entire array if it doesn't satisfy a condition, use ?
	      operator in combination with +. For example, x+?{#x==3} prints x
	      only  if	its  length equals 3. This functionality relies on the
	      fact that tensor summation with empty array returns empty array.

       ?_x y  returns the indices of elements of x in the array y. If the ele‐
	      ment  is found more than once, only the first index is returned.
	      If the element is not present in y, a value -1 is returned.

       S_x    returns the indices that would sort the  array  x.  It's	always
	      true that Sx=x_S_x.

       x=y    returns 1 if arrays are equal, 0 otherwise.

   Element Selection Operators
       x<<y   for  positive  values of y, returns first y values of x (as unix
	      utility head). For negative values, it returns everything except
	      first  y	values. If y is an array, it concatenates all results.
	      y should be array of integers.  Useful for array cycling: {1 2 3
	      4}<<{-2 2}={3 4 1 2}.

       x>>y   same as above, except it works from the back of the array.

       x_y    returns elements of x at indices y. It interpolates for noninte‐
	      ger indices and wraps around for indices out of range.

       U P N O E I D X
	      conditional selectors. Return elements that  satisfy  a  certain
	      condition.

	      U	     unique, deletes duplicate elements

	      P	     positive

	      N	     negative

	      O	     odd

	      E	     even

	      I	     integers

	      D	     floating point values

	      X	     prime numbers

       min max
	      return  the  smallest  and  the  largest	component of the array
	      respectively.

       Zx     `zilch` returns an empty array. This operator is useful for sup‐
	      pressing	output from functions with side-effects, such as the @
	      operator.

   Constants
       pi     returns  3.14159265358979323846264

       deg    returns	the   value   of   angular    degree	in    radians,
	      0.017453292519943295769

       emc    returns Euler-Mascheroni constant,  0.57721566490153286

       pm mp  plus/minus  and  minus/plus constants. They output arrays {1,-1}
	      and {-1,1} respectively. They can be used to compute results  of
	      multivalued formulas simultaneously, for example quadratic equa‐
	      tion.

   Memory Operators
       Memory slots are enumerated by integers.	 For  floating	point  values,
       integer part is used. This may change in future versions.

       Named variables can be used instead of integer enumeration with the use
       of backticks.

       @xy    puts array y into memory slots, enumerated by elements of x.   x
	      should  be integers. Floating point numbers are cast to integers
	      and warning is issued.

       $x     concatenates arrays found at memory slots, enumerated by x.  For
	      negative	values,	 it returns array from history instead of mem‐
	      ory, $-1 being most recent entry. x should be integers.

       @`<name>`y
	      puts array y into the memory  slot,  represented	by  the	 given
	      <name>.

       $`<name>`
	      retrieves the variable, named by the given <name>.

       ised  manages  memory  as hashed map, so a memory position can be every
       positive integer. Saving array to slot $100 doesn't allocate  any  more
       memory  than  saving to slot $1. Results are added to history for input
       lines from files (--f option) or interactive mode, unless the line ter‐
       minates	with a semicolon. Negative slots are reserved for internal use
       by the named variable system and are not accessible by direct  derefer‐
       ence.  Instead,	history is accessed by the negative arguments of the $
       operator.

   Comparison and Equality operators
       For logical evaluation, ised provides comparison operators.  Result  of
       comparison is 1 for true and 0 for false. Equality and inequality oper‐
       ators also check if types of both values are equal.

       For boolean analysis of resulting arrays, use  multiplication  for  and
       operator and summation for or operator. Incorporating additional opera‐
       tors for this functionality would be redundant, as the result is equiv‐
       alent.  But beware, multiplication and summation have higher precedence
       than comparison operators, so  use  grouping  operator  {}  to  achieve
       desirable effect.

       x:<y   x:>y   x:<=y   x:>=y   x:==y   x:<>y
	      Comparison  and equality, evaluated component-wise. Result is an
	      array with size of the shorter of the input arrays.

       x<y   x>y   x<=y	  x>=y	 x==y	x<>y
	      Same as above, but evaluated on every possible pair  of  values.
	      Size  of	the output array is product of input sizes (see Tensor
	      operators for details and example).

   Function definitions
       ised implements a rudimentary mechanism for  function  definitions.  It
       enables	storing	 an expression and evaluate it later upon command. The
       functions are stored in a map structure and are	accessed  via  integer
       function	 ids. A function id is returned when the function is declared.
       No particular order of the function ids should be assumed. The zero (0)
       function id is reserved to for an identity function (no-op).

       The functions may include memory manipulation, which makes them as ver‐
       satile as functions in any programming language. They can  be  designed
       as  procedures  ignoring input and output and operate on memory, plain-
       old-functions that take an argument and return a result, or any	combi‐
       nation of both.

       {:expression:}
	      Function	declaration. The expression is parsed, stored into the
	      function memory and its unique id is returned. The id  is	 guar‐
	      ranteed  to  be nonzero. The returned id may be stored in memory
	      and used later.  Within the function,  operator  x  is  used  to
	      refer  to the function's argument. The function is not evaluated
	      at this point.

       f::x   Function evaluation. f is an array of function  ids,  which  are
	      applied sequentially to the array x, left-to-right. It should be
	      understood as composition of function; the result from the  pre‐
	      vious function is passed to the next as its argument.

       f:::x  Function iteration. Array of function ids f is evaluated repeat‐
	      edly on the argument x. The iteration stops when the argument no
	      longer  changes  or maximum number of iterations is reached. The
	      maximum number of iterations is 65536 by	default,  but  can  be
	      queried  and  changed using system call Q{105 ...} (see the sec‐
	      tion on system calls). This operator  can	 be  emulated  by  the
	      ordinary	function  evaluation  and  system call for setting the
	      instruction pointer, Q{103 ...}, but the implementation is quite
	      complex.	As functional iteration until convergence is common in
	      math, this operator is a valuable shortcut.

       f@::x  Function map. Array of function ids f is evaluated on each  ele‐
	      ment  of	the  array  x. This is meant to allow creation of user
	      functions that don't have to handle  the	array  nature  of  the
	      argument themselves.

       x      This  operator  evaluates	 to the argument supplied to the func‐
	      tion. In case of nested functions, it refers  to	the  innermost
	      function's argument. Outside a function, it has the value of the
	      current line (when used with --l or --x), or invalid otherwise.

       The function evaluation operator (::) is enough to implement all	 basic
       control structures. ised is therefore a Turing complete language.

       function call:
	      {fun}::{arg}

       conditional execution (if-statement):
	      {{false-fun true-fun}_{condition}}::{arg}

       switch statement:
	      {{fun1 fun2 fun3 fun4 ...}_switch}::{arg}

       static repetition (for-statement):
	      (fun n)::{arg}

       recursion:
	      {@mem  {:do-something-with $mem::x :}}::{arg} The implementation
	      of the function must be carefully devised, otherwise the	execu‐
	      tion might get stuck in an infinite recursion.

       general loop (while-statement):
	      { body-fun jump-test }::{arg}

	      Such simple implementation has the loop contents in body-fun and
	      implements jump-fun such that its argument unchanged,  but  sets
	      the  program  counter to zero if a condition is met. The program
	      counter is set via system call operator Q{103 n} where n is sim‐
	      ply which function in left-hand side of the operator :: is eval‐
	      uated  next.   For  example,  {  {:x+1:}	{:x  Q{103  -{x>10}}:}
	      }::{arg} increments the argument by one until it becomes greater
	      than 10. In that case, the system call sets the program  counter
	      to -1, which is out of range and the evaluation stops.

	      More  complex flow control is possible, as the operator Q{103 n}
	      can be used exactly like a goto statement. Q{102} can be used to
	      find the current program counter and calculate relative jumps.

   System calls
       The  internal state of ised can be accessed and modified using the sys‐
       tem call operator Qx. The argument x is an array, where the first  com‐
       ponent  is system call id number and the rest are optional arguments to
       the system call. The list of system calls will be  expanded  in	future
       versions of ised.

       Example:	 use  ised  --l load_file '$1 Q{$1>3}' to output the specified
       file, but terminate as soon as it encounters a number greater than 3.

       The system call ids are available as named variables, specified between
       the backticks as `<name>`. For instance, a call Q{`EXIT` 42} terminates
       the program with a return value of 42.

       The list of system call numbers and names:

       0 [NOP]: no-op

       1 [EXIT]: exit
	      Exits with return value 0 or the value specified as an  optional
	      argument.

       100 [BREAK]: break
	      Interrupts the loading of files by commands --f, --l, --a or --x
	      and aborts evaluation of the current line.

       101 [CONT]: continue
	      Aborts evaluation of the current line and proceeds to  the  next
	      line in the file.

       102 [PC]: get program counter
	      Returns  the  index of currently evaluated function in innermost
	      evaluation operator ::.

       103 [PCSET]: set program counter
	      Sets the index of next evaluated function in innermost  operator
	      ::.  If argument is out of bounds, it terminates the evaluation.
	      If without arguments, it does nothing.

       104 [STACKDEPTH]: get stack depth
	      Return the number of nested functions around the call. If not in
	      a function, it returns 0.

       105 [MAXITER]: get/set iteration limit
	      Without  argument,  the  iteration  limit	 for  operator	::: is
	      returned. With argument, it is changed to	 the  given  (nonnega‐
	      tive) value.

       1000 [HISTORY_COUNT]: get history count
	      Returns  the number of history entries, or -1 if history is dis‐
	      abled.

       1001 [HISTORY_ENABLE]: disable history
	      Disables remembering previous results or enables it,  if	called
	      with a nonzero argument.

       1002 [HISTORY_CLEAR]: clear history
	      Clears the history.

       2000 [MEM_INDEX]: get/set indexing memory slot
	      Without  arguments,  it  sets the memory slot where current line
	      number is stored (default is 0). With argument, it sets it.

       2001 [MEM_INPUT]: get/set input memory slot
	      Same as 2000, but for the memory slot where  the	current	 input
	      line is stored (default 1).

       2002 [MEM_OFFSET]: get/set file loading offset
	      Same  as 2000, but for the memory slot where --a continues load‐
	      ing lines to. At startup, this is 0 so  the  first  memory  slot
	      filled is $1 and is advanced with each loaded line.

       2003 [MEM_CLEAR]: delete from memory
	      Clear entire contents of memory if called without arguments. The
	      optional argument is a list of memory slots to delete.

       2004 [MEM_LIST]: get memory list
	      Lists the occupied memory slots.

       2050 [FUN_CLEAR]: delete function
	      Clears all the  functions	 if  called  without  arguments.   The
	      optional argument is a list of function ids to delete.

       2051 [FUN_LIST]: get function list
	      Lists the occupied function ids.

       3000 [VERSION]: ised version
	      Returns	 the	array,	  containing	the   version	number
	      {major,minor,revision}.

       3001 [SIZEOF_INT]: int size
	      Returns the size of integer type in bytes.

       3002 [SIZEOF_FLOAT]: float size
	      Returns the size of float type in bytes.

       3003 [DEBUG]: debug level
	      Returns the debugging level, set at compile-time.

       3004 [READLINE_STATUS]: readline status
	      Returns the array indicating if various libreadline functionali‐
	      ties are enabled (use --v for details).

       3005 [OVERFLOW_STATUS]: overflow enabled
	      Returns 1 if overflow handling was enabled at compile-time and 0
	      otherwise.

       5000 [TIME]: system time
	      Returns unix time in seconds if called  without  arguments.  The
	      arguments	 can  be list of values, which specify the time fields
	      to output:

	      0 [TIME.EPOCH] = epoch

	      1 [TIME.SEC] = sec

	      2 [TIME.MIN] = min

	      3 [TIME.HOUR] = hour

	      4 [TIME.MONTHDAY] = month-day

	      5 [TIME.MONTH] = month

	      6 [TIME.YEAR] = year

	      7 [TIME.WEEKDAY] = week-day

	      8 [TIME.YEARDAY] = year-day

       For instance, a call Q{`TIME` `TIME.YEAR` `TIME.MONTH` `TIME.DAY`}  may
       return the array {2013 10 31}.

       5001 [PROCESS_TIME]: process time
	      Returns array containing real time, user time and system time in
	      seconds.

       5002 [SLEEP]: sleep
	      Sleep for the amount of seconds specified in the argument.

       5050 [PID]: pid
	      Return the PID of this process.

EXAMPLES
       ised '@0[2 100];$0\{$0*$0}'
	      returns all prime numbers up to 100. It utilises memory to  pre‐
	      vent code repetition.

       ised '(0 (1 2 10) 10)'
	      generates squares of numbers up to 10, by using nested construc‐
	      tors. Inner constructor generates increments for outer construc‐
	      tor.

       ised --l file '$0 ~$1'
	      reverses lines of file and prepends line numbers.

       ised '@0 {0.5*{1+sqt5}};r{{$0^[1 20]:-(-$0)^-[1 20]}/sqt5}'
	      generates Fibonacci sequence using direct exponential formula.

       ised --d '\n' '[0 1/d5 10]'
	      generates	 evenly spaced values between 0 and 10, separated by a
	      newline. Same functionality as

	      seq 0 0.2 10

       ised --d '\n' '[0 pi/100 pi]' | ised --F '%+12.6f' --l  -  'd{$1	 sin$1
       cos$1 tan$1 exp$1 $1^2}'
	      generates	 nicely	 formatted table of several functions in range
	      between 0 and pi. Note the use of	 placeholder  -	 for  standard
	      input.

       ised  --o tmp_file --t '[0 pi/100 pi]' --o - --F '%+12.6f' --l tmp_file
       'd{$1 sin$1 cos$1 tan$1 exp$1 $1^2}'
	      previous example, achieved in one pass using a temporary	inter‐
	      mediate file. Note the use of placeholder - for standard output.

       ised '{1.4^[11]}@:{1./[11]!} exp1.4'
	      calculation  of  exp(1.4)	 by  summation	of series, compared to
	      exact value.

       ised '@1 60;@2 72;@3[1 $1];{$1%$3==0}:*{$2%$3==0}:*$3\0'
	      returns list of common divisors of 60 and 72. Numbers 60 and  72
	      are first stored in memory, together with list of possible divi‐
	      sors, for easier readability. Note the use of multiplication for
	      boolean and evaluation.  The same can be achieved more elegantly
	      with operator ?:

	      ised '@1 60;@2 72;@3[1 $1];$3_?{{$1%$3==0}:*{$2%$3==0}}'

       ised '@1 60;@2 72;{$1*[1 $2]&$2*[1 $1]}_0'
	      returns least common multiple of 60 and 72.

       ised --d '+' '2^[10]' | ised
	      illustration how changing output format can produce useful input
	      for  other  programs,  in this case, ised itself. This is useful
	      for easier input of operator repetition, for example  the	 power
	      tower:

	      ised --d '^' '(1/sqt2 10)' | ised --l - '-$1' this outputs solu‐
	      tion of equation 2^x=x^2.

       ised '@1{2}@2{3}@3{-5};{-$2+pm*sqt{$2^2-4*$1*$3}}/{2*$1}'
	      solves quadratic	equation  2x^2+3x-5.  Capability  of  handling
	      arrays  is exploited to give both solutions at once. pm operator
	      is shorthand for array {1,-1}.

	      The same can be achieved with built-in polynomial solver:

	      ised '@1{2}@2{3}@3{-5};pz{$3 $2 $1}'

	      Note that the intermediate variables $1,$2,$3 were only used  to
	      make the expression more readable.

       yes 0 | ised '@2{145}' --l - '@2{{$2/2 3*$2+1}_{$2%2}} Q{100 $2==1}'
	      outputs  the  Hailstone sequence for the number 145. It uses GNU
	      core utility yes to produce  an  infinite	 loop  and  terminates
	      using a conditional system call 100 (break).

       ised --D '%02d' --d ':' 'Q{5002 60-Q{5000 1}};Q{5000 3 2 1}'
	      Waits  for  the  minute  to change and then displays the current
	      time, so that the seconds will be zero. It uses the time-related
	      system call utilities 5000 (system time) and 5002 (sleep).

AUTHOR
       Simon Copar

SEE ALSO
       seq(1)

				  May 1, 2014			       ised(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net