section s of routines in global.i

yorick banner

Home

Manual

Packages

Global Index

Keywords

Quick Reference

all functions - s

 
 
 
save


             save, file, var1, var2, ...  
             restore, file, var1, var2, ...  
 
     saves the variables VAR1, VAR2, etc. in the binary file FILE,  
     or restores them from that file.  
     The VARi may be either non-record or record data in the case that  
     FILE contains records.  
     If one of the VARi does not already exist in FILE, it is created  
     by the save command; after add_record, save adds or stores VARi to  
     the current record.  See add_record for more.  The VARi may be  
     structure definitions (for the save command) to declare data  
     structures for the file.  This is necessary only in the case that  
     a record variable is a pointer -- all of the potential data types  
     of pointees must be known.  No data structures may be declared  
     using the save command after the first record has been added.  
     If no VARi are present, save saves all array variables, and  
     restore restores every non-record variable in the file if there  
     is no current record, and every variable in the current record if  
     there is one.  

builtin function, documented at i0/std.i   line 2178  
SEE ALSO: openb,   createb,   updateb,   get_vars,  
add_record,   get_addrs,   jt,   jc,   _read,   _write,  
data_align  
 
 
 
save3


             view= save3()  
 
     Save the current 3D viewing transformation and lighting.  

interpreted function, defined at i/pl3d.i   line 233  
SEE ALSO: restore3,   rot3,   mov3,   aim3,   light3  
 
 
 
scalar


             scalar -- get optional scalar parameter  
 
    
  PROTOTYPE  
    x = scalar(xarg, xdef, lt=, le=, gt=, ge=, type=, arg=, fn=);  
    
  ARGUMENTS  
    XARG    argument passed to the function.  
    XDEF    default value for the scalar argument (optional, if not  
            specified, then it is guessed that the caller must supply the  
            argument).  
  KEYWORDS  
    GE=     to be valid, XARG must be >= GE (optional, only one of GT or GE  
            can be used).  
    GT=     to be valid, XARG must be >  GT (optional, only one of GT or GE  
            can be used).  
    LE=     to be valid, XARG must be <= LE (optional, only one of LT or LE  
            can be used).  
    LT=     to be valid, XARG must be <  LT (optional, only one of LT or LE  
            can be used).  
    TYPE=   data type of the scalar (optional).  
    FN=     function name for error messages (optional string).  
    ARG=    argument name for error messages (optional string).  
    
  DESCRIPTION  
    Check XARG and return a scalar value (i.e., either XARG converted to TYPE  

    if it is not void or XDEF otherwise).  If XARG is not within any specified  
    bound or if it is not a scalar or if it is void (e.g., not specified) and  
    there is no default value XDEF, an error message is written out.  
    
  EXAMPLE  
    The following function has 2 scalar arguments X and Y, the 1st one is an  
    integer (of type long) which must be specified and be strictly greater  
    than 22 while the 2nd default to .5 and must be in [0., 1.]:  
      func foo(x,y) {  
          x= scalar(x,     gt=22,        type=long,   fn="foo", arg="X");  
          y= scalar(y, .5, ge=0., le=1., type=double, fn="foo", arg="Y");  
          ...  
      }  
    
  WARNING  
    There is no checking of consistency of options.  
    
  HISTORY: 29 Sept. 1995 by Eric THIEBAUT.  (Modified slightly by DHM)  

interpreted function, defined at i/string.i   line 240  
 
 
 
sech


             sech(x)  
             csch(x)  
 
     returns the hyperbolic secant (1/cosh) or cosecant (1/sinh) of  
     its argument, without overflowing for large x.  

interpreted function, defined at i0/std.i   line 567  
SEE ALSO: sinh,   cosh,   tanh,   asinh,   acosh,   atanh  
 
 
 
second


 second  
 
  

interpreted function, defined at i/testlp.i   line 125  
 
 
 
series_n


             series_n(r, s)  
 
     returns the minimum number n of terms required for the geometric  
     series  
        1 + r + r^2 + r^3 + ... + r^n = s  
     to reach at least the given value s.  An alternate viewpoint is  
     that n is the minimum number of terms required to achieve the  
     sum s, with a ratio no larger than r.  
     Returns 0 if r<1 and s>1/(1-r), or if s<1.  
     The routine makes the most sense for r>1 and s substantially  
     greater than 1.  The intended use is to determine the minimum  
     number of zones required to span a given thickness t with a given  
     minimum zone size z, and maximum taper ratio r (assumed >1 here):  
        n= series_n(r, t/z);  
     With this n, you have the option of adjusting r or z downwards  
     (using series_r or series_s, respectively) to achieve the final  
     desired zoning.  
     R or S or both may be arrays, as long as they are conformable.  

interpreted function, defined at i/series.i   line 127  
SEE ALSO: series_s,   series_r  
 
 
 
series_r


             series_r(s, n)  
 
     returns the ratio r of the finite geometric series, given the sum s:  
        1 + r + r^2 + r^3 + ... + r^n = s  
     Using n<0 will return the the reciprocal of n>0 result, that is,  
        series_r(s, -n) == 1.0/series_r(s, n)  
     If n==0, returns s-1 (the n==1 result).  
     S or N or both may be arrays, as long as they are conformable.  

interpreted function, defined at i/series.i   line 51  
SEE ALSO: series_s,   series_n  
 
 
 
series_s


             series_s(r, n)  
 
     returns the sum s of the finite geometric series  
        1 + r + r^2 + r^3 + ... + r^n  
     Using n<0 is equivalent to using the reciprocal of r, that is,  
        series_s(r, -n) == series_s(1./r, n)  
     R or N or both may be arrays, as long as they are conformable.  

