About Chandra Archive Proposer Instruments & Calibration Newsletters Data Analysis HelpDesk Calibration Database NASA Archives & Centers Chandra Science Links

Skip the navigation links
Last modified: December 2006

URL: http://cxc.harvard.edu/ciao3.4/slang-math.html
Hardcopy (PDF): A4 | Letter
AHELP for CIAO 3.4 math Context: slang

Synopsis

Mathematical operations in S-Lang.

Description

S-Lang contains a number of commonly-used mathematical functions - such as sin, cos, exp, log - as well as allowing the use of user-defined functions. These functions will work on arrays of numbers as well as single elements:

  chips> x = 0.456
  chips> y = sin(x)
  chips> print(y)
  0.44036
  chips> xarr = [1:10] / 3.0
  chips> yarr = sin(xarr)
  chips> writeascii(stdout,xarr,yarr)
  0.333333        0.327195
  0.666667        0.61837
  1       0.841471
  1.33333 0.971938
  1.66667 0.995408
  2       0.909297
  2.33333 0.723086
  2.66667 0.457273
  3       0.14112
  3.33333 -0.190568
  chips> print(yarr[2])
  0.841471

S-Lang also provides means to easily manipulate subsets of arrays. In the example below we use the where() function to find the array indices of those elements whose values are less than 0.1, and then print out these indices, together with the corresponding values:

  chips> y = sin([0:10:0.5])
  chips> i = where( y < 0.1 )
  chips> writeascii( stdout, i, y[i] )
  0       0
  7       -0.350783
  8       -0.756802
  9       -0.97753
  10      -0.958924
  11      -0.70554
  12      -0.279415
  19      -0.0751511

Using S-Lang with ChIPS and Sherpa

S-Lang variables can be used by ChIPS and Sherpa. The following plots the previously-calculated x and y arrays using a S-Lang function - curve() - and then modifies the plot using ChIPS commands.

  chips> () = curve(xarr,yarr)
  chips> simpleline
  chips> symbol none
  chips> title "A combined S-Lang/ChIPS plot"

It is also easy to read in a file - using Varmm functions - then manipulate the data and produce graphical output.

  chips> dat = readfile("phas.dat")
  chips> print(dat)
  _filename         = phas.dat
  _path             = /ciao/data
  _filter           = NULL
  _filetype         = 1
  _ncols            = 2
  _nrows            = 124
  col1              = Float_Type[124]
  col2              = Float_Type[124]
  chips> () = curve(dat.col1,dat.col2)
  chips> newvar = log(dat.col2 + 1) + 10
  chips> split 2
  chips> () = curve(dat.col1,newvar)

The tips page ("ahelp tips") provides a number of examples demonstrating how to write S-Lang code.

Hardcopy (PDF): A4 | Letter
Last modified: December 2006



The Chandra X-Ray Center (CXC) is operated for NASA by the Smithsonian Astrophysical Observatory.
60 Garden Street, Cambridge, MA 02138 USA.    Email: cxcweb@head.cfa.harvard.edu
Smithsonian Institution, Copyright © 1998-2004. All rights reserved.