interpreted function, defined at i/series.i   line 10  
SEE ALSO: series_r,   series_n  
 
 
 
set3_object


             set3_object, drawing_function, _lst(arg1,arg2,...)  
 
     set up to trigger a call to draw3, adding a call to the  
     3D display list of the form:  
        DRAWING_FUNCTION, _lst(ARG1, ARG2, ...)  
     When draw3 calls DRAWING_FUNCTION, the external variable _draw3  
     will be non-zero, so DRAWING_FUNCTION can be written like this:  
     func drawing_function(arg1,arg2,...)  
     {  
       require, "pl3d.i";  
       if (_draw3) {  
         list= arg1;  
	 arg1= _nxt(list);  
	 arg2= _nxt(list);  
	 ...  
	 ......  
	 ......  
	 return;  
       }  
       ......  
       ......  
       set3_object, drawing_function, _lst(arg1,arg2,...);  
     }  

interpreted function, defined at i/pl3d.i   line 630  
SEE ALSO: get3_xy,   get3_light,   sort3d  
 
 
 
set_blocksize


             set_blocksize, file, blocksize  
 
     sets smallest cache block size for FILE to BLOCKSIZE.  BLOCKSIZE  
     is rounded to the next larger number of the form 4096*2^n if  
     necessary; cache blocks for this file will be multiples of  
     BLOCKSIZE bytes long.  The default BLOCKSIZE is 0x4000 (16 KB).  

builtin function, documented at i0/std.i   line 2328  
SEE ALSO: openb,   updateb,   createb,   save,   restore,  
_read,   _write  
 
 
 
set_filesize


             set_filesize, file, filesize  
 
     sets the new family member threshhold for FILE to FILESIZE.  
     Whenever a new record is added (see add_record), if the current file  
     in the FILE family has at least one record and the new record would  
     cause the current file to exceed FILESIZE bytes, a new family  
     member will be created to hold the new record.  
     The default FILESIZE is 0x400000 (4 MB).  

builtin function, documented at i0/std.i   line 2337  
SEE ALSO: openb,   updateb,   createb,   add_record  
 
 
 
set_idler


             set_idler, idler_function  
 
     sets the idler function to IDLER_FUNCTION.  Instead of waiting  
     for keyboard input when all its tasks are finished, the interpreter  
     will invoke IDLER_FUNCTION with no arguments.  The idler function  
     is normally invoked only once, so input from the keyboard resumes  
     after one call to the idler.  Of course, an idler is free to call  
     set_idler again before it returns, which will have the effect of  
     calling that function in a loop.  

builtin function, documented at i0/std.i   line 2618  
SEE ALSO: batch  
 
 
 
set_path


             set_path, "dir1:dir2:dir3:..."  
          or set_path  
 
     sets the include file search path to the specified list of  
     directories.  The specified directories are searched left to  
     right for include files specified as relative file names in  
     #include directives, or to the include or require functions.  
     If the argument is omitted, restores the default search path,  
     ".:~/Yorick:Y_LAUNCH/include:Y_SITE/include:Y_SITE/contrib",  
     where y_site is the main Yorick directory for this site.  
     The Y_LAUNCH directory is the directory which contains the  
     executable; this directory is omitted if it is the same as  
     Y_SITE.  
     Only the "end user" should ever call set_path, and then only in  
     his or her custom.i file, for the purpose of placing a more  
     elaborate set of personal directories containing Yorick procedures.  
     For example, if someone else maintains Yorick code you use, you  
     might put their ~/Yorick on your include path.  

builtin function, documented at i0/std.i   line 219  
SEE ALSO: Y_LAUNCH,   Y_SITE,   include,   require  
 
 
 
set_primitives


             set_primitives, file, prims  
 
     Return the primitive data types for FILE as an array of 32  
     integers.  Versions for particular machines are defined in  
     prmtyp.i, and can be accessed using functions like  
     sun_primitives or i86_primitives.  See __xdr for a complete  
     list.  The format is:  
     [size, align, order] repeated 6 times for char, short, int,  
       long, float, and double, except that char align is always 1,  
       so result(2) is the structure alignment (see struct_align).  
     [sign_address,  exponent_address, exponent_bits,  
      mantissa_address, mantissa_bits,  
      mantissa_normalization, exponent_bias] repeated twice for  
       float and double.  See the comment at the top of prmtyp.i  
       for an explanation of these fields.  
     the total number of items is thus 3*6+7*2=32.  

interpreted function, defined at i0/std.i   line 2074  
SEE ALSO: get_primitives,   createb,   __xdr,   __i86  
 
 
 
set_site


 set_site  
 
  

builtin function, documented at i0/std.i   line 242  
 
 
 
set_style


             set_style, landscape, systems, legends, clegends  
 
     set the detailed style of the current drawing.  The arguments  
     are all inputs, having the same meanings as for get_style (which  
     see).  All arguments are required, so you may need to call  
     get_style as a starting point, if you only want to make a few  
     changes.  See the Gist/work.gs and the other .gs files for  
     examples of reasonable values to choose.  
     Calling set_style destroys anything that was plotted in the  
     window, like the style= keyword of the window command.  

interpreted function, defined at i/style.i   line 70  
SEE ALSO: get_style,   read_style,   write_style  
 
 
 
set_tolerances


             set_tolerances()  
          or old_tols= set_tolerances([tol1, tol2, lost_tol])  
 
     returns the current tolerances for the ray tracking.  Initially,  
     these are [1.e-3, 1.e-6, 0.0].  In the second form, sets new  
     tolerances.  If any of TOL1, TOL2, or LOST_TOL is zero, that  
     tolerance is restored to its default value.  If TOL1 is less  
     than zero, the root polishing operation which requires TOL1  
     and TOL2 is not done at all.  

builtin function, documented at i0/drat.i   line 1276  
SEE ALSO: track_rays,   integ_flat,   integ_linear,   streak,  
snap  
 
 
 
set_vars


             set_vars, file, names  
          or set_vars, file, nonrec_names, rec_names  
 
     Change the names of the variables in FILE to NAMES.  If the  
     file has record variables, you can use the second form to change  
     the record variable names.  Either of the two lists may be nil  
     to leave those names unchanged, but if either is not nil, it must  
     be a 1D array of strings whose length exactly matches the number  
     of that type of variable actually present in the file.  

builtin function, documented at i0/std.i   line 2363  
SEE ALSO: openb,   updateb,   has_records,   get_vars  
 
 
 
setz3


             setz3, zc  
 
     Set the camera position to z=ZC (x=y=0) in the viewer's coordinate  
     system.  If ZC is nil, set the camera to infinity (default).  

interpreted function, defined at i/pl3d.i   line 113  
SEE ALSO: rot3,   orient3,   undo3,   save3,   restore3,  
light3  
 
 
 
sgi64_primitives


             sgi64_primitives, file  
 
     sets FILE primitive data types to be native to 64-bit SGI workstations.  

interpreted function, defined at i0/std.i   line 1995  
 
 
 
shock


             sound  
 
     Set up the initial conditions for evolve to launch a strong wave, which  
     steepens into a shock as it propagates.  

interpreted function, defined at i/demo1.i   line 76  
SEE ALSO: sound,   evolve  
 
 
 
show


             show, f  
          or show, f, pat  
          or show, f, 1  
 
     prints a summary of the variables contained in binary file F.  
     If there are too many variables, use the second form to select  
     only those variables whose first few characters match PAT.  
     In the third form, continues the previous show command where it  
     left off -- this may be necessary for files with large numbers of  
     variables.  
     The variables are printed in alphabetical order down the columns.  
     The print function can be used to obtain other information about F.  

interpreted function, defined at i0/std.i   line 1695  
SEE ALSO: openb,   jt,   jc  
 
 
 
sign


             sign(x)  
 
     returns algebraic sign of it argument, or closest point on the  
     unit circle for complex x.  Guaranteed that x==sign(x)*abs(x).  
     sign(0)==+1.  

builtin function, documented at i0/std.i   line 638  
SEE ALSO: abs  
 
 
 
silo_cd


             silo_cd, dirname  
 
     change current silo directory to DIRNAME, which may contain  
       .. or . constructs as a UNIX pathname  
     accepts silo= keyword to operate on a silo file other than the  
       current silo file  

interpreted function, defined at i/silo.i   line 65  
SEE ALSO: silo_ls,   silo_var,   silo_open,   silo_close  
 
 
 
silo_close


             silo_close  
 
     close current silo file  

interpreted function, defined at i/silo.i   line 51  
SEE ALSO: silo_cd,   silo_ls,   silo_var,   silo_open  
 
 
 
silo_ls


             silo_ls  
          or silo_ls, dirname  
          or itemlist= silo_ls(dirname)  
          or itemlist= silo_ls(dirname, fulldirname)  
 
     list current silo directory or DIRNAME  
     if called as a function, returns a 1D array of strings beginning  
       with ".", and optionally returns FULLDIRNAME, which is the  
       full path name of the directory listed  
       - the individual items in the list do not include the  
         directory path  
       - subdirectory names end with "/", so you can find them  
         using strpart(itemlist,0:0)=="/"  
     accepts silo= keyword to operate on a silo file other than the  
       current silo file  

interpreted function, defined at i/silo.i   line 101  
SEE ALSO: silo_ls,   silo_cd,   silo_open,   silo_close  
 
 
 
silo_open


             silo_open, filename  
          or silo= silo_open(filename)  
 
     open FILENAME for later use with silo_... functions  
     There is a single current silo file, which is opened and set  
     by the first form.  The other silo_... functions normally  
     operate on this current file, but also accept a silo= keyword,  
     which is a list returned by the second calling sequence for  
     silo_open.  

interpreted function, defined at i/silo.i   line 2  
SEE ALSO: silo_cd,   silo_ls,   silo_var,   silo_close  
 
 
 
silo_simplify


 silo_simplify  
 
  

interpreted function, defined at i/silo.i   line 152  
 
 
 
silo_var


             var= silo_var(varname)  
 
     return silo variable VARNAME  
     accepts silo= keyword to operate on a silo file other than the  
       current silo file  

interpreted function, defined at i/silo.i   line 88  
SEE ALSO: silo_ls,   silo_cd,   silo_open,   silo_close  
 
 
 
simpson


             integral= simpson(function, a, b)  
          or integral= simpson(function, a, b, epsilon)  
 
     returns the integral of FUNCTION(x) from A to B.  If EPSILON is  
     given, Simpson's rule is refined until that fractional accuracy  
     is obtained.  EPSILON defaults to 1.e-6.  
     If the notvector= keyword is supplied and non-zero, then FUNCTION  
     may not be called with a list of x values to return a list of  
     results.  By default, FUNCTION is assumed to be a vector function.  
     If the function is very smooth, romberg may work better.  

interpreted function, defined at i/romberg.i   line 58  
SEE ALSO: romberg,   max_doublings  
 
 
 
sin


             sin(x)  
             cos(x)  
             tan(x)  
 
     returns the sine, cosine, or tangent of its argument,  
     which is in radians.  

builtin function, documented at i0/std.i   line 518  
SEE ALSO: asin,   acos,   atan  
 
 
 
sinh


             sinh(x)  
             cosh(x)  
             tanh(x)  
 
     returns the hyperbolic sine, cosine, or tangent of its argument.  

builtin function, documented at i0/std.i   line 557  
SEE ALSO: sech,   csch,   asinh,   acosh,   atanh  
 
 
 
sizeof


             sizeof(object)  
 
     returns the size of the object in bytes, or 0 for non-array objects.  
     sizeof(structure_definition) returns the number of bytes per instance.  
     sizeof(binary_file) returns the file size in bytes.  

builtin function, documented at i0/std.i   line 385  
SEE ALSO: dimsof,   typeof,   structof,   numberof  
 
 
 
slice2


             slice2, plane, nverts, xyzverts  
          or slice2, plane, nverts, xyzverts, values  
 
     Slice a polygon list, retaining only those polygons or  
     parts of polygons on the positive side of PLANE, that is,  
     the side where xyz(+)*PLANE(+:1:3)-PLANE(4) > 0.0.  
     The NVERTS, XYZVERTS, and VALUES arrays serve as both  
     input and output, and have the meanings of the return  
     values from the slice3 function.  It is legal to omit the  
     VALUES argument (e.g.- if there is no fcolor function).  
     In order to plot two intersecting slices, one could  
     slice (for example) the horizontal plane twice (slice2x) -  
     first with the plane of the vertical slice, then with minus  
     that same plane.  Then, plot first the back part of the  
     slice, then the vertical slice, then the front part of the  
     horizontal slice.  Of course, the vertical plane could  
     be the one to be sliced, and "back" and "front" vary  
     depending on the view point, but the general idea always  
     works.  

interpreted function, defined at i/slice3.i   line 880  
SEE ALSO: slice3,   plane3,   slice2x,   slice2_precision  
 
 
 
slice2x


             slice2, plane, nverts, values, xyzverts  
 
     Slice a polygon list, retaining only those polygons or  
     parts of polygons on the positive side of PLANE, that is,  
     the side where xyz(+)*PLANE(+:1:3)-PLANE(4) > 0.0.  
     The NVERTS, VALUES, and XYZVERTS arrays serve as both  
     input and output, and have the meanings of the return  
     values from the slice3 function.  

interpreted function, defined at i/slice3.i   line 863  
SEE ALSO: slice2,   slice2_precision  
 
 
 
slice3


             slice3, m3, fslice, nverts, xyzverts  

          or color_values= slice3(m3, fslice, nverts, xyzverts, fcolor)  

          or color_values= slice3(m3, fslice, nverts, xyzverts, fcolor, 1)  
 
     slice the 3D mesh M3 using the slicing function FSLICE, returning  
     the lists NVERTS and XYZVERTS.  NVERTS is the number of vertices  
     in each polygon of the slice, and XYZVERTS is the 3-by-sum(NVERTS)  
     list of polygon vertices.  If the FCOLOR argument is present, the  
     values of that coloring function on the polygons are returned as  
     the value of the slice3 function (numberof(color_values) ==  
     numberof(NVERTS) == number of polygons).  
     If the slice function FSLICE is a function, it should be of the  
     form:  
        func fslice(m3, chunk)  
     returning a list of function values on the specified chunk of the  
     mesh m3.  The format of chunk depends on the type of m3 mesh, so  
     you should use only the other mesh functions xyz3 and getv3 which  
     take m3 and chunk as arguments.  The return value of fslice should  
     have the same dimensions as the return value of getv3; the return  
     value of xyz3 has an additional first dimension of length 3.  
     If FSLICE is a list of 4 numbers, it is taken as a slicing plane  
     with the equation FSLICE(+:1:3)*xyz(+)-FSLICE(4), as returned by  
     plane3.  
     If FSLICE is a single integer, the slice will be an isosurface for  
     the FSLICEth variable associated with the mesh M3.  In this case,  
     the keyword value= must also be present, representing the value  
     of that variable on the isosurface.  
     If FCOLOR is nil, slice3 returns nil.  If you want to color the  
     polygons in a manner that depends only on their vertex coordinates  
     (e.g.- by a 3D shading calculation), use this mode.  
     If FCOLOR is a function, it should be of the form:  
        func fcolor(m3, cells, l, u, fsl, fsu, ihist)  
     returning a list of function values on the specified cells of the  
     mesh m3.  The cells argument will be the list of cell indices in  
     m3 at which values are to be returned.  l, u, fsl, fsu, and ihist  
     are interpolation coefficients which can be used to interpolate  
     from vertex centered values to the required cell centered values,  
     ignoring the cells argument.  See getc3 source code.  
     The return values should always have dimsof(cells).  
     If FCOLOR is a single integer, the slice will be an isosurface for  
     the FCOLORth variable associated with the mesh M3.  
     If the optional argument after FCOLOR is non-nil and non-zero,  
     then the FCOLOR function is called with only two arguments:  
        func fcolor(m3, cells)  

interpreted function, defined at i/slice3.i   line 203  
SEE ALSO: mesh3,   plane3,   xyz3,   getv3,   getc3,   slice2,  
plfp  
 
 
 
snap


             snap(f, rays)  
          or snap(f, rays, slimits)  
 
     returns the time-integrated specific intensity for the rad-hydro  
     problem dumped in file F, on the specified RAYS, with the  
     specified limits SLIMITS on the transport integrals.  
     The first dimension of RAYS may be length 3, 5, or 6 to represent  
     the ray(s) in TDG/DIRT coordinates (x,y,theta), "best" coordinates  
     (x,y,z,theta,phi), or internal coordinates (cos,sin,y,z,x,r),  
     respectively.  The remaining dimensions of RAYS, if any, will be  
     called "nrays" below.  
     The SLIMITS parameter, if present, is the value of the s-coordinate  
     -- position along the ray -- at which to start and stop the  
     integration of the transport equation.  SLIMITS may be nil, a 1-D  
     array of length 2, or a 2-by-nrays array.  Each component of SLIMITS  
     is [s_start, s_stop]; if s_stop line 193  
SEE ALSO: reset_options,   streak,   streak_save,  
integ_flat,   integ_linear,   streak_times,  
form_rays,   best_rays,   dirt_rays,   internal_rays  
 
 
 
snap_worker


             snap_worker(transp, selfem, time)  
 
     The snap function actually works by replacing the drat_compress  
     with snap_worker.  See the source for snap in drat.i for details.  

interpreted function, defined at i0/drat.i   line 272  
 
 
 
softbc


 softbc  
 
  

interpreted function, defined at i/demo1.i   line 104  
 
 
 
solar_system


             xyz = moon(time)  
 
     return position XYZ of the moon relative to center of earth  
     at TIME; the XYZ has leading dimension 3; x is along the vernal  
     equinox, z is ecliptic north.  Corrections due to Schlyter (see  
     sch_planets) are applied.  Claimed accurate to under 1 arc minute  
     over some reasonable time.  TIME is in days since 0/Jan/00 (that is,  
     0000 UT 31/Dec/99).  This is 1.5 days earlier than the J2000 epoch.  

interpreted function, defined at i/kepler.i   line 342  
SEE ALSO: solar_system,   sch_moon,   kepler  
 
 
 
solve


 solve  
 
  

interpreted function, defined at i/demo4.i   line 45  
 
 
 
sort


             sort(x)  
          or sort(x, which)  
 
     returns an array of longs with dimsof(X) containing index values  
     such that X(sort(X)) is a monotonically increasing array.  X can  
     contain integer, real, or string values.  If X has more than one  
     dimension, WHICH determines the dimension to be sorted.  The  
     default WHICH is 1, corresponding to the first dimension of X.  
     WHICH can be non-positive to count dimensions from the end of X;  
     in particular a WHICH of 0 will sort the final dimension of X.  
     WARNING: The sort function is non-deterministic if some of the  
              values of X are equal, because the Quick Sort algorithm  
	      involves a random selection of a partition element.  
     For information on sorting with multiple keys (and on making  
     sort deterministic), type the following:  
        #include "msort.i"  
        help, msort  

builtin function, documented at i0/std.i   line 998  
SEE ALSO: median,   digitize,   interp,   integ,   histogram  
 
 
 
sort3d


             sort3d(z, npolys, &list, &vlist)  
 
     given Z and NPOLYS, with numberof(Z)==sum(npolys), return  
     LIST and VLIST such that Z(VLIST) and NPOLYS(LIST) are  
     sorted from smallest average Z to largest average Z, where  
     the averages are taken over the clusters of length NPOLYS.  
     Within each cluster (polygon), the cyclic order of Z(VLIST)  
     remains unchanged, but the absolute order may change.  
     This sorting order produces correct or nearly correct order  
     for a plfp command to make a plot involving hidden or partially  
     hidden surfaces in three dimensions.  It works best when the  
     polys form a set of disjoint closed, convex surfaces, and when  
     the surface normal changes only very little between neighboring  
     polys.  (If the latter condition holds, then even if sort3d  
     mis-orders two neighboring polys, their colors will be very  
     nearly the same, and the mistake won't be noticeable.)  A truly  
     correct 3D sorting routine is impossible, since there may be no  
     rendering order which produces correct surface hiding (some polys  
     may need to be split into pieces in order to do that).  There  
     are more nearly correct algorithms than this, but they are much  
     slower.  

interpreted function, defined at i/pl3d.i   line 880  
SEE ALSO: get3_xy  
 
 
 
sound


             sound  
 
     Set up the initial conditions for evolve to launch a weak sound wave.  

interpreted function, defined at i/demo1.i   line 62  
SEE ALSO: shock,   evolve  
 
 
 
span


             span(start, stop, n)  
          or span(start, stop, n, which)  
 
     returns array of N doubles equally spaced from START to STOP.  
     The START and STOP arguments may themselves be arrays, as long as  
     they are conformable.  In this case, the result will have one  
     dimension of length N in addition to dimsof(START, STOP).  
     By default, the result will be N-by-dimsof(START, STOP), but  
     if WHICH is specified, the new one of length N will be the  
     WHICHth.  WHICH may be non-positive to position the new  
     dimension relative to the end of dimsof(START, STOP); in  
     particular WHICH of 0 produces a result with dimensions  
     dimsof(START, STOP)-by-N.  

builtin function, documented at i0/std.i   line 902  
SEE ALSO: spanl,   indgen,   array  
 
 
 
spanl


             spanl(start, stop, n)  
          or spanl(start, stop, n, which)  
 
     similar to the span function, but the result array have N points  
     spaced at equal ratios from START to STOP (that is, equally  
     spaced logarithmically).  See span for discussion of WHICH argument.  
     START and STOP must have the same algebraic sign for this to make  
     any sense.  

interpreted function, defined at i0/std.i   line 918  
SEE ALSO: span,   indgen,   array  
 
 
 
spann


             spann(zmin, zmax, n)  
 
     return no more than N equally spaced "nice" numbers between  
     ZMIN and ZMAX.  

interpreted function, defined at i0/graph.i   line 1606  
SEE ALSO: span,   spanl,   plc,   plfc  
 
 
 
spin3


             spin3  
          or spin3, nframes  
          or spin3, nframes, axis  
 
     Spin the current 3D display list about AXIS over NFRAMES.  Keywords  
     tlimit= the total time allowed for the movie in seconds (default 60),  
     dtmin= the minimum allowed interframe time in seconds (default 0.0),  
     bracket_time= (as for movie function in movie.i)  
     The default AXIS is [-1,1,0] and the default NFRAMES is 30.  

interpreted function, defined at i/pl3d.i   line 945  
SEE ALSO: rot3  
 
 
 
spline


             dydx= spline(y, x)  
 
       -or-   yp= spline(dydx, y, x, xp)  
       -or-   yp= spline(y, x, xp)  
     computes the cubic spline curve passing through the points (X, Y).  
     With two arguments, Y and X, spline returns the derivatives DYDX at  
     the points, an array of the same length as X and Y.  The DYDX values  
     are chosen so that the piecewise cubic function returned by the four  
     argument call will have a continuous second derivative.  
     The X array must be strictly monotonic; it may either increase or  
     decrease.  
     The values Y and the derivatives DYDX uniquely determine a piecewise  
     cubic function, whose value is returned in the four argument form.  
     In this form, spline is analogous to the piecewise linear interpolator  
     interp; usually you will regard it as a continuous function of its  
     fourth argument, XP.  The first argument, DYDX, will normally have  
     been computed by a previous call to the two argument spline function.  
     However, this need not be the case; another DYDX will generate a  
     piecewise cubic function with continuous first derivative, but a  
     discontinuous second derivative.  For XP outside the extreme values  
     of X, spline is linear (if DYDX1 or DYDX0 keywords were specified,  
     the function will NOT have continuous second derivative at the  
     endpoint).  
     The XP array may have any dimensionality; the result YP will have  
     the same dimensions as XP.  
     If you only want the spline evaluated at a single set of XP, use the  
     three argument form.  This is equivalent to:  
          yp= spline(spline(y,x), y, x, xp)  
     The keywords DYDX1 and DYDX0 can be used to set the values of the  
     returned DYDX(1) and DYDX(0) -- the first and last values of the  
     slope, respectively.  If either is not specified or nil, the slope at  
     that end will be chosen so that the second derivative is zero there.  
     The function tspline (tensioned spline) gives an interpolation  
     function which lies between spline and interp, at the cost of  
     requiring you to specify another parameter (the tension).  

interpreted function, defined at i/spline.i   line 10  
SEE ALSO: interp,   tspline  
 
 
 
split_bytscl


             split_bytscl(x, 0)  
          or split_bytscl(x, 1)  
 
     as bytscl function, but scale to the lower half of a split  
     palette (0-99, normally the color scale) if the second parameter  
     is zero or nil, or the upper half (100-199, normally the gray  
     scale) if the second parameter is non-zero.  

interpreted function, defined at i/slice3.i   line 1253  
SEE ALSO: split_palette  
 
 
 
split_palette


             split_palette  
          or split_palette, "palette_name.gp"  
 
     split the current palette or the specified palette into two  
     parts; colors 0 to 99 will be a compressed version of the  
     original, while colors 100 to 199 will be a gray scale.  

interpreted function, defined at i/slice3.i   line 1226  
SEE ALSO: pl3tree,   split_bytscl  
 
 
 
sprime


             ypprime= sprime(dydx, y, x, xp)  
 
     computes the derivative of the cubic spline curve passing through the  
     points (X, Y) at the points XP.  
     The DYDX values will have been computed by a previous call to SPLINE,  
     and are chosen so that the piecewise cubic function returned by the four  
     argument call will have a continuous second derivative.  
     The X array must be strictly monotonic; it may either increase or  
     decrease.  

interpreted function, defined at i/spline.i   line 309  
 
 
 
sqrt


             sqrt(x)  
 
     returns the square root of its argument.  

builtin function, documented at i0/std.i   line 605  
SEE ALSO: abs  
 
 
 
sread


 sread  
 
builtin function, documented at i0/std.i   line 1242  
SEE read  
 
 
 
strchr


             strchr -- get first/last index of a character in a string   
 
    
  SYNOPSIS: i = strchr(s, c)  
            i = strchr(s, c, last=1)  
    
  DIAGNOSTIC: returns 0 if character C is not found in string S.  
    
  HISTORY: October 27, 1995 by Eric THIEBAUT.  
    

interpreted function, defined at i/string.i   line 155  
SEE ALSO: strmatch  
 
 
 
streak


             streak(f, rays)  
          or streak(f, rays, slimits)  
 
     returns the transparency and self-emission as functions of time for  
     the rad-hydro problem dumped in file F, on the specified RAYS, with  
     the specified limits SLIMITS on the transport integrals.  
     The first dimension of RAYS may be length 3, 5, or 6 to represent  
     the ray(s) in TDG/DIRT coordinates (x,y,theta), "best" coordinates  
     (x,y,z,theta,phi), or internal coordinates (cos,sin,y,z,x,r),  
     respectively.  The remaining dimensions of RAYS, if any, will be  
     called "nrays" below.  
     The SLIMITS parameter, if present, is the value of the s-coordinate  
     -- position along the ray -- at which to start and stop the  
     integration of the transport equation.  SLIMITS may be nil, a 1-D  
     array of length 2, or a 2-by-nrays array.  Each component of SLIMITS  
     is [s_start, s_stop]; if s_stop line 38  
SEE ALSO: reset_options,   snap,   streak_save,   integ_flat,  
integ_linear,   streak_times,   form_rays,  
best_rays,   dirt_rays,   internal_rays,  
apply_funcs  
 
 
 
streak_save


             streak_save, outname, f, rays  
          or streak_save, outname, f, rays, slimits  
          or streak_save, outfile, f, rays, slimits  
 
     is the same as the streak function, except that the results of  
     the transport calculation are placed into a PDB file called  
     OUTNAME, instead of being accumulated in memory.  All of the  
     options for the streak function are available, except for  
     drat_compress (which is set to streak_saver).  
     If the first argument is OUTFILE, a file variable instead of a  
     file name, then that file is used for output.  You can create  
     OUTFILE and add static variables to it with save (but do NOT call  
     add_record) which streak_save otherwise wouldn't know about.  
     The output file has history records at the same times as the  
     input file.  Each record contains "time" (a double scalar),  
     and the two arrays "transp", the transparency (between 0 and 1),  
     and "selfem", the self emission (which has the same units as  
     ekap in the file F).  The dimensions of transp and selfem  
     are ngroup-by-2-by-nrays (where nrays represents zero or more  
     dimensions, copied from the RAYS input array).  The RAYS and  
     SLIMITS inputs are placed into the output file as non-record  
     variables, and any variables in the drat_static option are  
     copied form F to the output file.  The gb and gav variables  
     are copied from F into the output file as well.  If the drat_glist  
     option is present, that is stored in the output file also.  
   OPTIONS: all options available for streak except drat_compress,  
            drat_gb, drat_gav, drat_static  

interpreted function, defined at i0/drat.i   line 295  
SEE ALSO: streak,   snap  
 
 
 
streak_saver


             streak_saver(transp, selfem, time)  
 
     The streak_save function actually works by replacing the drat_compress  
     with streak_saver.  See the source for streak_saver in drat.i for  
     details.  

interpreted function, defined at i0/drat.i   line 366  
 
 
 
streak_times


             streak_times(f)  
 
     returns the times from file F whic lie between the optional  
     drat_start and drat_stop.  

interpreted function, defined at i0/drat.i   line 899  
SEE ALSO: drat_start,   drat_stop  
 
 
 
strlen


             strlen(string_array)  
 
     returns an long array with dimsof(STRING_ARRAY) containing the  
     lengths of the strings.  The null string (0) is considered to  
     have length 0, just like "".  

builtin function, documented at i0/std.i   line 1095  
SEE ALSO: strmatch,   strpart,   strtok  
 
 
 
strmatch


             strmatch(string_array, pattern)  
          or strmatch(string_array, pattern, case_fold)  
 
     returns an int array with dimsof(STRING_ARRAY) with 0 where  
     PATTERN was not found in STRING_ARRAY and 1 where it was found.  
     If CASE_FOLD is specified and non-0, the pattern match is  
     insensitive to case, that is, an upper case letter will match  
     the same lower case letter and vice-versa.  

builtin function, documented at i0/std.i   line 1121  
SEE ALSO: strtok,   strpart,   strlen  
 
 
 
strpart


             strpart(string_array, m:n)  
 
      returns another string array with the same dimensions as  
      STRING_ARRAY which consists of characters M through N of  
      the original strings.  M and N are 1-origin indices; if  
      M is omitted, the default is 1; if N is omitted, the default  
      is the end of the string.  If M or N is non-positive, it is  
      interpreted as an index relative to the end of the string,  
      with 0 being the last character, -1 next to last, etc.  
      Finally, the returned string will be shorter than N-M+1  
      characters if the original doesn't have an Mth or Nth  
      character, with "" (note that this is otherwise impossible)  
      if neither an Mth nor an Nth character exists.  A 0  
      is returned for any string which was 0 on input.  

builtin function, documented at i0/std.i   line 1132  
SEE ALSO: strmatch,   strtok,   strlen  
 
 
 
strtok


             strtok(string_array, delimiters)  
          or strtok(string_array)  
 
     strips the first token off of each string in STRING_ARRAY.  
     A token is delimited by any of the characters in the string  
     DELIMITERS.  If DELIMITERS is blank, nil, or not given, the  
     default DELIMITERS is " \t\n" (blanks, tabs, or newlines).  
     The result is a string array ts with dimensions  
     2-by-dimsof(STRING_ARRAY); ts(1,) is the first token, and  
     ts(2,) is the remainder of the string (the character which  
     terminated the first token will be in neither of these parts).  
     The ts(2,) part will be 0 (i.e.- the null string) if no more  
     characters remain after ts(1,); the ts(1,) part will be 0 if  
     no token was present.  A STRING_ARRAY element may be 0, in  
     which case (0, 0) is returned for that element.  

builtin function, documented at i0/std.i   line 1103  
SEE ALSO: strmatch,   strpart,   strlen  
 
 
 
strtolower


             strtolower -- convert a string to lower case letters  
 
    
  SYNOPSIS: s2 = strtolower(s)  
    
  HISTORY: October 10, 1995 by Eric THIEBAUT.  
    

interpreted function, defined at i/string.i   line 90  
SEE ALSO: strtoupper  
 
 
 
strtoupper


             strtoupper -- convert a string to upper case letters  
 
    
  SYNOPSIS: s2 = strtoupper(s)  
    
  HISTORY: October 10, 1995 by Eric THIEBAUT.  
    

interpreted function, defined at i/string.i   line 76  
SEE ALSO: strtolower  
 
 
 
strtrim


             strtrim(string)  
          or strtrim(string, which)  
          or strtrim(string, which, blank=blank)  
 
   returns STRING without leading and/or trailing blanks.  If STRING is  
   only made of blanks, return "".  If STRING is 0x0, return 0x0.  
   If WHICH is 1, trim leading blanks (least expensive).  If WHICH is 2,  
   trim trailing blanks (a more costly operation).  If WHICH is 3, (the  
   default) trim both leading and trailing blanks.  
   If STRING is an array of strings, result has same dimensions.  
   The BLANK keyword is a string constituted by characters considered  
   as blanks; by default, BLANK is " \t\n" meaning that spaces,  
   tabs, and newlines are discarded.  
   In the BLANK string, "^", "]", and "-" are treated specially:  
   "]" and "-", if present, should come first in the list to avoid  
   special treatment, while "^" should not come first.  

interpreted function, defined at i/string.i   line 114  
 
 
 
struct_align


             struct_align, file, alignment  
 
     in binary file FILE, align new struct members which are themselves  
     struct instances to begin at a byte address which is a multiple of  
     ALIGNMENT.  (This affects members declared explicitly by add_member,  
     as well as implicitly by save or add_variable.)  If ALIGNMENT is <=0,  
     returns to the default for this machine.  The struct alignment is in  
     addition to the alignment implied by the most restrictively aligned  
     member of the struct.  Most machines want ALIGNMENT of 1.  

builtin function, documented at i0/std.i   line 2509  
SEE ALSO: add_member  
 
 
 
struct_neq


 struct_neq  
 
  

interpreted function, defined at i/testb.i   line 694  
 
 
 
structof


             structof(object)  
 
     returns the data type of OBJECT, or nil for non-array OBJECTs.  
     Use typeof(object) to get the ASCII name of a the data type.  

builtin function, documented at i0/std.i   line 329  
SEE ALSO: typeof,   dimsof,   numberof,   sizeof,   nameof  
 
 
 
sum


             sum(x)  
 
     returns the scalar sum of all elements of its array argument.  

builtin function, documented at i0/std.i   line 730  
SEE ALSO: avg,   min,   max  
 
 
 
sun3_primitives


             sun3_primitives, file  
 
     sets FILE primitive data types to be native to Sun-2 or Sun-3.  

interpreted function, defined at i0/std.i   line 1971  
 
 
 
sun_primitives


             sun_primitives, file  
 
     sets FILE primitive data types to be native to Sun, HP, IBM, etc.  

interpreted function, defined at i0/std.i   line 1963  
 
 
 
swrite


 swrite  
 
builtin function, documented at i0/std.i   line 1373  
SEE write  
 
 
 
symbol_def


             symbol_def(func_name)(arglist)  
          or symbol_def(var_name)  
 
     invokes the function FUNC_NAME with the specified ARGLIST,  
     returning the return value.  ARGLIST may be zero or more arguments.  
     In fact, symbol_def("fname")(arg1, arg2, arg3) is equivalent to  
     fname(arg1, arg2, arg3), so that "fname" can be the name of any  
     variable for which the latter syntax is meaningful -- interpreted  
     function, built-in function, or array.  
     Without an argument list, symbol_def("varname") is equivalent to  
     varname, which allows you to get the value of a variable whose name  
     you must compute.  
     DO NOT OVERUSE THIS FUNCTION.  It works around a specific deficiency  
     of the Yorick language -- the lack of pointers to functions -- and  
     should be used for such purposes as hook lists (see openb).  

builtin function, documented at i0/std.i   line 2808  
SEE ALSO: symbol_set  
 
 
 
symbol_set


             symbol_set, var_name, value  
 
     is equivalent to the redefinition  
          varname= value  
     except that var_name="varname" is a string which must be computed.  
     DO NOT OVERUSE THIS FUNCTION.  It works around a specific deficiency  
     of the Yorick language -- the lack of pointers to functions, streams,  
     bookmarks, and other special non-array data types.  

builtin function, documented at i0/std.i   line 2829  
SEE ALSO: symbol_def  
 
 
 
sysafe


             sysafe, "command line"  
          or system, "command line"  
 
     pass the command line to a UNIX sh (Bourne) shell for execution.  
     This requires a fork() system call, which in turn makes a copy of  
     the yorick executable in virtual memory before replacing that copy  
     with the sh shell.  If yorick has grown to enormous size, the copy  
     can bring your machine to its knees or kill it.  If you include  
     sysafe.i before yorick grows (before you start the calculation that  
     requires the large data arrays), a pipe is opened to an sh which  
     remains running, and the original system command is replaced by  
     sysafe.  Future system commands will be piped to the already  
     running sh, so no dangerous copy operation is required.  
     There are four problems with this approach:  
       (1) You can't run interactive programs with sysafe, because the  
           stdin is from the pipe (sysafe_pipe) instead of the keyboard.  
	   Attempting to do so may lock up yorick.  
       (2) Since the command runs asynchronously now, yorick can't wait  
           until it completes, and yorick's prompt will often precede  
	   the output from the command, unlike using the default system  
	   function.  
       (3) Some typographical errors in commands may kill the sh; since  
           you don't start a new one each time, the system command will  
	   stop working.  
       (4) The shorthand $ syntax still uses the dangerous system call;  
           you need to call system as an ordinary function for sysafe  
	   to protect you.  

interpreted function, defined at i/sysafe.i   line 10  
SEE ALSO: system_orig  
 
 
 
system


             system, "shell command line"  
 
     Passes the command line string to a shell for execution.  
     If the string is constant, you may use the special syntax:  
         $shell command line  
     (A long command line may be continued by ending the line with \  
     as usual.)  The system function syntax allows Yorick to compute  
     parts of the command line string, while the simple $ escape  
     syntax does not.  In either case, the only way to get output  
     back from such a command is to redirect it to a file, then  
     read the file.  Note that Yorick does not regain control  
     until the subordinate shell finishes.  (Yorick will get control  
     back if the command line backgrounds the job.)  
     WARNING: If Yorick has grown to a large size, this may crash  
     your operating system, since the underlying POSIX fork function  
     first copies all of the running Yorick process before the exec  
     function can start the shell.  See Y_SITE/sysafe.i for a fix.  

builtin function, documented at i0/std.i   line 191  
SEE ALSO: popen